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

Side by Side Diff: chrome/browser/browsing_data/browsing_data_remover.cc

Issue 2171383002: Deprecate the CallbackSubscription in BrowsingDataRemover (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Initialize masks to -1 Created 4 years, 4 months 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 unified diff | Download patch
OLDNEW
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 #include "chrome/browser/browsing_data/browsing_data_remover.h" 5 #include "chrome/browser/browsing_data/browsing_data_remover.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 #include "chrome/browser/media/webrtc_log_util.h" 113 #include "chrome/browser/media/webrtc_log_util.h"
114 #endif 114 #endif
115 115
116 using base::UserMetricsAction; 116 using base::UserMetricsAction;
117 using content::BrowserContext; 117 using content::BrowserContext;
118 using content::BrowserThread; 118 using content::BrowserThread;
119 using content::DOMStorageContext; 119 using content::DOMStorageContext;
120 120
121 namespace { 121 namespace {
122 122
123 using CallbackList =
124 base::CallbackList<void(const BrowsingDataRemover::NotificationDetails&)>;
125
126 // Contains all registered callbacks for browsing data removed notifications.
127 CallbackList* g_on_browsing_data_removed_callbacks = nullptr;
128
129 // Accessor for |*g_on_browsing_data_removed_callbacks|. Creates a new object
130 // the first time so that it always returns a valid object.
131 CallbackList* GetOnBrowsingDataRemovedCallbacks() {
132 if (!g_on_browsing_data_removed_callbacks)
133 g_on_browsing_data_removed_callbacks = new CallbackList();
134 return g_on_browsing_data_removed_callbacks;
135 }
136
137 void UIThreadTrampolineHelper(const base::Closure& callback) { 123 void UIThreadTrampolineHelper(const base::Closure& callback) {
138 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, callback); 124 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, callback);
139 } 125 }
140 126
141 // Convenience method to create a callback that can be run on any thread and 127 // Convenience method to create a callback that can be run on any thread and
142 // will post the given |callback| back to the UI thread. 128 // will post the given |callback| back to the UI thread.
143 base::Closure UIThreadTrampoline(const base::Closure& callback) { 129 base::Closure UIThreadTrampoline(const base::Closure& callback) {
144 // We could directly bind &BrowserThread::PostTask, but that would require 130 // We could directly bind &BrowserThread::PostTask, but that would require
145 // evaluating FROM_HERE when this method is called, as opposed to when the 131 // evaluating FROM_HERE when this method is called, as opposed to when the
146 // task is actually posted. 132 // task is actually posted.
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 domain_predicate, delete_begin, delete_end, 245 domain_predicate, delete_begin, delete_end,
260 base::Bind(&OnClearedChannelIDsOnIOThread, 246 base::Bind(&OnClearedChannelIDsOnIOThread,
261 base::RetainedRef(std::move(rq_context)), callback)); 247 base::RetainedRef(std::move(rq_context)), callback));
262 } 248 }
263 249
264 } // namespace 250 } // namespace
265 251
266 BrowsingDataRemover::CompletionInhibitor* 252 BrowsingDataRemover::CompletionInhibitor*
267 BrowsingDataRemover::completion_inhibitor_ = nullptr; 253 BrowsingDataRemover::completion_inhibitor_ = nullptr;
268 254
269 BrowsingDataRemover::NotificationDetails::NotificationDetails()
270 : removal_begin(base::Time()),
271 removal_mask(-1),
272 origin_type_mask(-1) {
273 }
274
275 BrowsingDataRemover::NotificationDetails::NotificationDetails(
276 const BrowsingDataRemover::NotificationDetails& details)
277 : removal_begin(details.removal_begin),
278 removal_mask(details.removal_mask),
279 origin_type_mask(details.origin_type_mask) {
280 }
281
282 BrowsingDataRemover::NotificationDetails::NotificationDetails(
283 base::Time removal_begin,
284 int removal_mask,
285 int origin_type_mask)
286 : removal_begin(removal_begin),
287 removal_mask(removal_mask),
288 origin_type_mask(origin_type_mask) {
289 }
290
291 BrowsingDataRemover::NotificationDetails::~NotificationDetails() {}
292
293 bool BrowsingDataRemover::TimeRange::operator==( 255 bool BrowsingDataRemover::TimeRange::operator==(
294 const BrowsingDataRemover::TimeRange& other) const { 256 const BrowsingDataRemover::TimeRange& other) const {
295 return begin == other.begin && end == other.end; 257 return begin == other.begin && end == other.end;
296 } 258 }
297 259
298 // static 260 // static
299 BrowsingDataRemover::TimeRange BrowsingDataRemover::Unbounded() { 261 BrowsingDataRemover::TimeRange BrowsingDataRemover::Unbounded() {
300 return TimeRange(base::Time(), base::Time::Max()); 262 return TimeRange(base::Time(), base::Time::Max());
301 } 263 }
302 264
(...skipping 17 matching lines...) Expand all
320 content::RecordAction(UserMetricsAction("ClearBrowsingData_Everything")); 282 content::RecordAction(UserMetricsAction("ClearBrowsingData_Everything"));
321 break; 283 break;
322 } 284 }
323 return TimeRange(CalculateBeginDeleteTime(period), base::Time::Max()); 285 return TimeRange(CalculateBeginDeleteTime(period), base::Time::Max());
324 } 286 }
325 287
326 BrowsingDataRemover::BrowsingDataRemover( 288 BrowsingDataRemover::BrowsingDataRemover(
327 content::BrowserContext* browser_context) 289 content::BrowserContext* browser_context)
328 : profile_(Profile::FromBrowserContext(browser_context)), 290 : profile_(Profile::FromBrowserContext(browser_context)),
329 is_removing_(false), 291 is_removing_(false),
292 remove_mask_(-1),
293 origin_type_mask_(-1),
330 #if BUILDFLAG(ANDROID_JAVA_UI) 294 #if BUILDFLAG(ANDROID_JAVA_UI)
331 webapp_registry_(new WebappRegistry()), 295 webapp_registry_(new WebappRegistry()),
332 #endif 296 #endif
333 weak_ptr_factory_(this) { 297 weak_ptr_factory_(this) {
334 DCHECK(browser_context); 298 DCHECK(browser_context);
335 } 299 }
336 300
337 BrowsingDataRemover::~BrowsingDataRemover() { 301 BrowsingDataRemover::~BrowsingDataRemover() {
338 // If we are still removing data, notify observers so they can remove 302 // If we are still removing data, notify observers so they can remove
339 // themselves from the observer list. 303 // themselves from the observer list.
(...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after
1062 storage_partition_for_testing_ = storage_partition; 1026 storage_partition_for_testing_ = storage_partition;
1063 } 1027 }
1064 1028
1065 #if BUILDFLAG(ANDROID_JAVA_UI) 1029 #if BUILDFLAG(ANDROID_JAVA_UI)
1066 void BrowsingDataRemover::OverrideWebappRegistryForTesting( 1030 void BrowsingDataRemover::OverrideWebappRegistryForTesting(
1067 std::unique_ptr<WebappRegistry> webapp_registry) { 1031 std::unique_ptr<WebappRegistry> webapp_registry) {
1068 webapp_registry_.reset(webapp_registry.release()); 1032 webapp_registry_.reset(webapp_registry.release());
1069 } 1033 }
1070 #endif 1034 #endif
1071 1035
1036 const base::Time& BrowsingDataRemover::GetLastUsedBeginTime() {
1037 return delete_begin_;
1038 }
1039
1040 const base::Time& BrowsingDataRemover::GetLastUsedEndTime() {
1041 return delete_end_;
1042 }
1043
1044 int BrowsingDataRemover::GetLastUsedRemovalMask() {
1045 return remove_mask_;
1046 }
1047
1048 int BrowsingDataRemover::GetLastUsedOriginTypeMask() {
1049 return origin_type_mask_;
1050 }
1051
1052
1072 void BrowsingDataRemover::ClearSettingsForOneTypeWithPredicate( 1053 void BrowsingDataRemover::ClearSettingsForOneTypeWithPredicate(
1073 HostContentSettingsMap* content_settings_map, 1054 HostContentSettingsMap* content_settings_map,
1074 ContentSettingsType content_type, 1055 ContentSettingsType content_type,
1075 const base::Callback<bool(const ContentSettingsPattern& primary_pattern, 1056 const base::Callback<bool(const ContentSettingsPattern& primary_pattern,
1076 const ContentSettingsPattern& secondary_pattern)>& 1057 const ContentSettingsPattern& secondary_pattern)>&
1077 predicate) { 1058 predicate) {
1078 ContentSettingsForOneType settings; 1059 ContentSettingsForOneType settings;
1079 content_settings_map->GetSettingsForOneType(content_type, std::string(), 1060 content_settings_map->GetSettingsForOneType(content_type, std::string(),
1080 &settings); 1061 &settings);
1081 for (const ContentSettingPatternSource& setting : settings) { 1062 for (const ContentSettingPatternSource& setting : settings) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1121 TemplateURLService* model = 1102 TemplateURLService* model =
1122 TemplateURLServiceFactory::GetForProfile(profile_); 1103 TemplateURLServiceFactory::GetForProfile(profile_);
1123 model->RemoveAutoGeneratedBetween(delete_begin_, delete_end_); 1104 model->RemoveAutoGeneratedBetween(delete_begin_, delete_end_);
1124 waiting_for_clear_keyword_data_ = false; 1105 waiting_for_clear_keyword_data_ = false;
1125 template_url_sub_.reset(); 1106 template_url_sub_.reset();
1126 NotifyIfDone(); 1107 NotifyIfDone();
1127 } 1108 }
1128 1109
1129 void BrowsingDataRemover::Notify() { 1110 void BrowsingDataRemover::Notify() {
1130 SetRemoving(false); 1111 SetRemoving(false);
1131
1132 // Notify observers.
1133 BrowsingDataRemover::NotificationDetails details(delete_begin_, remove_mask_,
1134 origin_type_mask_);
1135
1136 GetOnBrowsingDataRemovedCallbacks()->Notify(details);
1137
1138 FOR_EACH_OBSERVER(Observer, observer_list_, OnBrowsingDataRemoverDone()); 1112 FOR_EACH_OBSERVER(Observer, observer_list_, OnBrowsingDataRemoverDone());
1139 } 1113 }
1140 1114
1141 void BrowsingDataRemover::NotifyIfDone() { 1115 void BrowsingDataRemover::NotifyIfDone() {
1142 // TODO(brettw) http://crbug.com/305259: This should also observe session 1116 // TODO(brettw) http://crbug.com/305259: This should also observe session
1143 // clearing (what about other things such as passwords, etc.?) and wait for 1117 // clearing (what about other things such as passwords, etc.?) and wait for
1144 // them to complete before continuing. 1118 // them to complete before continuing.
1145 1119
1146 if (!AllDone()) 1120 if (!AllDone())
1147 return; 1121 return;
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1317 waiting_for_clear_offline_page_data_ = false; 1291 waiting_for_clear_offline_page_data_ = false;
1318 NotifyIfDone(); 1292 NotifyIfDone();
1319 } 1293 }
1320 #endif 1294 #endif
1321 1295
1322 void BrowsingDataRemover::OnClearedDomainReliabilityMonitor() { 1296 void BrowsingDataRemover::OnClearedDomainReliabilityMonitor() {
1323 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1297 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1324 waiting_for_clear_domain_reliability_monitor_ = false; 1298 waiting_for_clear_domain_reliability_monitor_ = false;
1325 NotifyIfDone(); 1299 NotifyIfDone();
1326 } 1300 }
1327
1328 // static
1329 BrowsingDataRemover::CallbackSubscription
1330 BrowsingDataRemover::RegisterOnBrowsingDataRemovedCallback(
1331 const BrowsingDataRemover::Callback& callback) {
1332 return GetOnBrowsingDataRemovedCallbacks()->Add(callback);
1333 }
OLDNEW
« no previous file with comments | « chrome/browser/browsing_data/browsing_data_remover.h ('k') | chrome/browser/browsing_data/browsing_data_remover_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698