aw_browser_context.h revision 116680a4aac90f2aa7413d9095a592090648e557
1// Copyright (c) 2012 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 ANDROID_WEBVIEW_BROWSER_AW_BROWSER_CONTEXT_H_
6#define ANDROID_WEBVIEW_BROWSER_AW_BROWSER_CONTEXT_H_
7
8#include <vector>
9
10#include "android_webview/browser/aw_download_manager_delegate.h"
11#include "base/basictypes.h"
12#include "base/compiler_specific.h"
13#include "base/files/file_path.h"
14#include "base/memory/ref_counted.h"
15#include "base/memory/scoped_ptr.h"
16#include "components/visitedlink/browser/visitedlink_delegate.h"
17#include "content/public/browser/browser_context.h"
18#include "content/public/browser/content_browser_client.h"
19#include "net/url_request/url_request_job_factory.h"
20
21class GURL;
22class PrefService;
23
24namespace content {
25class ResourceContext;
26class WebContents;
27}
28
29namespace data_reduction_proxy {
30class DataReductionProxyAuthRequestHandler;
31class DataReductionProxySettings;
32}
33
34namespace net {
35class CookieStore;
36}
37
38namespace visitedlink {
39class VisitedLinkMaster;
40}
41
42using data_reduction_proxy::DataReductionProxyAuthRequestHandler;
43using data_reduction_proxy::DataReductionProxySettings;
44
45namespace android_webview {
46
47class AwFormDatabaseService;
48class AwQuotaManagerBridge;
49class AwURLRequestContextGetter;
50class JniDependencyFactory;
51
52class AwBrowserContext : public content::BrowserContext,
53                         public visitedlink::VisitedLinkDelegate {
54 public:
55
56  AwBrowserContext(const base::FilePath path,
57                   JniDependencyFactory* native_factory);
58  virtual ~AwBrowserContext();
59
60  // Currently only one instance per process is supported.
61  static AwBrowserContext* GetDefault();
62
63  // Convenience method to returns the AwBrowserContext corresponding to the
64  // given WebContents.
65  static AwBrowserContext* FromWebContents(
66      content::WebContents* web_contents);
67
68  static void SetDataReductionProxyEnabled(bool enabled);
69
70  // Maps to BrowserMainParts::PreMainMessageLoopRun.
71  void PreMainMessageLoopRun();
72
73  // These methods map to Add methods in visitedlink::VisitedLinkMaster.
74  void AddVisitedURLs(const std::vector<GURL>& urls);
75
76  net::URLRequestContextGetter* CreateRequestContext(
77      content::ProtocolHandlerMap* protocol_handlers,
78      content::URLRequestInterceptorScopedVector request_interceptors);
79  net::URLRequestContextGetter* CreateRequestContextForStoragePartition(
80      const base::FilePath& partition_path,
81      bool in_memory,
82      content::ProtocolHandlerMap* protocol_handlers,
83      content::URLRequestInterceptorScopedVector request_interceptors);
84
85  AwQuotaManagerBridge* GetQuotaManagerBridge();
86
87  AwFormDatabaseService* GetFormDatabaseService();
88
89  DataReductionProxySettings* GetDataReductionProxySettings();
90
91  DataReductionProxyAuthRequestHandler*
92  GetDataReductionProxyAuthRequestHandler();
93
94  void CreateUserPrefServiceIfNecessary();
95
96  // content::BrowserContext implementation.
97  virtual base::FilePath GetPath() const OVERRIDE;
98  virtual bool IsOffTheRecord() const OVERRIDE;
99  virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE;
100  virtual net::URLRequestContextGetter* GetRequestContextForRenderProcess(
101      int renderer_child_id) OVERRIDE;
102  virtual net::URLRequestContextGetter* GetMediaRequestContext() OVERRIDE;
103  virtual net::URLRequestContextGetter* GetMediaRequestContextForRenderProcess(
104      int renderer_child_id) OVERRIDE;
105  virtual net::URLRequestContextGetter*
106      GetMediaRequestContextForStoragePartition(
107          const base::FilePath& partition_path, bool in_memory) OVERRIDE;
108  virtual content::ResourceContext* GetResourceContext() OVERRIDE;
109  virtual content::DownloadManagerDelegate*
110      GetDownloadManagerDelegate() OVERRIDE;
111  virtual content::BrowserPluginGuestManager* GetGuestManager() OVERRIDE;
112  virtual quota::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE;
113  virtual content::PushMessagingService* GetPushMessagingService() OVERRIDE;
114
115  // visitedlink::VisitedLinkDelegate implementation.
116  virtual void RebuildTable(
117      const scoped_refptr<URLEnumerator>& enumerator) OVERRIDE;
118
119 private:
120  static bool data_reduction_proxy_enabled_;
121
122  // The file path where data for this context is persisted.
123  base::FilePath context_storage_path_;
124
125  JniDependencyFactory* native_factory_;
126  scoped_refptr<net::CookieStore> cookie_store_;
127  scoped_refptr<AwURLRequestContextGetter> url_request_context_getter_;
128  scoped_refptr<AwQuotaManagerBridge> quota_manager_bridge_;
129  scoped_ptr<AwFormDatabaseService> form_database_service_;
130
131  AwDownloadManagerDelegate download_manager_delegate_;
132
133  scoped_ptr<visitedlink::VisitedLinkMaster> visitedlink_master_;
134  scoped_ptr<content::ResourceContext> resource_context_;
135
136  scoped_ptr<PrefService> user_pref_service_;
137
138  scoped_ptr<DataReductionProxySettings> data_reduction_proxy_settings_;
139  scoped_ptr<DataReductionProxyAuthRequestHandler>
140      data_reduction_proxy_auth_request_handler_;
141
142  DISALLOW_COPY_AND_ASSIGN(AwBrowserContext);
143};
144
145}  // namespace android_webview
146
147#endif  // ANDROID_WEBVIEW_BROWSER_AW_BROWSER_CONTEXT_H_
148