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 ExtensionsGuestViewContainerDispatcher
;
19 class ShellExtensionsRendererClient
;
20 class ShellRendererMainDelegate
;
22 // Renderer initialization and runtime support for app_shell.
23 class ShellContentRendererClient
: public content::ContentRendererClient
{
25 ShellContentRendererClient();
26 ~ShellContentRendererClient() override
;
28 // content::ContentRendererClient implementation:
29 void RenderThreadStarted() override
;
30 void RenderFrameCreated(content::RenderFrame
* render_frame
) override
;
31 void RenderViewCreated(content::RenderView
* render_view
) override
;
32 bool OverrideCreatePlugin(content::RenderFrame
* render_frame
,
33 blink::WebLocalFrame
* frame
,
34 const blink::WebPluginParams
& params
,
35 blink::WebPlugin
** plugin
) override
;
36 blink::WebPlugin
* CreatePluginReplacement(
37 content::RenderFrame
* render_frame
,
38 const base::FilePath
& plugin_path
) 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 const void* CreatePPAPIInterface(const std::string
& interface_name
) override
;
45 bool IsExternalPepperPlugin(const std::string
& module_name
) override
;
46 bool ShouldGatherSiteIsolationStats() const override
;
47 content::BrowserPluginDelegate
* CreateBrowserPluginDelegate(
48 content::RenderFrame
* render_frame
,
49 const std::string
& mime_type
,
50 const GURL
& original_url
) override
;
53 // app_shell embedders may need custom extensions client interfaces.
54 // This class takes ownership of the returned object.
55 virtual ExtensionsClient
* CreateExtensionsClient();
58 scoped_ptr
<ExtensionsClient
> extensions_client_
;
59 scoped_ptr
<ShellExtensionsRendererClient
> extensions_renderer_client_
;
60 scoped_ptr
<DispatcherDelegate
> extension_dispatcher_delegate_
;
61 scoped_ptr
<Dispatcher
> extension_dispatcher_
;
62 scoped_ptr
<ExtensionsGuestViewContainerDispatcher
>
63 guest_view_container_dispatcher_
;
65 DISALLOW_COPY_AND_ASSIGN(ShellContentRendererClient
);
68 } // namespace extensions
70 #endif // EXTENSIONS_SHELL_RENDERER_SHELL_CONTENT_RENDERER_CLIENT_H_