1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef EXTENSIONS_SHELL_RENDERER_SHELL_CONTENT_RENDERER_CLIENT_H_
6 #define EXTENSIONS_SHELL_RENDERER_SHELL_CONTENT_RENDERER_CLIENT_H_
8 #include "base/compiler_specific.h"
9 #include "base/macros.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "content/public/renderer/content_renderer_client.h"
13 namespace extensions
{
16 class DispatcherDelegate
;
17 class ExtensionsClient
;
18 class ShellExtensionsRendererClient
;
19 class ShellRendererMainDelegate
;
21 // Renderer initialization and runtime support for app_shell.
22 class ShellContentRendererClient
: public content::ContentRendererClient
{
24 ShellContentRendererClient();
25 ~ShellContentRendererClient() override
;
27 // content::ContentRendererClient implementation:
28 void RenderThreadStarted() override
;
29 void RenderFrameCreated(content::RenderFrame
* render_frame
) override
;
30 void RenderViewCreated(content::RenderView
* render_view
) override
;
31 bool OverrideCreatePlugin(content::RenderFrame
* render_frame
,
32 blink::WebLocalFrame
* frame
,
33 const blink::WebPluginParams
& params
,
34 blink::WebPlugin
** plugin
) override
;
35 blink::WebPlugin
* CreatePluginReplacement(
36 content::RenderFrame
* render_frame
,
37 const base::FilePath
& plugin_path
) override
;
38 bool ShouldForwardToGuestContainer(const IPC::Message
& msg
) override
;
39 bool WillSendRequest(blink::WebFrame
* frame
,
40 ui::PageTransition transition_type
,
42 const GURL
& first_party_for_cookies
,
43 GURL
* new_url
) override
;
44 void DidCreateScriptContext(blink::WebLocalFrame
* frame
,
45 v8::Handle
<v8::Context
> context
,
47 int world_id
) override
;
48 const void* CreatePPAPIInterface(const std::string
& interface_name
) override
;
49 bool IsExternalPepperPlugin(const std::string
& module_name
) override
;
50 bool ShouldEnableSiteIsolationPolicy() const override
;
51 content::BrowserPluginDelegate
* CreateBrowserPluginDelegate(
52 content::RenderFrame
* render_frame
,
53 const std::string
& mime_type
,
54 const GURL
& original_url
) override
;
57 // app_shell embedders may need custom extensions client interfaces.
58 // This class takes ownership of the returned object.
59 virtual ExtensionsClient
* CreateExtensionsClient();
62 scoped_ptr
<ExtensionsClient
> extensions_client_
;
63 scoped_ptr
<ShellExtensionsRendererClient
> extensions_renderer_client_
;
64 scoped_ptr
<DispatcherDelegate
> extension_dispatcher_delegate_
;
65 scoped_ptr
<Dispatcher
> extension_dispatcher_
;
67 DISALLOW_COPY_AND_ASSIGN(ShellContentRendererClient
);
70 } // namespace extensions
72 #endif // EXTENSIONS_SHELL_RENDERER_SHELL_CONTENT_RENDERER_CLIENT_H_