Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(316)

Side by Side Diff: content/browser/storage_partition_impl.h

Issue 37843003: BrowsingDataRemover, (re)use StoragePartition deletion code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase @tott. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_BROWSER_STORAGE_PARTITION_IMPL_H_ 5 #ifndef CONTENT_BROWSER_STORAGE_PARTITION_IMPL_H_
6 #define CONTENT_BROWSER_STORAGE_PARTITION_IMPL_H_ 6 #define CONTENT_BROWSER_STORAGE_PARTITION_IMPL_H_
7 7
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
11 #include "content/browser/appcache/chrome_appcache_service.h" 11 #include "content/browser/appcache/chrome_appcache_service.h"
12 #include "content/browser/dom_storage/dom_storage_context_wrapper.h" 12 #include "content/browser/dom_storage/dom_storage_context_wrapper.h"
13 #include "content/browser/indexed_db/indexed_db_context_impl.h" 13 #include "content/browser/indexed_db/indexed_db_context_impl.h"
14 #include "content/browser/media/webrtc_identity_store.h" 14 #include "content/browser/media/webrtc_identity_store.h"
15 #include "content/browser/service_worker/service_worker_context.h" 15 #include "content/browser/service_worker/service_worker_context.h"
16 #include "content/common/content_export.h" 16 #include "content/common/content_export.h"
17 #include "content/public/browser/storage_partition.h" 17 #include "content/public/browser/storage_partition.h"
18 #include "webkit/browser/quota/special_storage_policy.h"
18 19
19 namespace content { 20 namespace content {
20 21
21 class StoragePartitionImpl : public StoragePartition { 22 class StoragePartitionImpl : public StoragePartition {
22 public: 23 public:
23 CONTENT_EXPORT virtual ~StoragePartitionImpl(); 24 CONTENT_EXPORT virtual ~StoragePartitionImpl();
24 25
26 // Quota managed data uses a different bitmask for types than
27 // StoragePartition uses. This method generates that mask.
28 CONTENT_EXPORT static int GenerateQuotaClientMask(uint32 remove_mask);
29
30 CONTENT_EXPORT void OverrideQuotaManagerForTesting(
31 quota::QuotaManager* quota_manager);
32 CONTENT_EXPORT void OverrideSpecialStoragePolicyForTesting(
33 quota::SpecialStoragePolicy* special_storage_policy);
34
25 // StoragePartition interface. 35 // StoragePartition interface.
26 virtual base::FilePath GetPath() OVERRIDE; 36 virtual base::FilePath GetPath() OVERRIDE;
27 virtual net::URLRequestContextGetter* GetURLRequestContext() OVERRIDE; 37 virtual net::URLRequestContextGetter* GetURLRequestContext() OVERRIDE;
28 virtual net::URLRequestContextGetter* GetMediaURLRequestContext() OVERRIDE; 38 virtual net::URLRequestContextGetter* GetMediaURLRequestContext() OVERRIDE;
29 virtual quota::QuotaManager* GetQuotaManager() OVERRIDE; 39 virtual quota::QuotaManager* GetQuotaManager() OVERRIDE;
30 virtual ChromeAppCacheService* GetAppCacheService() OVERRIDE; 40 virtual ChromeAppCacheService* GetAppCacheService() OVERRIDE;
31 virtual fileapi::FileSystemContext* GetFileSystemContext() OVERRIDE; 41 virtual fileapi::FileSystemContext* GetFileSystemContext() OVERRIDE;
32 virtual webkit_database::DatabaseTracker* GetDatabaseTracker() OVERRIDE; 42 virtual webkit_database::DatabaseTracker* GetDatabaseTracker() OVERRIDE;
33 virtual DOMStorageContextWrapper* GetDOMStorageContext() OVERRIDE; 43 virtual DOMStorageContextWrapper* GetDOMStorageContext() OVERRIDE;
34 virtual IndexedDBContextImpl* GetIndexedDBContext() OVERRIDE; 44 virtual IndexedDBContextImpl* GetIndexedDBContext() OVERRIDE;
35 45
36 virtual void ClearDataForOrigin( 46 virtual void ClearDataForOrigin(
37 uint32 remove_mask, 47 uint32 remove_mask,
38 uint32 quota_storage_remove_mask, 48 uint32 quota_storage_remove_mask,
39 const GURL& storage_origin, 49 const GURL& storage_origin,
40 net::URLRequestContextGetter* request_context_getter) OVERRIDE; 50 net::URLRequestContextGetter* request_context_getter) OVERRIDE;
41 virtual void ClearDataForUnboundedRange( 51 virtual void ClearData(uint32 remove_mask,
42 uint32 remove_mask, 52 uint32 quota_storage_remove_mask,
43 uint32 quota_storage_remove_mask) OVERRIDE; 53 const GURL* storage_origin,
44 virtual void ClearDataForRange(uint32 remove_mask, 54 const OriginMatcherFunction& origin_matcher,
45 uint32 quota_storage_remove_mask, 55 const base::Time begin,
46 const base::Time& begin, 56 const base::Time end,
47 const base::Time& end, 57 const base::Closure& callback) OVERRIDE;
48 const base::Closure& callback) OVERRIDE;
49 58
50 ServiceWorkerContext* GetServiceWorkerContext(); 59 ServiceWorkerContext* GetServiceWorkerContext();
51 60
52 WebRTCIdentityStore* GetWebRTCIdentityStore(); 61 WebRTCIdentityStore* GetWebRTCIdentityStore();
53 62
54 struct DataDeletionHelper; 63 struct DataDeletionHelper;
55 struct QuotaManagedDataDeletionHelper; 64 struct QuotaManagedDataDeletionHelper;
56 65
57 private: 66 private:
58 friend class StoragePartitionImplMap; 67 friend class StoragePartitionImplMap;
59 FRIEND_TEST_ALL_PREFIXES(StoragePartitionShaderClearTest, ClearShaderCache); 68 FRIEND_TEST_ALL_PREFIXES(StoragePartitionShaderClearTest, ClearShaderCache);
69 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
70 RemoveQuotaManagedDataForeverBoth);
71 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
72 RemoveQuotaManagedDataForeverOnlyTemporary);
73 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
74 RemoveQuotaManagedDataForeverOnlyPersistent);
75 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
76 RemoveQuotaManagedDataForeverNeither);
77 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
78 RemoveQuotaManagedDataForeverSpecificOrigin);
79 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
80 RemoveQuotaManagedDataForLastHour);
81 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
82 RemoveQuotaManagedDataForLastWeek);
83 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
84 RemoveQuotaManagedUnprotectedOrigins);
85 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
86 RemoveQuotaManagedProtectedSpecificOrigin);
87 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
88 RemoveQuotaManagedProtectedOrigins);
89 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
90 RemoveQuotaManagedIgnoreDevTools);
91 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest, RemoveCookieForever);
92 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest, RemoveCookieLastHour);
93 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
94 RemoveUnprotectedLocalStorageForever);
95 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
96 RemoveProtectedLocalStorageForever);
97 FRIEND_TEST_ALL_PREFIXES(StoragePartitionImplTest,
98 RemoveLocalStorageForLastWeek);
60 99
61 // The |partition_path| is the absolute path to the root of this 100 // The |partition_path| is the absolute path to the root of this
62 // StoragePartition's on-disk storage. 101 // StoragePartition's on-disk storage.
63 // 102 //
64 // If |in_memory| is true, the |partition_path| is (ab)used as a way of 103 // If |in_memory| is true, the |partition_path| is (ab)used as a way of
65 // distinguishing different in-memory partitions, but nothing is persisted 104 // distinguishing different in-memory partitions, but nothing is persisted
66 // on to disk. 105 // on to disk.
67 static StoragePartitionImpl* Create(BrowserContext* context, 106 static StoragePartitionImpl* Create(BrowserContext* context,
68 bool in_memory, 107 bool in_memory,
69 const base::FilePath& profile_path); 108 const base::FilePath& profile_path);
70 109
71 // Quota managed data uses a different bitmask for types than
72 // StoragePartition uses. This method generates that mask.
73 static int GenerateQuotaClientMask(uint32 remove_mask);
74
75 CONTENT_EXPORT StoragePartitionImpl( 110 CONTENT_EXPORT StoragePartitionImpl(
76 const base::FilePath& partition_path, 111 const base::FilePath& partition_path,
77 quota::QuotaManager* quota_manager, 112 quota::QuotaManager* quota_manager,
78 ChromeAppCacheService* appcache_service, 113 ChromeAppCacheService* appcache_service,
79 fileapi::FileSystemContext* filesystem_context, 114 fileapi::FileSystemContext* filesystem_context,
80 webkit_database::DatabaseTracker* database_tracker, 115 webkit_database::DatabaseTracker* database_tracker,
81 DOMStorageContextWrapper* dom_storage_context, 116 DOMStorageContextWrapper* dom_storage_context,
82 IndexedDBContextImpl* indexed_db_context, 117 IndexedDBContextImpl* indexed_db_context,
83 ServiceWorkerContext* service_worker_context, 118 ServiceWorkerContext* service_worker_context,
84 WebRTCIdentityStore* webrtc_identity_store); 119 WebRTCIdentityStore* webrtc_identity_store,
120 quota::SpecialStoragePolicy* special_storage_policy);
85 121
86 void ClearDataImpl(uint32 remove_mask, 122 void ClearDataImpl(uint32 remove_mask,
87 uint32 quota_storage_remove_mask, 123 uint32 quota_storage_remove_mask,
88 const GURL& remove_origin, 124 const GURL* remove_origin,
125 const OriginMatcherFunction& origin_matcher,
89 net::URLRequestContextGetter* rq_context, 126 net::URLRequestContextGetter* rq_context,
90 const base::Time begin, 127 const base::Time begin,
91 const base::Time end, 128 const base::Time end,
92 const base::Closure& callback); 129 const base::Closure& callback);
93 130
94 // Used by StoragePartitionImplMap. 131 // Used by StoragePartitionImplMap.
95 // 132 //
96 // TODO(ajwong): These should be taken in the constructor and in Create() but 133 // TODO(ajwong): These should be taken in the constructor and in Create() but
97 // because the URLRequestContextGetter still lives in Profile with a tangled 134 // because the URLRequestContextGetter still lives in Profile with a tangled
98 // initialization, if we try to retrieve the URLRequestContextGetter() 135 // initialization, if we try to retrieve the URLRequestContextGetter()
99 // before the default StoragePartition is created, we end up reentering the 136 // before the default StoragePartition is created, we end up reentering the
100 // construction and double-initializing. For now, we retain the legacy 137 // construction and double-initializing. For now, we retain the legacy
101 // behavior while allowing StoragePartitionImpl to expose these accessors by 138 // behavior while allowing StoragePartitionImpl to expose these accessors by
102 // letting StoragePartitionImplMap call these two private settings at the 139 // letting StoragePartitionImplMap call these two private settings at the
103 // appropriate time. These should move back into the constructor once 140 // appropriate time. These should move back into the constructor once
104 // URLRequestContextGetter's lifetime is sorted out. We should also move the 141 // URLRequestContextGetter's lifetime is sorted out. We should also move the
105 // PostCreateInitialization() out of StoragePartitionImplMap. 142 // PostCreateInitialization() out of StoragePartitionImplMap.
106 void SetURLRequestContext(net::URLRequestContextGetter* url_request_context); 143 CONTENT_EXPORT void SetURLRequestContext(
144 net::URLRequestContextGetter* url_request_context);
107 void SetMediaURLRequestContext( 145 void SetMediaURLRequestContext(
108 net::URLRequestContextGetter* media_url_request_context); 146 net::URLRequestContextGetter* media_url_request_context);
109 147
110 base::FilePath partition_path_; 148 base::FilePath partition_path_;
111 scoped_refptr<net::URLRequestContextGetter> url_request_context_; 149 scoped_refptr<net::URLRequestContextGetter> url_request_context_;
112 scoped_refptr<net::URLRequestContextGetter> media_url_request_context_; 150 scoped_refptr<net::URLRequestContextGetter> media_url_request_context_;
113 scoped_refptr<quota::QuotaManager> quota_manager_; 151 scoped_refptr<quota::QuotaManager> quota_manager_;
114 scoped_refptr<ChromeAppCacheService> appcache_service_; 152 scoped_refptr<ChromeAppCacheService> appcache_service_;
115 scoped_refptr<fileapi::FileSystemContext> filesystem_context_; 153 scoped_refptr<fileapi::FileSystemContext> filesystem_context_;
116 scoped_refptr<webkit_database::DatabaseTracker> database_tracker_; 154 scoped_refptr<webkit_database::DatabaseTracker> database_tracker_;
117 scoped_refptr<DOMStorageContextWrapper> dom_storage_context_; 155 scoped_refptr<DOMStorageContextWrapper> dom_storage_context_;
118 scoped_refptr<IndexedDBContextImpl> indexed_db_context_; 156 scoped_refptr<IndexedDBContextImpl> indexed_db_context_;
119 scoped_refptr<ServiceWorkerContext> service_worker_context_; 157 scoped_refptr<ServiceWorkerContext> service_worker_context_;
120 scoped_refptr<WebRTCIdentityStore> webrtc_identity_store_; 158 scoped_refptr<WebRTCIdentityStore> webrtc_identity_store_;
159 scoped_refptr<quota::SpecialStoragePolicy> special_storage_policy_;
121 160
122 DISALLOW_COPY_AND_ASSIGN(StoragePartitionImpl); 161 DISALLOW_COPY_AND_ASSIGN(StoragePartitionImpl);
123 }; 162 };
124 163
125 } // namespace content 164 } // namespace content
126 165
127 #endif // CONTENT_BROWSER_STORAGE_PARTITION_IMPL_H_ 166 #endif // CONTENT_BROWSER_STORAGE_PARTITION_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698