summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authormpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-03 17:57:44 +0000
committermpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-03 17:57:44 +0000
commitc2e74fe834afaeed3bf8d21034bb995437518843 (patch)
treec9b3876a00bbbb78984b619246a4069ded4c1664 /chrome/browser/renderer_host
parent3f7116cf4b4e725cc43c7331fed6cd1a1b03bc96 (diff)
downloadchromium_src-c2e74fe834afaeed3bf8d21034bb995437518843.zip
chromium_src-c2e74fe834afaeed3bf8d21034bb995437518843.tar.gz
chromium_src-c2e74fe834afaeed3bf8d21034bb995437518843.tar.bz2
Revert "Revert "Allow DOMUI pages to call window.open(), giving DOMUI privileges to the new""
Second attempt at r25250. The tests were broken in Release mode due to a race. Should be fixed. BUG=17636 Review URL: http://codereview.chromium.org/172120 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25329 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc9
-rw-r--r--chrome/browser/renderer_host/render_view_host.h6
2 files changed, 13 insertions, 2 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 41cbd00..95a53dd 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -1609,7 +1609,9 @@ void RenderViewHost::OnExtensionRequest(const std::string& name,
bool has_callback) {
if (!ChildProcessSecurityPolicy::GetInstance()->
HasExtensionBindings(process()->id())) {
- NOTREACHED() << "Blocked unauthorized use of extension bindings.";
+ // This can happen if someone uses window.open() to open an extension URL
+ // from a non-extension context.
+ BlockExtensionRequest(request_id);
return;
}
@@ -1623,6 +1625,11 @@ void RenderViewHost::SendExtensionResponse(int request_id, bool success,
response, error));
}
+void RenderViewHost::BlockExtensionRequest(int request_id) {
+ SendExtensionResponse(request_id, false, "",
+ "Access to extension API denied.");
+}
+
void RenderViewHost::OnExtensionPostMessage(
int port_id, const std::string& message) {
if (process()->profile()->GetExtensionMessageService()) {
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index 6381ef1..0fe33e8 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -418,11 +418,15 @@ class RenderViewHost : public RenderWidgetHost,
// Creates a new RenderWidget with the given route id.
void CreateNewWidget(int route_id, bool activatable);
- // Senf the response to an extension api call.
+ // Send the response to an extension api call.
void SendExtensionResponse(int request_id, bool success,
const std::string& response,
const std::string& error);
+ // Send a response to an extension api call that it was blocked for lack of
+ // permission.
+ void BlockExtensionRequest(int request_id);
+
void SignalModalDialogEvent();
void ResetModalDialogEvent();