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

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

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

Powered by Google App Engine
This is Rietveld 408576698