• 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_BROWSER_CONTEXT_H_
6 #define CONTENT_SHELL_BROWSER_SHELL_BROWSER_CONTEXT_H_
7 
8 #include "base/compiler_specific.h"
9 #include "base/files/file_path.h"
10 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "content/public/browser/browser_context.h"
13 #include "content/public/browser/content_browser_client.h"
14 #include "net/url_request/url_request_job_factory.h"
15 
16 namespace net {
17 class NetLog;
18 }
19 
20 namespace content {
21 
22 class DownloadManagerDelegate;
23 class ResourceContext;
24 class ShellDownloadManagerDelegate;
25 class ShellURLRequestContextGetter;
26 
27 class ShellBrowserContext : public BrowserContext {
28  public:
29   ShellBrowserContext(bool off_the_record, net::NetLog* net_log);
30   virtual ~ShellBrowserContext();
31 
set_guest_manager_for_testing(BrowserPluginGuestManager * guest_manager)32   void set_guest_manager_for_testing(
33       BrowserPluginGuestManager* guest_manager) {
34     guest_manager_ = guest_manager;
35   }
36 
37   // BrowserContext implementation.
38   virtual base::FilePath GetPath() const OVERRIDE;
39   virtual bool IsOffTheRecord() const OVERRIDE;
40   virtual DownloadManagerDelegate* GetDownloadManagerDelegate() OVERRIDE;
41   virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE;
42   virtual net::URLRequestContextGetter* GetRequestContextForRenderProcess(
43       int renderer_child_id) OVERRIDE;
44   virtual net::URLRequestContextGetter* GetMediaRequestContext() OVERRIDE;
45   virtual net::URLRequestContextGetter* GetMediaRequestContextForRenderProcess(
46       int renderer_child_id) OVERRIDE;
47   virtual net::URLRequestContextGetter*
48       GetMediaRequestContextForStoragePartition(
49           const base::FilePath& partition_path,
50           bool in_memory) OVERRIDE;
51   virtual ResourceContext* GetResourceContext() OVERRIDE;
52   virtual BrowserPluginGuestManager* GetGuestManager() OVERRIDE;
53   virtual storage::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE;
54   virtual PushMessagingService* GetPushMessagingService() OVERRIDE;
55   virtual SSLHostStateDelegate* GetSSLHostStateDelegate() OVERRIDE;
56 
57   net::URLRequestContextGetter* CreateRequestContext(
58       ProtocolHandlerMap* protocol_handlers,
59       URLRequestInterceptorScopedVector request_interceptors);
60   net::URLRequestContextGetter* CreateRequestContextForStoragePartition(
61       const base::FilePath& partition_path,
62       bool in_memory,
63       ProtocolHandlerMap* protocol_handlers,
64       URLRequestInterceptorScopedVector request_interceptors);
65 
66  private:
67   class ShellResourceContext;
68 
69   // Performs initialization of the ShellBrowserContext while IO is still
70   // allowed on the current thread.
71   void InitWhileIOAllowed();
72 
73   bool off_the_record_;
74   net::NetLog* net_log_;
75   bool ignore_certificate_errors_;
76   base::FilePath path_;
77   BrowserPluginGuestManager* guest_manager_;
78   scoped_ptr<ShellResourceContext> resource_context_;
79   scoped_ptr<ShellDownloadManagerDelegate> download_manager_delegate_;
80   scoped_refptr<ShellURLRequestContextGetter> url_request_getter_;
81 
82   DISALLOW_COPY_AND_ASSIGN(ShellBrowserContext);
83 };
84 
85 }  // namespace content
86 
87 #endif  // CONTENT_SHELL_BROWSER_SHELL_BROWSER_CONTEXT_H_
88