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 |