| // 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": "declarativeContent", |
| "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.", |
| "types": [ |
| { |
| "id": "PageStateMatcher", |
| "type": "object", |
| "description": "Matches the state of a web page by various criteria.", |
| "properties": { |
| "pageUrl": { |
| "$ref": "events.UrlFilter", |
| "description": "Matches if the condition of the UrlFilter are fulfilled for the top-level URL of the page.", |
| "optional": true |
| }, |
| "css": { |
| "type": "array", |
| "optional": true, |
| "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.", |
| // TODO(jyasskin): Figure out if we want to require all |
| // the selectors to match in the same frame, or allow several |
| // frames to contribute to a match. |
| "items": { "type": "string" } |
| // }, |
| // TODO: "text": { |
| // "type": "array", |
| // "optional": true, |
| // "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>.", |
| // "items": { "type": "string" } |
| }, |
| "instanceType": { |
| "type": "string", "enum": ["declarativeContent.PageStateMatcher"], |
| "nodoc": true |
| } |
| } |
| }, |
| { |
| "id": "ShowPageAction", |
| "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.html#host-permission\">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.", |
| "type": "object", |
| "properties": { |
| "instanceType": { |
| "type": "string", "enum": ["declarativeContent.ShowPageAction"], |
| "nodoc": true |
| } |
| } |
| } |
| ], |
| "functions": [ |
| ], |
| "events": [ |
| { |
| "name": "onPageChanged", |
| "options": { |
| "supportsListeners": false, |
| "supportsRules": true, |
| "conditions": ["declarativeContent.PageStateMatcher"], |
| "actions": [ |
| "declarativeContent.ShowPageAction" |
| ] |
| } |
| } |
| ] |
| } |
| ] |