Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef CHROME_BROWSER_BROWSING_DATA_CHROME_BROWSING_DATA_REMOVER_DELEGATE_H_ | |
| 6 #define CHROME_BROWSER_BROWSING_DATA_CHROME_BROWSING_DATA_REMOVER_DELEGATE_H_ | |
| 7 | |
| 8 #include "base/memory/ref_counted.h" | |
| 9 #include "base/memory/weak_ptr.h" | |
| 10 #include "base/synchronization/waitable_event_watcher.h" | |
| 11 #include "base/task/cancelable_task_tracker.h" | |
| 12 #include "chrome/browser/browsing_data/browsing_data_remover.h" | |
| 13 #include "chrome/browser/browsing_data/browsing_data_remover_delegate.h" | |
| 14 #include "chrome/common/features.h" | |
| 15 #include "components/browsing_data/core/browsing_data_utils.h" | |
| 16 #include "components/offline_pages/core/offline_page_model.h" | |
| 17 #include "components/search_engines/template_url_service.h" | |
| 18 #include "media/media_features.h" | |
| 19 #include "ppapi/features/features.h" | |
| 20 | |
| 21 #if BUILDFLAG(ENABLE_PLUGINS) | |
| 22 #include "chrome/browser/pepper_flash_settings_manager.h" | |
| 23 #endif | |
| 24 | |
| 25 #if defined(OS_CHROMEOS) | |
| 26 #include "chromeos/dbus/dbus_method_call_status.h" | |
| 27 #endif | |
| 28 | |
| 29 class WebappRegistry; | |
| 30 | |
| 31 // A delegate used by BrowsingDataRemover to delete data specific to Chrome | |
| 32 // as the embedder. | |
| 33 class ChromeBrowsingDataRemoverDelegate : public BrowsingDataRemoverDelegate | |
| 34 #if BUILDFLAG(ENABLE_PLUGINS) | |
| 35 , public PepperFlashSettingsManager::Client | |
| 36 #endif | |
| 37 { | |
| 38 public: | |
| 39 ChromeBrowsingDataRemoverDelegate(content::BrowserContext* browser_context); | |
| 40 ~ChromeBrowsingDataRemoverDelegate() override; | |
| 41 | |
| 42 // Removes Chrome-specific data. | |
| 43 void RemoveEmbedderData( | |
| 44 const base::Time& delete_begin, | |
| 45 const base::Time& delete_end, | |
| 46 int remove_mask, | |
| 47 const BrowsingDataFilterBuilder& filter_builder, | |
| 48 int origin_type_mask, | |
| 49 const base::Closure& callback) override; | |
| 50 | |
| 51 #if BUILDFLAG(ANDROID_JAVA_UI) | |
| 52 void OverrideWebappRegistryForTesting( | |
| 53 std::unique_ptr<WebappRegistry> webapp_registry); | |
| 54 #endif | |
| 55 | |
| 56 private: | |
| 57 // If AllDone(), calls the callback provided in RemoveEmbedderData(). | |
| 58 void NotifyIfDone(); | |
| 59 | |
| 60 // Whether there are no running deletion tasks. | |
| 61 bool AllDone(); | |
| 62 | |
| 63 // Callback for when TemplateURLService has finished loading. Clears the data, | |
| 64 // clears the respective waiting flag, and invokes NotifyIfDone. | |
| 65 void OnKeywordsLoaded(base::Callback<bool(const GURL&)> url_filter); | |
| 66 | |
| 67 #if defined (OS_CHROMEOS) | |
| 68 void OnClearPlatformKeys(chromeos::DBusMethodCallStatus call_status, | |
| 69 bool result); | |
| 70 #endif | |
| 71 | |
| 72 // Called when history deletion is done. | |
| 73 void OnHistoryDeletionDone(); | |
| 74 | |
| 75 // Callback for when the hostname resolution cache has been cleared. | |
| 76 // Clears the respective waiting flag and invokes NotifyIfDone. | |
| 77 void OnClearedHostnameResolutionCache(); | |
| 78 | |
| 79 // Callback for when speculative data in the network Predictor has been | |
| 80 // cleared. Clears the respective waiting flag and invokes | |
| 81 // NotifyIfDone. | |
| 82 void OnClearedNetworkPredictor(); | |
| 83 | |
| 84 // Callback for when network related data in ProfileIOData has been cleared. | |
| 85 // Clears the respective waiting flag and invokes NotifyIfDone. | |
| 86 void OnClearedNetworkingHistory(); | |
| 87 | |
| 88 #if !defined(DISABLE_NACL) | |
| 89 // Callback for when the NaCl cache has been deleted. Invokes | |
| 90 // NotifyIfDone. | |
| 91 void ClearedNaClCache(); | |
| 92 | |
| 93 // Callback for when the PNaCl translation cache has been deleted. Invokes | |
| 94 // NotifyIfDone. | |
| 95 void ClearedPnaclCache(); | |
| 96 #endif | |
| 97 | |
| 98 // Callback for when cookies have been deleted. Invokes NotifyIfDone. | |
| 99 void OnClearedCookies(); | |
| 100 | |
| 101 // Callback for when passwords for the requested time range have been cleared. | |
| 102 void OnClearedPasswords(); | |
| 103 | |
| 104 // Callback for when passwords stats for the requested time range have been | |
| 105 // cleared. | |
| 106 void OnClearedPasswordsStats(); | |
| 107 | |
| 108 // Callback for when the autosignin state of passwords has been revoked. | |
| 109 void OnClearedAutoSignIn(); | |
| 110 | |
| 111 // Callback from the above method. | |
| 112 void OnClearedFormData(); | |
| 113 | |
| 114 // Callback for when the Autofill profile and credit card origin URLs have | |
| 115 // been deleted. | |
| 116 void OnClearedAutofillOriginURLs(); | |
| 117 | |
| 118 #if BUILDFLAG(ENABLE_WEBRTC) | |
| 119 // Callback on UI thread when the WebRTC logs have been deleted. | |
| 120 void OnClearedWebRtcLogs(); | |
| 121 #endif | |
| 122 | |
| 123 #if BUILDFLAG(ANDROID_JAVA_UI) | |
| 124 // Callback on UI thread when the precache history has been cleared. | |
| 125 void OnClearedPrecacheHistory(); | |
| 126 | |
| 127 // Callback on UI thread when the offline page data has been cleared. | |
| 128 void OnClearedOfflinePageData( | |
| 129 offline_pages::OfflinePageModel::DeletePageResult result); | |
| 130 #endif | |
| 131 | |
| 132 #if BUILDFLAG(ENABLE_PLUGINS) | |
| 133 // PepperFlashSettingsManager::Client implementation. | |
| 134 void OnDeauthorizeFlashContentLicensesCompleted(uint32_t request_id, | |
| 135 bool success) override; | |
| 136 #endif | |
| 137 | |
| 138 void OnClearedDomainReliabilityMonitor(); | |
| 139 | |
| 140 // The profile for which the data will be deleted. | |
| 141 Profile* profile_; | |
| 142 | |
| 143 // Start time to delete from. | |
| 144 base::Time delete_begin_; | |
| 145 | |
| 146 // End time to delete to. | |
| 147 base::Time delete_end_; | |
| 148 | |
| 149 // Completion callback to call when all data are deleted. | |
| 150 base::Closure callback_; | |
| 151 | |
| 152 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
| |
| 153 bool waiting_for_clear_autofill_origin_urls_ = false; | |
| 154 bool waiting_for_clear_flash_content_licenses_ = false; | |
| 155 // Non-zero if waiting for cookies to be cleared. | |
| 156 int waiting_for_clear_cookies_count_ = 0; | |
| 157 bool waiting_for_clear_domain_reliability_monitor_ = false; | |
| 158 bool waiting_for_clear_form_ = false; | |
| 159 bool waiting_for_clear_history_ = false; | |
| 160 bool waiting_for_clear_keyword_data_ = false; | |
| 161 bool waiting_for_clear_nacl_cache_ = false; | |
| 162 bool waiting_for_clear_hostname_resolution_cache_ = false; | |
| 163 bool waiting_for_clear_network_predictor_ = false; | |
| 164 bool waiting_for_clear_networking_history_ = false; | |
| 165 bool waiting_for_clear_passwords_ = false; | |
| 166 bool waiting_for_clear_passwords_stats_ = false; | |
| 167 bool waiting_for_clear_platform_keys_ = false; | |
| 168 bool waiting_for_clear_pnacl_cache_ = false; | |
| 169 #if BUILDFLAG(ANDROID_JAVA_UI) | |
| 170 bool waiting_for_clear_precache_history_ = false; | |
| 171 bool waiting_for_clear_offline_page_data_ = false; | |
| 172 #endif | |
| 173 | |
| 174 #if BUILDFLAG(ENABLE_WEBRTC) | |
| 175 bool waiting_for_clear_webrtc_logs_ = false; | |
| 176 #endif | |
| 177 bool waiting_for_clear_auto_sign_in_ = false; | |
| 178 | |
| 179 #if BUILDFLAG(ENABLE_PLUGINS) | |
| 180 uint32_t deauthorize_flash_content_licenses_request_id_ = 0; | |
| 181 | |
| 182 // Used to deauthorize content licenses for Pepper Flash. | |
| 183 std::unique_ptr<PepperFlashSettingsManager> pepper_flash_settings_manager_; | |
| 184 #endif | |
| 185 | |
| 186 // Used if we need to clear history. | |
| 187 base::CancelableTaskTracker history_task_tracker_; | |
| 188 | |
| 189 std::unique_ptr<TemplateURLService::Subscription> template_url_sub_; | |
| 190 | |
| 191 #if BUILDFLAG(ANDROID_JAVA_UI) | |
| 192 // WebappRegistry makes calls across the JNI. In unit tests, the Java side is | |
| 193 // not initialised, so the registry must be mocked out. | |
| 194 std::unique_ptr<WebappRegistry> webapp_registry_; | |
| 195 #endif | |
| 196 | |
| 197 base::WeakPtrFactory<ChromeBrowsingDataRemoverDelegate> weak_ptr_factory_; | |
| 198 | |
| 199 DISALLOW_COPY_AND_ASSIGN(ChromeBrowsingDataRemoverDelegate); | |
| 200 }; | |
| 201 | |
| 202 #endif // CHROME_BROWSER_BROWSING_DATA_CHROME_BROWSING_DATA_REMOVER_DELEGATE_H_ | |
| OLD | NEW |