cygprofile: increase timeouts to allow showing web contents
[chromium-blink-merge.git] / chrome / common / extensions / api / declarative_content.json
blobadb05fe00437d23de3a040d7246bf1693579b5c4
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
6   {
7     "namespace": "declarativeContent",
8     "description": "Use the <code>chrome.declarativeContent</code> API to take actions depending on the content of a page, without requiring permission to read the page's content.",
9     "types": [
10       {
11         "id": "ImageDataType",
12         "type": "binary",
13         "isInstanceOf": "ImageData",
14         "additionalProperties": { "type": "any" },
15         "description": "See <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/ImageData\">https://developer.mozilla.org/en-US/docs/Web/API/ImageData</a>.",
16         "inline_doc": true
17       },
18       {
19         "id": "PageStateMatcher",
20         "type": "object",
21         "description": "Matches the state of a web page by various criteria.",
22         "properties": {
23           "pageUrl": {
24             "$ref": "events.UrlFilter",
25             "description": "Matches if the condition of the UrlFilter are fulfilled for the top-level URL of the page.",
26             "optional": true
27           },
28           "css": {
29             "type": "array",
30             "optional": true,
31             "description": "Matches if all of the CSS selectors in the array match displayed elements in a frame with the same origin as the page's main frame.  All selectors in this array must be <a href=\"http://www.w3.org/TR/selectors4/#compound\">compound selectors</a> to speed up matching.  Note that listing hundreds of CSS selectors or CSS selectors that match hundreds of times per page can still slow down web sites.",
32             // TODO(jyasskin): Figure out if we want to require all
33             // the selectors to match in the same frame, or allow several
34             // frames to contribute to a match.
35             "items": { "type": "string" }
36 //        },
37 //          TODO: "text": {
38 //            "type": "array",
39 //            "optional": true,
40 //            "description": "Matches if all of the regular expressions in the array match text in the page. The regular expressions use the <a href=\"http://code.google.com/p/re2/wiki/Syntax\">RE2 syntax</a>.",
41 //            "items": { "type": "string" }
42           },
43           "isBookmarked": {
44             "type": "boolean",
45             "description": "Matches if the bookmarked state of the page is equal to the specified value. Requres the <a href='declare_permissions'>bookmarks permission</a>.",
46             "optional": true
47           },
48           "instanceType": {
49             "type": "string", "enum": ["declarativeContent.PageStateMatcher"],
50             "nodoc": true
51           }
52         }
53       },
54       {
55         "id": "ShowPageAction",
56         "description": "Declarative event action that shows the extension's $(ref:pageAction page action) while the corresponding conditions are met.  This action can be used without <a href=\"declare_permissions#host-permissions\">host permissions</a>, but the extension must have a page action.  If the extension takes the <a href=\"activeTab.html\">activeTab</a> permission, a click on the page action will grant access to the active tab.",
57         "type": "object",
58         "properties": {
59           "instanceType": {
60             "type": "string", "enum": ["declarativeContent.ShowPageAction"],
61             "nodoc": true
62           }
63         }
64       },
65       {
66         "id": "SetIcon",
67         "description": "Declarative event action that sets the 19-<abbr title=\"device-independent pixel\">dip</abbr> square icon for the extension's $(ref:pageAction page action) or $(ref:browserAction browser action) while the corresponding conditions are met.  This action can be used without <a href=\"declare_permissions.html#host-permissions\">host permissions</a>, but the extension must have  page or browser action.<p>Exactly one of <code>imageData</code> or <code>path</code> must be specified.  Both are dictionaries mapping a number of pixels to an image representation. The image representation in <code>imageData</code> is an<a href=\"https://developer.mozilla.org/en-US/docs/Web/API/ImageData\">ImageData</a> object, for example from a <code>&lt;canvas></code> element, while the image representation in <code>path</code> is the path to an image file relative to he extension's manifest.  If <code>scale</code> screen pixels fit into a device-independent pixel, the <code>scale * 19</code> icon will be used.  If that scale is missing, the other image will be resized to the needed size.",
68         "type": "object",
69         "properties": {
70           "instanceType": {
71             "type": "string", "enum": ["declarativeContent.SetIcon"],
72             "nodoc": true
73           },
74           "imageData": {
75             "choices": [
76               { "$ref": "ImageDataType" },
77               {
78                 "type": "object",
79                 "properties": {
80                   "19": {"$ref": "ImageDataType", "optional": true},
81                   "38": {"$ref": "ImageDataType", "optional": true}
82                 }
83               }
84             ],
85             "optional": true,
86             "description": "Either an ImageData object or a dictionary {size -> ImageData} representing icon to be set. If the icon is specified as a dictionary, the actual image to be used is chosen depending on screen's pixel density. If the number of image pixels that fit into one screen space unit equals <code>scale</code>, then image with size <code>scale</code> * 19 will be selected. Initially only scales 1 and 2 will be supported. At least one image must be specified. Note that 'details.imageData = foo' is equivalent to 'details.imageData = {'19': foo}'"
87           }
88 //          TODO: "path": {
89 //            "choices": [
90 //              { "type": "string" },
91 //              {
92 //                "type": "object",
93 //                "properties": {
94 //                  "19": {"type": "string", "optional": true},
95 //                  "38": {"type": "string", "optional": true}
96 //                }
97 //              }
98 //            ],
99 //            "optional": true,
100 //            "description": "Either a relative image path or a dictionary {size -> relative image path} pointing to icon to be set. If the icon is specified as a dictionary, the actual image to be used is chosen depending on screen's pixel density. If the number of image pixels that fit into one screen space unit equals <code>scale</code>, then image with size <code>scale</code> * 19 will be selected. Initially only scales 1 and 2 will be supported. At least one image must be specified. Note that 'details.path = foo' is equivalent to 'details.imageData = {'19': foo}'"
101 //          }
102         }
103       },
104       {
105         "id": "RequestContentScript",
106         "description": "Declarative event action that injects a content script. <p><b>WARNING:</b> This action is still experimental and is not supported on stable builds of Chrome.</p>",
107         "type": "object",
108         "properties": {
109           "css": {
110             "type": "array",
111             "optional": true,
112             "description": "Names of CSS files to be injected as a part of the content script.",
113             "items": { "type": "string" }
114           },
115           "js": {
116             "type": "array",
117             "optional": true,
118             "description": "Names of Javascript files to be injected as a part of the content script.",
119             "items": { "type": "string" }
120           },
121           "allFrames": {
122             "type": "boolean",
123             "optional": true,
124             "description": "Whether the content script runs in all frames of the matching page, or only the top frame. Default is false."
125           },
126           "matchAboutBlank": {
127             "type": "boolean",
128             "optional": true,
129             "description": "Whether to insert the content script on about:blank and about:srcdoc. Default is false."
130           },
131           "instanceType": {
132             "type": "string", "enum": ["declarativeContent.RequestContentScript"],
133             "nodoc": true
134           }
135         }
136       }
137     ],
138     "functions": [
139     ],
140     "events": [
141       {
142         "name": "onPageChanged",
143         "options": {
144           "supportsListeners": false,
145           "supportsRules": true,
146           "conditions": ["declarativeContent.PageStateMatcher"],
147           "actions": [
148             "declarativeContent.RequestContentScript",
149             "declarativeContent.SetIcon",
150             "declarativeContent.ShowPageAction"
151           ]
152         }
153       }
154     ]
155   }