Index: chrome/renderer/resources/extensions/declarative_content_custom_bindings.js |
diff --git a/chrome/renderer/resources/extensions/declarative_content_custom_bindings.js b/chrome/renderer/resources/extensions/declarative_content_custom_bindings.js |
index beb5409e7baab66667f49f3452b5615f13bb8f99..fe154f7ee0a08ad01b7a4ecc39260acad898f127 100644 |
--- a/chrome/renderer/resources/extensions/declarative_content_custom_bindings.js |
+++ b/chrome/renderer/resources/extensions/declarative_content_custom_bindings.js |
@@ -8,6 +8,8 @@ var binding = require('binding').Binding.create('declarativeContent'); |
var utils = require('utils'); |
var validate = require('schemaUtils').validate; |
+var canonicalizeCompoundSelector = |
+ requireNative('css_natives').CanonicalizeCompoundSelector; |
binding.registerCustomHook( function(api) { |
var declarativeContent = api.compiledApi; |
@@ -35,9 +37,25 @@ binding.registerCustomHook( function(api) { |
validate([instance], [schema]); |
} |
+ function canonicalizeCssSelectors(selectors) { |
+ for (var i = 0; i < selectors.length; i++) { |
+ var canonicalizedSelector = canonicalizeCompoundSelector(selectors[i]); |
+ if (canonicalizedSelector == '') { |
+ throw new Error( |
+ 'Element of \'css\' array must be a ' + |
+ 'list of valid compound selectors: ' + |
+ selectors[i]); |
+ } |
+ selectors[i] = canonicalizedSelector; |
+ } |
+ } |
+ |
// Setup all data types for the declarative content API. |
declarativeContent.PageStateMatcher = function(parameters) { |
setupInstance(this, parameters, 'PageStateMatcher'); |
+ if ($Object.hasOwnProperty(this, 'css')) { |
+ canonicalizeCssSelectors(this.css); |
+ } |
}; |
declarativeContent.ShowPageAction = function(parameters) { |
setupInstance(this, parameters, 'ShowPageAction'); |