• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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 CONTENT_SHELL_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_
6 #define CONTENT_SHELL_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_
7 
8 #include <string>
9 
10 #include "base/compiler_specific.h"
11 #include "base/files/file_path.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "content/public/browser/content_browser_client.h"
14 #include "content/shell/browser/shell_speech_recognition_manager_delegate.h"
15 
16 namespace content {
17 
18 class ShellBrowserContext;
19 class ShellBrowserMainParts;
20 class ShellResourceDispatcherHostDelegate;
21 
22 class ShellContentBrowserClient : public ContentBrowserClient {
23  public:
24   // Gets the current instance.
25   static ShellContentBrowserClient* Get();
26 
27   static void SetSwapProcessesForRedirect(bool swap);
28 
29   ShellContentBrowserClient();
30   virtual ~ShellContentBrowserClient();
31 
32   // ContentBrowserClient overrides.
33   virtual BrowserMainParts* CreateBrowserMainParts(
34       const MainFunctionParams& parameters) OVERRIDE;
35   virtual void RenderProcessWillLaunch(RenderProcessHost* host) OVERRIDE;
36   virtual net::URLRequestContextGetter* CreateRequestContext(
37       BrowserContext* browser_context,
38       ProtocolHandlerMap* protocol_handlers,
39       URLRequestInterceptorScopedVector request_interceptors) OVERRIDE;
40   virtual net::URLRequestContextGetter* CreateRequestContextForStoragePartition(
41       BrowserContext* browser_context,
42       const base::FilePath& partition_path,
43       bool in_memory,
44       ProtocolHandlerMap* protocol_handlers,
45       URLRequestInterceptorScopedVector request_interceptors) OVERRIDE;
46   virtual bool IsHandledURL(const GURL& url) OVERRIDE;
47   virtual void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
48                                               int child_process_id) OVERRIDE;
49   virtual void OverrideWebkitPrefs(RenderViewHost* render_view_host,
50                                    const GURL& url,
51                                    WebPreferences* prefs) OVERRIDE;
52   virtual void ResourceDispatcherHostCreated() OVERRIDE;
53   virtual AccessTokenStore* CreateAccessTokenStore() OVERRIDE;
54   virtual std::string GetDefaultDownloadName() OVERRIDE;
55   virtual WebContentsViewDelegate* GetWebContentsViewDelegate(
56       WebContents* web_contents) OVERRIDE;
57   virtual QuotaPermissionContext* CreateQuotaPermissionContext() OVERRIDE;
58   virtual SpeechRecognitionManagerDelegate*
59       GetSpeechRecognitionManagerDelegate() OVERRIDE;
60   virtual net::NetLog* GetNetLog() OVERRIDE;
61   virtual bool ShouldSwapProcessesForRedirect(ResourceContext* resource_context,
62                                               const GURL& current_url,
63                                               const GURL& new_url) OVERRIDE;
64 
65 #if defined(OS_POSIX) && !defined(OS_MACOSX)
66   virtual void GetAdditionalMappedFilesForChildProcess(
67       const base::CommandLine& command_line,
68       int child_process_id,
69       std::vector<FileDescriptorInfo>* mappings) OVERRIDE;
70 #endif
71 #if defined(OS_WIN)
72   virtual void PreSpawnRenderer(sandbox::TargetPolicy* policy,
73                                 bool* success) OVERRIDE;
74 #endif
75 
76   ShellBrowserContext* browser_context();
77   ShellBrowserContext* off_the_record_browser_context();
resource_dispatcher_host_delegate()78   ShellResourceDispatcherHostDelegate* resource_dispatcher_host_delegate() {
79     return resource_dispatcher_host_delegate_.get();
80   }
shell_browser_main_parts()81   ShellBrowserMainParts* shell_browser_main_parts() {
82     return shell_browser_main_parts_;
83   }
84 
85  private:
86   ShellBrowserContext* ShellBrowserContextForBrowserContext(
87       BrowserContext* content_browser_context);
88 
89   scoped_ptr<ShellResourceDispatcherHostDelegate>
90       resource_dispatcher_host_delegate_;
91 
92   base::FilePath webkit_source_dir_;
93 
94   ShellBrowserMainParts* shell_browser_main_parts_;
95 };
96 
97 }  // namespace content
98 
99 #endif  // CONTENT_SHELL_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_
100