// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

[
  {
    "namespace":"wallpaperPrivate",
    "compiler_options": {
      "implemented_in": "chrome/browser/chromeos/extensions/wallpaper_private_api.h"
    },
    "description": "none",
    "types": [
      {
        "id": "WallpaperSource",
        "type": "string",
        "enum": [ "ONLINE", "OEM", "DAILY", "CUSTOM", "THIRDPARTY" ]
      },
      {
        "id": "CollectionInfo",
        "type": "object",
        "description": "The name of a wallpaper collection (ie. a category such as Art, Landscape etc.) and its id.",
        "properties": {
          "collectionName": {
            "type": "string",
            "description": "The name of the collection used for display."
          },
          "collectionId": {
            "type": "string",
            "description": "The id of the collection used as a token to fetch images info."
          }
        }
      },
      {
        "id": "ImageInfo",
        "type": "object",
        "description": "The info (url, description etc.) specific to each wallpaper image.",
        "properties": {
          "imageUrl": {
            "type": "string",
            "description": "The url that points to the image."
          },
          "actionUrl": {
            "type": "string",
            "description": "The url of the Learn More link."
          },
          "displayText": {
            "type": "array",
            "description": "The descriptive text such as the name of the artist.",
            "items": {"type": "string"}
          }
        }
      }
    ],
    "functions": [
      {
        "name": "getStrings",
        "type": "function",
        "description": "Gets translated strings and initialization data.",
        "nodoc": true,
        "parameters": [
          {
            "type": "function",
            "name": "callback",
            "parameters": [
              {
                "name": "result",
                "type": "object",
                "additionalProperties": {"type": "any"}
              }
            ]
          }
        ]
      },
      {
        "name": "getSyncSetting",
        "type": "function",
        "description": "Gets the sync themes(and wallpaper on ChromeOS) setting value.",
        "nodoc": true,
        "parameters": [
          {
            "type": "function",
            "name": "callback",
            "parameters": [
              {
                "name": "result",
                "type": "object",
                "additionalProperties": {"type": "any"}
              }
            ]
          }
        ]
      },
      {
        "name": "setWallpaperIfExists",
        "type": "function",
        "description": "Sets wallpaper if it exists in the local file system with specified layout",
        "nodoc": true,
        "parameters": [
          {
            "type": "string",
            "name": "url"
          },
          {
            "name": "layout",
            "$ref": "wallpaper.WallpaperLayout"
          },
          {
            "type": "boolean",
            "name": "previewMode",
            "description": "If preview mode is desired."
          },
          {
            "type": "function",
            "name": "callback",
            "parameters": [
              {
                "type": "boolean",
                "name": "exists"
              }
            ]
          }
        ]
      },
      {
        "name": "setWallpaper",
        "type": "function",
        "description": "Sets wallpaper to the image from url with specified layout",
        "nodoc": true,
        "parameters": [
          {
            "type": "binary",
            "name": "wallpaper"
          },
          {
            "name": "layout",
            "$ref": "wallpaper.WallpaperLayout"
          },
          {
            "type": "string",
            "name": "url"
          },
          {
            "type": "boolean",
            "name": "previewMode",
            "description": "If preview mode is desired."
          },
          {
            "type": "function",
            "name": "callback",
            "parameters": []
          }
        ]
      },
      {
        "name": "resetWallpaper",
        "type": "function",
        "description": "Clears current user's active custom wallpaper and changes to default wallpaper.",
        "nodoc": true,
        "parameters": []
      },
      {
        "name": "setCustomWallpaper",
        "type": "function",
        "description": "Sets wallpaper to the image from local file with specified layout and returns thumbnail if needed.",
        "nodoc": true,
        "parameters": [
          {
            "type": "binary",
            "name": "wallpaper"
          },
          {
            "name": "layout",
            "$ref": "wallpaper.WallpaperLayout"
          },
          {
            "type": "boolean",
            "name": "generateThumbnail",
            "description": "If true, callback should have a binary thumbnail."
          },
          {
            "type": "string",
            "name": "fileName"
          },
          {
            "type": "boolean",
            "name": "previewMode",
            "description": "If preview mode is desired."
          },
          {
            "type": "function",
            "name": "callback",
            "parameters": [
              {
                "type": "binary",
                "optional": true,
                "name": "thumbnail"
              }
            ]
          }
        ]
      },
      {
        "name": "setCustomWallpaperLayout",
        "type": "function",
        "description": "Sets current custom wallpaper to the specified layout",
        "nodoc": true,
        "parameters": [
          {
            "name": "layout",
            "$ref": "wallpaper.WallpaperLayout"
          },
          {
            "type": "function",
            "name": "callback",
            "parameters": []
          }
        ]
      },
      {
        "name": "minimizeInactiveWindows",
        "type": "function",
        "description": "Minimizes all inactive open windows.",
        "nodoc": true,
        "parameters": []
      },
      {
        "name": "restoreMinimizedWindows",
        "type": "function",
        "description": "Restores all previously minimized windows.",
        "nodoc": true,
        "parameters": []
      },
      {
        "name": "getThumbnail",
        "type": "function",
        "description": "Gets thumbnail of wallpaper from thumbnail directory.",
        "nodoc": true,
        "parameters": [
          {
            "type": "string",
            "name": "urlOrFile",
            "description": "URL of ONLINE wallpaper or file name of CUSTOM wallpaper"
          },
          {
            "name": "source",
            "$ref": "WallpaperSource"
          },
          {
            "type": "function",
            "name": "callback",
            "description": "Function called upon completion.",
            "parameters": [
              {
                "type": "binary",
                "name": "data",
                "optional": true,
                "description": "The binary data of loaded thumbnail."
              }
            ]
          }
        ]
      },
      {
        "name": "saveThumbnail",
        "type": "function",
        "description": "Saves thumbnail to thumbnail directory.",
        "nodoc": true,
        "parameters": [
          {
            "type": "string",
            "name": "url",
            "description": "Wallpaper url."
          },
          {
            "type": "binary",
            "name": "data",
            "description": "The binary data of downloaded thumbnail."
          },
          {
            "type": "function",
            "name": "callback",
            "description": "Function called upon completion.",
            "parameters": [],
            "optional": true
          }
        ]
      },
      {
        "name": "getOfflineWallpaperList",
        "type": "function",
        "description": "Get the list of file names of downloaded wallpapers.",
        "nodoc": true,
        "parameters": [
          {
            "type": "function",
            "name": "callback",
            "description": "Function called upon completion.",
            "parameters": [
              {
                "type": "array",
                "name": "results",
                "items": {"type": "string"}
              }
            ]
          }
        ]
      },
      {
        "name": "recordWallpaperUMA",
        "type": "function",
        "description": "Record wallpaper UMA when a new wallpaper is set, either by Wallpaper Picker App, or by a third party App.",
        "nodoc": true,
        "parameters": [
          {
            "name": "source",
            "$ref": "WallpaperSource"
          }
        ]
      },
      {
        "name": "getCollectionsInfo",
        "type": "function",
        "description": "Gets the info of wallpaper collections (ie. categories such as Art, Landscape etc.)",
        "nodoc": true,
        "parameters": [
          {
            "type": "function",
            "name": "callback",
            "description": "Function called upon completion.",
            "parameters": [
              {
                "type": "array",
                "name": "collectionsInfo",
                "items": {"$ref": "CollectionInfo"}
              }
            ]
          }
        ]
      },
      {
        "name": "getImagesInfo",
        "type": "function",
        "description": "Gets wallpaper related info (url, description etc.) for a particular collection (ie. category).",
        "nodoc": true,
        "parameters": [
          {
            "type": "string",
            "name": "collectionId",
            "description": "The id of the collection whose info is requested."
          },
          {
            "type": "function",
            "name": "callback",
            "description": "Function called upon completion.",
            "parameters": [
              {
                "type": "array",
                "name": "imagesInfo",
                "items": {"$ref": "ImageInfo"}
              }
            ]
          }
        ]
      },
      {
        "name": "getLocalImagePaths",
        "type": "function",
        "description": "Gets the paths of the local image files that can be set as wallpaper.",
        "nodoc": true,
        "parameters": [
          {
            "type": "function",
            "name": "callback",
            "description": "Function called upon completion.",
            "parameters": [
              {
                "type": "array",
                "name": "localImagePaths",
                "items": {"type": "string"}
              }
            ]
          }
        ]
      },
      {
        "name": "getLocalImageData",
        "type": "function",
        "description": "Read the image data from the file path.",
        "nodoc": true,
        "parameters": [
          {
            "type": "string",
            "name": "imagePath",
            "description": "The path of the image."
          },
          {
            "type": "function",
            "name": "callback",
            "description": "Function called upon completion.",
            "parameters": [
              {
                "type": "binary",
                "name": "imageData"
              }
            ]
          }
        ]
      },
      {
        "name": "confirmPreviewWallpaper",
        "type": "function",
        "description": "Confirm the wallpaper being previewed to be set as the actual user wallpaper.",
        "nodoc": true,
        "parameters": [
          {
            "type": "function",
            "name": "callback",
            "description": "Function called upon completion.",
            "parameters": []
          }
        ]
      },
      {
        "name": "cancelPreviewWallpaper",
        "type": "function",
        "description": "Cancel the wallpaper preview and revert to the user wallpaper.",
        "nodoc": true,
        "parameters": [
          {
            "type": "function",
            "name": "callback",
            "description": "Function called upon completion.",
            "parameters": []
          }
        ]
      },
      {
        "name": "getCurrentWallpaperThumbnail",
        "type": "function",
        "description": "Get a thumbnail of the wallpaper currently on display.",
        "nodoc": true,
        "parameters": [
          {
            "type": "integer",
            "name": "thumbnailWidth",
            "description": "The desired width of the thumbnail in pixels."
          },
          {
            "type": "integer",
            "name": "thumbnailHeight",
            "description": "The desired height of the thumbnail in pixels."
          },
          {
            "type": "function",
            "name": "callback",
            "description": "Function called upon completion.",
            "parameters": [
              {
                "type": "binary",
                "name": "thumbnail"
              }
            ]
          }
        ]
      },
      {
        "name": "getSurpriseMeImage",
        "type": "function",
        "description": "Gets the related info (url, description etc.) of a randomly selected wallpaper.",
        "nodoc": true,
        "parameters": [
          {
            "type": "string",
            "name": "collectionId",
            "description": "The id of the collection from which the surprise me wallpaper should be selected from."
          },
          {
            "type": "string",
            "name": "resumeToken",
            "optional": true,
            "description": " An opaque token returned the last time this function was called, to prevent image repetition. Leave empty if not available."
          },
          {
            "type": "function",
            "name": "callback",
            "description": "Function called upon completion.",
            "parameters": [
              {
                 "name": "imageInfo",
                  "$ref": "ImageInfo"
              },
              {
                 "type": "string",
                "name": "nextResumeToken",
                "description": "An opaque token that should be passed the next time this function is called, to prevent image repetition."
              }
            ]
          }
        ]
       }
    ],
    "events": [
      {
        "name": "onWallpaperChangedBy3rdParty",
        "type": "function",
        "description": "This event is sent when the current wallpaper was set by a third party application.",
        "parameters": [
          {
            "type": "binary",
            "name": "wallpaper",
            "description": "The third party custom wallpaper data."
          },
          {
            "type": "binary",
            "name": "thumbnail",
            "description": "The third party custom wallpaper thumbnail data."
          },
          {
            "name": "layout",
            "$ref": "wallpaper.WallpaperLayout"
          },
          {
            "type": "string",
            "name": "appName",
            "description": "The third party wallpaper app name."
          }
        ]
      }
    ]
  }
]
