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

Side by Side Diff: content/browser/indexed_db/indexed_db_database.cc

Issue 303073002: Change instances of s.IsCorruption() to leveldb_env::IsCorruption(s) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix memory leak Created 6 years, 6 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 | « no previous file | content/browser/indexed_db/indexed_db_database_unittest.cc » ('j') | 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) 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"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/memory/scoped_vector.h" 13 #include "base/memory/scoped_vector.h"
14 #include "base/stl_util.h" 14 #include "base/stl_util.h"
15 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
16 #include "base/strings/utf_string_conversions.h" 16 #include "base/strings/utf_string_conversions.h"
17 #include "content/browser/indexed_db/indexed_db_blob_info.h" 17 #include "content/browser/indexed_db/indexed_db_blob_info.h"
18 #include "content/browser/indexed_db/indexed_db_connection.h" 18 #include "content/browser/indexed_db/indexed_db_connection.h"
19 #include "content/browser/indexed_db/indexed_db_context_impl.h" 19 #include "content/browser/indexed_db/indexed_db_context_impl.h"
20 #include "content/browser/indexed_db/indexed_db_cursor.h" 20 #include "content/browser/indexed_db/indexed_db_cursor.h"
21 #include "content/browser/indexed_db/indexed_db_factory.h" 21 #include "content/browser/indexed_db/indexed_db_factory.h"
22 #include "content/browser/indexed_db/indexed_db_index_writer.h" 22 #include "content/browser/indexed_db/indexed_db_index_writer.h"
23 #include "content/browser/indexed_db/indexed_db_pending_connection.h" 23 #include "content/browser/indexed_db/indexed_db_pending_connection.h"
24 #include "content/browser/indexed_db/indexed_db_tracing.h" 24 #include "content/browser/indexed_db/indexed_db_tracing.h"
25 #include "content/browser/indexed_db/indexed_db_transaction.h" 25 #include "content/browser/indexed_db/indexed_db_transaction.h"
26 #include "content/browser/indexed_db/indexed_db_value.h" 26 #include "content/browser/indexed_db/indexed_db_value.h"
27 #include "content/common/indexed_db/indexed_db_key_path.h" 27 #include "content/common/indexed_db/indexed_db_key_path.h"
28 #include "content/common/indexed_db/indexed_db_key_range.h" 28 #include "content/common/indexed_db/indexed_db_key_range.h"
29 #include "third_party/WebKit/public/platform/WebIDBDatabaseException.h" 29 #include "third_party/WebKit/public/platform/WebIDBDatabaseException.h"
30 #include "third_party/leveldatabase/env_chromium.h"
30 #include "webkit/browser/blob/blob_data_handle.h" 31 #include "webkit/browser/blob/blob_data_handle.h"
31 32
32 using base::ASCIIToUTF16; 33 using base::ASCIIToUTF16;
33 using base::Int64ToString16; 34 using base::Int64ToString16;
34 using blink::WebIDBKeyTypeNumber; 35 using blink::WebIDBKeyTypeNumber;
35 36
36 namespace content { 37 namespace content {
37 38
38 // PendingUpgradeCall has a scoped_ptr<IndexedDBConnection> because it owns the 39 // PendingUpgradeCall has a scoped_ptr<IndexedDBConnection> because it owns the
39 // in-progress connection. 40 // in-progress connection.
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 object_store_metadata.id, 294 object_store_metadata.id,
294 object_store_metadata.name, 295 object_store_metadata.name,
295 object_store_metadata.key_path, 296 object_store_metadata.key_path,
296 object_store_metadata.auto_increment); 297 object_store_metadata.auto_increment);
297 if (!s.ok()) { 298 if (!s.ok()) {
298 IndexedDBDatabaseError error( 299 IndexedDBDatabaseError error(
299 blink::WebIDBDatabaseExceptionUnknownError, 300 blink::WebIDBDatabaseExceptionUnknownError,
300 ASCIIToUTF16("Internal error creating object store '") + 301 ASCIIToUTF16("Internal error creating object store '") +
301 object_store_metadata.name + ASCIIToUTF16("'.")); 302 object_store_metadata.name + ASCIIToUTF16("'."));
302 transaction->Abort(error); 303 transaction->Abort(error);
303 if (s.IsCorruption()) 304 if (leveldb_env::IsCorruption(s))
304 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 305 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
305 error); 306 error);
306 return; 307 return;
307 } 308 }
308 309
309 AddObjectStore(object_store_metadata, object_store_id); 310 AddObjectStore(object_store_metadata, object_store_id);
310 transaction->ScheduleAbortTask( 311 transaction->ScheduleAbortTask(
311 base::Bind(&IndexedDBDatabase::CreateObjectStoreAbortOperation, 312 base::Bind(&IndexedDBDatabase::CreateObjectStoreAbortOperation,
312 this, 313 this,
313 object_store_id)); 314 object_store_id));
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 transaction->database()->id(), 418 transaction->database()->id(),
418 object_store_id, 419 object_store_id,
419 index_id); 420 index_id);
420 if (!s.ok()) { 421 if (!s.ok()) {
421 base::string16 error_string = 422 base::string16 error_string =
422 ASCIIToUTF16("Internal error deleting index '") + 423 ASCIIToUTF16("Internal error deleting index '") +
423 index_metadata.name + ASCIIToUTF16("'."); 424 index_metadata.name + ASCIIToUTF16("'.");
424 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 425 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
425 error_string); 426 error_string);
426 transaction->Abort(error); 427 transaction->Abort(error);
427 if (s.IsCorruption()) 428 if (leveldb_env::IsCorruption(s))
428 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 429 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
429 error); 430 error);
430 return; 431 return;
431 } 432 }
432 433
433 RemoveIndex(object_store_id, index_id); 434 RemoveIndex(object_store_id, index_id);
434 transaction->ScheduleAbortTask( 435 transaction->ScheduleAbortTask(
435 base::Bind(&IndexedDBDatabase::DeleteIndexAbortOperation, 436 base::Bind(&IndexedDBDatabase::DeleteIndexAbortOperation,
436 this, 437 this,
437 object_store_id, 438 object_store_id,
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 index_id, 551 index_id,
551 *key_range, 552 *key_range,
552 indexed_db::CURSOR_NEXT, 553 indexed_db::CURSOR_NEXT,
553 &s); 554 &s);
554 } 555 }
555 556
556 if (!s.ok()) { 557 if (!s.ok()) {
557 DLOG(ERROR) << "Unable to open cursor operation: " << s.ToString(); 558 DLOG(ERROR) << "Unable to open cursor operation: " << s.ToString();
558 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 559 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
559 "Internal error deleting data in range"); 560 "Internal error deleting data in range");
560 if (s.IsCorruption()) { 561 if (leveldb_env::IsCorruption(s)) {
561 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 562 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
562 error); 563 error);
563 } 564 }
564 } 565 }
565 566
566 if (!backing_store_cursor) { 567 if (!backing_store_cursor) {
567 callbacks->OnSuccess(); 568 callbacks->OnSuccess();
568 return; 569 return;
569 } 570 }
570 571
571 key = &backing_store_cursor->key(); 572 key = &backing_store_cursor->key();
572 } 573 }
573 574
574 scoped_ptr<IndexedDBKey> primary_key; 575 scoped_ptr<IndexedDBKey> primary_key;
575 if (index_id == IndexedDBIndexMetadata::kInvalidId) { 576 if (index_id == IndexedDBIndexMetadata::kInvalidId) {
576 // Object Store Retrieval Operation 577 // Object Store Retrieval Operation
577 IndexedDBValue value; 578 IndexedDBValue value;
578 s = backing_store_->GetRecord(transaction->BackingStoreTransaction(), 579 s = backing_store_->GetRecord(transaction->BackingStoreTransaction(),
579 id(), 580 id(),
580 object_store_id, 581 object_store_id,
581 *key, 582 *key,
582 &value); 583 &value);
583 if (!s.ok()) { 584 if (!s.ok()) {
584 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 585 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
585 "Internal error in GetRecord."); 586 "Internal error in GetRecord.");
586 callbacks->OnError(error); 587 callbacks->OnError(error);
587 588
588 if (s.IsCorruption()) 589 if (leveldb_env::IsCorruption(s))
589 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 590 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
590 error); 591 error);
591 return; 592 return;
592 } 593 }
593 594
594 if (value.empty()) { 595 if (value.empty()) {
595 callbacks->OnSuccess(); 596 callbacks->OnSuccess();
596 return; 597 return;
597 } 598 }
598 599
(...skipping 12 matching lines...) Expand all
611 transaction->BackingStoreTransaction(), 612 transaction->BackingStoreTransaction(),
612 id(), 613 id(),
613 object_store_id, 614 object_store_id,
614 index_id, 615 index_id,
615 *key, 616 *key,
616 &primary_key); 617 &primary_key);
617 if (!s.ok()) { 618 if (!s.ok()) {
618 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 619 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
619 "Internal error in GetPrimaryKeyViaIndex."); 620 "Internal error in GetPrimaryKeyViaIndex.");
620 callbacks->OnError(error); 621 callbacks->OnError(error);
621 if (s.IsCorruption()) 622 if (leveldb_env::IsCorruption(s))
622 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 623 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
623 error); 624 error);
624 return; 625 return;
625 } 626 }
626 if (!primary_key) { 627 if (!primary_key) {
627 callbacks->OnSuccess(); 628 callbacks->OnSuccess();
628 return; 629 return;
629 } 630 }
630 if (cursor_type == indexed_db::CURSOR_KEY_ONLY) { 631 if (cursor_type == indexed_db::CURSOR_KEY_ONLY) {
631 // Index Value Retrieval Operation 632 // Index Value Retrieval Operation
632 callbacks->OnSuccess(*primary_key); 633 callbacks->OnSuccess(*primary_key);
633 return; 634 return;
634 } 635 }
635 636
636 // Index Referenced Value Retrieval Operation 637 // Index Referenced Value Retrieval Operation
637 IndexedDBValue value; 638 IndexedDBValue value;
638 s = backing_store_->GetRecord(transaction->BackingStoreTransaction(), 639 s = backing_store_->GetRecord(transaction->BackingStoreTransaction(),
639 id(), 640 id(),
640 object_store_id, 641 object_store_id,
641 *primary_key, 642 *primary_key,
642 &value); 643 &value);
643 if (!s.ok()) { 644 if (!s.ok()) {
644 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 645 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
645 "Internal error in GetRecord."); 646 "Internal error in GetRecord.");
646 callbacks->OnError(error); 647 callbacks->OnError(error);
647 if (s.IsCorruption()) 648 if (leveldb_env::IsCorruption(s))
648 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 649 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
649 error); 650 error);
650 return; 651 return;
651 } 652 }
652 653
653 if (value.empty()) { 654 if (value.empty()) {
654 callbacks->OnSuccess(); 655 callbacks->OnSuccess();
655 return; 656 return;
656 } 657 }
657 if (object_store_metadata.auto_increment && 658 if (object_store_metadata.auto_increment &&
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 transaction->BackingStoreTransaction(), 784 transaction->BackingStoreTransaction(),
784 id(), 785 id(),
785 params->object_store_id, 786 params->object_store_id,
786 *key, 787 *key,
787 &record_identifier, 788 &record_identifier,
788 &found); 789 &found);
789 if (!s.ok()) { 790 if (!s.ok()) {
790 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 791 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
791 "Internal error checking key existence."); 792 "Internal error checking key existence.");
792 params->callbacks->OnError(error); 793 params->callbacks->OnError(error);
793 if (s.IsCorruption()) 794 if (leveldb_env::IsCorruption(s))
794 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 795 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
795 error); 796 error);
796 return; 797 return;
797 } 798 }
798 if (found) { 799 if (found) {
799 params->callbacks->OnError( 800 params->callbacks->OnError(
800 IndexedDBDatabaseError(blink::WebIDBDatabaseExceptionConstraintError, 801 IndexedDBDatabaseError(blink::WebIDBDatabaseExceptionConstraintError,
801 "Key already exists in the object store.")); 802 "Key already exists in the object store."));
802 return; 803 return;
803 } 804 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 params->object_store_id, 837 params->object_store_id,
837 *key, 838 *key,
838 params->value, 839 params->value,
839 &params->handles, 840 &params->handles,
840 &record_identifier); 841 &record_identifier);
841 if (!s.ok()) { 842 if (!s.ok()) {
842 IndexedDBDatabaseError error( 843 IndexedDBDatabaseError error(
843 blink::WebIDBDatabaseExceptionUnknownError, 844 blink::WebIDBDatabaseExceptionUnknownError,
844 "Internal error: backing store error performing put/add."); 845 "Internal error: backing store error performing put/add.");
845 params->callbacks->OnError(error); 846 params->callbacks->OnError(error);
846 if (s.IsCorruption()) 847 if (leveldb_env::IsCorruption(s))
847 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 848 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
848 error); 849 error);
849 return; 850 return;
850 } 851 }
851 852
852 for (size_t i = 0; i < index_writers.size(); ++i) { 853 for (size_t i = 0; i < index_writers.size(); ++i) {
853 IndexWriter* index_writer = index_writers[i]; 854 IndexWriter* index_writer = index_writers[i];
854 index_writer->WriteIndexKeys(record_identifier, 855 index_writer->WriteIndexKeys(record_identifier,
855 backing_store_.get(), 856 backing_store_.get(),
856 transaction->BackingStoreTransaction(), 857 transaction->BackingStoreTransaction(),
857 id(), 858 id(),
858 params->object_store_id); 859 params->object_store_id);
859 } 860 }
860 861
861 if (object_store.auto_increment && 862 if (object_store.auto_increment &&
862 params->put_mode != IndexedDBDatabase::CURSOR_UPDATE && 863 params->put_mode != IndexedDBDatabase::CURSOR_UPDATE &&
863 key->type() == WebIDBKeyTypeNumber) { 864 key->type() == WebIDBKeyTypeNumber) {
864 leveldb::Status s = UpdateKeyGenerator(backing_store_.get(), 865 leveldb::Status s = UpdateKeyGenerator(backing_store_.get(),
865 transaction, 866 transaction,
866 id(), 867 id(),
867 params->object_store_id, 868 params->object_store_id,
868 *key, 869 *key,
869 !key_was_generated); 870 !key_was_generated);
870 if (!s.ok()) { 871 if (!s.ok()) {
871 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 872 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
872 "Internal error updating key generator."); 873 "Internal error updating key generator.");
873 params->callbacks->OnError(error); 874 params->callbacks->OnError(error);
874 if (s.IsCorruption()) 875 if (leveldb_env::IsCorruption(s))
875 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 876 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
876 error); 877 error);
877 return; 878 return;
878 } 879 }
879 } 880 }
880 881
881 params->callbacks->OnSuccess(*key); 882 params->callbacks->OnSuccess(*key);
882 } 883 }
883 884
884 void IndexedDBDatabase::SetIndexKeys(int64 transaction_id, 885 void IndexedDBDatabase::SetIndexKeys(int64 transaction_id,
(...skipping 14 matching lines...) Expand all
899 transaction->BackingStoreTransaction(), 900 transaction->BackingStoreTransaction(),
900 metadata_.id, 901 metadata_.id,
901 object_store_id, 902 object_store_id,
902 *primary_key, 903 *primary_key,
903 &record_identifier, 904 &record_identifier,
904 &found); 905 &found);
905 if (!s.ok()) { 906 if (!s.ok()) {
906 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 907 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
907 "Internal error setting index keys."); 908 "Internal error setting index keys.");
908 transaction->Abort(error); 909 transaction->Abort(error);
909 if (s.IsCorruption()) 910 if (leveldb_env::IsCorruption(s))
910 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 911 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
911 error); 912 error);
912 return; 913 return;
913 } 914 }
914 if (!found) { 915 if (!found) {
915 transaction->Abort(IndexedDBDatabaseError( 916 transaction->Abort(IndexedDBDatabaseError(
916 blink::WebIDBDatabaseExceptionUnknownError, 917 blink::WebIDBDatabaseExceptionUnknownError,
917 "Internal error setting index keys for object store.")); 918 "Internal error setting index keys for object store."));
918 return; 919 return;
919 } 920 }
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1078 *params->key_range, 1079 *params->key_range,
1079 params->direction, 1080 params->direction,
1080 &s); 1081 &s);
1081 } 1082 }
1082 } 1083 }
1083 1084
1084 if (!s.ok()) { 1085 if (!s.ok()) {
1085 DLOG(ERROR) << "Unable to open cursor operation: " << s.ToString(); 1086 DLOG(ERROR) << "Unable to open cursor operation: " << s.ToString();
1086 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 1087 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
1087 "Internal error opening cursor operation"); 1088 "Internal error opening cursor operation");
1088 if (s.IsCorruption()) { 1089 if (leveldb_env::IsCorruption(s)) {
1089 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 1090 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
1090 error); 1091 error);
1091 } 1092 }
1092 } 1093 }
1093 1094
1094 if (!backing_store_cursor) { 1095 if (!backing_store_cursor) {
1095 // Why is Success being called? 1096 // Why is Success being called?
1096 params->callbacks->OnSuccess(static_cast<IndexedDBValue*>(NULL)); 1097 params->callbacks->OnSuccess(static_cast<IndexedDBValue*>(NULL));
1097 return; 1098 return;
1098 } 1099 }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1153 object_store_id, 1154 object_store_id,
1154 index_id, 1155 index_id,
1155 *key_range, 1156 *key_range,
1156 indexed_db::CURSOR_NEXT, 1157 indexed_db::CURSOR_NEXT,
1157 &s); 1158 &s);
1158 } 1159 }
1159 if (!s.ok()) { 1160 if (!s.ok()) {
1160 DLOG(ERROR) << "Unable perform count operation: " << s.ToString(); 1161 DLOG(ERROR) << "Unable perform count operation: " << s.ToString();
1161 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 1162 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
1162 "Internal error performing count operation"); 1163 "Internal error performing count operation");
1163 if (s.IsCorruption()) { 1164 if (leveldb_env::IsCorruption(s)) {
1164 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 1165 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
1165 error); 1166 error);
1166 } 1167 }
1167 } 1168 }
1168 if (!backing_store_cursor) { 1169 if (!backing_store_cursor) {
1169 callbacks->OnSuccess(count); 1170 callbacks->OnSuccess(count);
1170 return; 1171 return;
1171 } 1172 }
1172 1173
1173 do { 1174 do {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1228 "Internal error deleting data in range")); 1229 "Internal error deleting data in range"));
1229 return; 1230 return;
1230 } 1231 }
1231 } while (backing_store_cursor->Continue(&s)); 1232 } while (backing_store_cursor->Continue(&s));
1232 } 1233 }
1233 1234
1234 if (!s.ok()) { 1235 if (!s.ok()) {
1235 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 1236 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
1236 ASCIIToUTF16("Internal error deleting range")); 1237 ASCIIToUTF16("Internal error deleting range"));
1237 transaction->Abort(error); 1238 transaction->Abort(error);
1238 if (s.IsCorruption()) { 1239 if (leveldb_env::IsCorruption(s)) {
1239 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 1240 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
1240 error); 1241 error);
1241 } 1242 }
1242 return; 1243 return;
1243 } 1244 }
1244 1245
1245 callbacks->OnSuccess(); 1246 callbacks->OnSuccess();
1246 } 1247 }
1247 1248
1248 void IndexedDBDatabase::Clear(int64 transaction_id, 1249 void IndexedDBDatabase::Clear(int64 transaction_id,
(...skipping 16 matching lines...) Expand all
1265 int64 object_store_id, 1266 int64 object_store_id,
1266 scoped_refptr<IndexedDBCallbacks> callbacks, 1267 scoped_refptr<IndexedDBCallbacks> callbacks,
1267 IndexedDBTransaction* transaction) { 1268 IndexedDBTransaction* transaction) {
1268 IDB_TRACE("IndexedDBDatabase::ObjectStoreClearOperation"); 1269 IDB_TRACE("IndexedDBDatabase::ObjectStoreClearOperation");
1269 leveldb::Status s = backing_store_->ClearObjectStore( 1270 leveldb::Status s = backing_store_->ClearObjectStore(
1270 transaction->BackingStoreTransaction(), id(), object_store_id); 1271 transaction->BackingStoreTransaction(), id(), object_store_id);
1271 if (!s.ok()) { 1272 if (!s.ok()) {
1272 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 1273 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
1273 "Internal error clearing object store"); 1274 "Internal error clearing object store");
1274 callbacks->OnError(error); 1275 callbacks->OnError(error);
1275 if (s.IsCorruption()) { 1276 if (leveldb_env::IsCorruption(s)) {
1276 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 1277 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
1277 error); 1278 error);
1278 } 1279 }
1279 return; 1280 return;
1280 } 1281 }
1281 callbacks->OnSuccess(); 1282 callbacks->OnSuccess();
1282 } 1283 }
1283 1284
1284 void IndexedDBDatabase::DeleteObjectStoreOperation( 1285 void IndexedDBDatabase::DeleteObjectStoreOperation(
1285 int64 object_store_id, 1286 int64 object_store_id,
1286 IndexedDBTransaction* transaction) { 1287 IndexedDBTransaction* transaction) {
1287 IDB_TRACE("IndexedDBDatabase::DeleteObjectStoreOperation"); 1288 IDB_TRACE("IndexedDBDatabase::DeleteObjectStoreOperation");
1288 1289
1289 const IndexedDBObjectStoreMetadata object_store_metadata = 1290 const IndexedDBObjectStoreMetadata object_store_metadata =
1290 metadata_.object_stores[object_store_id]; 1291 metadata_.object_stores[object_store_id];
1291 leveldb::Status s = 1292 leveldb::Status s =
1292 backing_store_->DeleteObjectStore(transaction->BackingStoreTransaction(), 1293 backing_store_->DeleteObjectStore(transaction->BackingStoreTransaction(),
1293 transaction->database()->id(), 1294 transaction->database()->id(),
1294 object_store_id); 1295 object_store_id);
1295 if (!s.ok()) { 1296 if (!s.ok()) {
1296 base::string16 error_string = 1297 base::string16 error_string =
1297 ASCIIToUTF16("Internal error deleting object store '") + 1298 ASCIIToUTF16("Internal error deleting object store '") +
1298 object_store_metadata.name + ASCIIToUTF16("'."); 1299 object_store_metadata.name + ASCIIToUTF16("'.");
1299 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError, 1300 IndexedDBDatabaseError error(blink::WebIDBDatabaseExceptionUnknownError,
1300 error_string); 1301 error_string);
1301 transaction->Abort(error); 1302 transaction->Abort(error);
1302 if (s.IsCorruption()) 1303 if (leveldb_env::IsCorruption(s))
1303 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(), 1304 factory_->HandleBackingStoreCorruption(backing_store_->origin_url(),
1304 error); 1305 error);
1305 return; 1306 return;
1306 } 1307 }
1307 1308
1308 RemoveObjectStore(object_store_id); 1309 RemoveObjectStore(object_store_id);
1309 transaction->ScheduleAbortTask( 1310 transaction->ScheduleAbortTask(
1310 base::Bind(&IndexedDBDatabase::DeleteObjectStoreAbortOperation, 1311 base::Bind(&IndexedDBDatabase::DeleteObjectStoreAbortOperation,
1311 this, 1312 this,
1312 object_store_metadata)); 1313 object_store_metadata));
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
1761 const base::string16& previous_version, 1762 const base::string16& previous_version,
1762 int64 previous_int_version, 1763 int64 previous_int_version,
1763 IndexedDBTransaction* transaction) { 1764 IndexedDBTransaction* transaction) {
1764 IDB_TRACE("IndexedDBDatabase::VersionChangeAbortOperation"); 1765 IDB_TRACE("IndexedDBDatabase::VersionChangeAbortOperation");
1765 DCHECK(!transaction); 1766 DCHECK(!transaction);
1766 metadata_.version = previous_version; 1767 metadata_.version = previous_version;
1767 metadata_.int_version = previous_int_version; 1768 metadata_.int_version = previous_int_version;
1768 } 1769 }
1769 1770
1770 } // namespace content 1771 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/indexed_db/indexed_db_database_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698