summaryrefslogtreecommitdiff
path: root/chromium/chrome/renderer/extensions/chrome_extensions_renderer_client.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/renderer/extensions/chrome_extensions_renderer_client.h')
-rw-r--r--chromium/chrome/renderer/extensions/chrome_extensions_renderer_client.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/chromium/chrome/renderer/extensions/chrome_extensions_renderer_client.h b/chromium/chrome/renderer/extensions/chrome_extensions_renderer_client.h
new file mode 100644
index 00000000000..4b821fc6af4
--- /dev/null
+++ b/chromium/chrome/renderer/extensions/chrome_extensions_renderer_client.h
@@ -0,0 +1,129 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_RENDERER_EXTENSIONS_CHROME_EXTENSIONS_RENDERER_CLIENT_H_
+#define CHROME_RENDERER_EXTENSIONS_CHROME_EXTENSIONS_RENDERER_CLIENT_H_
+
+#include <memory>
+#include <string>
+
+#include "base/macros.h"
+#include "extensions/renderer/extensions_renderer_client.h"
+#include "services/service_manager/public/cpp/binder_registry.h"
+#include "ui/base/page_transition_types.h"
+
+class GURL;
+
+namespace blink {
+class WebElement;
+class WebFrame;
+class WebLocalFrame;
+struct WebPluginParams;
+class WebURL;
+}
+
+namespace content {
+class BrowserPluginDelegate;
+class RenderFrame;
+struct WebPluginInfo;
+}
+
+namespace extensions {
+class Dispatcher;
+class ExtensionsGuestViewContainerDispatcher;
+class RendererPermissionsPolicyDelegate;
+class ResourceRequestPolicy;
+}
+
+namespace url {
+class Origin;
+}
+
+namespace v8 {
+class Isolate;
+template <typename T>
+class Local;
+class Object;
+} // namespace v8
+
+class ChromeExtensionsRendererClient
+ : public extensions::ExtensionsRendererClient {
+ public:
+ ChromeExtensionsRendererClient();
+ ~ChromeExtensionsRendererClient() override;
+
+ // Get the LazyInstance for ChromeExtensionsRendererClient.
+ static ChromeExtensionsRendererClient* GetInstance();
+
+ // extensions::ExtensionsRendererClient implementation.
+ bool IsIncognitoProcess() const override;
+ int GetLowestIsolatedWorldId() const override;
+ extensions::Dispatcher* GetDispatcher() override;
+ void OnExtensionLoaded(const extensions::Extension& extension) override;
+ void OnExtensionUnloaded(
+ const extensions::ExtensionId& extension_id) override;
+
+ bool ExtensionAPIEnabledForServiceWorkerScript(
+ const GURL& scope,
+ const GURL& script_url) const override;
+
+ // See ChromeContentRendererClient methods with the same names.
+ void RenderThreadStarted();
+ void RenderFrameCreated(content::RenderFrame* render_frame,
+ service_manager::BinderRegistry* registry);
+ bool OverrideCreatePlugin(content::RenderFrame* render_frame,
+ const blink::WebPluginParams& params);
+ bool AllowPopup();
+ void WillSendRequest(blink::WebLocalFrame* frame,
+ ui::PageTransition transition_type,
+ const blink::WebURL& url,
+ const url::Origin* initiator_origin,
+ GURL* new_url,
+ bool* attach_same_site_cookies);
+ v8::Local<v8::Object> GetScriptableObject(
+ const blink::WebElement& plugin_element,
+ v8::Isolate* isolate);
+ void SetExtensionDispatcherForTest(
+ std::unique_ptr<extensions::Dispatcher> extension_dispatcher);
+ extensions::Dispatcher* GetExtensionDispatcherForTest();
+
+ static bool ShouldFork(blink::WebLocalFrame* frame,
+ const GURL& url,
+ bool is_initial_navigation,
+ bool is_server_redirect);
+ static content::BrowserPluginDelegate* CreateBrowserPluginDelegate(
+ content::RenderFrame* render_frame,
+ const content::WebPluginInfo& info,
+ const std::string& mime_type,
+ const GURL& original_url);
+ static void DidBlockMimeHandlerViewForDisallowedPlugin(
+ const blink::WebElement& plugin_element);
+ static bool MaybeCreateMimeHandlerView(
+ const blink::WebElement& plugin_element,
+ const GURL& resource_url,
+ const std::string& mime_type,
+ const content::WebPluginInfo& plugin_info);
+ static blink::WebFrame* FindFrame(blink::WebLocalFrame* relative_to_frame,
+ const std::string& name);
+
+ void RunScriptsAtDocumentStart(content::RenderFrame* render_frame);
+ void RunScriptsAtDocumentEnd(content::RenderFrame* render_frame);
+ void RunScriptsAtDocumentIdle(content::RenderFrame* render_frame);
+
+ extensions::Dispatcher* extension_dispatcher() {
+ return extension_dispatcher_.get();
+ }
+
+ private:
+ std::unique_ptr<extensions::Dispatcher> extension_dispatcher_;
+ std::unique_ptr<extensions::RendererPermissionsPolicyDelegate>
+ permissions_policy_delegate_;
+ std::unique_ptr<extensions::ExtensionsGuestViewContainerDispatcher>
+ guest_view_container_dispatcher_;
+ std::unique_ptr<extensions::ResourceRequestPolicy> resource_request_policy_;
+
+ DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsRendererClient);
+};
+
+#endif // CHROME_RENDERER_EXTENSIONS_CHROME_EXTENSIONS_RENDERER_CLIENT_H_