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