OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_indexed_db_helper.h" | 5 #include "chrome/browser/browsing_data_indexed_db_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/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
144 | 144 |
145 BrowsingDataIndexedDBHelper::IndexedDBInfo::~IndexedDBInfo() {} | 145 BrowsingDataIndexedDBHelper::IndexedDBInfo::~IndexedDBInfo() {} |
146 | 146 |
147 // static | 147 // static |
148 BrowsingDataIndexedDBHelper* BrowsingDataIndexedDBHelper::Create( | 148 BrowsingDataIndexedDBHelper* BrowsingDataIndexedDBHelper::Create( |
149 Profile* profile) { | 149 Profile* profile) { |
150 return new BrowsingDataIndexedDBHelperImpl(profile); | 150 return new BrowsingDataIndexedDBHelperImpl(profile); |
151 } | 151 } |
152 | 152 |
153 CannedBrowsingDataIndexedDBHelper:: | 153 CannedBrowsingDataIndexedDBHelper:: |
154 PendingIndexedDBInfo::PendingIndexedDBInfo() { | |
155 } | |
156 | |
157 CannedBrowsingDataIndexedDBHelper:: | |
158 PendingIndexedDBInfo::PendingIndexedDBInfo(const GURL& origin, | 154 PendingIndexedDBInfo::PendingIndexedDBInfo(const GURL& origin, |
159 const string16& description) | 155 const string16& name) |
160 : origin(origin), | 156 : origin(origin), |
161 description(description) { | 157 name(name) { |
162 } | 158 } |
163 | 159 |
164 CannedBrowsingDataIndexedDBHelper:: | 160 CannedBrowsingDataIndexedDBHelper:: |
165 PendingIndexedDBInfo::~PendingIndexedDBInfo() { | 161 PendingIndexedDBInfo::~PendingIndexedDBInfo() { |
166 } | 162 } |
167 | 163 |
164 bool CannedBrowsingDataIndexedDBHelper::PendingIndexedDBInfo::operator<( | |
165 const PendingIndexedDBInfo& other) const { | |
166 if (origin == other.origin) | |
167 return name < other.name; | |
168 return origin < other.origin; | |
169 } | |
170 | |
168 CannedBrowsingDataIndexedDBHelper::CannedBrowsingDataIndexedDBHelper() | 171 CannedBrowsingDataIndexedDBHelper::CannedBrowsingDataIndexedDBHelper() |
169 : is_fetching_(false) { | 172 : is_fetching_(false) { |
170 } | 173 } |
171 | 174 |
175 CannedBrowsingDataIndexedDBHelper::~CannedBrowsingDataIndexedDBHelper() {} | |
176 | |
172 CannedBrowsingDataIndexedDBHelper* CannedBrowsingDataIndexedDBHelper::Clone() { | 177 CannedBrowsingDataIndexedDBHelper* CannedBrowsingDataIndexedDBHelper::Clone() { |
173 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 178 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
174 CannedBrowsingDataIndexedDBHelper* clone = | 179 CannedBrowsingDataIndexedDBHelper* clone = |
175 new CannedBrowsingDataIndexedDBHelper(); | 180 new CannedBrowsingDataIndexedDBHelper(); |
176 | 181 |
177 base::AutoLock auto_lock(lock_); | 182 base::AutoLock auto_lock(lock_); |
178 clone->pending_indexed_db_info_ = pending_indexed_db_info_; | 183 clone->pending_indexed_db_info_ = pending_indexed_db_info_; |
179 clone->indexed_db_info_ = indexed_db_info_; | 184 clone->indexed_db_info_ = indexed_db_info_; |
180 return clone; | 185 return clone; |
181 } | 186 } |
182 | 187 |
183 void CannedBrowsingDataIndexedDBHelper::AddIndexedDB( | 188 void CannedBrowsingDataIndexedDBHelper::AddIndexedDB( |
184 const GURL& origin, const string16& description) { | 189 const GURL& origin, const string16& name) { |
Bernhard Bauer
2012/05/11 13:05:00
This doesn't match the declared signature anymore.
markusheintz_
2012/05/14 11:00:54
Done.
| |
185 if (!BrowsingDataHelper::HasValidScheme(origin)) | 190 if (!BrowsingDataHelper::HasValidScheme(origin)) |
186 return; // Non-websafe state is not considered browsing data. | 191 return; // Non-websafe state is not considered browsing data. |
187 | 192 |
188 base::AutoLock auto_lock(lock_); | 193 base::AutoLock auto_lock(lock_); |
189 pending_indexed_db_info_.push_back(PendingIndexedDBInfo(origin, description)); | 194 pending_indexed_db_info_.insert(PendingIndexedDBInfo(origin, name)); |
190 } | 195 } |
191 | 196 |
192 void CannedBrowsingDataIndexedDBHelper::Reset() { | 197 void CannedBrowsingDataIndexedDBHelper::Reset() { |
193 base::AutoLock auto_lock(lock_); | 198 base::AutoLock auto_lock(lock_); |
194 indexed_db_info_.clear(); | 199 indexed_db_info_.clear(); |
195 pending_indexed_db_info_.clear(); | 200 pending_indexed_db_info_.clear(); |
196 } | 201 } |
197 | 202 |
198 bool CannedBrowsingDataIndexedDBHelper::empty() const { | 203 bool CannedBrowsingDataIndexedDBHelper::empty() const { |
199 base::AutoLock auto_lock(lock_); | 204 base::AutoLock auto_lock(lock_); |
200 return indexed_db_info_.empty() && pending_indexed_db_info_.empty(); | 205 return indexed_db_info_.empty() && pending_indexed_db_info_.empty(); |
201 } | 206 } |
202 | 207 |
203 size_t CannedBrowsingDataIndexedDBHelper::GetIndexedDBCount() const { | 208 size_t CannedBrowsingDataIndexedDBHelper::GetIndexedDBCount() const { |
209 base::AutoLock auto_lock(lock_); | |
204 return pending_indexed_db_info_.size(); | 210 return pending_indexed_db_info_.size(); |
205 } | 211 } |
206 | 212 |
213 const std::set<CannedBrowsingDataIndexedDBHelper::PendingIndexedDBInfo>& | |
214 CannedBrowsingDataIndexedDBHelper::GetIndexedDBInfo() const { | |
215 base::AutoLock auto_lock(lock_); | |
216 return pending_indexed_db_info_; | |
217 } | |
218 | |
207 void CannedBrowsingDataIndexedDBHelper::StartFetching( | 219 void CannedBrowsingDataIndexedDBHelper::StartFetching( |
208 const base::Callback<void(const std::list<IndexedDBInfo>&)>& callback) { | 220 const base::Callback<void(const std::list<IndexedDBInfo>&)>& callback) { |
209 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 221 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
210 DCHECK(!is_fetching_); | 222 DCHECK(!is_fetching_); |
211 DCHECK_EQ(false, callback.is_null()); | 223 DCHECK_EQ(false, callback.is_null()); |
212 | 224 |
213 is_fetching_ = true; | 225 is_fetching_ = true; |
214 completion_callback_ = callback; | 226 completion_callback_ = callback; |
215 BrowserThread::PostTask( | 227 BrowserThread::PostTask( |
216 BrowserThread::WEBKIT_DEPRECATED, FROM_HERE, | 228 BrowserThread::WEBKIT_DEPRECATED, FROM_HERE, |
217 base::Bind( | 229 base::Bind( |
218 &CannedBrowsingDataIndexedDBHelper::ConvertPendingInfoInWebKitThread, | 230 &CannedBrowsingDataIndexedDBHelper::ConvertPendingInfoInWebKitThread, |
219 this)); | 231 this)); |
220 } | 232 } |
221 | 233 |
222 CannedBrowsingDataIndexedDBHelper::~CannedBrowsingDataIndexedDBHelper() {} | |
223 | |
224 void CannedBrowsingDataIndexedDBHelper::ConvertPendingInfoInWebKitThread() { | 234 void CannedBrowsingDataIndexedDBHelper::ConvertPendingInfoInWebKitThread() { |
225 base::AutoLock auto_lock(lock_); | 235 base::AutoLock auto_lock(lock_); |
226 for (std::list<PendingIndexedDBInfo>::const_iterator | 236 indexed_db_info_.clear(); |
237 for (std::set<PendingIndexedDBInfo>::const_iterator | |
227 info = pending_indexed_db_info_.begin(); | 238 info = pending_indexed_db_info_.begin(); |
228 info != pending_indexed_db_info_.end(); ++info) { | 239 info != pending_indexed_db_info_.end(); ++info) { |
229 bool duplicate = false; | |
230 for (std::list<IndexedDBInfo>::iterator | |
231 indexed_db = indexed_db_info_.begin(); | |
232 indexed_db != indexed_db_info_.end(); ++indexed_db) { | |
233 if (indexed_db->origin == info->origin) { | |
234 duplicate = true; | |
235 break; | |
236 } | |
237 } | |
238 if (duplicate) | |
239 continue; | |
240 | |
241 indexed_db_info_.push_back(IndexedDBInfo( | 240 indexed_db_info_.push_back(IndexedDBInfo( |
242 info->origin, | 241 info->origin, |
243 0, | 242 0, |
244 base::Time())); | 243 base::Time())); |
245 } | 244 } |
246 pending_indexed_db_info_.clear(); | |
247 | 245 |
248 BrowserThread::PostTask( | 246 BrowserThread::PostTask( |
249 BrowserThread::UI, FROM_HERE, | 247 BrowserThread::UI, FROM_HERE, |
250 base::Bind(&CannedBrowsingDataIndexedDBHelper::NotifyInUIThread, this)); | 248 base::Bind(&CannedBrowsingDataIndexedDBHelper::NotifyInUIThread, this)); |
251 } | 249 } |
252 | 250 |
253 void CannedBrowsingDataIndexedDBHelper::NotifyInUIThread() { | 251 void CannedBrowsingDataIndexedDBHelper::NotifyInUIThread() { |
254 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 252 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
255 DCHECK(is_fetching_); | 253 DCHECK(is_fetching_); |
256 | 254 |
257 completion_callback_.Run(indexed_db_info_); | 255 completion_callback_.Run(indexed_db_info_); |
258 completion_callback_.Reset(); | 256 completion_callback_.Reset(); |
259 is_fetching_ = false; | 257 is_fetching_ = false; |
260 } | 258 } |
OLD | NEW |