| OLD | NEW |
| 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_database_helper.h" | 5 #include "chrome/browser/browsing_data_database_helper.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 | 41 |
| 42 BrowsingDataDatabaseHelper::DatabaseInfo::~DatabaseInfo() {} | 42 BrowsingDataDatabaseHelper::DatabaseInfo::~DatabaseInfo() {} |
| 43 | 43 |
| 44 bool BrowsingDataDatabaseHelper::DatabaseInfo::IsFileSchemeData() { | 44 bool BrowsingDataDatabaseHelper::DatabaseInfo::IsFileSchemeData() { |
| 45 return StartsWithASCII(origin_identifier, | 45 return StartsWithASCII(origin_identifier, |
| 46 std::string(chrome::kFileScheme), | 46 std::string(chrome::kFileScheme), |
| 47 true); | 47 true); |
| 48 } | 48 } |
| 49 | 49 |
| 50 BrowsingDataDatabaseHelper::BrowsingDataDatabaseHelper(Profile* profile) | 50 BrowsingDataDatabaseHelper::BrowsingDataDatabaseHelper(Profile* profile) |
| 51 : completion_callback_(NULL), | 51 : is_fetching_(false), |
| 52 is_fetching_(false), | |
| 53 tracker_(profile->GetDatabaseTracker()) { | 52 tracker_(profile->GetDatabaseTracker()) { |
| 54 } | 53 } |
| 55 | 54 |
| 56 BrowsingDataDatabaseHelper::~BrowsingDataDatabaseHelper() { | 55 BrowsingDataDatabaseHelper::~BrowsingDataDatabaseHelper() { |
| 57 } | 56 } |
| 58 | 57 |
| 59 void BrowsingDataDatabaseHelper::StartFetching( | 58 void BrowsingDataDatabaseHelper::StartFetching( |
| 60 Callback1<const std::list<DatabaseInfo>& >::Type* callback) { | 59 const base::Callback<void(const std::list<DatabaseInfo>&)>& callback) { |
| 61 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 60 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 62 DCHECK(!is_fetching_); | 61 DCHECK(!is_fetching_); |
| 63 DCHECK(callback); | 62 DCHECK_EQ(false, callback.is_null()); |
| 63 |
| 64 is_fetching_ = true; | 64 is_fetching_ = true; |
| 65 database_info_.clear(); | 65 database_info_.clear(); |
| 66 completion_callback_.reset(callback); | 66 completion_callback_ = callback; |
| 67 BrowserThread::PostTask( | 67 BrowserThread::PostTask( |
| 68 BrowserThread::FILE, FROM_HERE, | 68 BrowserThread::FILE, FROM_HERE, |
| 69 base::Bind(&BrowsingDataDatabaseHelper::FetchDatabaseInfoOnFileThread, | 69 base::Bind(&BrowsingDataDatabaseHelper::FetchDatabaseInfoOnFileThread, |
| 70 this)); | 70 this)); |
| 71 } | 71 } |
| 72 | 72 |
| 73 void BrowsingDataDatabaseHelper::CancelNotification() { | 73 void BrowsingDataDatabaseHelper::CancelNotification() { |
| 74 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 74 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 75 completion_callback_.reset(NULL); | 75 completion_callback_.Reset(); |
| 76 } | 76 } |
| 77 | 77 |
| 78 void BrowsingDataDatabaseHelper::DeleteDatabase(const std::string& origin, | 78 void BrowsingDataDatabaseHelper::DeleteDatabase(const std::string& origin, |
| 79 const std::string& name) { | 79 const std::string& name) { |
| 80 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 80 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 81 BrowserThread::PostTask( | 81 BrowserThread::PostTask( |
| 82 BrowserThread::FILE, FROM_HERE, | 82 BrowserThread::FILE, FROM_HERE, |
| 83 base::Bind(&BrowsingDataDatabaseHelper::DeleteDatabaseOnFileThread, this, | 83 base::Bind(&BrowsingDataDatabaseHelper::DeleteDatabaseOnFileThread, this, |
| 84 origin, name)); | 84 origin, name)); |
| 85 } | 85 } |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 BrowserThread::PostTask( | 123 BrowserThread::PostTask( |
| 124 BrowserThread::UI, FROM_HERE, | 124 BrowserThread::UI, FROM_HERE, |
| 125 base::Bind(&BrowsingDataDatabaseHelper::NotifyInUIThread, this)); | 125 base::Bind(&BrowsingDataDatabaseHelper::NotifyInUIThread, this)); |
| 126 } | 126 } |
| 127 | 127 |
| 128 void BrowsingDataDatabaseHelper::NotifyInUIThread() { | 128 void BrowsingDataDatabaseHelper::NotifyInUIThread() { |
| 129 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 129 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 130 DCHECK(is_fetching_); | 130 DCHECK(is_fetching_); |
| 131 // Note: completion_callback_ mutates only in the UI thread, so it's safe to | 131 // Note: completion_callback_ mutates only in the UI thread, so it's safe to |
| 132 // test it here. | 132 // test it here. |
| 133 if (completion_callback_ != NULL) { | 133 if (!completion_callback_.is_null()) { |
| 134 completion_callback_->Run(database_info_); | 134 completion_callback_.Run(database_info_); |
| 135 completion_callback_.reset(); | 135 completion_callback_.Reset(); |
| 136 } | 136 } |
| 137 is_fetching_ = false; | 137 is_fetching_ = false; |
| 138 database_info_.clear(); | 138 database_info_.clear(); |
| 139 } | 139 } |
| 140 | 140 |
| 141 void BrowsingDataDatabaseHelper::DeleteDatabaseOnFileThread( | 141 void BrowsingDataDatabaseHelper::DeleteDatabaseOnFileThread( |
| 142 const std::string& origin, | 142 const std::string& origin, |
| 143 const std::string& name) { | 143 const std::string& name) { |
| 144 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 144 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 145 if (!tracker_.get()) | 145 if (!tracker_.get()) |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 database_info_.clear(); | 191 database_info_.clear(); |
| 192 pending_database_info_.clear(); | 192 pending_database_info_.clear(); |
| 193 } | 193 } |
| 194 | 194 |
| 195 bool CannedBrowsingDataDatabaseHelper::empty() const { | 195 bool CannedBrowsingDataDatabaseHelper::empty() const { |
| 196 base::AutoLock auto_lock(lock_); | 196 base::AutoLock auto_lock(lock_); |
| 197 return database_info_.empty() && pending_database_info_.empty(); | 197 return database_info_.empty() && pending_database_info_.empty(); |
| 198 } | 198 } |
| 199 | 199 |
| 200 void CannedBrowsingDataDatabaseHelper::StartFetching( | 200 void CannedBrowsingDataDatabaseHelper::StartFetching( |
| 201 Callback1<const std::list<DatabaseInfo>& >::Type* callback) { | 201 const base::Callback<void(const std::list<DatabaseInfo>&)>& callback) { |
| 202 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 202 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 203 DCHECK(!is_fetching_); | 203 DCHECK(!is_fetching_); |
| 204 DCHECK(callback); | 204 DCHECK_EQ(false, callback.is_null()); |
| 205 |
| 205 is_fetching_ = true; | 206 is_fetching_ = true; |
| 206 completion_callback_.reset(callback); | 207 completion_callback_ = callback; |
| 207 BrowserThread::PostTask( | 208 BrowserThread::PostTask( |
| 208 BrowserThread::WEBKIT, FROM_HERE, | 209 BrowserThread::WEBKIT, FROM_HERE, |
| 209 base::Bind(&CannedBrowsingDataDatabaseHelper::ConvertInfoInWebKitThread, | 210 base::Bind(&CannedBrowsingDataDatabaseHelper::ConvertInfoInWebKitThread, |
| 210 this)); | 211 this)); |
| 211 } | 212 } |
| 212 | 213 |
| 213 CannedBrowsingDataDatabaseHelper::~CannedBrowsingDataDatabaseHelper() {} | 214 CannedBrowsingDataDatabaseHelper::~CannedBrowsingDataDatabaseHelper() {} |
| 214 | 215 |
| 215 void CannedBrowsingDataDatabaseHelper::ConvertInfoInWebKitThread() { | 216 void CannedBrowsingDataDatabaseHelper::ConvertInfoInWebKitThread() { |
| 216 base::AutoLock auto_lock(lock_); | 217 base::AutoLock auto_lock(lock_); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 243 web_security_origin.toString().utf8(), | 244 web_security_origin.toString().utf8(), |
| 244 0, | 245 0, |
| 245 base::Time())); | 246 base::Time())); |
| 246 } | 247 } |
| 247 pending_database_info_.clear(); | 248 pending_database_info_.clear(); |
| 248 | 249 |
| 249 BrowserThread::PostTask( | 250 BrowserThread::PostTask( |
| 250 BrowserThread::UI, FROM_HERE, | 251 BrowserThread::UI, FROM_HERE, |
| 251 base::Bind(&CannedBrowsingDataDatabaseHelper::NotifyInUIThread, this)); | 252 base::Bind(&CannedBrowsingDataDatabaseHelper::NotifyInUIThread, this)); |
| 252 } | 253 } |
| OLD | NEW |