summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-28 22:24:51 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-28 22:24:51 +0000
commit2960ff9c5710d87b8008f493db48f7766d7264c6 (patch)
tree5dd5763899198d562635a31b20a47dbbf4bff8a8 /chrome
parent61b5fd31696961d51a7f0dc51d926ef1c0502f84 (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/extensions/extension_messages_unittest.cc6
-rwxr-xr-xchrome/common/extensions/docs/static/background_pages.html4
-rw-r--r--chrome/renderer/extensions/extension_process_bindings.cc28
-rw-r--r--chrome/renderer/render_view.cc6
-rw-r--r--chrome/renderer/renderer_resources.grd2
-rw-r--r--chrome/test/data/extensions/samples/benchmark/toolstrip.html2
-rw-r--r--chrome/test/data/extensions/samples/getviews/common.js2
-rw-r--r--chrome/test/data/extensions/samples/password_maker/toolstrip.html2
-rwxr-xr-xchrome/test/data/extensions/samples/screenshot/screenshot.js2
-rw-r--r--chrome/test/data/extensions/samples/subscribe/toolstrip.html2
-rw-r--r--chrome/test/data/extensions/samples/subscribe_page_action/background.html2
-rw-r--r--chrome/test/data/extensions/uitest/event_sink/test.html2
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');
});