Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / content / shell / browser / shell_browser_context.h
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
32   void set_guest_manager_delegate_for_testing(
33       BrowserPluginGuestManagerDelegate* guest_manager_delegate) {
34     guest_manager_delegate_ = guest_manager_delegate;
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 void RequestMidiSysExPermission(
52       int render_process_id,
53       int render_view_id,
54       int bridge_id,
55       const GURL& requesting_frame,
56       bool user_gesture,
57       const MidiSysExPermissionCallback& callback) OVERRIDE;
58   virtual void CancelMidiSysExPermissionRequest(
59       int render_process_id,
60       int render_view_id,
61       int bridge_id,
62       const GURL& requesting_frame) OVERRIDE;
63   virtual void RequestProtectedMediaIdentifierPermission(
64       int render_process_id,
65       int render_view_id,
66       int bridge_id,
67       int group_id,
68       const GURL& requesting_frame,
69       const ProtectedMediaIdentifierPermissionCallback& callback) OVERRIDE;
70   virtual void CancelProtectedMediaIdentifierPermissionRequests(
71       int group_id) OVERRIDE;
72   virtual ResourceContext* GetResourceContext() OVERRIDE;
73   virtual GeolocationPermissionContext*
74       GetGeolocationPermissionContext() OVERRIDE;
75   virtual content::BrowserPluginGuestManagerDelegate*
76       GetGuestManagerDelegate() OVERRIDE;
77   virtual quota::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE;
78
79   net::URLRequestContextGetter* CreateRequestContext(
80       ProtocolHandlerMap* protocol_handlers,
81       ProtocolHandlerScopedVector protocol_interceptors);
82   net::URLRequestContextGetter* CreateRequestContextForStoragePartition(
83       const base::FilePath& partition_path,
84       bool in_memory,
85       ProtocolHandlerMap* protocol_handlers,
86       ProtocolHandlerScopedVector protocol_interceptors);
87
88  private:
89   class ShellResourceContext;
90
91   // Performs initialization of the ShellBrowserContext while IO is still
92   // allowed on the current thread.
93   void InitWhileIOAllowed();
94
95   bool off_the_record_;
96   net::NetLog* net_log_;
97   bool ignore_certificate_errors_;
98   base::FilePath path_;
99   BrowserPluginGuestManagerDelegate* guest_manager_delegate_;
100   scoped_ptr<ShellResourceContext> resource_context_;
101   scoped_ptr<ShellDownloadManagerDelegate> download_manager_delegate_;
102   scoped_refptr<ShellURLRequestContextGetter> url_request_getter_;
103
104   DISALLOW_COPY_AND_ASSIGN(ShellBrowserContext);
105 };
106
107 }  // namespace content
108
109 #endif  // CONTENT_SHELL_BROWSER_SHELL_BROWSER_CONTEXT_H_