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

Unified Diff: chrome/browser/browsing_data/browsing_data_remover.h

Issue 2554413002: Extract embedder-specific data types from BrowsingDataRemover (Closed)
Patch Set: Addressed nit. Created 4 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/BUILD.gn ('k') | chrome/browser/browsing_data/browsing_data_remover.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/browsing_data/browsing_data_remover.h
diff --git a/chrome/browser/browsing_data/browsing_data_remover.h b/chrome/browser/browsing_data/browsing_data_remover.h
index 07381b0d55ecb9b1bda00535342fd0cb1ad37a22..581f5a060bac8435698ef199a15c92e9fe960091 100644
--- a/chrome/browser/browsing_data/browsing_data_remover.h
+++ b/chrome/browser/browsing_data/browsing_data_remover.h
@@ -13,44 +13,23 @@
#include "base/callback_forward.h"
#include "base/gtest_prod_util.h"
#include "base/macros.h"
-#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "base/observer_list.h"
-#include "base/sequenced_task_runner_helpers.h"
#include "base/synchronization/waitable_event_watcher.h"
-#include "base/task/cancelable_task_tracker.h"
#include "base/time/time.h"
#include "build/build_config.h"
+#include "chrome/browser/browsing_data/browsing_data_remover_delegate.h"
#include "chrome/common/features.h"
#include "components/browsing_data/core/browsing_data_utils.h"
-#include "components/content_settings/core/common/content_settings_pattern.h"
-#include "components/content_settings/core/common/content_settings_types.h"
#include "components/keyed_service/core/keyed_service.h"
-#include "components/offline_pages/core/offline_page_model.h"
-#include "components/prefs/pref_member.h"
-#include "components/search_engines/template_url_service.h"
-#include "media/media_features.h"
#include "ppapi/features/features.h"
#include "storage/common/quota/quota_types.h"
#include "url/gurl.h"
-#if BUILDFLAG(ENABLE_PLUGINS)
-#include "chrome/browser/pepper_flash_settings_manager.h"
-#endif
-
-#if defined(OS_CHROMEOS)
-#include "chromeos/dbus/dbus_method_call_status.h"
-#endif
-
class BrowsingDataFilterBuilder;
class BrowsingDataFlashLSOHelper;
class BrowsingDataRemoverFactory;
class Profile;
-class WebappRegistry;
-
-namespace chrome_browser_net {
-class Predictor;
-}
namespace content {
class BrowserContext;
@@ -90,11 +69,7 @@ class StoragePartition;
//
////////////////////////////////////////////////////////////////////////////////
-class BrowsingDataRemover : public KeyedService
-#if BUILDFLAG(ENABLE_PLUGINS)
- , public PepperFlashSettingsManager::Client
-#endif
-{
+class BrowsingDataRemover : public KeyedService {
public:
// Mask used for Remove.
enum RemoveDataMask {
@@ -223,6 +198,32 @@ class BrowsingDataRemover : public KeyedService
virtual ~CompletionInhibitor() {}
};
+ // Used to track the deletion of a single data storage backend.
+ class SubTask {
+ public:
+ // Creates a SubTask that calls |forward_callback| when completed.
+ // |forward_callback| is only kept as a reference and must outlive SubTask.
+ explicit SubTask(const base::Closure& forward_callback);
+ ~SubTask();
+
+ // Indicate that the task is in progress and we're waiting.
+ void Start();
+
+ // Returns a callback that should be called to indicate that the task
+ // has been finished.
+ base::Closure GetCompletionCallback();
+
+ // Whether the task is still in progress.
+ bool is_pending() const { return is_pending_; }
+
+ private:
+ void CompletionCallback();
+
+ bool is_pending_;
+ const base::Closure& forward_callback_;
+ base::WeakPtrFactory<SubTask> weak_ptr_factory_;
+ };
+
static TimeRange Unbounded();
static TimeRange Period(browsing_data::TimePeriod period);
@@ -239,6 +240,17 @@ class BrowsingDataRemover : public KeyedService
completion_inhibitor_ = inhibitor;
}
+ // Called by the embedder to provide the delegate that will take care of
+ // deleting embedder-specific data.
+ void set_embedder_delegate(
+ std::unique_ptr<BrowsingDataRemoverDelegate> embedder_delegate) {
+ embedder_delegate_ = std::move(embedder_delegate);
+ }
+
+ BrowsingDataRemoverDelegate* get_embedder_delegate() const {
+ return embedder_delegate_.get();
+ }
+
// Removes browsing data within the given |time_range|, with datatypes being
// specified by |remove_mask| and origin types by |origin_type_mask|.
void Remove(const TimeRange& time_range,
@@ -277,11 +289,6 @@ class BrowsingDataRemover : public KeyedService
void OverrideStoragePartitionForTesting(
content::StoragePartition* storage_partition);
-#if BUILDFLAG(ANDROID_JAVA_UI)
- void OverrideWebappRegistryForTesting(
- std::unique_ptr<WebappRegistry> webapp_registry);
-#endif
-
#if BUILDFLAG(ENABLE_PLUGINS)
void OverrideFlashLSOHelperForTesting(
scoped_refptr<BrowsingDataFlashLSOHelper> flash_lso_helper);
@@ -347,10 +354,6 @@ class BrowsingDataRemover : public KeyedService
// not already removing, and vice-versa.
void SetRemoving(bool is_removing);
- // Callback for when TemplateURLService has finished loading. Clears the data,
- // clears the respective waiting flag, and invokes NotifyIfDone.
- void OnKeywordsLoaded(base::Callback<bool(const GURL&)> url_filter);
-
#if BUILDFLAG(ENABLE_PLUGINS)
// Called when plugin data has been cleared. Invokes NotifyIfDone.
void OnWaitableEventSignaled(base::WaitableEvent* waitable_event);
@@ -362,15 +365,6 @@ class BrowsingDataRemover : public KeyedService
// Indicates that LSO cookies for one website have been deleted.
void OnFlashDataDeleted();
-
- // PepperFlashSettingsManager::Client implementation.
- void OnDeauthorizeFlashContentLicensesCompleted(uint32_t request_id,
- bool success) override;
-#endif
-
-#if defined (OS_CHROMEOS)
- void OnClearPlatformKeys(chromeos::DBusMethodCallStatus call_status,
- bool result);
#endif
// Executes the next removal task. Called after the previous task was finished
@@ -396,89 +390,15 @@ class BrowsingDataRemover : public KeyedService
// Checks if we are all done, and if so, calls Notify().
void NotifyIfDone();
- // Called when history deletion is done.
- void OnHistoryDeletionDone();
-
- // Callback for when the hostname resolution cache has been cleared.
- // Clears the respective waiting flag and invokes NotifyIfDone.
- void OnClearedHostnameResolutionCache();
-
- // Callback for when HTTP auth cache has been cleared.
- // Clears the respective waiting flag and invokes NotifyIfDone.
- void OnClearedHttpAuthCache();
-
- // Callback for when speculative data in the network Predictor has been
- // cleared. Clears the respective waiting flag and invokes
- // NotifyIfDone.
- void OnClearedNetworkPredictor();
-
- // Callback for when network related data in ProfileIOData has been cleared.
- // Clears the respective waiting flag and invokes NotifyIfDone.
- void OnClearedNetworkingHistory();
-
- // Callback for when the cache has been deleted. Invokes
- // NotifyIfDone.
- void ClearedCache();
-#if !defined(DISABLE_NACL)
- // Callback for when the NaCl cache has been deleted. Invokes
- // NotifyIfDone.
- void ClearedNaClCache();
-
- // Callback for when the PNaCl translation cache has been deleted. Invokes
- // NotifyIfDone.
- void ClearedPnaclCache();
-
-#endif
-
- // Callback for when passwords for the requested time range have been cleared.
- void OnClearedPasswords();
-
- // Callback for when passwords stats for the requested time range have been
- // cleared.
- void OnClearedPasswordsStats();
-
- // Callback for when the autosignin state of passwords has been revoked.
- void OnClearedAutoSignIn();
-
- // Callback for when cookies have been deleted. Invokes NotifyIfDone.
- void OnClearedCookies();
-
- // Callback for when channel IDs have been deleted. Invokes
- // NotifyIfDone.
- void OnClearedChannelIDs();
-
- // Callback from the above method.
- void OnClearedFormData();
-
- // Callback for when the Autofill profile and credit card origin URLs have
- // been deleted.
- void OnClearedAutofillOriginURLs();
-
- // Callback on UI thread when the storage partition related data are cleared.
- void OnClearedStoragePartitionData();
-
-#if BUILDFLAG(ENABLE_WEBRTC)
- // Callback on UI thread when the WebRTC logs have been deleted.
- void OnClearedWebRtcLogs();
-#endif
-
-#if BUILDFLAG(ANDROID_JAVA_UI)
- // Callback on UI thread when the precache history has been cleared.
- void OnClearedPrecacheHistory();
-
- // Callback on UI thread when the offline page data has been cleared.
- void OnClearedOfflinePageData(
- offline_pages::OfflinePageModel::DeletePageResult result);
-#endif
-
- void OnClearedDomainReliabilityMonitor();
-
// Returns true if we're all done.
bool AllDone();
// Profile we're to remove from.
Profile* profile_;
+ // A delegate to delete the embedder-specific data.
+ std::unique_ptr<BrowsingDataRemoverDelegate> embedder_delegate_;
+
// Start time to delete from.
base::Time delete_begin_;
@@ -509,64 +429,29 @@ class BrowsingDataRemover : public KeyedService
// Used for per-site plugin data deletion.
scoped_refptr<BrowsingDataFlashLSOHelper> flash_lso_helper_;
-
- // Used to deauthorize content licenses for Pepper Flash.
- std::unique_ptr<PepperFlashSettingsManager> pepper_flash_settings_manager_;
#endif
- uint32_t deauthorize_flash_content_licenses_request_id_ = 0;
- // True if we're waiting for various data to be deleted.
+ // A callback to NotifyIfDone() used by SubTasks instances.
+ const base::Closure sub_task_forward_callback_;
+
+ // Keeping track of various subtasks to be completed.
// These may only be accessed from UI thread in order to avoid races!
- bool waiting_for_synchronous_clear_operations_ = false;
- bool waiting_for_clear_autofill_origin_urls_ = false;
- bool waiting_for_clear_cache_ = false;
- bool waiting_for_clear_channel_ids_ = false;
- bool waiting_for_clear_flash_content_licenses_ = false;
- // Non-zero if waiting for cookies to be cleared.
- int waiting_for_clear_cookies_count_ = 0;
+ SubTask synchronous_clear_operations_;
+ SubTask clear_embedder_data_;
+ SubTask clear_cache_;
+ SubTask clear_channel_ids_;
+ SubTask clear_http_auth_cache_;
+ SubTask clear_storage_partition_data_;
// Counts the number of plugin data tasks. Should be the number of LSO cookies
// to be deleted, or 1 while we're fetching LSO cookies or deleting in bulk.
- int waiting_for_clear_plugin_data_count_ = 0;
- bool waiting_for_clear_domain_reliability_monitor_ = false;
- bool waiting_for_clear_form_ = false;
- bool waiting_for_clear_history_ = false;
- bool waiting_for_clear_hostname_resolution_cache_ = false;
- bool waiting_for_clear_http_auth_cache_ = false;
- bool waiting_for_clear_keyword_data_ = false;
- bool waiting_for_clear_nacl_cache_ = false;
- bool waiting_for_clear_network_predictor_ = false;
- bool waiting_for_clear_networking_history_ = false;
- bool waiting_for_clear_passwords_ = false;
- bool waiting_for_clear_passwords_stats_ = false;
- bool waiting_for_clear_platform_keys_ = false;
- bool waiting_for_clear_pnacl_cache_ = false;
-#if BUILDFLAG(ANDROID_JAVA_UI)
- bool waiting_for_clear_precache_history_ = false;
- bool waiting_for_clear_offline_page_data_ = false;
-#endif
- bool waiting_for_clear_storage_partition_data_ = false;
-#if BUILDFLAG(ENABLE_WEBRTC)
- bool waiting_for_clear_webrtc_logs_ = false;
-#endif
- bool waiting_for_clear_auto_sign_in_ = false;
+ int clear_plugin_data_count_ = 0;
// Observers of the global state and individual tasks.
base::ObserverList<Observer, true> observer_list_;
- // Used if we need to clear history.
- base::CancelableTaskTracker history_task_tracker_;
-
- std::unique_ptr<TemplateURLService::Subscription> template_url_sub_;
-
// We do not own this.
content::StoragePartition* storage_partition_for_testing_ = nullptr;
-#if BUILDFLAG(ANDROID_JAVA_UI)
- // WebappRegistry makes calls across the JNI. In unit tests, the Java side is
- // not initialised, so the registry must be mocked out.
- std::unique_ptr<WebappRegistry> webapp_registry_;
-#endif
-
base::WeakPtrFactory<BrowsingDataRemover> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemover);
« no previous file with comments | « chrome/browser/BUILD.gn ('k') | chrome/browser/browsing_data/browsing_data_remover.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698