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)
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <set>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <vector>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/strings/string16.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/renderer/content_renderer_client.h"
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ipc/ipc_channel_proxy.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class ChromeExtensionsDispatcherDelegate;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ChromeRenderProcessObserver;
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_FULL_PRINTING)
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass ChromePDFPrintClient;
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class PrescientNetworkingDispatcher;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RendererNetPredictor;
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class SearchBouncer;
26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(ENABLE_SPELLCHECK)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpellCheck;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpellCheckProvider;
29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ChromeViewHostMsg_GetPluginInfo_Output;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace content {
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass BrowserPluginDelegate;
35ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochstruct WebPluginInfo;
36ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
37ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Dispatcher;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Extension;
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ExtensionSet;
4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class RendererPermissionsPolicyDelegate;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace prerender {
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrerenderDispatcher;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace safe_browsing {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PhishingClassifierFilter;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace visitedlink {
5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class VisitedLinkSlave;
5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace web_cache {
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass WebCacheRenderProcessObserver;
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSecurityOrigin;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace password_manager {
6603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class CredentialManagerClient;
6703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
6803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
69868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#if defined(ENABLE_WEBRTC)
70868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class WebRtcLoggingMessageFilter;
71868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif
72868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ChromeContentRendererClient : public content::ContentRendererClient {
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ChromeContentRendererClient();
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ChromeContentRendererClient();
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RenderThreadStarted() OVERRIDE;
79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void RenderFrameCreated(content::RenderFrame* render_frame) OVERRIDE;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RenderViewCreated(content::RenderView* render_view) OVERRIDE;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetNumberOfViews(int number_of_views) OVERRIDE;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual SkBitmap* GetSadPluginBitmap() OVERRIDE;
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual SkBitmap* GetSadWebViewBitmap() OVERRIDE;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool OverrideCreatePlugin(
85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      content::RenderFrame* render_frame,
86a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      blink::WebLocalFrame* frame,
87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebPluginParams& params,
88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebPlugin** plugin) OVERRIDE;
89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebPlugin* CreatePluginReplacement(
90a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      content::RenderFrame* render_frame,
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::FilePath& plugin_path) OVERRIDE;
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HasErrorPage(int http_status_code,
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            std::string* error_domain) OVERRIDE;
945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual bool ShouldSuppressErrorPage(content::RenderFrame* render_frame,
955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                       const GURL& url) OVERRIDE;
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetNavigationErrorStrings(
975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      content::RenderView* render_view,
98f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebFrame* frame,
99f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebURLRequest& failed_request,
100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebURLError& error,
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      std::string* error_html,
102a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      base::string16* error_description) OVERRIDE;
103a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void DeferMediaLoad(content::RenderFrame* render_frame,
104eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                              const base::Closure& closure) OVERRIDE;
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool RunIdleHandlerWhenWidgetsHidden() OVERRIDE;
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool AllowPopup() OVERRIDE;
107f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual bool ShouldFork(blink::WebFrame* frame,
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const GURL& url,
1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                          const std::string& http_method,
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          bool is_initial_navigation,
111868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                          bool is_server_redirect,
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          bool* send_referrer) OVERRIDE;
113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual bool WillSendRequest(blink::WebFrame* frame,
1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                               ui::PageTransition transition_type,
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const GURL& url,
1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                               const GURL& first_party_for_cookies,
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               GURL* new_url) OVERRIDE;
118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void DidCreateScriptContext(blink::WebFrame* frame,
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      v8::Handle<v8::Context> context,
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      int extension_group,
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      int world_id) OVERRIDE;
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual unsigned long long VisitedLinkHash(const char* canonical_url,
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             size_t length) OVERRIDE;
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsLinkVisited(unsigned long long link_hash) OVERRIDE;
125f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebPrescientNetworking* GetPrescientNetworking() OVERRIDE;
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ShouldOverridePageVisibilityState(
127a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      const content::RenderFrame* render_frame,
128f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebPageVisibilityState* override_state) OVERRIDE;
129a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  virtual const void* CreatePPAPIInterface(
130a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch      const std::string& interface_name) OVERRIDE;
131ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  virtual bool IsExternalPepperPlugin(const std::string& module_name) OVERRIDE;
132f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebSpeechSynthesizer* OverrideSpeechSynthesizer(
133f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebSpeechSynthesizerClient* client) OVERRIDE;
1343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual bool ShouldReportDetailedMessageForSource(
1353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      const base::string16& source) const OVERRIDE;
13658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool ShouldEnableSiteIsolationPolicy() const OVERRIDE;
137f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebWorkerPermissionClientProxy*
1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      CreateWorkerPermissionClientProxy(content::RenderFrame* render_frame,
139f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                        blink::WebFrame* frame) OVERRIDE;
140ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  virtual bool AllowPepperMediaStreamAPI(const GURL& url) OVERRIDE;
141d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual void AddKeySystems(
142d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      std::vector<content::KeySystemInfo>* key_systems) OVERRIDE;
143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual bool IsPluginAllowedToUseDevChannelAPIs() OVERRIDE;
144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual bool IsPluginAllowedToUseCompositorAPI(const GURL& url) OVERRIDE;
145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual bool IsPluginAllowedToUseVideoDecodeAPI(const GURL& url) OVERRIDE;
1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual content::BrowserPluginDelegate* CreateBrowserPluginDelegate(
1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      content::RenderFrame* render_frame,
1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      const std::string& mime_type) OVERRIDE;
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_EXTENSIONS)
1515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  // Takes ownership.
1525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  void SetExtensionDispatcherForTest(
1535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      extensions::Dispatcher* extension_dispatcher);
1545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  extensions::Dispatcher* GetExtensionDispatcherForTest();
1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
157a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(ENABLE_SPELLCHECK)
158a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Sets a new |spellcheck|. Used for testing only.
1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Takes ownership of |spellcheck|.
1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void SetSpellcheck(SpellCheck* spellcheck);
161a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  static blink::WebPlugin* CreatePlugin(
164a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      content::RenderFrame* render_frame,
165a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      blink::WebLocalFrame* frame,
166f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebPluginParams& params,
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ChromeViewHostMsg_GetPluginInfo_Output& output);
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_PLUGINS) && defined(ENABLE_EXTENSIONS)
1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  static bool IsExtensionOrSharedModuleWhitelisted(
1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const GURL& url, const std::set<std::string>& whitelist);
1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
174f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  static bool WasWebRequestUsedBySomeExtensions();
175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(ChromeContentRendererClientTest, NaClRestriction);
1784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(ChromeContentRendererClientTest,
1794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                           ShouldSuppressErrorPage);
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_EXTENSIONS)
18268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // Gets extension by the given origin, regardless of whether the extension
18368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // is active in the current process.
18468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  const extensions::Extension* GetExtensionByOrigin(
185f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebSecurityOrigin& origin) const;
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if the frame is navigating to an URL either into or out of an
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // extension app's extent.
189f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool CrossesExtensionExtents(blink::WebFrame* frame,
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const GURL& new_url,
1915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                               const extensions::ExtensionSet& extensions,
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               bool is_extension_url,
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               bool is_initial_navigation);
1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static GURL GetNaClContentHandlerURL(const std::string& actual_mime_type,
197ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                                       const content::WebPluginInfo& plugin);
1984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Determines if a NaCl app is allowed, and modifies params to pass the app's
2004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // permissions to the trusted NaCl plugin.
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool IsNaClAllowed(const GURL& manifest_url,
202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            const GURL& app_url,
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            bool is_nacl_unrestricted,
2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            const extensions::Extension* extension,
205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                            blink::WebPluginParams* params);
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<ChromeRenderProcessObserver> chrome_observer_;
2081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<web_cache::WebCacheRenderProcessObserver> web_cache_observer_;
2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// TODO(thestig): Extract into a separate file if possible. Cleanup
2111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// ENABLE_EXTENSIONS ifdefs in the .cc file as well.
2121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_EXTENSIONS)
213010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  scoped_ptr<ChromeExtensionsDispatcherDelegate> extension_dispatcher_delegate_;
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<extensions::Dispatcher> extension_dispatcher_;
21590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  scoped_ptr<extensions::RendererPermissionsPolicyDelegate>
21690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      permissions_policy_delegate_;
2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
21990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  scoped_ptr<PrescientNetworkingDispatcher> prescient_networking_dispatcher_;
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<RendererNetPredictor> net_predictor_;
22103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  scoped_ptr<password_manager::CredentialManagerClient>
22203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      credential_manager_client_;
223a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(ENABLE_SPELLCHECK)
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<SpellCheck> spellcheck_;
225a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif
22690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  scoped_ptr<visitedlink::VisitedLinkSlave> visited_link_slave_;
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<safe_browsing::PhishingClassifierFilter> phishing_classifier_;
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<prerender::PrerenderDispatcher> prerender_dispatcher_;
229868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#if defined(ENABLE_WEBRTC)
230868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_refptr<WebRtcLoggingMessageFilter> webrtc_logging_message_filter_;
231868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif
2324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<SearchBouncer> search_bouncer_;
2331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_FULL_PRINTING)
2341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<ChromePDFPrintClient> pdf_print_client_;
2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#if defined(ENABLE_PLUGINS)
237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  std::set<std::string> allowed_compositor_origins_;
238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  std::set<std::string> allowed_video_decode_origins_;
239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_RENDERER_CHROME_CONTENT_RENDERER_CLIENT_H_
243