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

Side by Side Diff: ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.mm

Issue 1844243002: [CookieStore] Upgrading host-based deleting to predicate-based deleting. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 8 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h" 5 #include "ios/chrome/browser/browsing_data/ios_chrome_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 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 DCHECK(AllDone()); 119 DCHECK(AllDone());
120 } 120 }
121 121
122 // Static. 122 // Static.
123 void IOSChromeBrowsingDataRemover::set_removing(bool is_removing) { 123 void IOSChromeBrowsingDataRemover::set_removing(bool is_removing) {
124 DCHECK(is_removing_ != is_removing); 124 DCHECK(is_removing_ != is_removing);
125 is_removing_ = is_removing; 125 is_removing_ = is_removing;
126 } 126 }
127 127
128 void IOSChromeBrowsingDataRemover::Remove(int remove_mask) { 128 void IOSChromeBrowsingDataRemover::Remove(int remove_mask) {
129 RemoveImpl(remove_mask, GURL()); 129 RemoveImpl(remove_mask);
130 } 130 }
131 131
132 void IOSChromeBrowsingDataRemover::RemoveImpl(int remove_mask, 132 void IOSChromeBrowsingDataRemover::RemoveImpl(int remove_mask) {
133 const GURL& remove_url) {
134 DCHECK_CURRENTLY_ON(WebThread::UI); 133 DCHECK_CURRENTLY_ON(WebThread::UI);
135 set_removing(true); 134 set_removing(true);
136 remove_mask_ = remove_mask; 135 remove_mask_ = remove_mask;
137 136
138 // On other platforms, it is possible to specify different types of origins 137 // On other platforms, it is possible to specify different types of origins
139 // to clear data for (e.g., unprotected web vs. extensions). On iOS, this 138 // to clear data for (e.g., unprotected web vs. extensions). On iOS, this
140 // mask is always implicitly the unprotected web, which is the only type that 139 // mask is always implicitly the unprotected web, which is the only type that
141 // is relevant. This metric is left here for historical consistency. 140 // is relevant. This metric is left here for historical consistency.
142 web::RecordAction( 141 web::RecordAction(
143 UserMetricsAction("ClearBrowsingData_MaskContainsUnprotectedWeb")); 142 UserMetricsAction("ClearBrowsingData_MaskContainsUnprotectedWeb"));
144 143
145 if (remove_mask & REMOVE_HISTORY) { 144 if (remove_mask & REMOVE_HISTORY) {
146 history::HistoryService* history_service = 145 history::HistoryService* history_service =
147 ios::HistoryServiceFactory::GetForBrowserState( 146 ios::HistoryServiceFactory::GetForBrowserState(
148 browser_state_, ServiceAccessType::EXPLICIT_ACCESS); 147 browser_state_, ServiceAccessType::EXPLICIT_ACCESS);
149 if (history_service) { 148 if (history_service) {
150 std::set<GURL> restrict_urls; 149 std::set<GURL> restrict_urls;
151 if (!remove_url.is_empty())
152 restrict_urls.insert(remove_url);
153 web::RecordAction(UserMetricsAction("ClearBrowsingData_History")); 150 web::RecordAction(UserMetricsAction("ClearBrowsingData_History"));
154 waiting_for_clear_history_ = true; 151 waiting_for_clear_history_ = true;
155 152
156 history_service->ExpireLocalAndRemoteHistoryBetween( 153 history_service->ExpireLocalAndRemoteHistoryBetween(
157 ios::WebHistoryServiceFactory::GetForBrowserState(browser_state_), 154 ios::WebHistoryServiceFactory::GetForBrowserState(browser_state_),
158 restrict_urls, delete_begin_, delete_end_, 155 restrict_urls, delete_begin_, delete_end_,
159 base::Bind(&IOSChromeBrowsingDataRemover::OnHistoryDeletionDone, 156 base::Bind(&IOSChromeBrowsingDataRemover::OnHistoryDeletionDone,
160 base::Unretained(this)), 157 base::Unretained(this)),
161 &history_task_tracker_); 158 &history_task_tracker_);
162 } 159 }
(...skipping 21 matching lines...) Expand all
184 TemplateURLService* keywords_model = 181 TemplateURLService* keywords_model =
185 ios::TemplateURLServiceFactory::GetForBrowserState(browser_state_); 182 ios::TemplateURLServiceFactory::GetForBrowserState(browser_state_);
186 if (keywords_model && !keywords_model->loaded()) { 183 if (keywords_model && !keywords_model->loaded()) {
187 template_url_sub_ = keywords_model->RegisterOnLoadedCallback( 184 template_url_sub_ = keywords_model->RegisterOnLoadedCallback(
188 base::Bind(&IOSChromeBrowsingDataRemover::OnKeywordsLoaded, 185 base::Bind(&IOSChromeBrowsingDataRemover::OnKeywordsLoaded,
189 base::Unretained(this))); 186 base::Unretained(this)));
190 keywords_model->Load(); 187 keywords_model->Load();
191 waiting_for_clear_keyword_data_ = true; 188 waiting_for_clear_keyword_data_ = true;
192 } else if (keywords_model) { 189 } else if (keywords_model) {
193 keywords_model->RemoveAutoGeneratedForOriginBetween( 190 keywords_model->RemoveAutoGeneratedForOriginBetween(
194 remove_url, delete_begin_, delete_end_); 191 GURL(), delete_begin_, delete_end_);
195 } 192 }
196 } 193 }
197 194
198 // If the caller is removing history for all hosts, then clear ancillary 195 // If the caller is removing history for all hosts, then clear ancillary
199 // historical information. 196 // historical information.
200 if (remove_url.is_empty()) { 197 // We also delete the list of recently closed tabs. Since these expire,
201 // We also delete the list of recently closed tabs. Since these expire, 198 // they can't be more than a day old, so we can simply clear them all.
202 // they can't be more than a day old, so we can simply clear them all. 199 sessions::TabRestoreService* tab_service =
203 sessions::TabRestoreService* tab_service = 200 IOSChromeTabRestoreServiceFactory::GetForBrowserState(browser_state_);
204 IOSChromeTabRestoreServiceFactory::GetForBrowserState(browser_state_); 201 if (tab_service) {
205 if (tab_service) { 202 tab_service->ClearEntries();
206 tab_service->ClearEntries(); 203 tab_service->DeleteLastSession();
207 tab_service->DeleteLastSession();
208 }
209 } 204 }
210 205
211 // The saved Autofill profiles and credit cards can include the origin from 206 // The saved Autofill profiles and credit cards can include the origin from
212 // which these profiles and credit cards were learned. These are a form of 207 // which these profiles and credit cards were learned. These are a form of
213 // history, so clear them as well. 208 // history, so clear them as well.
214 scoped_refptr<autofill::AutofillWebDataService> web_data_service = 209 scoped_refptr<autofill::AutofillWebDataService> web_data_service =
215 ios::WebDataServiceFactory::GetAutofillWebDataForBrowserState( 210 ios::WebDataServiceFactory::GetAutofillWebDataForBrowserState(
216 browser_state_, ServiceAccessType::EXPLICIT_ACCESS); 211 browser_state_, ServiceAccessType::EXPLICIT_ACCESS);
217 if (web_data_service.get()) { 212 if (web_data_service.get()) {
218 waiting_for_clear_autofill_origin_urls_ = true; 213 waiting_for_clear_autofill_origin_urls_ = true;
(...skipping 14 matching lines...) Expand all
233 228
234 } 229 }
235 230
236 if (remove_mask & REMOVE_COOKIES) { 231 if (remove_mask & REMOVE_COOKIES) {
237 web::RecordAction(UserMetricsAction("ClearBrowsingData_Cookies")); 232 web::RecordAction(UserMetricsAction("ClearBrowsingData_Cookies"));
238 233
239 ++waiting_for_clear_cookies_count_; 234 ++waiting_for_clear_cookies_count_;
240 WebThread::PostTask( 235 WebThread::PostTask(
241 WebThread::IO, FROM_HERE, 236 WebThread::IO, FROM_HERE,
242 base::Bind(&IOSChromeBrowsingDataRemover::ClearCookiesOnIOThread, 237 base::Bind(&IOSChromeBrowsingDataRemover::ClearCookiesOnIOThread,
243 base::Unretained(this), main_context_getter_, remove_url)); 238 base::Unretained(this), main_context_getter_));
244 239
245 // TODO(mkwst): If we're not removing passwords, then clear the 'zero-click' 240 // TODO(mkwst): If we're not removing passwords, then clear the 'zero-click'
246 // flag for all credentials in the password store. 241 // flag for all credentials in the password store.
247 } 242 }
248 243
249 if (remove_mask & REMOVE_CHANNEL_IDS) { 244 if (remove_mask & REMOVE_CHANNEL_IDS) {
250 web::RecordAction(UserMetricsAction("ClearBrowsingData_ChannelIDs")); 245 web::RecordAction(UserMetricsAction("ClearBrowsingData_ChannelIDs"));
251 if (main_context_getter_) { 246 if (main_context_getter_) {
252 waiting_for_clear_channel_ids_ = true; 247 waiting_for_clear_channel_ids_ = true;
253 WebThread::PostTask( 248 WebThread::PostTask(
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 base::Unretained(this), num_deleted)); 442 base::Unretained(this), num_deleted));
448 return; 443 return;
449 } 444 }
450 445
451 DCHECK_GT(waiting_for_clear_cookies_count_, 0); 446 DCHECK_GT(waiting_for_clear_cookies_count_, 0);
452 --waiting_for_clear_cookies_count_; 447 --waiting_for_clear_cookies_count_;
453 NotifyAndDeleteIfDone(); 448 NotifyAndDeleteIfDone();
454 } 449 }
455 450
456 void IOSChromeBrowsingDataRemover::ClearCookiesOnIOThread( 451 void IOSChromeBrowsingDataRemover::ClearCookiesOnIOThread(
457 const scoped_refptr<net::URLRequestContextGetter>& rq_context, 452 const scoped_refptr<net::URLRequestContextGetter>& rq_context) {
458 const GURL& storage_url) {
459 DCHECK_CURRENTLY_ON(WebThread::IO); 453 DCHECK_CURRENTLY_ON(WebThread::IO);
460 net::CookieStore* cookie_store = 454 net::CookieStore* cookie_store =
461 rq_context->GetURLRequestContext()->cookie_store(); 455 rq_context->GetURLRequestContext()->cookie_store();
462 if (storage_url.is_empty()) { 456 cookie_store->DeleteAllCreatedBetweenAsync(
463 cookie_store->DeleteAllCreatedBetweenAsync( 457 delete_begin_, delete_end_,
464 delete_begin_, delete_end_, 458 base::Bind(&IOSChromeBrowsingDataRemover::OnClearedCookies,
465 base::Bind(&IOSChromeBrowsingDataRemover::OnClearedCookies, 459 base::Unretained(this)));
466 base::Unretained(this)));
467 } else {
468 cookie_store->DeleteAllCreatedBetweenForHostAsync(
469 delete_begin_, delete_end_, storage_url,
470 base::Bind(&IOSChromeBrowsingDataRemover::OnClearedCookies,
471 base::Unretained(this)));
472 }
473 } 460 }
474 461
475 void IOSChromeBrowsingDataRemover::ClearChannelIDsOnIOThread( 462 void IOSChromeBrowsingDataRemover::ClearChannelIDsOnIOThread(
476 const scoped_refptr<net::URLRequestContextGetter>& rq_context) { 463 const scoped_refptr<net::URLRequestContextGetter>& rq_context) {
477 DCHECK_CURRENTLY_ON(WebThread::IO); 464 DCHECK_CURRENTLY_ON(WebThread::IO);
478 net::ChannelIDService* channel_id_service = 465 net::ChannelIDService* channel_id_service =
479 rq_context->GetURLRequestContext()->channel_id_service(); 466 rq_context->GetURLRequestContext()->channel_id_service();
480 channel_id_service->GetChannelIDStore()->DeleteAllCreatedBetween( 467 channel_id_service->GetChannelIDStore()->DeleteAllCreatedBetween(
481 delete_begin_, delete_end_, 468 delete_begin_, delete_end_,
482 base::Bind(&IOSChromeBrowsingDataRemover::OnClearedChannelIDsOnIOThread, 469 base::Bind(&IOSChromeBrowsingDataRemover::OnClearedChannelIDsOnIOThread,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 waiting_for_clear_autofill_origin_urls_ = false; 502 waiting_for_clear_autofill_origin_urls_ = false;
516 NotifyAndDeleteIfDone(); 503 NotifyAndDeleteIfDone();
517 } 504 }
518 505
519 // static 506 // static
520 IOSChromeBrowsingDataRemover::CallbackSubscription 507 IOSChromeBrowsingDataRemover::CallbackSubscription
521 IOSChromeBrowsingDataRemover::RegisterOnBrowsingDataRemovedCallback( 508 IOSChromeBrowsingDataRemover::RegisterOnBrowsingDataRemovedCallback(
522 const IOSChromeBrowsingDataRemover::Callback& callback) { 509 const IOSChromeBrowsingDataRemover::Callback& callback) {
523 return GetOnBrowsingDataRemovedCallbacks()->Add(callback); 510 return GetOnBrowsingDataRemovedCallbacks()->Add(callback);
524 } 511 }
OLDNEW
« no previous file with comments | « ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h ('k') | ios/net/cookies/cookie_store_ios.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698