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

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: Cannot call methods on deleted object. Created 4 years, 5 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 759 matching lines...) Expand 10 before | Expand all | Expand 10 after
1062 storage_partition_for_testing_ = storage_partition; 1024 storage_partition_for_testing_ = storage_partition;
1063 } 1025 }
1064 1026
1065 #if BUILDFLAG(ANDROID_JAVA_UI) 1027 #if BUILDFLAG(ANDROID_JAVA_UI)
1066 void BrowsingDataRemover::OverrideWebappRegistryForTesting( 1028 void BrowsingDataRemover::OverrideWebappRegistryForTesting(
1067 std::unique_ptr<WebappRegistry> webapp_registry) { 1029 std::unique_ptr<WebappRegistry> webapp_registry) {
1068 webapp_registry_.reset(webapp_registry.release()); 1030 webapp_registry_.reset(webapp_registry.release());
1069 } 1031 }
1070 #endif 1032 #endif
1071 1033
1034 const base::Time& BrowsingDataRemover::GetLastUsedBeginTime() {
1035 return delete_begin_;
1036 }
1037
1038 const base::Time& BrowsingDataRemover::GetLastUsedEndTime() {
1039 return delete_end_;
1040 }
1041
1042 int BrowsingDataRemover::GetLastUsedRemovalMask() {
1043 return remove_mask_;
1044 }
1045
1046 int BrowsingDataRemover::GetLastUsedOriginTypeMask() {
1047 return origin_type_mask_;
1048 }
1049
1050
1072 void BrowsingDataRemover::ClearSettingsForOneTypeWithPredicate( 1051 void BrowsingDataRemover::ClearSettingsForOneTypeWithPredicate(
1073 HostContentSettingsMap* content_settings_map, 1052 HostContentSettingsMap* content_settings_map,
1074 ContentSettingsType content_type, 1053 ContentSettingsType content_type,
1075 const base::Callback<bool(const ContentSettingsPattern& primary_pattern, 1054 const base::Callback<bool(const ContentSettingsPattern& primary_pattern,
1076 const ContentSettingsPattern& secondary_pattern)>& 1055 const ContentSettingsPattern& secondary_pattern)>&
1077 predicate) { 1056 predicate) {
1078 ContentSettingsForOneType settings; 1057 ContentSettingsForOneType settings;
1079 content_settings_map->GetSettingsForOneType(content_type, std::string(), 1058 content_settings_map->GetSettingsForOneType(content_type, std::string(),
1080 &settings); 1059 &settings);
1081 for (const ContentSettingPatternSource& setting : settings) { 1060 for (const ContentSettingPatternSource& setting : settings) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1121 TemplateURLService* model = 1100 TemplateURLService* model =
1122 TemplateURLServiceFactory::GetForProfile(profile_); 1101 TemplateURLServiceFactory::GetForProfile(profile_);
1123 model->RemoveAutoGeneratedBetween(delete_begin_, delete_end_); 1102 model->RemoveAutoGeneratedBetween(delete_begin_, delete_end_);
1124 waiting_for_clear_keyword_data_ = false; 1103 waiting_for_clear_keyword_data_ = false;
1125 template_url_sub_.reset(); 1104 template_url_sub_.reset();
1126 NotifyIfDone(); 1105 NotifyIfDone();
1127 } 1106 }
1128 1107
1129 void BrowsingDataRemover::Notify() { 1108 void BrowsingDataRemover::Notify() {
1130 SetRemoving(false); 1109 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()); 1110 FOR_EACH_OBSERVER(Observer, observer_list_, OnBrowsingDataRemoverDone());
1139 } 1111 }
1140 1112
1141 void BrowsingDataRemover::NotifyIfDone() { 1113 void BrowsingDataRemover::NotifyIfDone() {
1142 // TODO(brettw) http://crbug.com/305259: This should also observe session 1114 // TODO(brettw) http://crbug.com/305259: This should also observe session
1143 // clearing (what about other things such as passwords, etc.?) and wait for 1115 // clearing (what about other things such as passwords, etc.?) and wait for
1144 // them to complete before continuing. 1116 // them to complete before continuing.
1145 1117
1146 if (!AllDone()) 1118 if (!AllDone())
1147 return; 1119 return;
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1317 waiting_for_clear_offline_page_data_ = false; 1289 waiting_for_clear_offline_page_data_ = false;
1318 NotifyIfDone(); 1290 NotifyIfDone();
1319 } 1291 }
1320 #endif 1292 #endif
1321 1293
1322 void BrowsingDataRemover::OnClearedDomainReliabilityMonitor() { 1294 void BrowsingDataRemover::OnClearedDomainReliabilityMonitor() {
1323 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1295 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1324 waiting_for_clear_domain_reliability_monitor_ = false; 1296 waiting_for_clear_domain_reliability_monitor_ = false;
1325 NotifyIfDone(); 1297 NotifyIfDone();
1326 } 1298 }
1327
1328 // static
1329 BrowsingDataRemover::CallbackSubscription
1330 BrowsingDataRemover::RegisterOnBrowsingDataRemovedCallback(
1331 const BrowsingDataRemover::Callback& callback) {
1332 return GetOnBrowsingDataRemovedCallbacks()->Add(callback);
1333 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698