| Index: chrome/renderer/resources/extension_process_bindings.js
|
| diff --git a/chrome/renderer/resources/extension_process_bindings.js b/chrome/renderer/resources/extension_process_bindings.js
|
| index e828bd5c70f310dffee845196376db77e16cdb00..f132e558037a174ee0a3812d38d098a36404df8c 100644
|
| --- a/chrome/renderer/resources/extension_process_bindings.js
|
| +++ b/chrome/renderer/resources/extension_process_bindings.js
|
| @@ -15,7 +15,7 @@ var chrome = chrome || {};
|
| native function GetExtensionAPIDefinition();
|
| native function StartRequest();
|
| native function GetCurrentPageActions(extensionId);
|
| - native function GetViews();
|
| + native function GetExtensionViews();
|
| native function GetChromeHidden();
|
| native function GetNextRequestId();
|
| native function OpenChannelToTab();
|
| @@ -122,19 +122,6 @@ var chrome = chrome || {};
|
| return StartRequest(functionName, sargs, requestId, hasCallback);
|
| }
|
|
|
| - // Read api definitions and setup api functions in the chrome namespace.
|
| - // TODO(rafaelw): Consider defining a json schema for an api definition
|
| - // and validating either here, in a unit_test or both.
|
| - // TODO(rafaelw): Handle synchronous functions.
|
| - // TOOD(rafaelw): Consider providing some convenient override points
|
| - // for api functions that wish to insert themselves into the call.
|
| - var apiDefinitions = JSON.parse(GetExtensionAPIDefinition());
|
| -
|
| - // |apiFunctions| is a hash of name -> object that stores the
|
| - // name & definition of the apiFunction. Custom handling of api functions
|
| - // is implemented by adding a "handleRequest" function to the object.
|
| - var apiFunctions = {};
|
| -
|
| // Using forEach for convenience, and to bind |module|s & |apiDefs|s via
|
| // closures.
|
| function forEach(a, f) {
|
| @@ -149,49 +136,6 @@ var chrome = chrome || {};
|
| };
|
| }
|
|
|
| - forEach(apiDefinitions, function(apiDef) {
|
| - chrome[apiDef.namespace] = chrome[apiDef.namespace] || {};
|
| - var module = chrome[apiDef.namespace];
|
| -
|
| - // Setup Functions.
|
| - if (apiDef.functions) {
|
| - forEach(apiDef.functions, function(functionDef) {
|
| - // Module functions may have been defined earlier by hand. Don't clobber
|
| - // them.
|
| - if (module[functionDef.name])
|
| - return;
|
| -
|
| - var apiFunction = {};
|
| - apiFunction.definition = functionDef;
|
| - apiFunction.name = apiDef.namespace + "." + functionDef.name;;
|
| - apiFunctions[apiFunction.name] = apiFunction;
|
| -
|
| - module[functionDef.name] = bind(apiFunction, function() {
|
| - validate(arguments, this.definition.parameters);
|
| -
|
| - if (this.handleRequest)
|
| - return this.handleRequest.apply(this, arguments);
|
| - else
|
| - return sendRequest(this.name, arguments,
|
| - this.definition.parameters);
|
| - });
|
| - });
|
| - }
|
| -
|
| - // Setup Events
|
| - if (apiDef.events) {
|
| - forEach(apiDef.events, function(eventDef) {
|
| - // Module events may have been defined earlier by hand. Don't clobber
|
| - // them.
|
| - if (module[eventDef.name])
|
| - return;
|
| -
|
| - var eventName = apiDef.namespace + "." + eventDef.name;
|
| - module[eventDef.name] = new chrome.Event(eventName);
|
| - });
|
| - }
|
| - });
|
| -
|
| // --- Setup additional api's not currently handled in common/extensions/api
|
|
|
| // Page action events send (pageActionId, {tabId, tabUrl}).
|
| @@ -205,26 +149,97 @@ var chrome = chrome || {};
|
| }
|
| }
|
|
|
| - // Tabs connect()
|
| - apiFunctions["tabs.connect"].handleRequest = function(tabId, opt_name) {
|
| - var portId = OpenChannelToTab(tabId, chrome.extension.id_, opt_name || "");
|
| - return chromeHidden.Port.createPort(portId, opt_name);
|
| - }
|
| -
|
| - // chrome.self / chrome.extension.
|
| - chrome.self = chrome.self || {};
|
| -
|
| chromeHidden.onLoad.addListener(function (extensionId) {
|
| chrome.extension = new chrome.Extension(extensionId);
|
| - // TODO(mpcomplete): self.onConnect is deprecated. Remove it at 1.0.
|
| +
|
| + // TODO(mpcomplete): chrome.self is deprecated. Remove it at 1.0.
|
| // http://code.google.com/p/chromium/issues/detail?id=16356
|
| - chrome.self.onConnect = chrome.extension.onConnect;
|
| + chrome.self = chrome.extension;
|
| +
|
| + // |apiFunctions| is a hash of name -> object that stores the
|
| + // name & definition of the apiFunction. Custom handling of api functions
|
| + // is implemented by adding a "handleRequest" function to the object.
|
| + var apiFunctions = {};
|
| +
|
| + // Read api definitions and setup api functions in the chrome namespace.
|
| + // TODO(rafaelw): Consider defining a json schema for an api definition
|
| + // and validating either here, in a unit_test or both.
|
| + // TODO(rafaelw): Handle synchronous functions.
|
| + // TOOD(rafaelw): Consider providing some convenient override points
|
| + // for api functions that wish to insert themselves into the call.
|
| + var apiDefinitions = JSON.parse(GetExtensionAPIDefinition());
|
| +
|
| + forEach(apiDefinitions, function(apiDef) {
|
| + chrome[apiDef.namespace] = chrome[apiDef.namespace] || {};
|
| + var module = chrome[apiDef.namespace];
|
| +
|
| + // Setup Functions.
|
| + if (apiDef.functions) {
|
| + forEach(apiDef.functions, function(functionDef) {
|
| + // Module functions may have been defined earlier by hand. Don't
|
| + // clobber them.
|
| + if (module[functionDef.name])
|
| + return;
|
| +
|
| + var apiFunction = {};
|
| + apiFunction.definition = functionDef;
|
| + apiFunction.name = apiDef.namespace + "." + functionDef.name;;
|
| + apiFunctions[apiFunction.name] = apiFunction;
|
| +
|
| + module[functionDef.name] = bind(apiFunction, function() {
|
| + validate(arguments, this.definition.parameters);
|
| +
|
| + if (this.handleRequest)
|
| + return this.handleRequest.apply(this, arguments);
|
| + else
|
| + return sendRequest(this.name, arguments,
|
| + this.definition.parameters);
|
| + });
|
| + });
|
| + }
|
| +
|
| + // Setup Events
|
| + if (apiDef.events) {
|
| + forEach(apiDef.events, function(eventDef) {
|
| + // Module events may have been defined earlier by hand. Don't clobber
|
| + // them.
|
| + if (module[eventDef.name])
|
| + return;
|
| +
|
| + var eventName = apiDef.namespace + "." + eventDef.name;
|
| + module[eventDef.name] = new chrome.Event(eventName);
|
| + });
|
| + }
|
| + });
|
| +
|
| + apiFunctions["tabs.connect"].handleRequest = function(tabId, opt_name) {
|
| + var portId = OpenChannelToTab(
|
| + tabId, chrome.extension.id_, opt_name || "");
|
| + return chromeHidden.Port.createPort(portId, opt_name);
|
| + }
|
| +
|
| + apiFunctions["extension.getViews"].handleRequest = function() {
|
| + return GetExtensionViews(-1, "ALL");
|
| + }
|
| +
|
| + apiFunctions["extension.getBackgroundPage"].handleRequest = function() {
|
| + return GetExtensionViews(-1, "BACKGROUND")[0] || null;
|
| + }
|
| +
|
| + apiFunctions["extension.getToolstrips"].handleRequest =
|
| + function(windowId) {
|
| + if (typeof(windowId) == "undefined")
|
| + windowId = -1;
|
| + return GetExtensionViews(windowId, "TOOLSTRIP");
|
| + }
|
| +
|
| + apiFunctions["extension.getTabContentses"].handleRequest =
|
| + function(windowId) {
|
| + if (typeof(windowId) == "undefined")
|
| + windowId = -1;
|
| + return GetExtensionViews(windowId, "TAB");
|
| + }
|
|
|
| setupPageActionEvents(extensionId);
|
| });
|
| -
|
| - // Self getViews();
|
| - apiFunctions["self.getViews"].handleRequest = function() {
|
| - return GetViews();
|
| - }
|
| -})();
|
| + })();
|
|
|