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

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

Issue 7040015: Add a hook to clear Gears Plugin Data in the "Clear browsing data" tool. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: shutdown hook Created 9 years, 7 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
« no previous file with comments | « chrome/browser/browsing_data_remover.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/callback.h" 10 #include "base/callback.h"
11 #include "base/file_util.h"
11 #include "chrome/browser/autofill/personal_data_manager.h" 12 #include "chrome/browser/autofill/personal_data_manager.h"
12 #include "chrome/browser/browser_process.h" 13 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/download/download_manager.h" 14 #include "chrome/browser/download/download_manager.h"
14 #include "chrome/browser/extensions/extension_service.h" 15 #include "chrome/browser/extensions/extension_service.h"
15 #include "chrome/browser/extensions/extension_special_storage_policy.h" 16 #include "chrome/browser/extensions/extension_special_storage_policy.h"
16 #include "chrome/browser/history/history.h" 17 #include "chrome/browser/history/history.h"
17 #include "chrome/browser/io_thread.h" 18 #include "chrome/browser/io_thread.h"
18 #include "chrome/browser/net/chrome_net_log.h" 19 #include "chrome/browser/net/chrome_net_log.h"
19 #include "chrome/browser/net/chrome_url_request_context.h" 20 #include "chrome/browser/net/chrome_url_request_context.h"
20 #include "chrome/browser/password_manager/password_store.h" 21 #include "chrome/browser/password_manager/password_store.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 this, &BrowsingDataRemover::OnAppCacheDeleted)), 66 this, &BrowsingDataRemover::OnAppCacheDeleted)),
66 appcaches_to_be_deleted_count_(0), 67 appcaches_to_be_deleted_count_(0),
67 next_cache_state_(STATE_NONE), 68 next_cache_state_(STATE_NONE),
68 cache_(NULL), 69 cache_(NULL),
69 main_context_getter_(profile->GetRequestContext()), 70 main_context_getter_(profile->GetRequestContext()),
70 media_context_getter_(profile->GetRequestContextForMedia()), 71 media_context_getter_(profile->GetRequestContextForMedia()),
71 waiting_for_clear_databases_(false), 72 waiting_for_clear_databases_(false),
72 waiting_for_clear_history_(false), 73 waiting_for_clear_history_(false),
73 waiting_for_clear_networking_history_(false), 74 waiting_for_clear_networking_history_(false),
74 waiting_for_clear_cache_(false), 75 waiting_for_clear_cache_(false),
75 waiting_for_clear_appcache_(false) { 76 waiting_for_clear_appcache_(false),
77 waiting_for_clear_gears_data_(false) {
76 DCHECK(profile); 78 DCHECK(profile);
77 } 79 }
78 80
79 BrowsingDataRemover::BrowsingDataRemover(Profile* profile, 81 BrowsingDataRemover::BrowsingDataRemover(Profile* profile,
80 TimePeriod time_period, 82 TimePeriod time_period,
81 base::Time delete_end) 83 base::Time delete_end)
82 : profile_(profile), 84 : profile_(profile),
83 special_storage_policy_(profile->GetExtensionSpecialStoragePolicy()), 85 special_storage_policy_(profile->GetExtensionSpecialStoragePolicy()),
84 delete_begin_(CalculateBeginDeleteTime(time_period)), 86 delete_begin_(CalculateBeginDeleteTime(time_period)),
85 delete_end_(delete_end), 87 delete_end_(delete_end),
86 ALLOW_THIS_IN_INITIALIZER_LIST(database_cleared_callback_( 88 ALLOW_THIS_IN_INITIALIZER_LIST(database_cleared_callback_(
87 this, &BrowsingDataRemover::OnClearedDatabases)), 89 this, &BrowsingDataRemover::OnClearedDatabases)),
88 ALLOW_THIS_IN_INITIALIZER_LIST(cache_callback_( 90 ALLOW_THIS_IN_INITIALIZER_LIST(cache_callback_(
89 this, &BrowsingDataRemover::DoClearCache)), 91 this, &BrowsingDataRemover::DoClearCache)),
90 ALLOW_THIS_IN_INITIALIZER_LIST(appcache_got_info_callback_( 92 ALLOW_THIS_IN_INITIALIZER_LIST(appcache_got_info_callback_(
91 this, &BrowsingDataRemover::OnGotAppCacheInfo)), 93 this, &BrowsingDataRemover::OnGotAppCacheInfo)),
92 ALLOW_THIS_IN_INITIALIZER_LIST(appcache_deleted_callback_( 94 ALLOW_THIS_IN_INITIALIZER_LIST(appcache_deleted_callback_(
93 this, &BrowsingDataRemover::OnAppCacheDeleted)), 95 this, &BrowsingDataRemover::OnAppCacheDeleted)),
94 appcaches_to_be_deleted_count_(0), 96 appcaches_to_be_deleted_count_(0),
95 next_cache_state_(STATE_NONE), 97 next_cache_state_(STATE_NONE),
96 cache_(NULL), 98 cache_(NULL),
97 main_context_getter_(profile->GetRequestContext()), 99 main_context_getter_(profile->GetRequestContext()),
98 media_context_getter_(profile->GetRequestContextForMedia()), 100 media_context_getter_(profile->GetRequestContextForMedia()),
99 waiting_for_clear_databases_(false), 101 waiting_for_clear_databases_(false),
100 waiting_for_clear_history_(false), 102 waiting_for_clear_history_(false),
101 waiting_for_clear_networking_history_(false), 103 waiting_for_clear_networking_history_(false),
102 waiting_for_clear_cache_(false), 104 waiting_for_clear_cache_(false),
103 waiting_for_clear_appcache_(false), 105 waiting_for_clear_appcache_(false),
104 waiting_for_clear_lso_data_(false) { 106 waiting_for_clear_lso_data_(false),
107 waiting_for_clear_gears_data_(false) {
105 DCHECK(profile); 108 DCHECK(profile);
106 } 109 }
107 110
108 BrowsingDataRemover::~BrowsingDataRemover() { 111 BrowsingDataRemover::~BrowsingDataRemover() {
109 DCHECK(all_done()); 112 DCHECK(all_done());
110 } 113 }
111 114
112 void BrowsingDataRemover::Remove(int remove_mask) { 115 void BrowsingDataRemover::Remove(int remove_mask) {
113 DCHECK(!removing_); 116 DCHECK(!removing_);
114 removing_ = true; 117 removing_ = true;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 &BrowsingDataRemover::ClearDatabasesOnFILEThread)); 197 &BrowsingDataRemover::ClearDatabasesOnFILEThread));
195 } 198 }
196 199
197 waiting_for_clear_appcache_ = true; 200 waiting_for_clear_appcache_ = true;
198 BrowserThread::PostTask( 201 BrowserThread::PostTask(
199 BrowserThread::IO, FROM_HERE, 202 BrowserThread::IO, FROM_HERE,
200 NewRunnableMethod( 203 NewRunnableMethod(
201 this, 204 this,
202 &BrowsingDataRemover::ClearAppCacheOnIOThread)); 205 &BrowsingDataRemover::ClearAppCacheOnIOThread));
203 206
207 waiting_for_clear_gears_data_ = true;
208 BrowserThread::PostTask(
209 BrowserThread::FILE, FROM_HERE,
210 NewRunnableMethod(
211 this,
212 &BrowsingDataRemover::ClearGearsDataOnFILEThread,
213 profile_->GetPath()));
214
204 // TODO(michaeln): delete temporary file system data too 215 // TODO(michaeln): delete temporary file system data too
205 216
206 BrowserThread::PostTask( 217 BrowserThread::PostTask(
207 BrowserThread::IO, FROM_HERE, 218 BrowserThread::IO, FROM_HERE,
208 NewRunnableMethod( 219 NewRunnableMethod(
209 profile_->GetTransportSecurityState(), 220 profile_->GetTransportSecurityState(),
210 &net::TransportSecurityState::DeleteSince, 221 &net::TransportSecurityState::DeleteSince,
211 delete_begin_)); 222 delete_begin_));
212 } 223 }
213 224
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 519
509 ChromeAppCacheService* BrowsingDataRemover::GetAppCacheService() { 520 ChromeAppCacheService* BrowsingDataRemover::GetAppCacheService() {
510 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 521 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
511 ChromeURLRequestContext* request_context = 522 ChromeURLRequestContext* request_context =
512 reinterpret_cast<ChromeURLRequestContext*>( 523 reinterpret_cast<ChromeURLRequestContext*>(
513 main_context_getter_->GetURLRequestContext()); 524 main_context_getter_->GetURLRequestContext());
514 return request_context ? request_context->appcache_service() 525 return request_context ? request_context->appcache_service()
515 : NULL; 526 : NULL;
516 } 527 }
517 528
529 // static
530 void BrowsingDataRemover::ClearGearsData(const FilePath& profile_dir) {
531 FilePath plugin_data = profile_dir.AppendASCII("Plugin Data");
532 if (file_util::DirectoryExists(plugin_data))
533 file_util::Delete(plugin_data, true);
534 }
535
536 void BrowsingDataRemover::OnClearedGearsData() {
537 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
538 bool result = BrowserThread::PostTask(
539 BrowserThread::UI, FROM_HERE,
540 NewRunnableMethod(this, &BrowsingDataRemover::OnClearedGearsData));
541 DCHECK(result);
542 return;
543 }
544 waiting_for_clear_gears_data_ = false;
545 NotifyAndDeleteIfDone();
546 }
547
548 void BrowsingDataRemover::ClearGearsDataOnFILEThread(
549 const FilePath& profile_dir) {
550 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
551 DCHECK(waiting_for_clear_gears_data_);
552
553 ClearGearsData(profile_dir);
554 OnClearedGearsData();
555 }
556
518 void BrowsingDataRemover::OnWaitableEventSignaled( 557 void BrowsingDataRemover::OnWaitableEventSignaled(
519 base::WaitableEvent* waitable_event) { 558 base::WaitableEvent* waitable_event) {
520 waiting_for_clear_lso_data_ = false; 559 waiting_for_clear_lso_data_ = false;
521 NotifyAndDeleteIfDone(); 560 NotifyAndDeleteIfDone();
522 } 561 }
OLDNEW
« no previous file with comments | « chrome/browser/browsing_data_remover.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698