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

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

Issue 2697123004: Convert RemoveDataMask from enum to pointers and split it between content and embedder (Closed)
Patch Set: More compilation error fixes. Created 3 years, 10 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_impl.h" 5 #include "chrome/browser/browsing_data/browsing_data_remover_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 28 matching lines...) Expand all
39 #include "net/ssl/channel_id_store.h" 39 #include "net/ssl/channel_id_store.h"
40 #include "net/url_request/url_request_context.h" 40 #include "net/url_request/url_request_context.h"
41 #include "net/url_request/url_request_context_getter.h" 41 #include "net/url_request/url_request_context_getter.h"
42 #include "ppapi/features/features.h" 42 #include "ppapi/features/features.h"
43 #include "storage/browser/quota/special_storage_policy.h" 43 #include "storage/browser/quota/special_storage_policy.h"
44 #include "url/origin.h" 44 #include "url/origin.h"
45 45
46 using base::UserMetricsAction; 46 using base::UserMetricsAction;
47 using content::BrowserContext; 47 using content::BrowserContext;
48 using content::BrowserThread; 48 using content::BrowserThread;
49 using content::BrowsingDataType;
49 using content::BrowsingDataFilterBuilder; 50 using content::BrowsingDataFilterBuilder;
50 using content::DOMStorageContext; 51 using content::DOMStorageContext;
51 52
52 namespace { 53 namespace {
53 54
54 template <typename T> 55 template <typename T>
55 void IgnoreArgumentHelper(const base::Closure& callback, T unused_argument) { 56 void IgnoreArgumentHelper(const base::Closure& callback, T unused_argument) {
56 callback.Run(); 57 callback.Run();
57 } 58 }
58 59
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 const base::Closure& callback) { 111 const base::Closure& callback) {
111 DCHECK_CURRENTLY_ON(BrowserThread::IO); 112 DCHECK_CURRENTLY_ON(BrowserThread::IO);
112 net::ChannelIDService* channel_id_service = 113 net::ChannelIDService* channel_id_service =
113 rq_context->GetURLRequestContext()->channel_id_service(); 114 rq_context->GetURLRequestContext()->channel_id_service();
114 channel_id_service->GetChannelIDStore()->DeleteForDomainsCreatedBetween( 115 channel_id_service->GetChannelIDStore()->DeleteForDomainsCreatedBetween(
115 domain_predicate, delete_begin, delete_end, 116 domain_predicate, delete_begin, delete_end,
116 base::Bind(&OnClearedChannelIDsOnIOThread, 117 base::Bind(&OnClearedChannelIDsOnIOThread,
117 base::RetainedRef(std::move(rq_context)), callback)); 118 base::RetainedRef(std::move(rq_context)), callback));
118 } 119 }
119 120
121 bool IsFilterable(const std::set<const BrowsingDataType*>& remove_mask) {
122 for (const BrowsingDataType* data_type : remove_mask) {
123 if (data_type && !data_type->filterable)
Bernhard Bauer 2017/02/17 11:10:43 Why the null check?
msramek 2017/02/17 18:00:20 In browsing_data_api.cc, there is one place where
124 return false;
125 }
126
127 return true;
128 }
129
130 inline bool MaskContains(const std::set<const BrowsingDataType*>& remove_mask,
Bernhard Bauer 2017/02/17 11:10:43 You could use base::ContainsValue (from base/stl_u
msramek 2017/02/17 18:00:20 Done. Thanks!
131 const BrowsingDataType* data_type) {
132 return remove_mask.find(data_type) != remove_mask.end();
133 }
134
120 } // namespace 135 } // namespace
121 136
122 BrowsingDataRemoverImpl::CompletionInhibitor* 137 BrowsingDataRemoverImpl::CompletionInhibitor*
123 BrowsingDataRemoverImpl::completion_inhibitor_ = nullptr; 138 BrowsingDataRemoverImpl::completion_inhibitor_ = nullptr;
124 139
125 BrowsingDataRemoverImpl::SubTask::SubTask(const base::Closure& forward_callback) 140 BrowsingDataRemoverImpl::SubTask::SubTask(const base::Closure& forward_callback)
126 : is_pending_(false), 141 : is_pending_(false),
127 forward_callback_(forward_callback), 142 forward_callback_(forward_callback),
128 weak_ptr_factory_(this) { 143 weak_ptr_factory_(this) {
129 DCHECK(!forward_callback_.is_null()); 144 DCHECK(!forward_callback_.is_null());
(...skipping 15 matching lines...) Expand all
145 void BrowsingDataRemoverImpl::SubTask::CompletionCallback() { 160 void BrowsingDataRemoverImpl::SubTask::CompletionCallback() {
146 DCHECK_CURRENTLY_ON(BrowserThread::UI); 161 DCHECK_CURRENTLY_ON(BrowserThread::UI);
147 DCHECK(is_pending_); 162 DCHECK(is_pending_);
148 is_pending_ = false; 163 is_pending_ = false;
149 forward_callback_.Run(); 164 forward_callback_.Run();
150 } 165 }
151 166
152 BrowsingDataRemoverImpl::BrowsingDataRemoverImpl( 167 BrowsingDataRemoverImpl::BrowsingDataRemoverImpl(
153 content::BrowserContext* browser_context) 168 content::BrowserContext* browser_context)
154 : browser_context_(browser_context), 169 : browser_context_(browser_context),
155 remove_mask_(-1),
156 origin_type_mask_(-1), 170 origin_type_mask_(-1),
157 is_removing_(false), 171 is_removing_(false),
158 sub_task_forward_callback_( 172 sub_task_forward_callback_(
159 base::Bind(&BrowsingDataRemoverImpl::NotifyIfDone, 173 base::Bind(&BrowsingDataRemoverImpl::NotifyIfDone,
160 base::Unretained(this))), 174 base::Unretained(this))),
161 synchronous_clear_operations_(sub_task_forward_callback_), 175 synchronous_clear_operations_(sub_task_forward_callback_),
162 clear_embedder_data_(sub_task_forward_callback_), 176 clear_embedder_data_(sub_task_forward_callback_),
163 clear_cache_(sub_task_forward_callback_), 177 clear_cache_(sub_task_forward_callback_),
164 clear_channel_ids_(sub_task_forward_callback_), 178 clear_channel_ids_(sub_task_forward_callback_),
165 clear_http_auth_cache_(sub_task_forward_callback_), 179 clear_http_auth_cache_(sub_task_forward_callback_),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 void BrowsingDataRemoverImpl::SetEmbedderDelegate( 211 void BrowsingDataRemoverImpl::SetEmbedderDelegate(
198 std::unique_ptr<BrowsingDataRemoverDelegate> embedder_delegate) { 212 std::unique_ptr<BrowsingDataRemoverDelegate> embedder_delegate) {
199 embedder_delegate_ = std::move(embedder_delegate); 213 embedder_delegate_ = std::move(embedder_delegate);
200 } 214 }
201 215
202 BrowsingDataRemoverDelegate* 216 BrowsingDataRemoverDelegate*
203 BrowsingDataRemoverImpl::GetEmbedderDelegate() const { 217 BrowsingDataRemoverImpl::GetEmbedderDelegate() const {
204 return embedder_delegate_.get(); 218 return embedder_delegate_.get();
205 } 219 }
206 220
207 void BrowsingDataRemoverImpl::Remove(const base::Time& delete_begin, 221 void BrowsingDataRemoverImpl::Remove(
208 const base::Time& delete_end, 222 const base::Time& delete_begin,
209 int remove_mask, 223 const base::Time& delete_end,
210 int origin_type_mask) { 224 const std::set<const BrowsingDataType*>& remove_mask,
225 int origin_type_mask) {
211 RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask, 226 RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask,
212 std::unique_ptr<BrowsingDataFilterBuilder>(), nullptr); 227 std::unique_ptr<BrowsingDataFilterBuilder>(), nullptr);
213 } 228 }
214 229
215 void BrowsingDataRemoverImpl::RemoveAndReply( 230 void BrowsingDataRemoverImpl::RemoveAndReply(
216 const base::Time& delete_begin, 231 const base::Time& delete_begin,
217 const base::Time& delete_end, 232 const base::Time& delete_end,
218 int remove_mask, 233 const std::set<const BrowsingDataType*>& remove_mask,
219 int origin_type_mask, 234 int origin_type_mask,
220 Observer* observer) { 235 Observer* observer) {
221 DCHECK(observer); 236 DCHECK(observer);
222 RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask, 237 RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask,
223 std::unique_ptr<BrowsingDataFilterBuilder>(), observer); 238 std::unique_ptr<BrowsingDataFilterBuilder>(), observer);
224 } 239 }
225 240
226 void BrowsingDataRemoverImpl::RemoveWithFilter( 241 void BrowsingDataRemoverImpl::RemoveWithFilter(
227 const base::Time& delete_begin, 242 const base::Time& delete_begin,
228 const base::Time& delete_end, 243 const base::Time& delete_end,
229 int remove_mask, 244 const std::set<const BrowsingDataType*>& remove_mask,
230 int origin_type_mask, 245 int origin_type_mask,
231 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder) { 246 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder) {
232 DCHECK_EQ(0, remove_mask & ~FILTERABLE_DATATYPES); 247 DCHECK(IsFilterable(remove_mask));
233 DCHECK(filter_builder); 248 DCHECK(filter_builder);
234 RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask, 249 RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask,
235 std::move(filter_builder), nullptr); 250 std::move(filter_builder), nullptr);
236 } 251 }
237 252
238 void BrowsingDataRemoverImpl::RemoveWithFilterAndReply( 253 void BrowsingDataRemoverImpl::RemoveWithFilterAndReply(
239 const base::Time& delete_begin, 254 const base::Time& delete_begin,
240 const base::Time& delete_end, 255 const base::Time& delete_end,
241 int remove_mask, 256 const std::set<const BrowsingDataType*>& remove_mask,
242 int origin_type_mask, 257 int origin_type_mask,
243 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder, 258 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
244 Observer* observer) { 259 Observer* observer) {
245 DCHECK_EQ(0, remove_mask & ~FILTERABLE_DATATYPES); 260 DCHECK(IsFilterable(remove_mask));
246 DCHECK(filter_builder); 261 DCHECK(filter_builder);
247 DCHECK(observer); 262 DCHECK(observer);
248 RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask, 263 RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask,
249 std::move(filter_builder), observer); 264 std::move(filter_builder), observer);
250 } 265 }
251 266
252 void BrowsingDataRemoverImpl::RemoveInternal( 267 void BrowsingDataRemoverImpl::RemoveInternal(
253 const base::Time& delete_begin, 268 const base::Time& delete_begin,
254 const base::Time& delete_end, 269 const base::Time& delete_end,
255 int remove_mask, 270 const std::set<const BrowsingDataType*>& remove_mask,
256 int origin_type_mask, 271 int origin_type_mask,
257 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder, 272 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
258 Observer* observer) { 273 Observer* observer) {
259 DCHECK(!observer || observer_list_.HasObserver(observer)) 274 DCHECK(!observer || observer_list_.HasObserver(observer))
260 << "Every observer must register itself (by calling AddObserver()) " 275 << "Every observer must register itself (by calling AddObserver()) "
261 << "before observing a removal task."; 276 << "before observing a removal task.";
262 277
263 // Remove() and RemoveAndReply() pass a null pointer to indicate no filter. 278 // Remove() and RemoveAndReply() pass a null pointer to indicate no filter.
264 // No filter is equivalent to one that |IsEmptyBlacklist()|. 279 // No filter is equivalent to one that |IsEmptyBlacklist()|.
265 if (!filter_builder) { 280 if (!filter_builder) {
(...skipping 26 matching lines...) Expand all
292 RemoveImpl(removal_task.delete_begin, 307 RemoveImpl(removal_task.delete_begin,
293 removal_task.delete_end, 308 removal_task.delete_end,
294 removal_task.remove_mask, 309 removal_task.remove_mask,
295 *removal_task.filter_builder, 310 *removal_task.filter_builder,
296 removal_task.origin_type_mask); 311 removal_task.origin_type_mask);
297 } 312 }
298 313
299 void BrowsingDataRemoverImpl::RemoveImpl( 314 void BrowsingDataRemoverImpl::RemoveImpl(
300 const base::Time& delete_begin, 315 const base::Time& delete_begin,
301 const base::Time& delete_end, 316 const base::Time& delete_end,
302 int remove_mask, 317 const std::set<const BrowsingDataType*>& remove_mask,
303 const BrowsingDataFilterBuilder& filter_builder, 318 const BrowsingDataFilterBuilder& filter_builder,
304 int origin_type_mask) { 319 int origin_type_mask) {
305 // =============== README before adding more storage backends =============== 320 // =============== README before adding more storage backends ===============
306 // 321 //
307 // If you're adding a data storage backend that is included among 322 // If you're adding a data storage backend that is included among
308 // RemoveDataMask::FILTERABLE_DATATYPES, you must do one of the following: 323 // RemoveDataMask::FILTERABLE_DATATYPES, you must do one of the following:
309 // 1. Support one of the filters generated by |filter_builder|. 324 // 1. Support one of the filters generated by |filter_builder|.
310 // 2. Add a comment explaining why is it acceptable in your case to delete all 325 // 2. Add a comment explaining why is it acceptable in your case to delete all
311 // data without filtering URLs / origins / domains. 326 // data without filtering URLs / origins / domains.
312 // 3. Do not support partial deletion, i.e. only delete your data if 327 // 3. Do not support partial deletion, i.e. only delete your data if
(...skipping 25 matching lines...) Expand all
338 // If this fires, we added a new BrowsingDataHelper::OriginTypeMask without 353 // If this fires, we added a new BrowsingDataHelper::OriginTypeMask without
339 // updating the user metrics above. 354 // updating the user metrics above.
340 static_assert( 355 static_assert(
341 BrowsingDataHelper::ALL == (BrowsingDataHelper::UNPROTECTED_WEB | 356 BrowsingDataHelper::ALL == (BrowsingDataHelper::UNPROTECTED_WEB |
342 BrowsingDataHelper::PROTECTED_WEB | 357 BrowsingDataHelper::PROTECTED_WEB |
343 BrowsingDataHelper::EXTENSION), 358 BrowsingDataHelper::EXTENSION),
344 "OriginTypeMask has been updated without updating user metrics"); 359 "OriginTypeMask has been updated without updating user metrics");
345 360
346 // Record the combined deletion of cookies and cache. 361 // Record the combined deletion of cookies and cache.
347 CookieOrCacheDeletionChoice choice = NEITHER_COOKIES_NOR_CACHE; 362 CookieOrCacheDeletionChoice choice = NEITHER_COOKIES_NOR_CACHE;
348 if (remove_mask & REMOVE_COOKIES && 363 if (MaskContains(remove_mask, &content::kBrowsingDataTypeCookies) &&
349 origin_type_mask_ & BrowsingDataHelper::UNPROTECTED_WEB) { 364 origin_type_mask_ & BrowsingDataHelper::UNPROTECTED_WEB) {
350 choice = remove_mask & REMOVE_CACHE ? BOTH_COOKIES_AND_CACHE 365 choice = MaskContains(remove_mask, &content::kBrowsingDataTypeCache)
351 : ONLY_COOKIES; 366 ? BOTH_COOKIES_AND_CACHE : ONLY_COOKIES;
352 } else if (remove_mask & REMOVE_CACHE) { 367 } else if (MaskContains(remove_mask, &content::kBrowsingDataTypeCache)) {
353 choice = ONLY_CACHE; 368 choice = ONLY_CACHE;
354 } 369 }
355 370
356 UMA_HISTOGRAM_ENUMERATION( 371 UMA_HISTOGRAM_ENUMERATION(
357 "History.ClearBrowsingData.UserDeletedCookieOrCache", 372 "History.ClearBrowsingData.UserDeletedCookieOrCache",
358 choice, MAX_CHOICE_VALUE); 373 choice, MAX_CHOICE_VALUE);
359 374
360 // Managed devices and supervised users can have restrictions on history 375 // Managed devices and supervised users can have restrictions on history
361 // deletion. 376 // deletion.
362 // TODO(crbug.com/668114): This should be provided via ContentBrowserClient 377 // TODO(crbug.com/668114): This should be provided via ContentBrowserClient
363 // once BrowsingDataRemoverImpl moves to content. 378 // once BrowsingDataRemoverImpl moves to content.
364 PrefService* prefs = 379 PrefService* prefs =
365 Profile::FromBrowserContext(browser_context_)->GetPrefs(); 380 Profile::FromBrowserContext(browser_context_)->GetPrefs();
366 bool may_delete_history = 381 bool may_delete_history =
367 prefs->GetBoolean(prefs::kAllowDeletingBrowserHistory); 382 prefs->GetBoolean(prefs::kAllowDeletingBrowserHistory);
368 383
369 ////////////////////////////////////////////////////////////////////////////// 384 //////////////////////////////////////////////////////////////////////////////
370 // INITIALIZATION 385 // INITIALIZATION
371 base::Callback<bool(const GURL& url)> filter = 386 base::Callback<bool(const GURL& url)> filter =
372 filter_builder.BuildGeneralFilter(); 387 filter_builder.BuildGeneralFilter();
373 388
374 ////////////////////////////////////////////////////////////////////////////// 389 //////////////////////////////////////////////////////////////////////////////
375 // REMOVE_DOWNLOADS 390 // kBrowsingDataTypeDownloads
376 if ((remove_mask & REMOVE_DOWNLOADS) && may_delete_history) { 391 if ((MaskContains(remove_mask, &content::kBrowsingDataTypeDownloads))
392 && may_delete_history) {
377 content::RecordAction(UserMetricsAction("ClearBrowsingData_Downloads")); 393 content::RecordAction(UserMetricsAction("ClearBrowsingData_Downloads"));
378 content::DownloadManager* download_manager = 394 content::DownloadManager* download_manager =
379 BrowserContext::GetDownloadManager(browser_context_); 395 BrowserContext::GetDownloadManager(browser_context_);
380 download_manager->RemoveDownloadsByURLAndTime(filter, 396 download_manager->RemoveDownloadsByURLAndTime(filter,
381 delete_begin_, delete_end_); 397 delete_begin_, delete_end_);
382 } 398 }
383 399
384 ////////////////////////////////////////////////////////////////////////////// 400 //////////////////////////////////////////////////////////////////////////////
385 // REMOVE_CHANNEL_IDS 401 // kBrowsingDataTypeChannelIDs
386 // Channel IDs are not separated for protected and unprotected web 402 // Channel IDs are not separated for protected and unprotected web
387 // origins. We check the origin_type_mask_ to prevent unintended deletion. 403 // origins. We check the origin_type_mask_ to prevent unintended deletion.
388 if (remove_mask & REMOVE_CHANNEL_IDS && 404 if (MaskContains(remove_mask, &content::kBrowsingDataTypeChannelIDs) &&
389 origin_type_mask_ & BrowsingDataHelper::UNPROTECTED_WEB) { 405 origin_type_mask_ & BrowsingDataHelper::UNPROTECTED_WEB) {
390 content::RecordAction( 406 content::RecordAction(
391 UserMetricsAction("ClearBrowsingData_ChannelIDs")); 407 UserMetricsAction("ClearBrowsingData_ChannelIDs"));
392 // Since we are running on the UI thread don't call GetURLRequestContext(). 408 // Since we are running on the UI thread don't call GetURLRequestContext().
393 scoped_refptr<net::URLRequestContextGetter> rq_context = 409 scoped_refptr<net::URLRequestContextGetter> rq_context =
394 content::BrowserContext::GetDefaultStoragePartition(browser_context_)-> 410 content::BrowserContext::GetDefaultStoragePartition(browser_context_)->
395 GetURLRequestContext(); 411 GetURLRequestContext();
396 clear_channel_ids_.Start(); 412 clear_channel_ids_.Start();
397 BrowserThread::PostTask( 413 BrowserThread::PostTask(
398 BrowserThread::IO, FROM_HERE, 414 BrowserThread::IO, FROM_HERE,
399 base::Bind(&ClearChannelIDsOnIOThread, 415 base::Bind(&ClearChannelIDsOnIOThread,
400 filter_builder.BuildChannelIDFilter(), 416 filter_builder.BuildChannelIDFilter(),
401 delete_begin_, delete_end_, std::move(rq_context), 417 delete_begin_, delete_end_, std::move(rq_context),
402 clear_channel_ids_.GetCompletionCallback())); 418 clear_channel_ids_.GetCompletionCallback()));
403 } 419 }
404 420
405 ////////////////////////////////////////////////////////////////////////////// 421 //////////////////////////////////////////////////////////////////////////////
406 // STORAGE PARTITION DATA 422 // STORAGE PARTITION DATA
407 uint32_t storage_partition_remove_mask = 0; 423 uint32_t storage_partition_remove_mask = 0;
408 424
409 // We ignore the REMOVE_COOKIES request if UNPROTECTED_WEB is not set, 425 // We ignore the REMOVE_COOKIES request if UNPROTECTED_WEB is not set,
410 // so that callers who request REMOVE_SITE_DATA with PROTECTED_WEB 426 // so that callers who request REMOVE_SITE_DATA with PROTECTED_WEB
411 // don't accidentally remove the cookies that are associated with the 427 // don't accidentally remove the cookies that are associated with the
412 // UNPROTECTED_WEB origin. This is necessary because cookies are not separated 428 // UNPROTECTED_WEB origin. This is necessary because cookies are not separated
413 // between UNPROTECTED_WEB and PROTECTED_WEB. 429 // between UNPROTECTED_WEB and PROTECTED_WEB.
414 if (remove_mask & REMOVE_COOKIES && 430 if (MaskContains(remove_mask, &content::kBrowsingDataTypeCookies) &&
415 origin_type_mask_ & BrowsingDataHelper::UNPROTECTED_WEB) { 431 origin_type_mask_ & BrowsingDataHelper::UNPROTECTED_WEB) {
416 storage_partition_remove_mask |= 432 storage_partition_remove_mask |=
417 content::StoragePartition::REMOVE_DATA_MASK_COOKIES; 433 content::StoragePartition::REMOVE_DATA_MASK_COOKIES;
418 } 434 }
419 if (remove_mask & REMOVE_LOCAL_STORAGE) { 435 if (MaskContains(remove_mask, &content::kBrowsingDataTypeLocalStorage)) {
420 storage_partition_remove_mask |= 436 storage_partition_remove_mask |=
421 content::StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE; 437 content::StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE;
422 } 438 }
423 if (remove_mask & REMOVE_INDEXEDDB) { 439 if (MaskContains(remove_mask, &content::kBrowsingDataTypeIndexedDB)) {
424 storage_partition_remove_mask |= 440 storage_partition_remove_mask |=
425 content::StoragePartition::REMOVE_DATA_MASK_INDEXEDDB; 441 content::StoragePartition::REMOVE_DATA_MASK_INDEXEDDB;
426 } 442 }
427 if (remove_mask & REMOVE_WEBSQL) { 443 if (MaskContains(remove_mask, &content::kBrowsingDataTypeWebSQL)) {
428 storage_partition_remove_mask |= 444 storage_partition_remove_mask |=
429 content::StoragePartition::REMOVE_DATA_MASK_WEBSQL; 445 content::StoragePartition::REMOVE_DATA_MASK_WEBSQL;
430 } 446 }
431 if (remove_mask & REMOVE_APPCACHE) { 447 if (MaskContains(remove_mask, &content::kBrowsingDataTypeAppCache)) {
432 storage_partition_remove_mask |= 448 storage_partition_remove_mask |=
433 content::StoragePartition::REMOVE_DATA_MASK_APPCACHE; 449 content::StoragePartition::REMOVE_DATA_MASK_APPCACHE;
434 } 450 }
435 if (remove_mask & REMOVE_SERVICE_WORKERS) { 451 if (MaskContains(remove_mask, &content::kBrowsingDataTypeServiceWorkers)) {
436 storage_partition_remove_mask |= 452 storage_partition_remove_mask |=
437 content::StoragePartition::REMOVE_DATA_MASK_SERVICE_WORKERS; 453 content::StoragePartition::REMOVE_DATA_MASK_SERVICE_WORKERS;
438 } 454 }
439 if (remove_mask & REMOVE_CACHE_STORAGE) { 455 if (MaskContains(remove_mask, &content::kBrowsingDataTypeCacheStorage)) {
440 storage_partition_remove_mask |= 456 storage_partition_remove_mask |=
441 content::StoragePartition::REMOVE_DATA_MASK_CACHE_STORAGE; 457 content::StoragePartition::REMOVE_DATA_MASK_CACHE_STORAGE;
442 } 458 }
443 if (remove_mask & REMOVE_FILE_SYSTEMS) { 459 if (MaskContains(remove_mask, &content::kBrowsingDataTypeFileSystems)) {
444 storage_partition_remove_mask |= 460 storage_partition_remove_mask |=
445 content::StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS; 461 content::StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS;
446 } 462 }
447 463
448 // Content Decryption Modules used by Encrypted Media store licenses in a 464 // Content Decryption Modules used by Encrypted Media store licenses in a
449 // private filesystem. These are different than content licenses used by 465 // private filesystem. These are different than content licenses used by
450 // Flash (which are deleted father down in this method). 466 // Flash (which are deleted father down in this method).
451 if (remove_mask & REMOVE_MEDIA_LICENSES) { 467 if (MaskContains(remove_mask, &content::kBrowsingDataTypeMediaLicenses)) {
452 storage_partition_remove_mask |= 468 storage_partition_remove_mask |=
453 content::StoragePartition::REMOVE_DATA_MASK_PLUGIN_PRIVATE_DATA; 469 content::StoragePartition::REMOVE_DATA_MASK_PLUGIN_PRIVATE_DATA;
454 } 470 }
455 471
456 if (storage_partition_remove_mask) { 472 if (storage_partition_remove_mask) {
457 clear_storage_partition_data_.Start(); 473 clear_storage_partition_data_.Start();
458 474
459 content::StoragePartition* storage_partition; 475 content::StoragePartition* storage_partition;
460 if (storage_partition_for_testing_) { 476 if (storage_partition_for_testing_) {
461 storage_partition = storage_partition_for_testing_; 477 storage_partition = storage_partition_for_testing_;
(...skipping 24 matching lines...) Expand all
486 } 502 }
487 503
488 storage_partition->ClearData( 504 storage_partition->ClearData(
489 storage_partition_remove_mask, quota_storage_remove_mask, 505 storage_partition_remove_mask, quota_storage_remove_mask,
490 base::Bind(&DoesOriginMatchMaskAndUrls, origin_type_mask_, filter), 506 base::Bind(&DoesOriginMatchMaskAndUrls, origin_type_mask_, filter),
491 cookie_matcher, delete_begin_, delete_end_, 507 cookie_matcher, delete_begin_, delete_end_,
492 clear_storage_partition_data_.GetCompletionCallback()); 508 clear_storage_partition_data_.GetCompletionCallback());
493 } 509 }
494 510
495 ////////////////////////////////////////////////////////////////////////////// 511 //////////////////////////////////////////////////////////////////////////////
496 // CACHE 512 // kBrowsingDataTypeCache
497 if (remove_mask & REMOVE_CACHE) { 513 if (MaskContains(remove_mask, &content::kBrowsingDataTypeCache)) {
498 // Tell the renderers to clear their cache. 514 // Tell the renderers to clear their cache.
499 web_cache::WebCacheManager::GetInstance()->ClearCache(); 515 web_cache::WebCacheManager::GetInstance()->ClearCache();
500 516
501 content::RecordAction(UserMetricsAction("ClearBrowsingData_Cache")); 517 content::RecordAction(UserMetricsAction("ClearBrowsingData_Cache"));
502 518
503 clear_cache_.Start(); 519 clear_cache_.Start();
504 // StoragePartitionHttpCacheDataRemover deletes itself when it is done. 520 // StoragePartitionHttpCacheDataRemover deletes itself when it is done.
505 if (filter_builder.IsEmptyBlacklist()) { 521 if (filter_builder.IsEmptyBlacklist()) {
506 browsing_data::StoragePartitionHttpCacheDataRemover::CreateForRange( 522 browsing_data::StoragePartitionHttpCacheDataRemover::CreateForRange(
507 BrowserContext::GetDefaultStoragePartition(browser_context_), 523 BrowserContext::GetDefaultStoragePartition(browser_context_),
508 delete_begin_, delete_end_) 524 delete_begin_, delete_end_)
509 ->Remove(clear_cache_.GetCompletionCallback()); 525 ->Remove(clear_cache_.GetCompletionCallback());
510 } else { 526 } else {
511 browsing_data::StoragePartitionHttpCacheDataRemover:: 527 browsing_data::StoragePartitionHttpCacheDataRemover::
512 CreateForURLsAndRange( 528 CreateForURLsAndRange(
513 BrowserContext::GetDefaultStoragePartition(browser_context_), 529 BrowserContext::GetDefaultStoragePartition(browser_context_),
514 filter, delete_begin_, delete_end_) 530 filter, delete_begin_, delete_end_)
515 ->Remove(clear_cache_.GetCompletionCallback()); 531 ->Remove(clear_cache_.GetCompletionCallback());
516 } 532 }
517 533
518 // Tell the shader disk cache to clear. 534 // Tell the shader disk cache to clear.
519 content::RecordAction(UserMetricsAction("ClearBrowsingData_ShaderCache")); 535 content::RecordAction(UserMetricsAction("ClearBrowsingData_ShaderCache"));
520 storage_partition_remove_mask |= 536 storage_partition_remove_mask |=
521 content::StoragePartition::REMOVE_DATA_MASK_SHADER_CACHE; 537 content::StoragePartition::REMOVE_DATA_MASK_SHADER_CACHE;
522 } 538 }
523 539
524 ////////////////////////////////////////////////////////////////////////////// 540 //////////////////////////////////////////////////////////////////////////////
525 // Auth cache. 541 // Auth cache.
526 if (remove_mask & REMOVE_COOKIES) { 542 if (MaskContains(remove_mask, &content::kBrowsingDataTypeCookies)) {
527 scoped_refptr<net::URLRequestContextGetter> request_context = 543 scoped_refptr<net::URLRequestContextGetter> request_context =
528 BrowserContext::GetDefaultStoragePartition(browser_context_) 544 BrowserContext::GetDefaultStoragePartition(browser_context_)
529 ->GetURLRequestContext(); 545 ->GetURLRequestContext();
530 clear_http_auth_cache_.Start(); 546 clear_http_auth_cache_.Start();
531 BrowserThread::PostTaskAndReply( 547 BrowserThread::PostTaskAndReply(
532 BrowserThread::IO, FROM_HERE, 548 BrowserThread::IO, FROM_HERE,
533 base::Bind(&ClearHttpAuthCacheOnIOThread, std::move(request_context), 549 base::Bind(&ClearHttpAuthCacheOnIOThread, std::move(request_context),
534 delete_begin_), 550 delete_begin_),
535 clear_http_auth_cache_.GetCompletionCallback()); 551 clear_http_auth_cache_.GetCompletionCallback());
536 } 552 }
(...skipping 29 matching lines...) Expand all
566 } 582 }
567 583
568 const base::Time& BrowsingDataRemoverImpl::GetLastUsedBeginTime() { 584 const base::Time& BrowsingDataRemoverImpl::GetLastUsedBeginTime() {
569 return delete_begin_; 585 return delete_begin_;
570 } 586 }
571 587
572 const base::Time& BrowsingDataRemoverImpl::GetLastUsedEndTime() { 588 const base::Time& BrowsingDataRemoverImpl::GetLastUsedEndTime() {
573 return delete_end_; 589 return delete_end_;
574 } 590 }
575 591
576 int BrowsingDataRemoverImpl::GetLastUsedRemovalMask() { 592 const std::set<const BrowsingDataType*>&
593 BrowsingDataRemoverImpl::GetLastUsedRemovalMask() {
577 return remove_mask_; 594 return remove_mask_;
578 } 595 }
579 596
580 int BrowsingDataRemoverImpl::GetLastUsedOriginTypeMask() { 597 int BrowsingDataRemoverImpl::GetLastUsedOriginTypeMask() {
581 return origin_type_mask_; 598 return origin_type_mask_;
582 } 599 }
583 600
584 BrowsingDataRemoverImpl::RemovalTask::RemovalTask( 601 BrowsingDataRemoverImpl::RemovalTask::RemovalTask(
585 const base::Time& delete_begin, 602 const base::Time& delete_begin,
586 const base::Time& delete_end, 603 const base::Time& delete_end,
587 int remove_mask, 604 const std::set<const BrowsingDataType*>& remove_mask,
588 int origin_type_mask, 605 int origin_type_mask,
589 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder, 606 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
590 Observer* observer) 607 Observer* observer)
591 : delete_begin(delete_begin), 608 : delete_begin(delete_begin),
592 delete_end(delete_end), 609 delete_end(delete_end),
593 remove_mask(remove_mask), 610 remove_mask(remove_mask),
594 origin_type_mask(origin_type_mask), 611 origin_type_mask(origin_type_mask),
595 filter_builder(std::move(filter_builder)), 612 filter_builder(std::move(filter_builder)),
596 observer(observer) {} 613 observer(observer) {}
597 614
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 670
654 if (completion_inhibitor_) { 671 if (completion_inhibitor_) {
655 completion_inhibitor_->OnBrowsingDataRemoverWouldComplete( 672 completion_inhibitor_->OnBrowsingDataRemoverWouldComplete(
656 this, base::Bind(&BrowsingDataRemoverImpl::Notify, 673 this, base::Bind(&BrowsingDataRemoverImpl::Notify,
657 weak_ptr_factory_.GetWeakPtr())); 674 weak_ptr_factory_.GetWeakPtr()));
658 return; 675 return;
659 } 676 }
660 677
661 Notify(); 678 Notify();
662 } 679 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698