| 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" |
| 11 #include "base/memory/ref_counted.h" | 11 #include "base/memory/ref_counted.h" |
| 12 #include "base/observer_list.h" | 12 #include "base/observer_list.h" |
| 13 #include "base/prefs/pref_member.h" | 13 #include "base/prefs/pref_member.h" |
| 14 #include "base/sequenced_task_runner_helpers.h" | 14 #include "base/sequenced_task_runner_helpers.h" |
| 15 #include "base/synchronization/waitable_event_watcher.h" | 15 #include "base/synchronization/waitable_event_watcher.h" |
| 16 #include "base/task/cancelable_task_tracker.h" | 16 #include "base/task/cancelable_task_tracker.h" |
| 17 #include "base/time/time.h" | 17 #include "base/time/time.h" |
| 18 #include "chrome/browser/pepper_flash_settings_manager.h" | 18 #include "chrome/browser/pepper_flash_settings_manager.h" |
| 19 #include "components/search_engines/template_url_service.h" | 19 #include "components/search_engines/template_url_service.h" |
| 20 #if defined(OS_CHROMEOS) | 20 #if defined(OS_CHROMEOS) |
| 21 #include "chromeos/dbus/dbus_method_call_status.h" | 21 #include "chromeos/dbus/dbus_method_call_status.h" |
| 22 #endif | 22 #endif |
| 23 #include "storage/common/quota/quota_types.h" | 23 #include "storage/common/quota/quota_types.h" |
| 24 #include "url/gurl.h" | 24 #include "url/gurl.h" |
| 25 | 25 |
| 26 class ExtensionSpecialStoragePolicy; | |
| 27 class IOThread; | 26 class IOThread; |
| 28 class Profile; | 27 class Profile; |
| 29 | 28 |
| 30 namespace chrome_browser_net { | 29 namespace chrome_browser_net { |
| 31 class Predictor; | 30 class Predictor; |
| 32 } | 31 } |
| 33 | 32 |
| 34 namespace content { | 33 namespace content { |
| 35 class PluginDataRemover; | 34 class PluginDataRemover; |
| 36 class StoragePartition; | 35 class StoragePartition; |
| 37 } | 36 } |
| 38 | 37 |
| 39 namespace disk_cache { | |
| 40 class Backend; | |
| 41 } | |
| 42 | |
| 43 namespace net { | 38 namespace net { |
| 44 class URLRequestContextGetter; | 39 class URLRequestContextGetter; |
| 45 } | 40 } |
| 46 | 41 |
| 47 namespace storage { | |
| 48 class QuotaManager; | |
| 49 } | |
| 50 | |
| 51 namespace content { | |
| 52 class DOMStorageContext; | |
| 53 struct LocalStorageUsageInfo; | |
| 54 struct SessionStorageUsageInfo; | |
| 55 } | |
| 56 | |
| 57 // BrowsingDataRemover is responsible for removing data related to browsing: | 42 // BrowsingDataRemover is responsible for removing data related to browsing: |
| 58 // visits in url database, downloads, cookies ... | 43 // visits in url database, downloads, cookies ... |
| 59 | 44 |
| 60 class BrowsingDataRemover | 45 class BrowsingDataRemover |
| 61 #if defined(ENABLE_PLUGINS) | 46 #if defined(ENABLE_PLUGINS) |
| 62 : public PepperFlashSettingsManager::Client | 47 : public PepperFlashSettingsManager::Client |
| 63 #endif | 48 #endif |
| 64 { | 49 { |
| 65 public: | 50 public: |
| 66 // Time period ranges available when doing browsing data removals. | 51 // Time period ranges available when doing browsing data removals. |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 FRIEND_TEST_ALL_PREFIXES(ExtensionBrowsingDataTest, OneAtATime); | 215 FRIEND_TEST_ALL_PREFIXES(ExtensionBrowsingDataTest, OneAtATime); |
| 231 | 216 |
| 232 // The BrowsingDataRemover tests need to be able to access the implementation | 217 // The BrowsingDataRemover tests need to be able to access the implementation |
| 233 // of Remove(), as it exposes details that aren't yet available in the public | 218 // of Remove(), as it exposes details that aren't yet available in the public |
| 234 // API. As soon as those details are exposed via new methods, this should be | 219 // API. As soon as those details are exposed via new methods, this should be |
| 235 // removed. | 220 // removed. |
| 236 // | 221 // |
| 237 // TODO(mkwst): See http://crbug.com/113621 | 222 // TODO(mkwst): See http://crbug.com/113621 |
| 238 friend class BrowsingDataRemoverTest; | 223 friend class BrowsingDataRemoverTest; |
| 239 | 224 |
| 240 enum CacheState { | |
| 241 STATE_NONE, | |
| 242 STATE_CREATE_MAIN, | |
| 243 STATE_CREATE_MEDIA, | |
| 244 STATE_DELETE_MAIN, | |
| 245 STATE_DELETE_MEDIA, | |
| 246 STATE_DONE | |
| 247 }; | |
| 248 | |
| 249 // Setter for |is_removing_|; DCHECKs that we can only start removing if we're | 225 // Setter for |is_removing_|; DCHECKs that we can only start removing if we're |
| 250 // not already removing, and vice-versa. | 226 // not already removing, and vice-versa. |
| 251 static void set_removing(bool is_removing); | 227 static void set_removing(bool is_removing); |
| 252 | 228 |
| 253 // Creates a BrowsingDataRemover to remove browser data from the specified | 229 // Creates a BrowsingDataRemover to remove browser data from the specified |
| 254 // profile in the specified time range. Use Remove to initiate the removal. | 230 // profile in the specified time range. Use Remove to initiate the removal. |
| 255 BrowsingDataRemover(Profile* profile, | 231 BrowsingDataRemover(Profile* profile, |
| 256 base::Time delete_begin, | 232 base::Time delete_begin, |
| 257 base::Time delete_end); | 233 base::Time delete_end); |
| 258 | 234 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 325 void ClearNetworkPredictorOnIOThread( | 301 void ClearNetworkPredictorOnIOThread( |
| 326 chrome_browser_net::Predictor* predictor); | 302 chrome_browser_net::Predictor* predictor); |
| 327 | 303 |
| 328 // Callback for when network related data in ProfileIOData has been cleared. | 304 // Callback for when network related data in ProfileIOData has been cleared. |
| 329 // Clears the respective waiting flag and invokes NotifyAndDeleteIfDone. | 305 // Clears the respective waiting flag and invokes NotifyAndDeleteIfDone. |
| 330 void OnClearedNetworkingHistory(); | 306 void OnClearedNetworkingHistory(); |
| 331 | 307 |
| 332 // Callback for when the cache has been deleted. Invokes | 308 // Callback for when the cache has been deleted. Invokes |
| 333 // NotifyAndDeleteIfDone. | 309 // NotifyAndDeleteIfDone. |
| 334 void ClearedCache(); | 310 void ClearedCache(); |
| 335 | |
| 336 // Invoked on the IO thread to delete from the cache. | |
| 337 void ClearCacheOnIOThread(); | |
| 338 | |
| 339 // Performs the actual work to delete the cache. | |
| 340 void DoClearCache(int rv); | |
| 341 | |
| 342 #if !defined(DISABLE_NACL) | 311 #if !defined(DISABLE_NACL) |
| 343 // Callback for when the NaCl cache has been deleted. Invokes | 312 // Callback for when the NaCl cache has been deleted. Invokes |
| 344 // NotifyAndDeleteIfDone. | 313 // NotifyAndDeleteIfDone. |
| 345 void ClearedNaClCache(); | 314 void ClearedNaClCache(); |
| 346 | 315 |
| 347 // Invokes the ClearedNaClCache on the UI thread. | 316 // Invokes the ClearedNaClCache on the UI thread. |
| 348 void ClearedNaClCacheOnIOThread(); | 317 void ClearedNaClCacheOnIOThread(); |
| 349 | 318 |
| 350 // Invoked on the IO thread to delete the NaCl cache. | 319 // Invoked on the IO thread to delete the NaCl cache. |
| 351 void ClearNaClCacheOnIOThread(); | 320 void ClearNaClCacheOnIOThread(); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 base::Time delete_end_; | 379 base::Time delete_end_; |
| 411 | 380 |
| 412 // True if Remove has been invoked. | 381 // True if Remove has been invoked. |
| 413 static bool is_removing_; | 382 static bool is_removing_; |
| 414 | 383 |
| 415 // If non-NULL, the |completion_inhibitor_| is notified each time an instance | 384 // If non-NULL, the |completion_inhibitor_| is notified each time an instance |
| 416 // is about to complete a browsing data removal process, and has the ability | 385 // is about to complete a browsing data removal process, and has the ability |
| 417 // to artificially delay completion. Used for testing. | 386 // to artificially delay completion. Used for testing. |
| 418 static CompletionInhibitor* completion_inhibitor_; | 387 static CompletionInhibitor* completion_inhibitor_; |
| 419 | 388 |
| 420 CacheState next_cache_state_; | |
| 421 disk_cache::Backend* cache_; | |
| 422 | |
| 423 // Used to delete data from HTTP cache. | 389 // Used to delete data from HTTP cache. |
| 424 scoped_refptr<net::URLRequestContextGetter> main_context_getter_; | 390 scoped_refptr<net::URLRequestContextGetter> main_context_getter_; |
| 425 scoped_refptr<net::URLRequestContextGetter> media_context_getter_; | 391 scoped_refptr<net::URLRequestContextGetter> media_context_getter_; |
| 426 | 392 |
| 427 #if defined(ENABLE_PLUGINS) | 393 #if defined(ENABLE_PLUGINS) |
| 428 // Used to delete plugin data. | 394 // Used to delete plugin data. |
| 429 scoped_ptr<content::PluginDataRemover> plugin_data_remover_; | 395 scoped_ptr<content::PluginDataRemover> plugin_data_remover_; |
| 430 base::WaitableEventWatcher watcher_; | 396 base::WaitableEventWatcher watcher_; |
| 431 | 397 |
| 432 // Used to deauthorize content licenses for Pepper Flash. | 398 // Used to deauthorize content licenses for Pepper Flash. |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 475 | 441 |
| 476 scoped_ptr<TemplateURLService::Subscription> template_url_sub_; | 442 scoped_ptr<TemplateURLService::Subscription> template_url_sub_; |
| 477 | 443 |
| 478 // We do not own this. | 444 // We do not own this. |
| 479 content::StoragePartition* storage_partition_for_testing_; | 445 content::StoragePartition* storage_partition_for_testing_; |
| 480 | 446 |
| 481 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemover); | 447 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemover); |
| 482 }; | 448 }; |
| 483 | 449 |
| 484 #endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_ | 450 #endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_ |
| OLD | NEW |