X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fextensions%2Fshell%2Frenderer%2Fshell_content_renderer_client.cc;h=17f8b10fee3588561c4e6f25bc3e8224d3ab5f5f;hb=3545e9f2671f595d2a2f3ee75ca0393b01e35ef6;hp=c7a9be6d227da2969d9efe8679714e2bbd002368;hpb=7d210d4c7e9ba36e635eabc5b5780495f8a63292;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/extensions/shell/renderer/shell_content_renderer_client.cc b/src/extensions/shell/renderer/shell_content_renderer_client.cc index c7a9be6..17f8b10f 100644 --- a/src/extensions/shell/renderer/shell_content_renderer_client.cc +++ b/src/extensions/shell/renderer/shell_content_renderer_client.cc @@ -9,12 +9,20 @@ #include "content/public/renderer/render_frame_observer_tracker.h" #include "content/public/renderer/render_thread.h" #include "extensions/common/extensions_client.h" +#include "extensions/renderer/default_dispatcher_delegate.h" #include "extensions/renderer/dispatcher.h" #include "extensions/renderer/extension_helper.h" +#include "extensions/renderer/guest_view/guest_view_container.h" #include "extensions/shell/common/shell_extensions_client.h" -#include "extensions/shell/renderer/shell_dispatcher_delegate.h" #include "extensions/shell/renderer/shell_extensions_renderer_client.h" -#include "extensions/shell/renderer/shell_renderer_main_delegate.h" +#include "third_party/WebKit/public/web/WebLocalFrame.h" + +#if !defined(DISABLE_NACL) +#include "components/nacl/common/nacl_constants.h" +#include "components/nacl/renderer/nacl_helper.h" +#include "components/nacl/renderer/ppb_nacl_private_impl.h" +#include "ppapi/c/private/ppb_nacl_private.h" +#endif using blink::WebFrame; using blink::WebString; @@ -61,9 +69,7 @@ void ShellFrameHelper::WillReleaseScriptContext(v8::Handle context, } // namespace -ShellContentRendererClient::ShellContentRendererClient( - scoped_ptr delegate) - : delegate_(delegate.Pass()) { +ShellContentRendererClient::ShellContentRendererClient() { } ShellContentRendererClient::~ShellContentRendererClient() { @@ -78,7 +84,7 @@ void ShellContentRendererClient::RenderThreadStarted() { extensions_renderer_client_.reset(new ShellExtensionsRendererClient); ExtensionsRendererClient::Set(extensions_renderer_client_.get()); - extension_dispatcher_delegate_.reset(new ShellDispatcherDelegate()); + extension_dispatcher_delegate_.reset(new DefaultDispatcherDelegate()); // Must be initialized after ExtensionsRendererClient. extension_dispatcher_.reset( @@ -87,26 +93,46 @@ void ShellContentRendererClient::RenderThreadStarted() { // TODO(jamescook): Init WebSecurityPolicy for chrome-extension: schemes. // See ChromeContentRendererClient for details. - if (delegate_) - delegate_->OnThreadStarted(thread); } void ShellContentRendererClient::RenderFrameCreated( content::RenderFrame* render_frame) { - // ShellFrameHelper destroyes itself when the RenderFrame is destroyed. + // ShellFrameHelper destroys itself when the RenderFrame is destroyed. new ShellFrameHelper(render_frame, extension_dispatcher_.get()); + + // TODO(jamescook): Do we need to add a new PepperHelper(render_frame) here? + // It doesn't seem necessary for either Pepper or NaCl. + // http://crbug.com/403004 +#if !defined(DISABLE_NACL) + new nacl::NaClHelper(render_frame); +#endif } void ShellContentRendererClient::RenderViewCreated( content::RenderView* render_view) { new ExtensionHelper(render_view, extension_dispatcher_.get()); - if (delegate_) - delegate_->OnViewCreated(render_view); + extension_dispatcher_->OnRenderViewCreated(render_view); +} + +bool ShellContentRendererClient::OverrideCreatePlugin( + content::RenderFrame* render_frame, + blink::WebLocalFrame* frame, + const blink::WebPluginParams& params, + blink::WebPlugin** plugin) { + // Allow the content module to create the plugin. + return false; +} + +blink::WebPlugin* ShellContentRendererClient::CreatePluginReplacement( + content::RenderFrame* render_frame, + const base::FilePath& plugin_path) { + // Don't provide a custom "failed to load" plugin. + return NULL; } bool ShellContentRendererClient::WillSendRequest( blink::WebFrame* frame, - content::PageTransition transition_type, + ui::PageTransition transition_type, const GURL& url, const GURL& first_party_for_cookies, GURL* new_url) { @@ -123,9 +149,37 @@ void ShellContentRendererClient::DidCreateScriptContext( frame, context, extension_group, world_id); } +const void* ShellContentRendererClient::CreatePPAPIInterface( + const std::string& interface_name) { +#if !defined(DISABLE_NACL) + if (interface_name == PPB_NACL_PRIVATE_INTERFACE) + return nacl::GetNaClPrivateInterface(); +#endif + return NULL; +} + +bool ShellContentRendererClient::IsExternalPepperPlugin( + const std::string& module_name) { +#if !defined(DISABLE_NACL) + // TODO(bbudge) remove this when the trusted NaCl plugin has been removed. + // We must defer certain plugin events for NaCl instances since we switch + // from the in-process to the out-of-process proxy after instantiating them. + return module_name == nacl::kNaClPluginName; +#else + return false; +#endif +} + bool ShellContentRendererClient::ShouldEnableSiteIsolationPolicy() const { // Extension renderers don't need site isolation. return false; } +content::BrowserPluginDelegate* +ShellContentRendererClient::CreateBrowserPluginDelegate( + content::RenderFrame* render_frame, + const std::string& mime_type) { + return new extensions::GuestViewContainer(render_frame, mime_type); +} + } // namespace extensions