summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-29 22:23:49 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-29 22:23:49 +0000
commitf7c80ac89d54f43a43a1fad19a5b4e919927d263 (patch)
treebff16aef806ed0e727a7e78ab6c08ecc5640d90e /chrome/renderer
parent52a26894a92e0d8b756bcce2bc96cd741f135329 (diff)
downloadchromium_src-f7c80ac89d54f43a43a1fad19a5b4e919927d263.zip
chromium_src-f7c80ac89d54f43a43a1fad19a5b4e919927d263.tar.gz
chromium_src-f7c80ac89d54f43a43a1fad19a5b4e919927d263.tar.bz2
Remove support for some deprecated APIs in manifest version 2.
TBR=kalman@chromium.org Review URL: http://codereview.chromium.org/9295042 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@119647 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/extensions/chrome_v8_context.cc8
-rw-r--r--chrome/renderer/extensions/chrome_v8_context.h5
-rw-r--r--chrome/renderer/extensions/extension_dispatcher.cc8
-rw-r--r--chrome/renderer/resources/extensions/event.js9
-rw-r--r--chrome/renderer/resources/extensions/extension_custom_bindings.js3
-rw-r--r--chrome/renderer/resources/extensions/miscellaneous_bindings.js18
-rw-r--r--chrome/renderer/resources/extensions/page_actions_custom_bindings.js1
-rw-r--r--chrome/renderer/resources/extensions/schema_generated_bindings.js40
8 files changed, 65 insertions, 27 deletions
diff --git a/chrome/renderer/extensions/chrome_v8_context.cc b/chrome/renderer/extensions/chrome_v8_context.cc
index 174b4ad..98b0c07 100644
--- a/chrome/renderer/extensions/chrome_v8_context.cc
+++ b/chrome/renderer/extensions/chrome_v8_context.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// 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.
@@ -112,12 +112,14 @@ bool ChromeV8Context::CallChromeHiddenMethod(
}
void ChromeV8Context::DispatchOnLoadEvent(bool is_extension_process,
- bool is_incognito_process) const {
+ bool is_incognito_process,
+ int manifest_version) const {
v8::HandleScope handle_scope;
- v8::Handle<v8::Value> argv[3];
+ v8::Handle<v8::Value> argv[4];
argv[0] = v8::String::New(extension_id_.c_str());
argv[1] = v8::Boolean::New(is_extension_process);
argv[2] = v8::Boolean::New(is_incognito_process);
+ argv[3] = v8::Integer::New(manifest_version);
CallChromeHiddenMethod("dispatchOnLoad", arraysize(argv), argv, NULL);
}
diff --git a/chrome/renderer/extensions/chrome_v8_context.h b/chrome/renderer/extensions/chrome_v8_context.h
index bbacfd1..19165ab 100644
--- a/chrome/renderer/extensions/chrome_v8_context.h
+++ b/chrome/renderer/extensions/chrome_v8_context.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// 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.
@@ -65,7 +65,8 @@ class ChromeV8Context {
// Fires the onload and onunload events on the chromeHidden object.
// TODO(aa): Move this to EventBindings.
void DispatchOnLoadEvent(bool is_extension_process,
- bool is_incognito_process) const;
+ bool is_incognito_process,
+ int manifest_version) const;
void DispatchOnUnloadEvent() const;
// Call the named method of the chromeHidden object in this context.
diff --git a/chrome/renderer/extensions/extension_dispatcher.cc b/chrome/renderer/extensions/extension_dispatcher.cc
index 1acc9af..8fd6b50 100644
--- a/chrome/renderer/extensions/extension_dispatcher.cc
+++ b/chrome/renderer/extensions/extension_dispatcher.cc
@@ -319,9 +319,15 @@ void ExtensionDispatcher::DidCreateScriptContext(
new ChromeV8Context(v8_context, frame, GetExtensionID(frame, world_id));
v8_context_set_.Add(context);
+ const Extension* extension = extensions_.GetByID(context->extension_id());
+ int manifest_version = 1;
+ if (extension)
+ manifest_version = extension->manifest_version();
+
context->DispatchOnLoadEvent(
is_extension_process_,
- ChromeRenderProcessObserver::is_incognito_process());
+ ChromeRenderProcessObserver::is_incognito_process(),
+ manifest_version);
VLOG(1) << "Num tracked contexts: " << v8_context_set_.size();
}
diff --git a/chrome/renderer/resources/extensions/event.js b/chrome/renderer/resources/extensions/event.js
index 45d7080..dffe201 100644
--- a/chrome/renderer/resources/extensions/event.js
+++ b/chrome/renderer/resources/extensions/event.js
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// 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.
@@ -233,11 +233,8 @@ var chrome = chrome || {};
chromeHidden.onLoad = new chrome.Event();
chromeHidden.onUnload = new chrome.Event();
- chromeHidden.dispatchOnLoad = function(extensionId, isExtensionProcess,
- isIncognitoContext) {
- chromeHidden.onLoad.dispatch(extensionId, isExtensionProcess,
- isIncognitoContext);
- };
+ chromeHidden.dispatchOnLoad =
+ chromeHidden.onLoad.dispatch.bind(chromeHidden.onLoad);
chromeHidden.dispatchOnUnload = function() {
chromeHidden.onUnload.dispatch();
diff --git a/chrome/renderer/resources/extensions/extension_custom_bindings.js b/chrome/renderer/resources/extensions/extension_custom_bindings.js
index 22a7f96..6444ef3 100644
--- a/chrome/renderer/resources/extensions/extension_custom_bindings.js
+++ b/chrome/renderer/resources/extensions/extension_custom_bindings.js
@@ -19,7 +19,8 @@ var WINDOW_ID_NONE = -1;
GetChromeHidden().registerCustomHook('extension', function(bindingsAPI) {
// getTabContentses is retained for backwards compatibility.
// See http://crbug.com/21433
- chrome.extension.getTabContentses = chrome.extension.getExtensionTabs;
+ if (chrome.extension.getExtensionTabs)
+ chrome.extension.getTabContentses = chrome.extension.getExtensionTabs;
var apiFunctions = bindingsAPI.apiFunctions;
diff --git a/chrome/renderer/resources/extensions/miscellaneous_bindings.js b/chrome/renderer/resources/extensions/miscellaneous_bindings.js
index 5a65a02..37ce11d 100644
--- a/chrome/renderer/resources/extensions/miscellaneous_bindings.js
+++ b/chrome/renderer/resources/extensions/miscellaneous_bindings.js
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// 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.
@@ -20,6 +20,7 @@ var chrome = chrome || {};
native function Print();
var chromeHidden = GetChromeHidden();
+ var manifestVersion;
// The reserved channel name for the sendRequest API.
chromeHidden.kRequestChannel = "chrome.extension.sendRequest";
@@ -125,8 +126,8 @@ var chrome = chrome || {};
if (connectEvent.hasListeners()) {
var port = chromeHidden.Port.createPort(portId, channelName);
port.sender = sender;
- // TODO(EXTENSIONS_DEPRECATED): port.tab is obsolete.
- port.tab = port.sender.tab;
+ if (manifestVersion < 2)
+ port.tab = port.sender.tab;
connectEvent.dispatch(port);
}
@@ -195,14 +196,19 @@ var chrome = chrome || {};
// This function is called on context initialization for both content scripts
// and extension contexts.
- chromeHidden.onLoad.addListener(function(extensionId, isExtensionProcess,
- inIncognitoContext) {
+ chromeHidden.onLoad.addListener(function(extensionId,
+ isExtensionProcess,
+ inIncognitoContext,
+ tempManifestVersion) {
chromeHidden.extensionId = extensionId;
+ manifestVersion = tempManifestVersion;
chrome.extension = chrome.extension || {};
chrome.self = chrome.extension;
- chrome.extension.inIncognitoTab = inIncognitoContext; // deprecated
+ if (manifestVersion < 2)
+ chrome.extension.inIncognitoTab = inIncognitoContext;
+
chrome.extension.inIncognitoContext = inIncognitoContext;
// Events for when a message channel is opened to our extension.
diff --git a/chrome/renderer/resources/extensions/page_actions_custom_bindings.js b/chrome/renderer/resources/extensions/page_actions_custom_bindings.js
index 515beb8..e9077ba 100644
--- a/chrome/renderer/resources/extensions/page_actions_custom_bindings.js
+++ b/chrome/renderer/resources/extensions/page_actions_custom_bindings.js
@@ -13,7 +13,6 @@ GetChromeHidden().registerCustomHook(
'pageActions', function(bindingsAPI, extensionId) {
var pageActions = GetCurrentPageActions(extensionId);
var oldStyleEventName = "pageActions";
- // TODO(EXTENSIONS_DEPRECATED): only one page action
for (var i = 0; i < pageActions.length; ++i) {
// Setup events for each extension_id/page_action_id string we find.
chrome.pageActions[pageActions[i]] = new chrome.Event(oldStyleEventName);
diff --git a/chrome/renderer/resources/extensions/schema_generated_bindings.js b/chrome/renderer/resources/extensions/schema_generated_bindings.js
index 32c7701..a935ff9 100644
--- a/chrome/renderer/resources/extensions/schema_generated_bindings.js
+++ b/chrome/renderer/resources/extensions/schema_generated_bindings.js
@@ -352,8 +352,25 @@ var chrome = chrome || {};
return "unknown";
}
- chromeHidden.onLoad.addListener(function(extensionId, isExtensionProcess,
- isIncognitoProcess) {
+ function isPlatformSupported(schemaNode, platform) {
+ return !schemaNode.platforms ||
+ schemaNode.platforms.indexOf(platform) > -1;
+ }
+
+ function isManifestVersionSupported(schemaNode, manifestVersion) {
+ return !schemaNode.maximumManifestVersion ||
+ manifestVersion <= schemaNode.maximumManifestVersion;
+ }
+
+ function isSchemaNodeSupported(schemaNode, platform, manifestVersion) {
+ return isPlatformSupported(schemaNode, platform) &&
+ isManifestVersionSupported(schemaNode, manifestVersion);
+ }
+
+ chromeHidden.onLoad.addListener(function(extensionId,
+ isExtensionProcess,
+ isIncognitoProcess,
+ manifestVersion) {
var apiDefinitions = GetExtensionAPIDefinition();
// Read api definitions and setup api functions in the chrome namespace.
@@ -365,10 +382,8 @@ var chrome = chrome || {};
var platform = getPlatform();
apiDefinitions.forEach(function(apiDef) {
- // Only generate bindings if supported by this platform.
- if (apiDef.platforms && apiDef.platforms.indexOf(platform) == -1) {
+ if (!isSchemaNodeSupported(apiDef, platform, manifestVersion))
return;
- }
var module = chrome;
var namespaces = apiDef.namespace.split('.');
@@ -380,6 +395,9 @@ var chrome = chrome || {};
// Add types to global validationTypes
if (apiDef.types) {
apiDef.types.forEach(function(t) {
+ if (!isSchemaNodeSupported(t, platform, manifestVersion))
+ return;
+
chromeHidden.validationTypes.push(t);
if (t.type == 'object' && customTypes[t.id]) {
customTypes[t.id].prototype.setSchema(t);
@@ -407,6 +425,9 @@ var chrome = chrome || {};
// Setup Functions.
if (apiDef.functions) {
apiDef.functions.forEach(function(functionDef) {
+ if (!isSchemaNodeSupported(functionDef, platform, manifestVersion))
+ return;
+
if (functionDef.name in module ||
addUnprivilegedAccessGetter(module, functionDef.name,
functionDef.unprivileged)) {
@@ -449,6 +470,9 @@ var chrome = chrome || {};
// Setup Events
if (apiDef.events) {
apiDef.events.forEach(function(eventDef) {
+ if (!isSchemaNodeSupported(eventDef, platform, manifestVersion))
+ return;
+
if (eventDef.name in module ||
addUnprivilegedAccessGetter(module, eventDef.name,
eventDef.unprivileged)) {
@@ -471,6 +495,9 @@ var chrome = chrome || {};
// Parse any values defined for properties.
if (def.properties) {
forEach(def.properties, function(prop, property) {
+ if (!isSchemaNodeSupported(property, platform, manifestVersion))
+ return;
+
if (prop in m ||
addUnprivilegedAccessGetter(m, prop, property.unprivileged)) {
return;
@@ -525,8 +552,7 @@ var chrome = chrome || {};
// custom hooks in extension processes, to maintain current behaviour. We
// should fix this this with a smaller hammer.
apiDefinitions.forEach(function(apiDef) {
- // Only generate bindings if supported by this platform.
- if (apiDef.platforms && apiDef.platforms.indexOf(platform) == -1)
+ if (!isSchemaNodeSupported(apiDef, platform, manifestVersion))
return;
var hook = customHooks[apiDef.namespace];