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

Side by Side Diff: Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp

Issue 12288067: Merge 142890 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1410/
Patch Set: Created 7 years, 10 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 SetupMetadata, 64 SetupMetadata,
65 GetPrimaryKeyViaIndex, 65 GetPrimaryKeyViaIndex,
66 KeyExistsInIndex, 66 KeyExistsInIndex,
67 VersionExists, 67 VersionExists,
68 DeleteObjectStore, 68 DeleteObjectStore,
69 SetMaxObjectStoreId, 69 SetMaxObjectStoreId,
70 SetMaxIndexId, 70 SetMaxIndexId,
71 GetNewDatabaseId, 71 GetNewDatabaseId,
72 GetNewVersionNumber, 72 GetNewVersionNumber,
73 CreateIDBDatabaseMetaData, 73 CreateIDBDatabaseMetaData,
74 DeleteDatabase,
75 TransactionCommit,
74 IDBLevelDBBackingStoreInternalErrorMax, 76 IDBLevelDBBackingStoreInternalErrorMax,
75 }; 77 };
76 78
77 static void recordInternalError(const char* type, IDBBackingStoreErrorSource loc ation) 79 static void recordInternalError(const char* type, IDBBackingStoreErrorSource loc ation)
78 { 80 {
79 String name = String::format("WebCore.IndexedDB.BackingStore.%sError", type) ; 81 String name = String::format("WebCore.IndexedDB.BackingStore.%sError", type) ;
80 HistogramSupport::histogramEnumeration(name.utf8().data(), location, IDBLeve lDBBackingStoreInternalErrorMax); 82 HistogramSupport::histogramEnumeration(name.utf8().data(), location, IDBLeve lDBBackingStoreInternalErrorMax);
81 } 83 }
82 84
83 // Use to signal conditions that usually indicate developer error, but could be caused by data corruption. 85 // Use to signal conditions that usually indicate developer error, but could be caused by data corruption.
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 582
581 const Vector<char> startKey = DatabaseMetaDataKey::encode(metadata.id, Datab aseMetaDataKey::OriginName); 583 const Vector<char> startKey = DatabaseMetaDataKey::encode(metadata.id, Datab aseMetaDataKey::OriginName);
582 const Vector<char> stopKey = DatabaseMetaDataKey::encode(metadata.id + 1, Da tabaseMetaDataKey::OriginName); 584 const Vector<char> stopKey = DatabaseMetaDataKey::encode(metadata.id + 1, Da tabaseMetaDataKey::OriginName);
583 OwnPtr<LevelDBIterator> it = m_db->createIterator(); 585 OwnPtr<LevelDBIterator> it = m_db->createIterator();
584 for (it->seek(startKey); it->isValid() && compareKeys(it->key(), stopKey) < 0; it->next()) 586 for (it->seek(startKey); it->isValid() && compareKeys(it->key(), stopKey) < 0; it->next())
585 transaction->remove(it->key()); 587 transaction->remove(it->key());
586 588
587 const Vector<char> key = DatabaseNameKey::encode(m_identifier, name); 589 const Vector<char> key = DatabaseNameKey::encode(m_identifier, name);
588 transaction->remove(key); 590 transaction->remove(key);
589 591
590 return transaction->commit(); 592 if (!transaction->commit()) {
593 INTERNAL_WRITE_ERROR(DeleteDatabase);
594 return false;
595 }
596 return true;
591 } 597 }
592 598
593 static bool checkObjectStoreAndMetaDataType(const LevelDBIterator* it, const Vec tor<char>& stopKey, int64_t objectStoreId, int64_t metaDataType) 599 static bool checkObjectStoreAndMetaDataType(const LevelDBIterator* it, const Vec tor<char>& stopKey, int64_t objectStoreId, int64_t metaDataType)
594 { 600 {
595 if (!it->isValid() || compareKeys(it->key(), stopKey) >= 0) 601 if (!it->isValid() || compareKeys(it->key(), stopKey) >= 0)
596 return false; 602 return false;
597 603
598 ObjectStoreMetaDataKey metaDataKey; 604 ObjectStoreMetaDataKey metaDataKey;
599 const char* p = ObjectStoreMetaDataKey::decode(it->key().begin(), it->key(). end(), &metaDataKey); 605 const char* p = ObjectStoreMetaDataKey::decode(it->key().begin(), it->key(). end(), &metaDataKey);
600 ASSERT_UNUSED(p, p); 606 ASSERT_UNUSED(p, p);
(...skipping 1235 matching lines...) Expand 10 before | Expand all | Expand 10 after
1836 ASSERT(!m_transaction); 1842 ASSERT(!m_transaction);
1837 m_transaction = LevelDBTransaction::create(m_backingStore->m_db.get()); 1843 m_transaction = LevelDBTransaction::create(m_backingStore->m_db.get());
1838 } 1844 }
1839 1845
1840 bool IDBBackingStore::Transaction::commit() 1846 bool IDBBackingStore::Transaction::commit()
1841 { 1847 {
1842 IDB_TRACE("IDBBackingStore::Transaction::commit"); 1848 IDB_TRACE("IDBBackingStore::Transaction::commit");
1843 ASSERT(m_transaction); 1849 ASSERT(m_transaction);
1844 bool result = m_transaction->commit(); 1850 bool result = m_transaction->commit();
1845 m_transaction.clear(); 1851 m_transaction.clear();
1852 if (!result)
1853 INTERNAL_WRITE_ERROR(TransactionCommit);
1846 return result; 1854 return result;
1847 } 1855 }
1848 1856
1849 void IDBBackingStore::Transaction::rollback() 1857 void IDBBackingStore::Transaction::rollback()
1850 { 1858 {
1851 IDB_TRACE("IDBBackingStore::Transaction::rollback"); 1859 IDB_TRACE("IDBBackingStore::Transaction::rollback");
1852 ASSERT(m_transaction); 1860 ASSERT(m_transaction);
1853 m_transaction->rollback(); 1861 m_transaction->rollback();
1854 m_transaction.clear(); 1862 m_transaction.clear();
1855 } 1863 }
1856 1864
1857 } // namespace WebCore 1865 } // namespace WebCore
1858 1866
1859 #endif // ENABLE(INDEXED_DATABASE) 1867 #endif // ENABLE(INDEXED_DATABASE)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698