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

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

Issue 2554413002: Extract embedder-specific data types from BrowsingDataRemover (Closed)
Patch Set: Android fix 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
Index: chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h
new file mode 100644
index 0000000000000000000000000000000000000000..cb8ffbda894298b2857382dfd7cf2b03173262c9
--- /dev/null
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h
@@ -0,0 +1,202 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_BROWSING_DATA_CHROME_BROWSING_DATA_REMOVER_DELEGATE_H_
+#define CHROME_BROWSER_BROWSING_DATA_CHROME_BROWSING_DATA_REMOVER_DELEGATE_H_
+
+#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
+#include "base/synchronization/waitable_event_watcher.h"
+#include "base/task/cancelable_task_tracker.h"
+#include "chrome/browser/browsing_data/browsing_data_remover.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/offline_pages/core/offline_page_model.h"
+#include "components/search_engines/template_url_service.h"
+#include "media/media_features.h"
+#include "ppapi/features/features.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 WebappRegistry;
+
+// A delegate used by BrowsingDataRemover to delete data specific to Chrome
+// as the embedder.
+class ChromeBrowsingDataRemoverDelegate : public BrowsingDataRemoverDelegate
+#if BUILDFLAG(ENABLE_PLUGINS)
+ , public PepperFlashSettingsManager::Client
+#endif
+{
+ public:
+ ChromeBrowsingDataRemoverDelegate(content::BrowserContext* browser_context);
+ ~ChromeBrowsingDataRemoverDelegate() override;
+
+ // Removes Chrome-specific data.
+ void RemoveEmbedderData(
+ const base::Time& delete_begin,
+ const base::Time& delete_end,
+ int remove_mask,
+ const BrowsingDataFilterBuilder& filter_builder,
+ int origin_type_mask,
+ const base::Closure& callback) override;
+
+#if BUILDFLAG(ANDROID_JAVA_UI)
+ void OverrideWebappRegistryForTesting(
+ std::unique_ptr<WebappRegistry> webapp_registry);
+#endif
+
+ private:
+ // If AllDone(), calls the callback provided in RemoveEmbedderData().
+ void NotifyIfDone();
+
+ // Whether there are no running deletion tasks.
+ bool AllDone();
+
+ // 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 defined (OS_CHROMEOS)
+ void OnClearPlatformKeys(chromeos::DBusMethodCallStatus call_status,
+ bool result);
+#endif
+
+ // 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 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();
+
+#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 cookies have been deleted. Invokes NotifyIfDone.
+ void OnClearedCookies();
+
+ // 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 from the above method.
+ void OnClearedFormData();
+
+ // Callback for when the Autofill profile and credit card origin URLs have
+ // been deleted.
+ void OnClearedAutofillOriginURLs();
+
+#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
+
+#if BUILDFLAG(ENABLE_PLUGINS)
+ // PepperFlashSettingsManager::Client implementation.
+ void OnDeauthorizeFlashContentLicensesCompleted(uint32_t request_id,
+ bool success) override;
+#endif
+
+ void OnClearedDomainReliabilityMonitor();
+
+ // The profile for which the data will be deleted.
+ Profile* profile_;
+
+ // Start time to delete from.
+ base::Time delete_begin_;
+
+ // End time to delete to.
+ base::Time delete_end_;
+
+ // Completion callback to call when all data are deleted.
+ base::Closure callback_;
+
+ bool waiting_for_synchronous_clear_operations_ = false;
Bernhard Bauer 2016/12/12 14:52:06 If we're rewriting this class anyway... I feel a
msramek 2016/12/12 20:48:56 Done. I created a "SubTask" class, the "sub" part
Bernhard Bauer 2016/12/13 13:26:22 OK. We could cut down the constructor (and NotifyI
+ bool waiting_for_clear_autofill_origin_urls_ = 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;
+ bool waiting_for_clear_domain_reliability_monitor_ = false;
+ bool waiting_for_clear_form_ = false;
+ bool waiting_for_clear_history_ = false;
+ bool waiting_for_clear_keyword_data_ = false;
+ bool waiting_for_clear_nacl_cache_ = false;
+ bool waiting_for_clear_hostname_resolution_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
+
+#if BUILDFLAG(ENABLE_WEBRTC)
+ bool waiting_for_clear_webrtc_logs_ = false;
+#endif
+ bool waiting_for_clear_auto_sign_in_ = false;
+
+#if BUILDFLAG(ENABLE_PLUGINS)
+ uint32_t deauthorize_flash_content_licenses_request_id_ = 0;
+
+ // Used to deauthorize content licenses for Pepper Flash.
+ std::unique_ptr<PepperFlashSettingsManager> pepper_flash_settings_manager_;
+#endif
+
+ // Used if we need to clear history.
+ base::CancelableTaskTracker history_task_tracker_;
+
+ std::unique_ptr<TemplateURLService::Subscription> template_url_sub_;
+
+#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<ChromeBrowsingDataRemoverDelegate> weak_ptr_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(ChromeBrowsingDataRemoverDelegate);
+};
+
+#endif // CHROME_BROWSER_BROWSING_DATA_CHROME_BROWSING_DATA_REMOVER_DELEGATE_H_

Powered by Google App Engine
This is Rietveld 408576698