Commit 93854996 authored by sadrul@chromium.org's avatar sadrul@chromium.org

webview: Fix the code to disallow external protocol handlers.

RenderViewHost::FromID() should only be accessed in the UI thread. So use
ExtensionRendererState::GetWebViewInfo() instead to determine if the render
view is hosting a guest.

BUG=230655
R=jam@chromium.org

Review URL: https://codereview.chromium.org/23717034

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221724 0039d316-1c4b-4281-b951-d872f2087c98
parent 630710f0
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "chrome/browser/download/download_resource_throttle.h" #include "chrome/browser/download/download_resource_throttle.h"
#include "chrome/browser/extensions/api/streams_private/streams_private_api.h" #include "chrome/browser/extensions/api/streams_private/streams_private_api.h"
#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_info_map.h"
#include "chrome/browser/extensions/extension_renderer_state.h"
#include "chrome/browser/extensions/user_script_listener.h" #include "chrome/browser/extensions/user_script_listener.h"
#include "chrome/browser/external_protocol/external_protocol_handler.h" #include "chrome/browser/external_protocol/external_protocol_handler.h"
#include "chrome/browser/google/google_util.h" #include "chrome/browser/google/google_util.h"
...@@ -422,9 +423,12 @@ bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol( ...@@ -422,9 +423,12 @@ bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol(
return false; return false;
} }
RenderViewHost* view = RenderViewHost::FromID(child_id, route_id); ExtensionRendererState::WebViewInfo info;
if (view && view->GetProcess()->IsGuest()) if (ExtensionRendererState::GetInstance()->GetWebViewInfo(child_id,
route_id,
&info)) {
return false; return false;
}
BrowserThread::PostTask( BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE, BrowserThread::UI, FROM_HERE,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment