OLD | NEW |
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 CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_ | 5 #ifndef CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_ |
6 #define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_ | 6 #define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/gtest_prod_util.h" | 10 #include "base/gtest_prod_util.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 // Observer is notified when the removal is done. Done means keywords have | 109 // Observer is notified when the removal is done. Done means keywords have |
110 // been deleted, cache cleared and all other tasks scheduled. | 110 // been deleted, cache cleared and all other tasks scheduled. |
111 class Observer { | 111 class Observer { |
112 public: | 112 public: |
113 virtual void OnBrowsingDataRemoverDone() = 0; | 113 virtual void OnBrowsingDataRemoverDone() = 0; |
114 | 114 |
115 protected: | 115 protected: |
116 virtual ~Observer() {} | 116 virtual ~Observer() {} |
117 }; | 117 }; |
118 | 118 |
119 // Creates a BrowsingDataRemover to remove browser data from the specified | 119 // Creates a BrowsingDataRemover object that removes data regardless of the |
120 // profile in the specified time range. Use Remove to initiate the removal. | 120 // time it was last modified. Returns a raw pointer, as BrowsingDataRemover |
121 BrowsingDataRemover(Profile* profile, base::Time delete_begin, | 121 // retains ownership of itself, and deletes itself once finished. |
122 base::Time delete_end); | 122 static BrowsingDataRemover* CreateForUnboundedRange(Profile* profile); |
123 | 123 |
124 // Creates a BrowsingDataRemover to remove browser data from the specified | 124 // Creates a BrowsingDataRemover object bound on both sides by a time. Returns |
125 // profile in the specified time range. | 125 // a raw pointer, as BrowsingDataRemover retains ownership of itself, and |
126 BrowsingDataRemover(Profile* profile, TimePeriod time_period, | 126 // deletes itself once finished. |
127 base::Time delete_end); | 127 static BrowsingDataRemover* CreateForRange(Profile* profile, |
| 128 base::Time delete_begin, |
| 129 base::Time delete_end); |
| 130 |
| 131 // Creates a BrowsingDataRemover bound to a specific period of time (as |
| 132 // defined via a TimePeriod). Returns a raw pointer, as BrowsingDataRemover |
| 133 // retains ownership of itself, and deletes itself once finished. |
| 134 static BrowsingDataRemover* CreateForPeriod(Profile* profile, |
| 135 TimePeriod period); |
| 136 |
| 137 // Quota managed data uses a different bitmask for types than |
| 138 // BrowsingDataRemover uses. This method generates that mask. |
| 139 static int GenerateQuotaClientMask(int remove_mask); |
| 140 |
| 141 // Is the BrowsingDataRemover currently in the process of removing data? |
| 142 static bool is_removing() { return is_removing_; } |
128 | 143 |
129 // Removes the specified items related to browsing for all origins that match | 144 // Removes the specified items related to browsing for all origins that match |
130 // the provided |origin_set_mask| (see BrowsingDataHelper::OriginSetMask). | 145 // the provided |origin_set_mask| (see BrowsingDataHelper::OriginSetMask). |
131 void Remove(int remove_mask, int origin_set_mask); | 146 void Remove(int remove_mask, int origin_set_mask); |
132 | 147 |
133 void AddObserver(Observer* observer); | 148 void AddObserver(Observer* observer); |
134 void RemoveObserver(Observer* observer); | 149 void RemoveObserver(Observer* observer); |
135 | 150 |
136 // Called when history deletion is done. | 151 // Called when history deletion is done. |
137 void OnHistoryDeletionDone(); | 152 void OnHistoryDeletionDone(); |
138 | 153 |
139 // Quota managed data uses a different bitmask for types than | |
140 // BrowsingDataRemover uses. This method generates that mask. | |
141 static int GenerateQuotaClientMask(int remove_mask); | |
142 | |
143 // Used for testing. | 154 // Used for testing. |
144 void OverrideQuotaManagerForTesting(quota::QuotaManager* quota_manager); | 155 void OverrideQuotaManagerForTesting(quota::QuotaManager* quota_manager); |
145 | 156 |
146 static bool is_removing() { return removing_; } | |
147 | |
148 private: | 157 private: |
149 // The clear API needs to be able to toggle removing_ in order to test that | 158 // The clear API needs to be able to toggle removing_ in order to test that |
150 // only one BrowsingDataRemover instance can be called at a time. | 159 // only one BrowsingDataRemover instance can be called at a time. |
151 FRIEND_TEST_ALL_PREFIXES(ExtensionBrowsingDataTest, OneAtATime); | 160 FRIEND_TEST_ALL_PREFIXES(ExtensionBrowsingDataTest, OneAtATime); |
152 | 161 |
153 // The BrowsingDataRemover tests need to be able to access the implementation | 162 // The BrowsingDataRemover tests need to be able to access the implementation |
154 // of Remove(), as it exposes details that aren't yet available in the public | 163 // of Remove(), as it exposes details that aren't yet available in the public |
155 // API. As soon as those details are exposed via new methods, this should be | 164 // API. As soon as those details are exposed via new methods, this should be |
156 // removed. | 165 // removed. |
157 // | 166 // |
158 // TODO(mkwst): See http://crbug.com/113621 | 167 // TODO(mkwst): See http://crbug.com/113621 |
159 friend class BrowsingDataRemoverTest; | 168 friend class BrowsingDataRemoverTest; |
160 | 169 |
161 enum CacheState { | 170 enum CacheState { |
162 STATE_NONE, | 171 STATE_NONE, |
163 STATE_CREATE_MAIN, | 172 STATE_CREATE_MAIN, |
164 STATE_CREATE_MEDIA, | 173 STATE_CREATE_MEDIA, |
165 STATE_DELETE_MAIN, | 174 STATE_DELETE_MAIN, |
166 STATE_DELETE_MEDIA, | 175 STATE_DELETE_MEDIA, |
167 STATE_DONE | 176 STATE_DONE |
168 }; | 177 }; |
169 | 178 |
| 179 // Calculate the begin time for the deletion range specified by |time_period|. |
| 180 static base::Time CalculateBeginDeleteTime(TimePeriod time_period); |
| 181 |
| 182 // Setter for |is_removing_|; DCHECKs that we can only start removing if we're |
| 183 // not already removing, and vice-versa. |
| 184 static void set_removing(bool is_removing); |
| 185 |
| 186 // Creates a BrowsingDataRemover to remove browser data from the specified |
| 187 // profile in the specified time range. Use Remove to initiate the removal. |
| 188 BrowsingDataRemover(Profile* profile, |
| 189 base::Time delete_begin, |
| 190 base::Time delete_end); |
| 191 |
170 // BrowsingDataRemover deletes itself (using DeleteHelper) and is not supposed | 192 // BrowsingDataRemover deletes itself (using DeleteHelper) and is not supposed |
171 // to be deleted by other objects so make destructor private and DeleteHelper | 193 // to be deleted by other objects so make destructor private and DeleteHelper |
172 // a friend. | 194 // a friend. |
173 friend class base::DeleteHelper<BrowsingDataRemover>; | 195 friend class base::DeleteHelper<BrowsingDataRemover>; |
174 virtual ~BrowsingDataRemover(); | 196 virtual ~BrowsingDataRemover(); |
175 | 197 |
176 // content::NotificationObserver method. Callback when TemplateURLService has | 198 // content::NotificationObserver method. Callback when TemplateURLService has |
177 // finished loading. Deletes the entries from the model, and if we're not | 199 // finished loading. Deletes the entries from the model, and if we're not |
178 // waiting on anything else notifies observers and deletes this | 200 // waiting on anything else notifies observers and deletes this |
179 // BrowsingDataRemover. | 201 // BrowsingDataRemover. |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 // NotifyAndDeleteIfDone. | 301 // NotifyAndDeleteIfDone. |
280 void OnClearedServerBoundCerts(); | 302 void OnClearedServerBoundCerts(); |
281 | 303 |
282 // Callback on the DB thread so that we can wait for the form data to be | 304 // Callback on the DB thread so that we can wait for the form data to be |
283 // cleared. | 305 // cleared. |
284 void FormDataDBThreadHop(); | 306 void FormDataDBThreadHop(); |
285 | 307 |
286 // Callback from the above method. | 308 // Callback from the above method. |
287 void OnClearedFormData(); | 309 void OnClearedFormData(); |
288 | 310 |
289 // Calculate the begin time for the deletion range specified by |time_period|. | |
290 base::Time CalculateBeginDeleteTime(TimePeriod time_period); | |
291 | |
292 // Returns true if we're all done. | 311 // Returns true if we're all done. |
293 bool AllDone(); | 312 bool AllDone(); |
294 | 313 |
295 // Setter for removing_; DCHECKs that we can only start removing if we're not | |
296 // already removing, and vice-versa. | |
297 static void set_removing(bool removing); | |
298 | |
299 content::NotificationRegistrar registrar_; | 314 content::NotificationRegistrar registrar_; |
300 | 315 |
301 // Profile we're to remove from. | 316 // Profile we're to remove from. |
302 Profile* profile_; | 317 Profile* profile_; |
303 | 318 |
304 // The QuotaManager is owned by the profile; we can use a raw pointer here, | 319 // The QuotaManager is owned by the profile; we can use a raw pointer here, |
305 // and rely on the profile to destroy the object whenever it's reasonable. | 320 // and rely on the profile to destroy the object whenever it's reasonable. |
306 quota::QuotaManager* quota_manager_; | 321 quota::QuotaManager* quota_manager_; |
307 | 322 |
308 // The DOMStorageContext is owned by the profile; we'll store a raw pointer. | 323 // The DOMStorageContext is owned by the profile; we'll store a raw pointer. |
309 content::DOMStorageContext* dom_storage_context_; | 324 content::DOMStorageContext* dom_storage_context_; |
310 | 325 |
311 // 'Protected' origins are not subject to data removal. | 326 // 'Protected' origins are not subject to data removal. |
312 scoped_refptr<ExtensionSpecialStoragePolicy> special_storage_policy_; | 327 scoped_refptr<ExtensionSpecialStoragePolicy> special_storage_policy_; |
313 | 328 |
314 // Start time to delete from. | 329 // Start time to delete from. |
315 const base::Time delete_begin_; | 330 const base::Time delete_begin_; |
316 | 331 |
317 // End time to delete to. | 332 // End time to delete to. |
318 base::Time delete_end_; | 333 base::Time delete_end_; |
319 | 334 |
320 // True if Remove has been invoked. | 335 // True if Remove has been invoked. |
321 static bool removing_; | 336 static bool is_removing_; |
322 | 337 |
323 CacheState next_cache_state_; | 338 CacheState next_cache_state_; |
324 disk_cache::Backend* cache_; | 339 disk_cache::Backend* cache_; |
325 | 340 |
326 // Used to delete data from HTTP cache. | 341 // Used to delete data from HTTP cache. |
327 scoped_refptr<net::URLRequestContextGetter> main_context_getter_; | 342 scoped_refptr<net::URLRequestContextGetter> main_context_getter_; |
328 scoped_refptr<net::URLRequestContextGetter> media_context_getter_; | 343 scoped_refptr<net::URLRequestContextGetter> media_context_getter_; |
329 | 344 |
330 // Used to delete plugin data. | 345 // Used to delete plugin data. |
331 scoped_ptr<content::PluginDataRemover> plugin_data_remover_; | 346 scoped_ptr<content::PluginDataRemover> plugin_data_remover_; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 | 381 |
367 ObserverList<Observer> observer_list_; | 382 ObserverList<Observer> observer_list_; |
368 | 383 |
369 // Used if we need to clear history. | 384 // Used if we need to clear history. |
370 CancelableRequestConsumer request_consumer_; | 385 CancelableRequestConsumer request_consumer_; |
371 | 386 |
372 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemover); | 387 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemover); |
373 }; | 388 }; |
374 | 389 |
375 #endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_ | 390 #endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_ |
OLD | NEW |