diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-28 22:24:51 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-28 22:24:51 +0000 |
commit | 2960ff9c5710d87b8008f493db48f7766d7264c6 (patch) | |
tree | 5dd5763899198d562635a31b20a47dbbf4bff8a8 /chrome | |
parent | 61b5fd31696961d51a7f0dc51d926ef1c0502f84 (diff) | |
download | chromium_src-2960ff9c5710d87b8008f493db48f7766d7264c6.zip chromium_src-2960ff9c5710d87b8008f493db48f7766d7264c6.tar.gz chromium_src-2960ff9c5710d87b8008f493db48f7766d7264c6.tar.bz2 |
Make a bunch of backlogged breaking changes to the extensions API in prep for dev:
* Enforce permissions on cross-origin XHR
* Enforce module-level permissions
* Decided not to completely remove chrome.self since it is so widely used, but removed all references to it from samples and docs.
BUG=16356,12129,12140
TEST=Sample extensions on http://dev.chromium.org/developers/design-documents/extensions/samples should still work
Review URL: http://codereview.chromium.org/179027
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24816 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
12 files changed, 15 insertions, 45 deletions
diff --git a/chrome/browser/extensions/extension_messages_unittest.cc b/chrome/browser/extensions/extension_messages_unittest.cc index aa6615c..8246097 100644 --- a/chrome/browser/extensions/extension_messages_unittest.cc +++ b/chrome/browser/extensions/extension_messages_unittest.cc @@ -88,7 +88,7 @@ TEST_F(RenderViewTest, ExtensionMessagesOpenChannel) { TEST_F(RenderViewTest, ExtensionMessagesOnConnect) { LoadHTML("<body></body>"); ExecuteJavaScript( - "chrome.self.onConnect.addListener(function (port) {" + "chrome.extension.onConnect.addListener(function (port) {" " port.test = 24;" " port.onMessage.addListener(doOnMessage);" " port.onDisconnect.addListener(doOnDisconnect);" @@ -153,7 +153,7 @@ TEST_F(RenderViewTest, ExtensionMessagesOnConnect) { TEST_F(RenderViewTest, ExtensionMessagesDisconnect) { LoadHTML("<body></body>"); ExecuteJavaScript( - "chrome.self.onConnect.addListener(function (port) {" + "chrome.extension.onConnect.addListener(function (port) {" " port.onMessage.addListener(function(msg, p) {" " if (msg.disconnect) port.disconnect();" " });" @@ -161,7 +161,7 @@ TEST_F(RenderViewTest, ExtensionMessagesDisconnect) { "var iframe1 = document.createElement('iframe');" "var iframe2 = document.createElement('iframe');" "var src = 'javascript:" - " chrome.self.onConnect.addListener(function(port) {" + " chrome.extension.onConnect.addListener(function(port) {" " port.postMessage(\"onconnect\");" " port.onMessage.addListener(function(p) { alert(\"NOTREACHED\"); });" " port.disconnect();" diff --git a/chrome/common/extensions/docs/static/background_pages.html b/chrome/common/extensions/docs/static/background_pages.html index 79ec203..426dbf7 100755 --- a/chrome/common/extensions/docs/static/background_pages.html +++ b/chrome/common/extensions/docs/static/background_pages.html @@ -39,7 +39,7 @@ only the necessary code to display the toolstrip UI, with all your extension logic contained in the background page. You can communicate between your various pages using direct script calls, similar to how frames can communicate. -The chrome.self.getViews() function +The chrome.extension.getViews() function returns a list of window objects for every active page belonging to your extension. </p> @@ -48,7 +48,7 @@ for every active page belonging to your extension. <pre>background_page.html (snippet): function updateUI(checked) { - var views = chrome.self.getViews(); + var views = chrome.extension.getViews(); for (var i in views) { if (views[i].enableCheckbox) views[i].enableCheckbox(checked); diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc index 7fc6bda..0b019ae 100644 --- a/chrome/renderer/extensions/extension_process_bindings.cc +++ b/chrome/renderer/extensions/extension_process_bindings.cc @@ -250,11 +250,7 @@ class ExtensionImpl : public ExtensionBase { } if (!ExtensionProcessBindings::CurrentContextHasPermission(name)) { -#if EXTENSION_TIME_TO_BREAK_API return ExtensionProcessBindings::ThrowPermissionDeniedException(name); -#else - ExtensionProcessBindings::ThrowPermissionDeniedException(name); -#endif } std::string json_args = *v8::String::Utf8Value(args[1]); @@ -373,7 +369,7 @@ bool ExtensionProcessBindings::CurrentContextHasPermission( PermissionsMap::iterator it = permissions_map.find(permission_name); // We explicitly check if the permission entry is present and false, because - // some APIs do not have a required permission entry (ie, "chrome.self"). + // some APIs do not have a required permission entry (ie, "chrome.extension"). return (it == permissions_map.end() || it->second); } @@ -387,28 +383,6 @@ v8::Handle<v8::Value> std::string permission_name = GetPermissionName(function_name); std::string error_msg = StringPrintf(kMessage, permission_name.c_str()); -#if EXTENSION_TIME_TO_BREAK_API return v8::ThrowException(v8::Exception::Error( v8::String::New(error_msg.c_str()))); -#else - // Call console.error for now. - - v8::HandleScope scope; - - v8::Local<v8::Value> console = - v8::Context::GetCurrent()->Global()->Get(v8::String::New("console")); - v8::Local<v8::Value> console_error; - if (!console.IsEmpty() && console->IsObject()) - console_error = console->ToObject()->Get(v8::String::New("error")); - if (console_error.IsEmpty() || !console_error->IsFunction()) - return v8::Undefined(); - - v8::Local<v8::Function> function = - v8::Local<v8::Function>::Cast(console_error); - v8::Local<v8::Value> argv[] = { v8::String::New(error_msg.c_str()) }; - if (!function.IsEmpty()) - function->Call(console->ToObject(), arraysize(argv), argv); - - return v8::Undefined(); -#endif } diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index 48caa47..c76c31a 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -1567,16 +1567,12 @@ void RenderView::WindowObjectCleared(WebFrame* frame) { } void RenderView::DocumentElementAvailable(WebFrame* frame) { - // TODO(aa): Remove this before dev release. - GURL url = frame->url(); - if (url.SchemeIs(chrome::kExtensionScheme)) - frame->grantUniversalAccess(); - if (RenderThread::current()) // Will be NULL during unit tests. RenderThread::current()->user_script_slave()->InjectScripts( frame, UserScript::DOCUMENT_START); // Notify the browser about non-blank documents loading in the top frame. + GURL url = frame->url(); if (url.is_valid() && url.spec() != "about:blank") { if (frame == webview()->GetMainFrame()) Send(new ViewHostMsg_DocumentAvailableInMainFrame(routing_id_)); diff --git a/chrome/renderer/renderer_resources.grd b/chrome/renderer/renderer_resources.grd index 5ec2309..eb128c7 100644 --- a/chrome/renderer/renderer_resources.grd +++ b/chrome/renderer/renderer_resources.grd @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- This comment is only here because changes to resources are not picked up -without changes to the corresponding grd file. rw --> +without changes to the corresponding grd file. aa1 --> <grit latest_public_release="0" current_release="1"> <outputs> <output filename="grit/renderer_resources.h" type="rc_header"> diff --git a/chrome/test/data/extensions/samples/benchmark/toolstrip.html b/chrome/test/data/extensions/samples/benchmark/toolstrip.html index a9e1230..01e8dc4 100644 --- a/chrome/test/data/extensions/samples/benchmark/toolstrip.html +++ b/chrome/test/data/extensions/samples/benchmark/toolstrip.html @@ -172,7 +172,7 @@ function Benchmark() { var benchmarks = new Array(); -chrome.self.onConnect.addListener(function(port) { +chrome.extension.onConnect.addListener(function(port) { port.onMessage.addListener(function(data) { if (data.message == "load") { var benchmark = benchmarks[data.url]; diff --git a/chrome/test/data/extensions/samples/getviews/common.js b/chrome/test/data/extensions/samples/getviews/common.js index 0ca0b9a..055dc20 100644 --- a/chrome/test/data/extensions/samples/getviews/common.js +++ b/chrome/test/data/extensions/samples/getviews/common.js @@ -1,5 +1,5 @@ function claim() { - var views = chrome.self.getViews(); + var views = chrome.extension.getViews(); for (var i = 0; i < views.length; i++) { views[i].respond(document.getElementById("me").innerHTML); } diff --git a/chrome/test/data/extensions/samples/password_maker/toolstrip.html b/chrome/test/data/extensions/samples/password_maker/toolstrip.html index a641ff7..30c70bf 100644 --- a/chrome/test/data/extensions/samples/password_maker/toolstrip.html +++ b/chrome/test/data/extensions/samples/password_maker/toolstrip.html @@ -8,7 +8,7 @@ chrome.windows.getCurrent(function(win) { windowId = win.id; }); -chrome.self.onConnect.addListener(function (port) { +chrome.extension.onConnect.addListener(function (port) { if (port.tab.windowId != windowId) return; port.onMessage.addListener(function (msg, port) { diff --git a/chrome/test/data/extensions/samples/screenshot/screenshot.js b/chrome/test/data/extensions/samples/screenshot/screenshot.js index 904c229..4a89dc4 100755 --- a/chrome/test/data/extensions/samples/screenshot/screenshot.js +++ b/chrome/test/data/extensions/samples/screenshot/screenshot.js @@ -9,7 +9,7 @@ function takeScreenshot() { chrome.tabs.onUpdated.addListener(function(tabId, changedProps) { if (tabId == targetId && changedProps.status == "complete") { - var views = chrome.self.getViews(); + var views = chrome.extension.getViews(); for (var i = 0; i < views.length; i++) { var view = views[i]; if (view.location.href == viewTabUrl) { diff --git a/chrome/test/data/extensions/samples/subscribe/toolstrip.html b/chrome/test/data/extensions/samples/subscribe/toolstrip.html index c2355a6..ab4bcbc 100644 --- a/chrome/test/data/extensions/samples/subscribe/toolstrip.html +++ b/chrome/test/data/extensions/samples/subscribe/toolstrip.html @@ -11,7 +11,7 @@ button.onclick = handleClick;
- chrome.self.onConnect.addListener(function(port) {
+ chrome.extension.onConnect.addListener(function(port) {
port.onMessage.addListener(function(feedUrls) {
// TODO(aa): When we have the ability to display drop downs, we should let
// the user pick which feed to subscribe. Right now, we just pick the
diff --git a/chrome/test/data/extensions/samples/subscribe_page_action/background.html b/chrome/test/data/extensions/samples/subscribe_page_action/background.html index e77d2e4..a8a0902 100644 --- a/chrome/test/data/extensions/samples/subscribe_page_action/background.html +++ b/chrome/test/data/extensions/samples/subscribe_page_action/background.html @@ -11,7 +11,7 @@ // example what feedUrl was detected in the tab). var feedData = {}; - chrome.self.onConnect.addListener(function(port) { + chrome.extension.onConnect.addListener(function(port) { // This will get called from the content script using PostMessage. // |feedUrls| is a list of URL feeds found on the page. We only need 1 to // enable the PageAction icon in the Omnibox. diff --git a/chrome/test/data/extensions/uitest/event_sink/test.html b/chrome/test/data/extensions/uitest/event_sink/test.html index 284d8c5..056f557 100644 --- a/chrome/test/data/extensions/uitest/event_sink/test.html +++ b/chrome/test/data/extensions/uitest/event_sink/test.html @@ -9,7 +9,7 @@ HOLA!!! If you dont see the message DONE, then there is an error in the script. // Wait for the automation server to create a port so that we can communicate // back to it. var portToAutomation; - chrome.self.onConnect.addListener(function(port) { + chrome.extension.onConnect.addListener(function(port) { portToAutomation = port; portToAutomation.postMessage('ACK'); }); |