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

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

Issue 7717023: Rename REMOVE_COOKIES to REMOVE_SITE_DATA (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Dropping REMOVE_COOKIES in favor of REMOVE_SITE_DATA. Created 9 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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_remover.h" 5 #include "chrome/browser/browsing_data_remover.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/callback.h" 11 #include "base/callback.h"
12 #include "base/file_util.h" 12 #include "base/file_util.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/platform_file.h" 14 #include "base/platform_file.h"
15 #include "chrome/browser/autofill/personal_data_manager.h" 15 #include "chrome/browser/autofill/personal_data_manager.h"
16 #include "chrome/browser/browser_process.h" 16 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/extensions/extension_service.h" 17 #include "chrome/browser/extensions/extension_service.h"
18 #include "chrome/browser/extensions/extension_special_storage_policy.h" 18 #include "chrome/browser/extensions/extension_special_storage_policy.h"
19 #include "chrome/browser/history/history.h" 19 #include "chrome/browser/history/history.h"
20 #include "chrome/browser/io_thread.h" 20 #include "chrome/browser/io_thread.h"
21 #include "chrome/browser/net/chrome_net_log.h" 21 #include "chrome/browser/net/chrome_net_log.h"
22 #include "chrome/browser/net/chrome_url_request_context.h" 22 #include "chrome/browser/net/chrome_url_request_context.h"
23 #include "chrome/browser/password_manager/password_store.h" 23 #include "chrome/browser/password_manager/password_store.h"
24 #include "chrome/browser/plugin_data_remover.h" 24 #include "chrome/browser/plugin_data_remover.h"
25 #include "chrome/browser/prefs/pref_member.h"
25 #include "chrome/browser/prerender/prerender_manager.h" 26 #include "chrome/browser/prerender/prerender_manager.h"
26 #include "chrome/browser/profiles/profile.h" 27 #include "chrome/browser/profiles/profile.h"
27 #include "chrome/browser/renderer_host/web_cache_manager.h" 28 #include "chrome/browser/renderer_host/web_cache_manager.h"
28 #include "chrome/browser/search_engines/template_url_service.h" 29 #include "chrome/browser/search_engines/template_url_service.h"
29 #include "chrome/browser/search_engines/template_url_service_factory.h" 30 #include "chrome/browser/search_engines/template_url_service_factory.h"
30 #include "chrome/browser/sessions/session_service.h" 31 #include "chrome/browser/sessions/session_service.h"
31 #include "chrome/browser/sessions/session_service_factory.h" 32 #include "chrome/browser/sessions/session_service_factory.h"
32 #include "chrome/browser/sessions/tab_restore_service.h" 33 #include "chrome/browser/sessions/tab_restore_service.h"
33 #include "chrome/browser/sessions/tab_restore_service_factory.h" 34 #include "chrome/browser/sessions/tab_restore_service_factory.h"
34 #include "chrome/browser/webdata/web_data_service.h" 35 #include "chrome/browser/webdata/web_data_service.h"
35 #include "chrome/common/chrome_notification_types.h" 36 #include "chrome/common/chrome_notification_types.h"
37 #include "chrome/common/pref_names.h"
36 #include "chrome/common/url_constants.h" 38 #include "chrome/common/url_constants.h"
37 #include "content/browser/browser_thread.h" 39 #include "content/browser/browser_thread.h"
38 #include "content/browser/download/download_manager.h" 40 #include "content/browser/download/download_manager.h"
39 #include "content/browser/in_process_webkit/webkit_context.h" 41 #include "content/browser/in_process_webkit/webkit_context.h"
40 #include "content/browser/user_metrics.h" 42 #include "content/browser/user_metrics.h"
41 #include "content/common/notification_source.h" 43 #include "content/common/notification_source.h"
42 #include "net/base/cookie_monster.h" 44 #include "net/base/cookie_monster.h"
43 #include "net/base/net_errors.h" 45 #include "net/base/net_errors.h"
44 #include "net/base/transport_security_state.h" 46 #include "net/base/transport_security_state.h"
45 #include "net/disk_cache/disk_cache.h" 47 #include "net/disk_cache/disk_cache.h"
(...skipping 23 matching lines...) Expand all
69 cache_(NULL), 71 cache_(NULL),
70 main_context_getter_(profile->GetRequestContext()), 72 main_context_getter_(profile->GetRequestContext()),
71 media_context_getter_(profile->GetRequestContextForMedia()), 73 media_context_getter_(profile->GetRequestContextForMedia()),
72 waiting_for_clear_history_(false), 74 waiting_for_clear_history_(false),
73 waiting_for_clear_quota_managed_data_(false), 75 waiting_for_clear_quota_managed_data_(false),
74 waiting_for_clear_networking_history_(false), 76 waiting_for_clear_networking_history_(false),
75 waiting_for_clear_cookies_(false), 77 waiting_for_clear_cookies_(false),
76 waiting_for_clear_cache_(false), 78 waiting_for_clear_cache_(false),
77 waiting_for_clear_lso_data_(false) { 79 waiting_for_clear_lso_data_(false) {
78 DCHECK(profile); 80 DCHECK(profile);
81 clear_plugin_lso_data_enabled_.Init(prefs::kClearPluginLSODataEnabled,
82 profile_->GetPrefs(),
83 NULL);
79 } 84 }
80 85
81 BrowsingDataRemover::BrowsingDataRemover(Profile* profile, 86 BrowsingDataRemover::BrowsingDataRemover(Profile* profile,
82 TimePeriod time_period, 87 TimePeriod time_period,
83 base::Time delete_end) 88 base::Time delete_end)
84 : profile_(profile), 89 : profile_(profile),
85 quota_manager_(NULL), 90 quota_manager_(NULL),
86 special_storage_policy_(profile->GetExtensionSpecialStoragePolicy()), 91 special_storage_policy_(profile->GetExtensionSpecialStoragePolicy()),
87 delete_begin_(CalculateBeginDeleteTime(time_period)), 92 delete_begin_(CalculateBeginDeleteTime(time_period)),
88 delete_end_(delete_end), 93 delete_end_(delete_end),
89 ALLOW_THIS_IN_INITIALIZER_LIST(cache_callback_( 94 ALLOW_THIS_IN_INITIALIZER_LIST(cache_callback_(
90 this, &BrowsingDataRemover::DoClearCache)), 95 this, &BrowsingDataRemover::DoClearCache)),
91 next_cache_state_(STATE_NONE), 96 next_cache_state_(STATE_NONE),
92 cache_(NULL), 97 cache_(NULL),
93 main_context_getter_(profile->GetRequestContext()), 98 main_context_getter_(profile->GetRequestContext()),
94 media_context_getter_(profile->GetRequestContextForMedia()), 99 media_context_getter_(profile->GetRequestContextForMedia()),
95 waiting_for_clear_history_(false), 100 waiting_for_clear_history_(false),
96 waiting_for_clear_quota_managed_data_(false), 101 waiting_for_clear_quota_managed_data_(false),
97 waiting_for_clear_networking_history_(false), 102 waiting_for_clear_networking_history_(false),
98 waiting_for_clear_cookies_(false), 103 waiting_for_clear_cookies_(false),
99 waiting_for_clear_cache_(false), 104 waiting_for_clear_cache_(false),
100 waiting_for_clear_lso_data_(false) { 105 waiting_for_clear_lso_data_(false) {
101 DCHECK(profile); 106 DCHECK(profile);
107 clear_plugin_lso_data_enabled_.Init(prefs::kClearPluginLSODataEnabled,
108 profile_->GetPrefs(),
109 NULL);
102 } 110 }
103 111
104 BrowsingDataRemover::~BrowsingDataRemover() { 112 BrowsingDataRemover::~BrowsingDataRemover() {
105 DCHECK(all_done()); 113 DCHECK(all_done());
106 } 114 }
107 115
108 // Static. 116 // Static.
109 void BrowsingDataRemover::set_removing(bool removing) { 117 void BrowsingDataRemover::set_removing(bool removing) {
110 DCHECK(removing_ != removing); 118 DCHECK(removing_ != removing);
111 removing_ = removing; 119 removing_ = removing;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 UserMetrics::RecordAction(UserMetricsAction("ClearBrowsingData_Cookies")); 197 UserMetrics::RecordAction(UserMetricsAction("ClearBrowsingData_Cookies"));
190 // Since we are running on the UI thread don't call GetURLRequestContext(). 198 // Since we are running on the UI thread don't call GetURLRequestContext().
191 net::URLRequestContextGetter* rq_context = profile_->GetRequestContext(); 199 net::URLRequestContextGetter* rq_context = profile_->GetRequestContext();
192 if (rq_context) { 200 if (rq_context) {
193 waiting_for_clear_cookies_ = true; 201 waiting_for_clear_cookies_ = true;
194 BrowserThread::PostTask( 202 BrowserThread::PostTask(
195 BrowserThread::IO, FROM_HERE, 203 BrowserThread::IO, FROM_HERE,
196 base::Bind(&BrowsingDataRemover::ClearCookiesOnIOThread, 204 base::Bind(&BrowsingDataRemover::ClearCookiesOnIOThread,
197 base::Unretained(this), base::Unretained(rq_context))); 205 base::Unretained(this), base::Unretained(rq_context)));
198 } 206 }
207 }
199 208
200 // REMOVE_COOKIES is actually "cookies and other site data" so we make sure 209 if (remove_mask & REMOVE_LOCAL_STORAGE) {
201 // to remove other data such local databases, STS state, etc. These only can 210 // Remove data such as local databases, STS state, etc. These only can
202 // be removed if a WEBKIT thread exists, so check that first: 211 // be removed if a WEBKIT thread exists, so check that first:
203 if (BrowserThread::IsMessageLoopValid(BrowserThread::WEBKIT)) { 212 if (BrowserThread::IsMessageLoopValid(BrowserThread::WEBKIT)) {
204 // We assume the end time is now. 213 // We assume the end time is now.
205 profile_->GetWebKitContext()->DeleteDataModifiedSince(delete_begin_); 214 profile_->GetWebKitContext()->DeleteDataModifiedSince(delete_begin_);
206 } 215 }
216 }
207 217
208 // We'll start by using the quota system to clear out AppCaches, WebSQL DBs, 218 if (remove_mask & REMOVE_INDEXEDDB || remove_mask & REMOVE_WEBSQL ||
209 // and File Systems. 219 remove_mask & REMOVE_APPCACHE || remove_mask & REMOVE_FILE_SYSTEMS) {
220 // TODO(mkwst): At the moment, we don't have the ability to pass a mask into
221 // QuotaManager. Until then, we'll clear all quota-managed data types if any
222 // ought to be cleared.
210 quota_manager_ = profile_->GetQuotaManager(); 223 quota_manager_ = profile_->GetQuotaManager();
211 if (quota_manager_) { 224 if (quota_manager_) {
212 waiting_for_clear_quota_managed_data_ = true; 225 waiting_for_clear_quota_managed_data_ = true;
213 BrowserThread::PostTask( 226 BrowserThread::PostTask(
214 BrowserThread::IO, FROM_HERE, 227 BrowserThread::IO, FROM_HERE,
215 NewRunnableMethod( 228 NewRunnableMethod(
216 this, 229 this,
217 &BrowsingDataRemover::ClearQuotaManagedDataOnIOThread)); 230 &BrowsingDataRemover::ClearQuotaManagedDataOnIOThread));
218 } 231 }
232 }
219 233
220 if (profile_->GetTransportSecurityState()) { 234 if (remove_mask & REMOVE_LSO_DATA && *clear_plugin_lso_data_enabled_) {
221 BrowserThread::PostTask( 235 UserMetrics::RecordAction(UserMetricsAction("ClearBrowsingData_LSOData"));
222 BrowserThread::IO, FROM_HERE, 236
223 NewRunnableMethod( 237 waiting_for_clear_lso_data_ = true;
224 profile_->GetTransportSecurityState(), 238 if (!plugin_data_remover_.get())
225 &net::TransportSecurityState::DeleteSince, 239 plugin_data_remover_ = new PluginDataRemover(profile_);
226 delete_begin_)); 240 base::WaitableEvent* event =
227 } 241 plugin_data_remover_->StartRemoving(delete_begin_);
242 watcher_.StartWatching(event, this);
228 } 243 }
229 244
230 if (remove_mask & REMOVE_PASSWORDS) { 245 if (remove_mask & REMOVE_PASSWORDS) {
231 UserMetrics::RecordAction(UserMetricsAction("ClearBrowsingData_Passwords")); 246 UserMetrics::RecordAction(UserMetricsAction("ClearBrowsingData_Passwords"));
232 PasswordStore* password_store = 247 PasswordStore* password_store =
233 profile_->GetPasswordStore(Profile::EXPLICIT_ACCESS); 248 profile_->GetPasswordStore(Profile::EXPLICIT_ACCESS);
234 249
235 if (password_store) 250 if (password_store)
236 password_store->RemoveLoginsCreatedBetween(delete_begin_, delete_end_); 251 password_store->RemoveLoginsCreatedBetween(delete_begin_, delete_end_);
237 } 252 }
(...skipping 30 matching lines...) Expand all
268 // The PrerenderManager may have a page actively being prerendered, which 283 // The PrerenderManager may have a page actively being prerendered, which
269 // is essentially a preemptively cached page. 284 // is essentially a preemptively cached page.
270 prerender::PrerenderManager* prerender_manager = 285 prerender::PrerenderManager* prerender_manager =
271 profile_->GetPrerenderManager(); 286 profile_->GetPrerenderManager();
272 if (prerender_manager) { 287 if (prerender_manager) {
273 prerender_manager->ClearData( 288 prerender_manager->ClearData(
274 prerender::PrerenderManager::CLEAR_PRERENDER_CONTENTS); 289 prerender::PrerenderManager::CLEAR_PRERENDER_CONTENTS);
275 } 290 }
276 } 291 }
277 292
278 if (remove_mask & REMOVE_LSO_DATA) { 293 // Also delete cached TransportSecurityState data.
Bernhard Bauer 2011/09/05 11:53:01 Can you add that to the CL description?
Mike West 2011/09/05 12:06:14 Done.
279 UserMetrics::RecordAction(UserMetricsAction("ClearBrowsingData_LSOData")); 294 if (profile_->GetTransportSecurityState()) {
280 295 BrowserThread::PostTask(
281 waiting_for_clear_lso_data_ = true; 296 BrowserThread::IO, FROM_HERE,
282 if (!plugin_data_remover_.get()) 297 NewRunnableMethod(
283 plugin_data_remover_ = new PluginDataRemover(profile_); 298 profile_->GetTransportSecurityState(),
284 base::WaitableEvent* event = 299 &net::TransportSecurityState::DeleteSince,
285 plugin_data_remover_->StartRemoving(delete_begin_); 300 delete_begin_));
286 watcher_.StartWatching(event, this);
287 } 301 }
288 302
289 NotifyAndDeleteIfDone(); 303 NotifyAndDeleteIfDone();
290 } 304 }
291 305
292 void BrowsingDataRemover::AddObserver(Observer* observer) { 306 void BrowsingDataRemover::AddObserver(Observer* observer) {
293 observer_list_.AddObserver(observer); 307 observer_list_.AddObserver(observer);
294 } 308 }
295 309
296 void BrowsingDataRemover::RemoveObserver(Observer* observer) { 310 void BrowsingDataRemover::RemoveObserver(Observer* observer) {
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 GetURLRequestContext()->cookie_store()->GetCookieMonster(); 576 GetURLRequestContext()->cookie_store()->GetCookieMonster();
563 if (cookie_monster) { 577 if (cookie_monster) {
564 cookie_monster->DeleteAllCreatedBetweenAsync( 578 cookie_monster->DeleteAllCreatedBetweenAsync(
565 delete_begin_, delete_end_, true, 579 delete_begin_, delete_end_, true,
566 base::Bind(&BrowsingDataRemover::OnClearedCookies, 580 base::Bind(&BrowsingDataRemover::OnClearedCookies,
567 base::Unretained(this))); 581 base::Unretained(this)));
568 } else { 582 } else {
569 OnClearedCookies(0); 583 OnClearedCookies(0);
570 } 584 }
571 } 585 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698