Chromium Code Reviews| 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 <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <queue> | 10 #include <queue> |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 25 #include "components/browsing_data/core/browsing_data_utils.h" | 25 #include "components/browsing_data/core/browsing_data_utils.h" |
| 26 #include "components/content_settings/core/common/content_settings_pattern.h" | 26 #include "components/content_settings/core/common/content_settings_pattern.h" |
| 27 #include "components/content_settings/core/common/content_settings_types.h" | 27 #include "components/content_settings/core/common/content_settings_types.h" |
| 28 #include "components/keyed_service/core/keyed_service.h" | 28 #include "components/keyed_service/core/keyed_service.h" |
| 29 #include "components/offline_pages/offline_page_model.h" | 29 #include "components/offline_pages/offline_page_model.h" |
| 30 #include "components/prefs/pref_member.h" | 30 #include "components/prefs/pref_member.h" |
| 31 #include "components/search_engines/template_url_service.h" | 31 #include "components/search_engines/template_url_service.h" |
| 32 #include "storage/common/quota/quota_types.h" | 32 #include "storage/common/quota/quota_types.h" |
| 33 #include "url/gurl.h" | 33 #include "url/gurl.h" |
| 34 | 34 |
| 35 #if defined(ENABLE_PLUGINS) | |
| 36 #include "chrome/browser/pepper_flash_settings_manager.h" | |
| 37 #endif | |
| 38 | |
| 39 #if defined(OS_CHROMEOS) | 35 #if defined(OS_CHROMEOS) |
| 40 #include "chromeos/dbus/dbus_method_call_status.h" | 36 #include "chromeos/dbus/dbus_method_call_status.h" |
| 41 #endif | 37 #endif |
| 42 | 38 |
| 39 #if defined(ENABLE_PLUGINS) | |
| 40 #include "chrome/browser/pepper_flash_settings_manager.h" | |
| 41 | |
| 42 class BrowsingDataFlashLSOHelper; | |
|
Bernhard Bauer
2016/08/18 18:35:59
This looks kinda odd… You could probably forward-d
msramek
2016/08/19 11:16:46
Done. OK, then I'll just forward-declare it withou
| |
| 43 #endif | |
| 44 | |
| 43 class BrowsingDataRemoverFactory; | 45 class BrowsingDataRemoverFactory; |
| 44 class HostContentSettingsMap; | 46 class HostContentSettingsMap; |
| 45 class IOThread; | 47 class IOThread; |
| 46 class BrowsingDataFilterBuilder; | 48 class BrowsingDataFilterBuilder; |
| 47 class Profile; | 49 class Profile; |
| 48 | 50 |
| 49 namespace chrome_browser_net { | 51 namespace chrome_browser_net { |
| 50 class Predictor; | 52 class Predictor; |
| 51 } | 53 } |
| 52 | 54 |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 290 | 292 |
| 291 // Used for testing. | 293 // Used for testing. |
| 292 void OverrideStoragePartitionForTesting( | 294 void OverrideStoragePartitionForTesting( |
| 293 content::StoragePartition* storage_partition); | 295 content::StoragePartition* storage_partition); |
| 294 | 296 |
| 295 #if BUILDFLAG(ANDROID_JAVA_UI) | 297 #if BUILDFLAG(ANDROID_JAVA_UI) |
| 296 void OverrideWebappRegistryForTesting( | 298 void OverrideWebappRegistryForTesting( |
| 297 std::unique_ptr<WebappRegistry> webapp_registry); | 299 std::unique_ptr<WebappRegistry> webapp_registry); |
| 298 #endif | 300 #endif |
| 299 | 301 |
| 302 #if defined(ENABLE_PLUGINS) | |
| 303 void OverrideFlashLSOHelperForTesting( | |
| 304 scoped_refptr<BrowsingDataFlashLSOHelper> flash_lso_helper); | |
| 305 #endif | |
| 306 | |
| 300 // Parameters of the last call are exposed to be used by tests. Removal and | 307 // Parameters of the last call are exposed to be used by tests. Removal and |
| 301 // origin type masks equal to -1 mean that no removal has ever been executed. | 308 // origin type masks equal to -1 mean that no removal has ever been executed. |
| 302 // TODO(msramek): If other consumers than tests are interested in this, | 309 // TODO(msramek): If other consumers than tests are interested in this, |
| 303 // consider returning them in OnBrowsingDataRemoverDone() callback. | 310 // consider returning them in OnBrowsingDataRemoverDone() callback. |
| 304 const base::Time& GetLastUsedBeginTime(); | 311 const base::Time& GetLastUsedBeginTime(); |
| 305 const base::Time& GetLastUsedEndTime(); | 312 const base::Time& GetLastUsedEndTime(); |
| 306 int GetLastUsedRemovalMask(); | 313 int GetLastUsedRemovalMask(); |
| 307 int GetLastUsedOriginTypeMask(); | 314 int GetLastUsedOriginTypeMask(); |
| 308 | 315 |
| 309 protected: | 316 protected: |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 374 void SetRemoving(bool is_removing); | 381 void SetRemoving(bool is_removing); |
| 375 | 382 |
| 376 // Callback for when TemplateURLService has finished loading. Clears the data, | 383 // Callback for when TemplateURLService has finished loading. Clears the data, |
| 377 // clears the respective waiting flag, and invokes NotifyIfDone. | 384 // clears the respective waiting flag, and invokes NotifyIfDone. |
| 378 void OnKeywordsLoaded(); | 385 void OnKeywordsLoaded(); |
| 379 | 386 |
| 380 #if defined(ENABLE_PLUGINS) | 387 #if defined(ENABLE_PLUGINS) |
| 381 // Called when plugin data has been cleared. Invokes NotifyIfDone. | 388 // Called when plugin data has been cleared. Invokes NotifyIfDone. |
| 382 void OnWaitableEventSignaled(base::WaitableEvent* waitable_event); | 389 void OnWaitableEventSignaled(base::WaitableEvent* waitable_event); |
| 383 | 390 |
| 391 // Called when the list of |sites| storing Flash LSO cookies is fetched. | |
| 392 void OnSitesWithFlashDataFetched( | |
| 393 base::Callback<bool(const std::string&)> plugin_filter, | |
| 394 const std::vector<std::string>& sites); | |
| 395 | |
| 396 // Indicates that LSO cookies for one website have been deleted. | |
| 397 void OnFlashDataDeleted(); | |
| 398 | |
| 384 // PepperFlashSettingsManager::Client implementation. | 399 // PepperFlashSettingsManager::Client implementation. |
| 385 void OnDeauthorizeFlashContentLicensesCompleted(uint32_t request_id, | 400 void OnDeauthorizeFlashContentLicensesCompleted(uint32_t request_id, |
| 386 bool success) override; | 401 bool success) override; |
| 387 #endif | 402 #endif |
| 388 | 403 |
| 389 #if defined (OS_CHROMEOS) | 404 #if defined (OS_CHROMEOS) |
| 390 void OnClearPlatformKeys(chromeos::DBusMethodCallStatus call_status, | 405 void OnClearPlatformKeys(chromeos::DBusMethodCallStatus call_status, |
| 391 bool result); | 406 bool result); |
| 392 #endif | 407 #endif |
| 393 | 408 |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 498 | 513 |
| 499 // Profile we're to remove from. | 514 // Profile we're to remove from. |
| 500 Profile* profile_; | 515 Profile* profile_; |
| 501 | 516 |
| 502 // Start time to delete from. | 517 // Start time to delete from. |
| 503 base::Time delete_begin_; | 518 base::Time delete_begin_; |
| 504 | 519 |
| 505 // End time to delete to. | 520 // End time to delete to. |
| 506 base::Time delete_end_; | 521 base::Time delete_end_; |
| 507 | 522 |
| 523 // The removal mask for the current removal operation. | |
| 524 int remove_mask_ = 0; | |
| 525 | |
| 526 // From which types of origins should we remove data? | |
| 527 int origin_type_mask_ = 0; | |
| 528 | |
| 508 // True if Remove has been invoked. | 529 // True if Remove has been invoked. |
| 509 bool is_removing_; | 530 bool is_removing_; |
| 510 | 531 |
| 511 // Removal tasks to be processed. | 532 // Removal tasks to be processed. |
| 512 std::queue<RemovalTask> task_queue_; | 533 std::queue<RemovalTask> task_queue_; |
| 513 | 534 |
| 514 // If non-NULL, the |completion_inhibitor_| is notified each time an instance | 535 // If non-NULL, the |completion_inhibitor_| is notified each time an instance |
| 515 // is about to complete a browsing data removal process, and has the ability | 536 // is about to complete a browsing data removal process, and has the ability |
| 516 // to artificially delay completion. Used for testing. | 537 // to artificially delay completion. Used for testing. |
| 517 static CompletionInhibitor* completion_inhibitor_; | 538 static CompletionInhibitor* completion_inhibitor_; |
| 518 | 539 |
| 519 #if defined(ENABLE_PLUGINS) | 540 #if defined(ENABLE_PLUGINS) |
| 520 // Used to delete plugin data. | 541 // Used to delete plugin data. |
| 521 std::unique_ptr<content::PluginDataRemover> plugin_data_remover_; | 542 std::unique_ptr<content::PluginDataRemover> plugin_data_remover_; |
| 522 base::WaitableEventWatcher watcher_; | 543 base::WaitableEventWatcher watcher_; |
| 523 | 544 |
| 545 // Used for per-site plugin data deletion. | |
| 546 scoped_refptr<BrowsingDataFlashLSOHelper> flash_lso_helper_; | |
| 547 | |
| 524 // Used to deauthorize content licenses for Pepper Flash. | 548 // Used to deauthorize content licenses for Pepper Flash. |
| 525 std::unique_ptr<PepperFlashSettingsManager> pepper_flash_settings_manager_; | 549 std::unique_ptr<PepperFlashSettingsManager> pepper_flash_settings_manager_; |
| 526 #endif | 550 #endif |
| 527 | 551 |
| 528 uint32_t deauthorize_flash_content_licenses_request_id_ = 0; | 552 uint32_t deauthorize_flash_content_licenses_request_id_ = 0; |
| 529 // True if we're waiting for various data to be deleted. | 553 // True if we're waiting for various data to be deleted. |
| 530 // These may only be accessed from UI thread in order to avoid races! | 554 // These may only be accessed from UI thread in order to avoid races! |
| 531 bool waiting_for_synchronous_clear_operations_ = false; | 555 bool waiting_for_synchronous_clear_operations_ = false; |
| 532 bool waiting_for_clear_autofill_origin_urls_ = false; | 556 bool waiting_for_clear_autofill_origin_urls_ = false; |
| 533 bool waiting_for_clear_cache_ = false; | 557 bool waiting_for_clear_cache_ = false; |
| 534 bool waiting_for_clear_channel_ids_ = false; | 558 bool waiting_for_clear_channel_ids_ = false; |
| 535 bool waiting_for_clear_flash_content_licenses_ = false; | 559 bool waiting_for_clear_flash_content_licenses_ = false; |
| 536 // Non-zero if waiting for cookies to be cleared. | 560 // Non-zero if waiting for cookies to be cleared. |
| 537 int waiting_for_clear_cookies_count_ = 0; | 561 int waiting_for_clear_cookies_count_ = 0; |
| 562 // Counts the number of plugin data tasks. Should be the number of LSO cookies | |
| 563 // to be deleted, or 1 while we're fetching LSO cookies or deleting in bulk. | |
| 564 int waiting_for_clear_plugin_data_count_ = 0; | |
| 538 bool waiting_for_clear_domain_reliability_monitor_ = false; | 565 bool waiting_for_clear_domain_reliability_monitor_ = false; |
| 539 bool waiting_for_clear_form_ = false; | 566 bool waiting_for_clear_form_ = false; |
| 540 bool waiting_for_clear_history_ = false; | 567 bool waiting_for_clear_history_ = false; |
| 541 bool waiting_for_clear_hostname_resolution_cache_ = false; | 568 bool waiting_for_clear_hostname_resolution_cache_ = false; |
| 542 bool waiting_for_clear_keyword_data_ = false; | 569 bool waiting_for_clear_keyword_data_ = false; |
| 543 bool waiting_for_clear_nacl_cache_ = false; | 570 bool waiting_for_clear_nacl_cache_ = false; |
| 544 bool waiting_for_clear_network_predictor_ = false; | 571 bool waiting_for_clear_network_predictor_ = false; |
| 545 bool waiting_for_clear_networking_history_ = false; | 572 bool waiting_for_clear_networking_history_ = false; |
| 546 bool waiting_for_clear_passwords_ = false; | 573 bool waiting_for_clear_passwords_ = false; |
| 547 bool waiting_for_clear_passwords_stats_ = false; | 574 bool waiting_for_clear_passwords_stats_ = false; |
| 548 bool waiting_for_clear_platform_keys_ = false; | 575 bool waiting_for_clear_platform_keys_ = false; |
| 549 bool waiting_for_clear_plugin_data_ = false; | |
| 550 bool waiting_for_clear_pnacl_cache_ = false; | 576 bool waiting_for_clear_pnacl_cache_ = false; |
| 551 #if BUILDFLAG(ANDROID_JAVA_UI) | 577 #if BUILDFLAG(ANDROID_JAVA_UI) |
| 552 bool waiting_for_clear_precache_history_ = false; | 578 bool waiting_for_clear_precache_history_ = false; |
| 553 bool waiting_for_clear_webapp_data_ = false; | 579 bool waiting_for_clear_webapp_data_ = false; |
| 554 bool waiting_for_clear_webapp_history_ = false; | 580 bool waiting_for_clear_webapp_history_ = false; |
| 555 bool waiting_for_clear_offline_page_data_ = false; | 581 bool waiting_for_clear_offline_page_data_ = false; |
| 556 #endif | 582 #endif |
| 557 bool waiting_for_clear_storage_partition_data_ = false; | 583 bool waiting_for_clear_storage_partition_data_ = false; |
| 558 #if defined(ENABLE_WEBRTC) | 584 #if defined(ENABLE_WEBRTC) |
| 559 bool waiting_for_clear_webrtc_logs_ = false; | 585 bool waiting_for_clear_webrtc_logs_ = false; |
| 560 #endif | 586 #endif |
| 561 bool waiting_for_clear_auto_sign_in_ = false; | 587 bool waiting_for_clear_auto_sign_in_ = false; |
| 562 | 588 |
| 563 // The removal mask for the current removal operation. | |
| 564 int remove_mask_ = 0; | |
| 565 | |
| 566 // From which types of origins should we remove data? | |
| 567 int origin_type_mask_ = 0; | |
| 568 | |
| 569 // Observers of the global state and individual tasks. | 589 // Observers of the global state and individual tasks. |
| 570 base::ObserverList<Observer, true> observer_list_; | 590 base::ObserverList<Observer, true> observer_list_; |
| 571 | 591 |
| 572 // Used if we need to clear history. | 592 // Used if we need to clear history. |
| 573 base::CancelableTaskTracker history_task_tracker_; | 593 base::CancelableTaskTracker history_task_tracker_; |
| 574 | 594 |
| 575 std::unique_ptr<TemplateURLService::Subscription> template_url_sub_; | 595 std::unique_ptr<TemplateURLService::Subscription> template_url_sub_; |
| 576 | 596 |
| 577 // We do not own this. | 597 // We do not own this. |
| 578 content::StoragePartition* storage_partition_for_testing_ = nullptr; | 598 content::StoragePartition* storage_partition_for_testing_ = nullptr; |
| 579 | 599 |
| 580 #if BUILDFLAG(ANDROID_JAVA_UI) | 600 #if BUILDFLAG(ANDROID_JAVA_UI) |
| 581 // WebappRegistry makes calls across the JNI. In unit tests, the Java side is | 601 // WebappRegistry makes calls across the JNI. In unit tests, the Java side is |
| 582 // not initialised, so the registry must be mocked out. | 602 // not initialised, so the registry must be mocked out. |
| 583 std::unique_ptr<WebappRegistry> webapp_registry_; | 603 std::unique_ptr<WebappRegistry> webapp_registry_; |
| 584 #endif | 604 #endif |
| 585 | 605 |
| 586 base::WeakPtrFactory<BrowsingDataRemover> weak_ptr_factory_; | 606 base::WeakPtrFactory<BrowsingDataRemover> weak_ptr_factory_; |
| 587 | 607 |
| 588 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemover); | 608 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemover); |
| 589 }; | 609 }; |
| 590 | 610 |
| 591 #endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_ | 611 #endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_ |
| OLD | NEW |