diff options
author | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-03 17:57:44 +0000 |
---|---|---|
committer | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-03 17:57:44 +0000 |
commit | c2e74fe834afaeed3bf8d21034bb995437518843 (patch) | |
tree | c9b3876a00bbbb78984b619246a4069ded4c1664 /chrome/browser/renderer_host | |
parent | 3f7116cf4b4e725cc43c7331fed6cd1a1b03bc96 (diff) | |
download | chromium_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.cc | 9 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_view_host.h | 6 |
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(); |