OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "content/browser/indexed_db/indexed_db_database.h" | 5 #include "content/browser/indexed_db/indexed_db_database.h" |
6 | 6 |
7 #include <math.h> | 7 #include <math.h> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 1189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1200 base::Passed(&key_range), | 1200 base::Passed(&key_range), |
1201 callbacks)); | 1201 callbacks)); |
1202 } | 1202 } |
1203 | 1203 |
1204 void IndexedDBDatabase::DeleteRangeOperation( | 1204 void IndexedDBDatabase::DeleteRangeOperation( |
1205 int64 object_store_id, | 1205 int64 object_store_id, |
1206 scoped_ptr<IndexedDBKeyRange> key_range, | 1206 scoped_ptr<IndexedDBKeyRange> key_range, |
1207 scoped_refptr<IndexedDBCallbacks> callbacks, | 1207 scoped_refptr<IndexedDBCallbacks> callbacks, |
1208 IndexedDBTransaction* transaction) { | 1208 IndexedDBTransaction* transaction) { |
1209 IDB_TRACE("IndexedDBDatabase::DeleteRangeOperation"); | 1209 IDB_TRACE("IndexedDBDatabase::DeleteRangeOperation"); |
1210 leveldb::Status s; | 1210 leveldb::Status s = |
1211 scoped_ptr<IndexedDBBackingStore::Cursor> backing_store_cursor = | 1211 backing_store_->DeleteRange(transaction->BackingStoreTransaction(), |
1212 backing_store_->OpenObjectStoreCursor( | 1212 id(), |
1213 transaction->BackingStoreTransaction(), | 1213 object_store_id, |
1214 id(), | 1214 *key_range); |
1215 object_store_id, | |
1216 *key_range, | |
1217 indexed_db::CURSOR_NEXT, | |
1218 &s); | |
1219 if (backing_store_cursor && s.ok()) { | |
1220 do { | |
1221 if (!backing_store_->DeleteRecord( | |
1222 transaction->BackingStoreTransaction(), | |
1223 id(), | |
1224 object_store_id, | |
1225 backing_store_cursor->record_identifier()) | |
1226 .ok()) { | |
1227 callbacks->OnError( | |
1228 IndexedDBDatabaseError(blink::WebIDBDatabaseExceptionUnknownError, | |
1229 "Internal error deleting data in range")); | |
1230 return; | |
1231 } | |
1232 } while (backing_store_cursor->Continue(&s)); | |
1233 } | |
1234 | |
1235 if (!s.ok()) { | 1215 if (!s.ok()) { |
| 1216 base::string16 error_string = |
| 1217 ASCIIToUTF16("Internal error deleting data in range"); |
1236 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, | 1218 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, |
1237 ASCIIToUTF16("Internal error deleting range")); | 1219 error_string); |
1238 transaction->Abort(error); | 1220 transaction->Abort(error); |
1239 if (leveldb_env::IsCorruption(s)) { | 1221 if (leveldb_env::IsCorruption(s)) { |
1240 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), | 1222 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), |
1241 error); | 1223 error); |
1242 } | 1224 } |
1243 return; | 1225 return; |
1244 } | 1226 } |
1245 | |
1246 callbacks->OnSuccess(); | 1227 callbacks->OnSuccess(); |
1247 } | 1228 } |
1248 | 1229 |
1249 void IndexedDBDatabase::Clear(int64 transaction_id, | 1230 void IndexedDBDatabase::Clear(int64 transaction_id, |
1250 int64 object_store_id, | 1231 int64 object_store_id, |
1251 scoped_refptr<IndexedDBCallbacks> callbacks) { | 1232 scoped_refptr<IndexedDBCallbacks> callbacks) { |
1252 IDB_TRACE("IndexedDBDatabase::Clear"); | 1233 IDB_TRACE("IndexedDBDatabase::Clear"); |
1253 IndexedDBTransaction* transaction = GetTransaction(transaction_id); | 1234 IndexedDBTransaction* transaction = GetTransaction(transaction_id); |
1254 if (!transaction) | 1235 if (!transaction) |
1255 return; | 1236 return; |
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1762 const base::string16& previous_version, | 1743 const base::string16& previous_version, |
1763 int64 previous_int_version, | 1744 int64 previous_int_version, |
1764 IndexedDBTransaction* transaction) { | 1745 IndexedDBTransaction* transaction) { |
1765 IDB_TRACE("IndexedDBDatabase::VersionChangeAbortOperation"); | 1746 IDB_TRACE("IndexedDBDatabase::VersionChangeAbortOperation"); |
1766 DCHECK(!transaction); | 1747 DCHECK(!transaction); |
1767 metadata_.version = previous_version; | 1748 metadata_.version = previous_version; |
1768 metadata_.int_version = previous_int_version; | 1749 metadata_.int_version = previous_int_version; |
1769 } | 1750 } |
1770 | 1751 |
1771 } // namespace content | 1752 } // namespace content |
OLD | NEW |