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.
4
5[
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": "PageStateMatcher",
12        "type": "object",
13        "description": "Matches the state of a web page by various criteria.",
14        "properties": {
15          "pageUrl": {
16            "$ref": "events.UrlFilter",
17            "description": "Matches if the condition of the UrlFilter are fulfilled for the top-level URL of the page.",
18            "optional": true
19          },
20          "css": {
21            "type": "array",
22            "optional": true,
23            "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.",
24            // TODO(jyasskin): Figure out if we want to require all
25            // the selectors to match in the same frame, or allow several
26            // frames to contribute to a match.
27            "items": { "type": "string" }
28//        },
29//          TODO: "text": {
30//            "type": "array",
31//            "optional": true,
32//            "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>.",
33//            "items": { "type": "string" }
34          },
35          "instanceType": {
36            "type": "string", "enum": ["declarativeContent.PageStateMatcher"],
37            "nodoc": true
38          }
39        }
40      },
41      {
42        "id": "ShowPageAction",
43        "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.",
44        "type": "object",
45        "properties": {
46          "instanceType": {
47            "type": "string", "enum": ["declarativeContent.ShowPageAction"],
48            "nodoc": true
49          }
50        }
51      }
52    ],
53    "functions": [
54    ],
55    "events": [
56      {
57        "name": "onPageChanged",
58        "options": {
59          "supportsListeners": false,
60          "supportsRules": true,
61          "conditions": ["declarativeContent.PageStateMatcher"],
62          "actions": [
63            "declarativeContent.ShowPageAction"
64          ]
65        }
66      }
67    ]
68  }
69]
70