// 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 chrome.declarativeContent
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 compound selectors 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 RE2 syntax.",
// "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 host permissions, but the extension must have a page action. If the extension takes the activeTab 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"
]
}
}
]
}
]