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

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

Powered by Google App Engine
This is Rietveld 408576698