| Index: chrome/renderer/render_thread.cc
|
| diff --git a/chrome/renderer/render_thread.cc b/chrome/renderer/render_thread.cc
|
| index 4ad6a3fb1e528622ff38c3d267297b91add0b651..a3f01200d5a2f360ee9f949c2d98176da3c009ca 100644
|
| --- a/chrome/renderer/render_thread.cc
|
| +++ b/chrome/renderer/render_thread.cc
|
| @@ -853,32 +853,46 @@ void RenderThread::EnsureWebKitInitialized() {
|
| WebScriptController::registerExtension(
|
| extensions_v8::ExternalExtension::Get());
|
|
|
| - const WebKit::WebString kExtensionScheme =
|
| - WebKit::WebString::fromUTF8(chrome::kExtensionScheme);
|
| + // TODO(rafaelw). Note that extension-related v8 extensions are being
|
| + // bound currently based on is_extension_process_. This means that
|
| + // non-extension renderers that slip into an extension process (for example,
|
| + // an extension page opening an iframe) will be extension bindings setup.
|
| + // This should be relatively rare, and the offending page won't be able to
|
| + // make extension API requests because it'll be denied on both sides of
|
| + // the renderer by a permission check. However, this is still fairly lame
|
| + // and we should consider implementing a V8Proxy delegate that calls out
|
| + // to the render thread and makes a decision as to whether to bind these
|
| + // extensions based on the frame's url.
|
| + // See: crbug.com/53610.
|
|
|
| - WebScriptController::registerExtension(
|
| - ExtensionProcessBindings::Get(), kExtensionScheme);
|
| + if (is_extension_process_)
|
| + WebScriptController::registerExtension(ExtensionProcessBindings::Get());
|
|
|
| WebScriptController::registerExtension(
|
| BaseJsV8Extension::Get(), EXTENSION_GROUP_CONTENT_SCRIPTS);
|
| - WebScriptController::registerExtension(
|
| - BaseJsV8Extension::Get(), kExtensionScheme);
|
| + if (is_extension_process_)
|
| + WebScriptController::registerExtension(BaseJsV8Extension::Get());
|
| +
|
| WebScriptController::registerExtension(
|
| JsonSchemaJsV8Extension::Get(), EXTENSION_GROUP_CONTENT_SCRIPTS);
|
| - WebScriptController::registerExtension(JsonSchemaJsV8Extension::Get(),
|
| - kExtensionScheme);
|
| + if (is_extension_process_)
|
| + WebScriptController::registerExtension(JsonSchemaJsV8Extension::Get());
|
| +
|
| WebScriptController::registerExtension(
|
| EventBindings::Get(), EXTENSION_GROUP_CONTENT_SCRIPTS);
|
| - WebScriptController::registerExtension(EventBindings::Get(),
|
| - kExtensionScheme);
|
| + if (is_extension_process_)
|
| + WebScriptController::registerExtension(EventBindings::Get());
|
| +
|
| WebScriptController::registerExtension(
|
| RendererExtensionBindings::Get(), EXTENSION_GROUP_CONTENT_SCRIPTS);
|
| - WebScriptController::registerExtension(
|
| - RendererExtensionBindings::Get(), kExtensionScheme);
|
| - WebScriptController::registerExtension(
|
| - ExtensionApiTestV8Extension::Get(), kExtensionScheme);
|
| + if (is_extension_process_)
|
| + WebScriptController::registerExtension(RendererExtensionBindings::Get());
|
| +
|
| WebScriptController::registerExtension(
|
| ExtensionApiTestV8Extension::Get(), EXTENSION_GROUP_CONTENT_SCRIPTS);
|
| + if (is_extension_process_)
|
| + WebScriptController::registerExtension(
|
| + ExtensionApiTestV8Extension::Get());
|
|
|
| web_database_observer_impl_.reset(new WebDatabaseObserverImpl(this));
|
| WebKit::WebDatabase::setObserver(web_database_observer_impl_.get());
|
|
|