// 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": "manifest", "types": [ { "$extend": "OptionalPermission", "choices": [{ "type": "string", "enum": [ "bookmarks" ] }] } ] }, { "namespace": "bookmarks", "description": "Use the browser.bookmarks API to create, organize, and otherwise manipulate bookmarks. Also see $(topic:override)[Override Pages], which you can use to create a custom Bookmark Manager page.", "permissions": ["bookmarks"], "types": [ { "id": "BookmarkTreeNodeUnmodifiable", "type": "string", "enum": ["managed"], "description": "Indicates the reason why this node is unmodifiable. The managed value indicates that this node was configured by the system administrator or by the custodian of a supervised user. Omitted if the node can be modified by the user and the extension (default)." }, { "id": "BookmarkTreeNodeType", "type": "string", "enum": ["bookmark", "folder", "separator"], "description": "Indicates the type of a BookmarkTreeNode, which can be one of bookmark, folder or separator." }, { "id": "BookmarkTreeNode", "type": "object", "description": "A node (either a bookmark or a folder) in the bookmark tree. Child nodes are ordered within their parent folder.", "properties": { "id": { "type": "string", "description": "The unique identifier for the node. IDs are unique within the current profile, and they remain valid even after the browser is restarted." }, "parentId": { "type": "string", "optional": true, "description": "The id of the parent folder. Omitted for the root node." }, "index": { "type": "integer", "optional": true, "description": "The 0-based position of this node within its parent folder." }, "url": { "type": "string", "optional": true, "description": "The URL navigated to when a user clicks the bookmark. Omitted for folders." }, "title": { "type": "string", "description": "The text displayed for the node." }, "dateAdded": { "type": "number", "optional": true, "description": "When this node was created, in milliseconds since the epoch (new Date(dateAdded))." }, "dateGroupModified": { "type": "number", "optional": true, "description": "When the contents of this folder last changed, in milliseconds since the epoch." }, "unmodifiable": { "$ref": "BookmarkTreeNodeUnmodifiable", "optional": true, "description": "Indicates the reason why this node is unmodifiable. The managed value indicates that this node was configured by the system administrator or by the custodian of a supervised user. Omitted if the node can be modified by the user and the extension (default)." }, "type": { "$ref": "BookmarkTreeNodeType", "optional": true, "description": "Indicates the type of the BookmarkTreeNode, which can be one of bookmark, folder or separator." }, "children": { "type": "array", "optional": true, "items": { "$ref": "BookmarkTreeNode" }, "description": "An ordered list of children of this node." } } }, { "id": "CreateDetails", "description": "Object passed to the create() function.", "type": "object", "properties": { "parentId": { "type": "string", "optional": true, "description": "Defaults to the Other Bookmarks folder." }, "index": { "type": "integer", "minimum": 0, "optional": true }, "title": { "type": "string", "optional": true }, "url": { "type": "string", "optional": true }, "type": { "$ref": "BookmarkTreeNodeType", "optional": true, "description": "Indicates the type of BookmarkTreeNode to create, which can be one of bookmark, folder or separator." } } } ], "functions": [ { "name": "get", "type": "function", "description": "Retrieves the specified BookmarkTreeNode(s).", "async": "callback", "parameters": [ { "name": "idOrIdList", "description": "A single string-valued id, or an array of string-valued ids", "choices": [ { "type": "string" }, { "type": "array", "items": { "type": "string" }, "minItems": 1 } ] }, { "type": "function", "name": "callback", "parameters": [ { "name": "results", "type": "array", "items": { "$ref": "BookmarkTreeNode" } } ] } ] }, { "name": "getChildren", "type": "function", "description": "Retrieves the children of the specified BookmarkTreeNode id.", "async": "callback", "parameters": [ { "type": "string", "name": "id" }, { "type": "function", "name": "callback", "parameters": [ { "name": "results", "type": "array", "items": { "$ref": "BookmarkTreeNode"} } ] } ] }, { "name": "getRecent", "type": "function", "description": "Retrieves the recently added bookmarks.", "async": "callback", "parameters": [ { "type": "integer", "minimum": 1, "name": "numberOfItems", "description": "The maximum number of items to return." }, { "type": "function", "name": "callback", "parameters": [ { "name": "results", "type": "array", "items": { "$ref": "BookmarkTreeNode" } } ] } ] }, { "name": "getTree", "type": "function", "description": "Retrieves the entire Bookmarks hierarchy.", "async": "callback", "parameters": [ { "type": "function", "name": "callback", "parameters": [ { "name": "results", "type": "array", "items": { "$ref": "BookmarkTreeNode" } } ] } ] }, { "name": "getSubTree", "type": "function", "description": "Retrieves part of the Bookmarks hierarchy, starting at the specified node.", "async": "callback", "parameters": [ { "type": "string", "name": "id", "description": "The ID of the root of the subtree to retrieve." }, { "type": "function", "name": "callback", "parameters": [ { "name": "results", "type": "array", "items": { "$ref": "BookmarkTreeNode" } } ] } ] }, { "name": "search", "type": "function", "description": "Searches for BookmarkTreeNodes matching the given query. Queries specified with an object produce BookmarkTreeNodes matching all specified properties.", "async": "callback", "parameters": [ { "name": "query", "description": "Either a string of words that are matched against bookmark URLs and titles, or an object. If an object, the properties query, url, and title may be specified and bookmarks matching all specified properties will be produced.", "choices": [ { "type": "string", "description": "A string of words that are matched against bookmark URLs and titles." }, { "type": "object", "description": "An object specifying properties and values to match when searching. Produces bookmarks matching all properties.", "properties": { "query": { "type": "string", "optional": true, "description": "A string of words that are matched against bookmark URLs and titles." }, "url": { "type": "string", "format": "url", "optional": true, "description": "The URL of the bookmark; matches verbatim. Note that folders have no URL." }, "title": { "type": "string", "optional": true, "description": "The title of the bookmark; matches verbatim." } } } ] }, { "type": "function", "name": "callback", "parameters": [ { "name": "results", "type": "array", "items": { "$ref": "BookmarkTreeNode" } } ] } ] }, { "name": "create", "type": "function", "description": "Creates a bookmark or folder under the specified parentId. If url is NULL or missing, it will be a folder.", "async": "callback", "parameters": [ { "$ref": "CreateDetails", "name": "bookmark" }, { "type": "function", "name": "callback", "optional": true, "parameters": [ { "name": "result", "$ref": "BookmarkTreeNode" } ] } ] }, { "name": "move", "type": "function", "description": "Moves the specified BookmarkTreeNode to the provided location.", "async": "callback", "parameters": [ { "type": "string", "name": "id" }, { "type": "object", "name": "destination", "properties": { "parentId": { "type": "string", "optional": true }, "index": { "type": "integer", "minimum": 0, "optional": true } } }, { "type": "function", "name": "callback", "optional": true, "parameters": [ { "name": "result", "$ref": "BookmarkTreeNode" } ] } ] }, { "name": "update", "type": "function", "description": "Updates the properties of a bookmark or folder. Specify only the properties that you want to change; unspecified properties will be left unchanged. Note: Currently, only 'title' and 'url' are supported.", "async": "callback", "parameters": [ { "type": "string", "name": "id" }, { "type": "object", "name": "changes", "properties": { "title": { "type": "string", "optional": true }, "url": { "type": "string", "optional": true } } }, { "type": "function", "name": "callback", "optional": true, "parameters": [ { "name": "result", "$ref": "BookmarkTreeNode" } ] } ] }, { "name": "remove", "type": "function", "description": "Removes a bookmark or an empty bookmark folder.", "async": "callback", "parameters": [ { "type": "string", "name": "id" }, { "type": "function", "name": "callback", "optional": true, "parameters": [] } ] }, { "name": "removeTree", "type": "function", "description": "Recursively removes a bookmark folder.", "async": "callback", "parameters": [ { "type": "string", "name": "id" }, { "type": "function", "name": "callback", "optional": true, "parameters": [] } ] } ], "events": [ { "name": "onCreated", "type": "function", "description": "Fired when a bookmark or folder is created.", "parameters": [ { "type": "string", "name": "id" }, { "$ref": "BookmarkTreeNode", "name": "bookmark" } ] }, { "name": "onRemoved", "type": "function", "description": "Fired when a bookmark or folder is removed. When a folder is removed recursively, a single notification is fired for the folder, and none for its contents.", "parameters": [ { "type": "string", "name": "id" }, { "type": "object", "name": "removeInfo", "properties": { "parentId": { "type": "string" }, "index": { "type": "integer" }, "node": { "$ref": "BookmarkTreeNode" } } } ] }, { "name": "onChanged", "type": "function", "description": "Fired when a bookmark or folder changes. Note: Currently, only title and url changes trigger this.", "parameters": [ { "type": "string", "name": "id" }, { "type": "object", "name": "changeInfo", "properties": { "title": { "type": "string" }, "url": { "type": "string", "optional": true } } } ] }, { "name": "onMoved", "type": "function", "description": "Fired when a bookmark or folder is moved to a different parent folder.", "parameters": [ { "type": "string", "name": "id" }, { "type": "object", "name": "moveInfo", "properties": { "parentId": { "type": "string" }, "index": { "type": "integer" }, "oldParentId": { "type": "string" }, "oldIndex": { "type": "integer" } } } ] }, { "name": "onChildrenReordered", "unsupported": true, "type": "function", "description": "Fired when the children of a folder have changed their order due to the order being sorted in the UI. This is not called as a result of a move().", "parameters": [ { "type": "string", "name": "id" }, { "type": "object", "name": "reorderInfo", "properties": { "childIds": { "type": "array", "items": { "type": "string" } } } } ] }, { "name": "onImportBegan", "unsupported": true, "type": "function", "description": "Fired when a bookmark import session is begun. Expensive observers should ignore onCreated updates until onImportEnded is fired. Observers should still handle other notifications immediately.", "parameters": [] }, { "name": "onImportEnded", "unsupported": true, "type": "function", "description": "Fired when a bookmark import session is ended.", "parameters": [] } ] } ]