Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9125)

Unified Diff: chrome/renderer/resources/extensions/declarative_custom_bindings.js

Issue 10392127: Move declarative API into events API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix change schema type reference from 'Event' to 'events.Event' Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/resources/extensions/declarative_custom_bindings.js
diff --git a/chrome/renderer/resources/extensions/declarative_custom_bindings.js b/chrome/renderer/resources/extensions/declarative_custom_bindings.js
deleted file mode 100644
index 0342775b51df7009166f0ba4f951683fe9043286..0000000000000000000000000000000000000000
--- a/chrome/renderer/resources/extensions/declarative_custom_bindings.js
+++ /dev/null
@@ -1,76 +0,0 @@
-// 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.
-
-// Custom bindings for the declarative API.
-
-var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();
-var sendRequest = require('sendRequest').sendRequest;
-
-chromeHidden.registerCustomHook('declarative',
- function(bindingsAPI) {
- var apiFunctions = bindingsAPI.apiFunctions;
- var apiDefinitions = bindingsAPI.apiDefinitions;
- var cachedEventOptions = {};
-
- function getEventOptions(qualifiedEventName) {
- if (cachedEventOptions[qualifiedEventName])
- return cachedEventOptions[qualifiedEventName];
-
- // Parse qualifiedEventName into namespace and event name.
- var lastSeparator = qualifiedEventName.lastIndexOf('.');
- var eventName = qualifiedEventName.substr(lastSeparator + 1);
- var namespace = qualifiedEventName.substr(0, lastSeparator);
-
- // Lookup schema definition.
- var filterNamespace = function(val) {return val.namespace === namespace;};
- var apiSchema = apiDefinitions.filter(filterNamespace)[0];
- var filterEventName = function (val) {return val.name === eventName;};
- var eventSchema = apiSchema.events.filter(filterEventName)[0];
-
- cachedEventOptions[qualifiedEventName] = eventSchema.options;
- return eventSchema.options;
- }
-
- // Takes a list of JSON datatype identifiers and returns a schema fragment
- // that verifies that a JSON object corresponds to an array of only these
- // data types.
- function buildArrayOfChoicesSchema(typesList) {
- return {
- 'type': 'array',
- 'items': {
- 'choices': typesList.map(function(el) {return {'$ref': el};})
- }
- };
- }
-
- // Validate conditions and actions against specific schemas of this
- // event object type.
- // |rules| is an array of JSON objects that follow the Rule type of the
- // declarative extension APIs. |conditions| is an array of JSON type
- // identifiers that are allowed to occur in the conditions attribute of each
- // rule. Likewise, |actions| is an array of JSON type identifiers that are
- // allowed to occur in the actions attribute of each rule.
- function validateRules(rules, conditions, actions) {
- var conditionsSchema = buildArrayOfChoicesSchema(conditions);
- var actionsSchema = buildArrayOfChoicesSchema(actions);
- rules.forEach(function(rule) {
- chromeHidden.validate([rule.conditions], [conditionsSchema]);
- chromeHidden.validate([rule.actions], [actionsSchema]);
- })
- }
-
- apiFunctions.setHandleRequest('addRules',
- function(eventName, rules, opt_callback) {
- var eventOptions = getEventOptions(eventName);
- if (!eventOptions.conditions || !eventOptions.actions) {
- throw new Error('Event ' + eventName + ' misses conditions or ' +
- 'actions in the API specification.');
- }
- validateRules(rules,
- eventOptions.conditions,
- eventOptions.actions);
- sendRequest(this.name, [eventName, rules, opt_callback],
- this.definition.parameters);
- });
-});
« no previous file with comments | « chrome/renderer/renderer_resources.grd ('k') | chrome/renderer/resources/extensions/declarative_webrequest_custom_bindings.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698