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. 4 5 #ifndef CEF_LIBCEF_RENDERER_EXTENSIONS_EXTENSIONS_RENDERER_CLIENT_H_ 6 #define CEF_LIBCEF_RENDERER_EXTENSIONS_EXTENSIONS_RENDERER_CLIENT_H_ 7 8 #include <memory> 9 #include <string> 10 11 #include "base/macros.h" 12 #include "extensions/renderer/extensions_renderer_client.h" 13 #include "services/service_manager/public/cpp/binder_registry.h" 14 #include "ui/base/page_transition_types.h" 15 16 class GURL; 17 18 namespace blink { 19 class WebFrame; 20 class WebLocalFrame; 21 struct WebPluginParams; 22 class WebURL; 23 } // namespace blink 24 25 namespace net { 26 class SiteForCookies; 27 } 28 29 namespace content { 30 class BrowserPluginDelegate; 31 class RenderFrame; 32 struct WebPluginInfo; 33 } // namespace content 34 35 namespace url { 36 class Origin; 37 } 38 39 namespace extensions { 40 41 class Dispatcher; 42 class DispatcherDelegate; 43 class ExtensionsGuestViewContainerDispatcher; 44 class ResourceRequestPolicy; 45 46 class CefExtensionsRendererClient : public ExtensionsRendererClient { 47 public: 48 CefExtensionsRendererClient(); 49 ~CefExtensionsRendererClient() override; 50 51 // ExtensionsRendererClient implementation. 52 bool IsIncognitoProcess() const override; 53 int GetLowestIsolatedWorldId() const override; 54 extensions::Dispatcher* GetDispatcher() override; 55 void OnExtensionLoaded(const extensions::Extension& extension) override; 56 void OnExtensionUnloaded( 57 const extensions::ExtensionId& extension_id) override; 58 bool ExtensionAPIEnabledForServiceWorkerScript( 59 const GURL& scope, 60 const GURL& script_url) const override; 61 62 // See AlloyContentRendererClient methods with the same names. 63 void RenderThreadStarted(); 64 void RenderFrameCreated(content::RenderFrame* render_frame, 65 service_manager::BinderRegistry* registry); 66 bool OverrideCreatePlugin(content::RenderFrame* render_frame, 67 const blink::WebPluginParams& params); 68 void WillSendRequest(blink::WebLocalFrame* frame, 69 ui::PageTransition transition_type, 70 const blink::WebURL& url, 71 const net::SiteForCookies& site_for_cookies, 72 const url::Origin* initiator_origin, 73 GURL* new_url); 74 void RunScriptsAtDocumentStart(content::RenderFrame* render_frame); 75 void RunScriptsAtDocumentEnd(content::RenderFrame* render_frame); 76 void RunScriptsAtDocumentIdle(content::RenderFrame* render_frame); 77 78 static bool IsStandaloneExtensionProcess(); 79 80 private: 81 std::unique_ptr<extensions::Dispatcher> extension_dispatcher_; 82 std::unique_ptr<extensions::ExtensionsGuestViewContainerDispatcher> 83 guest_view_container_dispatcher_; 84 std::unique_ptr<extensions::ResourceRequestPolicy> resource_request_policy_; 85 86 DISALLOW_COPY_AND_ASSIGN(CefExtensionsRendererClient); 87 }; 88 89 } // namespace extensions 90 91 #endif // CEF_LIBCEF_RENDERER_EXTENSIONS_EXTENSIONS_RENDERER_CLIENT_H_ 92