chrome_content_renderer_client.h revision ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_RENDERER_CHROME_CONTENT_RENDERER_CLIENT_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_RENDERER_CHROME_CONTENT_RENDERER_CLIENT_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <vector>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(ENABLE_PLUGINS)
127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include <set>
137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif
147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/strings/string16.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/renderer/content_renderer_client.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ChromeRenderProcessObserver;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ExtensionSet;
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class PrescientNetworkingDispatcher;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RendererNetPredictor;
24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(ENABLE_SPELLCHECK)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpellCheck;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpellCheckProvider;
27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ChromeViewHostMsg_GetPluginInfo_Output;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace content {
32ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochstruct WebPluginInfo;
33ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
34ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Dispatcher;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Extension;
3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class RendererPermissionsPolicyDelegate;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace prerender {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrerenderDispatcher;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace safe_browsing {
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PhishingClassifierFilter;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace visitedlink {
5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class VisitedLinkSlave;
5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace WebKit {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSecurityOrigin;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
57868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#if defined(ENABLE_WEBRTC)
58868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class WebRtcLoggingMessageFilter;
59868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif
60868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ChromeContentRendererClient : public content::ContentRendererClient {
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ChromeContentRendererClient();
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ChromeContentRendererClient();
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RenderThreadStarted() OVERRIDE;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RenderViewCreated(content::RenderView* render_view) OVERRIDE;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetNumberOfViews(int number_of_views) OVERRIDE;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual SkBitmap* GetSadPluginBitmap() OVERRIDE;
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual SkBitmap* GetSadWebViewBitmap() OVERRIDE;
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual std::string GetDefaultEncoding() OVERRIDE;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool OverrideCreatePlugin(
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content::RenderView* render_view,
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebPluginParams& params,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebPlugin** plugin) OVERRIDE;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebPlugin* CreatePluginReplacement(
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content::RenderView* render_view,
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::FilePath& plugin_path) OVERRIDE;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HasErrorPage(int http_status_code,
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            std::string* error_domain) OVERRIDE;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetNavigationErrorStrings(
85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      WebKit::WebFrame* frame,
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLRequest& failed_request,
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLError& error,
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      std::string* error_html,
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      string16* error_description) OVERRIDE;
90eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual void DeferMediaLoad(content::RenderView* render_view,
91eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                              const base::Closure& closure) OVERRIDE;
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool RunIdleHandlerWhenWidgetsHidden() OVERRIDE;
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool AllowPopup() OVERRIDE;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ShouldFork(WebKit::WebFrame* frame,
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const GURL& url,
962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                          const std::string& http_method,
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          bool is_initial_navigation,
98868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                          bool is_server_redirect,
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          bool* send_referrer) OVERRIDE;
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool WillSendRequest(WebKit::WebFrame* frame,
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               content::PageTransition transition_type,
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const GURL& url,
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                               const GURL& first_party_for_cookies,
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               GURL* new_url) OVERRIDE;
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ShouldPumpEventsDuringCookieMessage() OVERRIDE;
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidCreateScriptContext(WebKit::WebFrame* frame,
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      v8::Handle<v8::Context> context,
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      int extension_group,
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      int world_id) OVERRIDE;
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void WillReleaseScriptContext(WebKit::WebFrame* frame,
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        v8::Handle<v8::Context> context,
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        int world_id) OVERRIDE;
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual unsigned long long VisitedLinkHash(const char* canonical_url,
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             size_t length) OVERRIDE;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsLinkVisited(unsigned long long link_hash) OVERRIDE;
11690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual WebKit::WebPrescientNetworking* GetPrescientNetworking() OVERRIDE;
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ShouldOverridePageVisibilityState(
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const content::RenderView* render_view,
119ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      WebKit::WebPageVisibilityState* override_state) OVERRIDE;
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HandleGetCookieRequest(content::RenderView* sender,
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const GURL& url,
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const GURL& first_party_for_cookies,
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      std::string* cookies) OVERRIDE;
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HandleSetCookieRequest(content::RenderView* sender,
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const GURL& url,
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const GURL& first_party_for_cookies,
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const std::string& value) OVERRIDE;
128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual bool AllowBrowserPlugin(
129ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      WebKit::WebPluginContainer* container) OVERRIDE;
130a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  virtual const void* CreatePPAPIInterface(
131a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch      const std::string& interface_name) OVERRIDE;
132ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  virtual bool IsExternalPepperPlugin(const std::string& module_name) OVERRIDE;
1337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // TODO(victorhsieh): move to ChromeContentBrowserClient once we migrate
1347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // PPAPI FileIO host to browser.
1357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual bool IsPluginAllowedToCallRequestOSFileHandle(
136ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      WebKit::WebPluginContainer* container) OVERRIDE;
137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual WebKit::WebSpeechSynthesizer* OverrideSpeechSynthesizer(
138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      WebKit::WebSpeechSynthesizerClient* client) OVERRIDE;
139ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  virtual bool AllowPepperMediaStreamAPI(const GURL& url) OVERRIDE;
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // For testing.
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetExtensionDispatcher(extensions::Dispatcher* extension_dispatcher);
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
144a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(ENABLE_SPELLCHECK)
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Sets a new |spellcheck|. Used for low-mem restart and testing only.
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Takes ownership of |spellcheck|.
1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void SetSpellcheck(SpellCheck* spellcheck);
148a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif
1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called in low-memory conditions to dump the memory used by the spellchecker
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // and start over.
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnPurgeMemory();
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  static WebKit::WebPlugin* CreatePlugin(
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content::RenderView* render_view,
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebPluginParams& params,
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ChromeViewHostMsg_GetPluginInfo_Output& output);
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // TODO(mpcomplete): remove after we collect histogram data.
161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // http://crbug.com/100411
162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  static bool IsAdblockInstalled();
163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  static bool IsAdblockPlusInstalled();
164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  static bool IsAdblockWithWebRequestInstalled();
165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  static bool IsAdblockPlusWithWebRequestInstalled();
166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  static bool IsOtherExtensionWithWebRequestInstalled();
167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(ChromeContentRendererClientTest, NaClRestriction);
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const extensions::Extension* GetExtension(
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebSecurityOrigin& origin) const;
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if the frame is navigating to an URL either into or out of an
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // extension app's extent.
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool CrossesExtensionExtents(WebKit::WebFrame* frame,
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const GURL& new_url,
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const ExtensionSet& extensions,
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               bool is_extension_url,
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               bool is_initial_navigation);
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static GURL GetNaClContentHandlerURL(const std::string& actual_mime_type,
183ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                                       const content::WebPluginInfo& plugin);
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool IsNaClAllowed(const GURL& manifest_url,
185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            const GURL& app_url,
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            bool is_nacl_unrestricted,
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            const extensions::Extension* extension,
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            WebKit::WebPluginParams* params);
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<ChromeRenderProcessObserver> chrome_observer_;
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<extensions::Dispatcher> extension_dispatcher_;
19290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  scoped_ptr<extensions::RendererPermissionsPolicyDelegate>
19390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      permissions_policy_delegate_;
19490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  scoped_ptr<PrescientNetworkingDispatcher> prescient_networking_dispatcher_;
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<RendererNetPredictor> net_predictor_;
196a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(ENABLE_SPELLCHECK)
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<SpellCheck> spellcheck_;
198a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif
19990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  scoped_ptr<visitedlink::VisitedLinkSlave> visited_link_slave_;
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<safe_browsing::PhishingClassifierFilter> phishing_classifier_;
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<prerender::PrerenderDispatcher> prerender_dispatcher_;
202868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#if defined(ENABLE_WEBRTC)
203868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_refptr<WebRtcLoggingMessageFilter> webrtc_logging_message_filter_;
204868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif
2057d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
2067d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(ENABLE_PLUGINS)
2077d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  std::set<std::string> allowed_file_handle_origins_;
2087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chrome
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_RENDERER_CHROME_CONTENT_RENDERER_CLIENT_H_
214