OLD | NEW |
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 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 const Vector<char> startKey = DatabaseMetaDataKey::encode(databaseId, Databa
seMetaDataKey::kOriginName); | 302 const Vector<char> startKey = DatabaseMetaDataKey::encode(databaseId, Databa
seMetaDataKey::kOriginName); |
303 const Vector<char> stopKey = DatabaseMetaDataKey::encode(databaseId + 1, Dat
abaseMetaDataKey::kOriginName); | 303 const Vector<char> stopKey = DatabaseMetaDataKey::encode(databaseId + 1, Dat
abaseMetaDataKey::kOriginName); |
304 if (!deleteRange(m_currentTransaction.get(), startKey, stopKey)) { | 304 if (!deleteRange(m_currentTransaction.get(), startKey, stopKey)) { |
305 transaction->rollback(); | 305 transaction->rollback(); |
306 return false; | 306 return false; |
307 } | 307 } |
308 | 308 |
309 const Vector<char> key = DatabaseNameKey::encode(m_identifier, name); | 309 const Vector<char> key = DatabaseNameKey::encode(m_identifier, name); |
310 m_currentTransaction->remove(key); | 310 m_currentTransaction->remove(key); |
311 | 311 |
312 transaction->commit(); | 312 return transaction->commit(); |
313 return true; | |
314 } | 313 } |
315 | 314 |
316 static bool checkObjectStoreAndMetaDataType(const LevelDBIterator* it, const Vec
tor<char>& stopKey, int64_t objectStoreId, int64_t metaDataType) | 315 static bool checkObjectStoreAndMetaDataType(const LevelDBIterator* it, const Vec
tor<char>& stopKey, int64_t objectStoreId, int64_t metaDataType) |
317 { | 316 { |
318 if (!it->isValid() || compareKeys(it->key(), stopKey) >= 0) | 317 if (!it->isValid() || compareKeys(it->key(), stopKey) >= 0) |
319 return false; | 318 return false; |
320 | 319 |
321 ObjectStoreMetaDataKey metaDataKey; | 320 ObjectStoreMetaDataKey metaDataKey; |
322 const char* p = ObjectStoreMetaDataKey::decode(it->key().begin(), it->key().
end(), &metaDataKey); | 321 const char* p = ObjectStoreMetaDataKey::decode(it->key().begin(), it->key().
end(), &metaDataKey); |
323 ASSERT_UNUSED(p, p); | 322 ASSERT_UNUSED(p, p); |
(...skipping 1244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1568 : m_backingStore(backingStore) | 1567 : m_backingStore(backingStore) |
1569 { | 1568 { |
1570 } | 1569 } |
1571 | 1570 |
1572 void IDBLevelDBBackingStore::Transaction::begin() | 1571 void IDBLevelDBBackingStore::Transaction::begin() |
1573 { | 1572 { |
1574 ASSERT(!m_backingStore->m_currentTransaction); | 1573 ASSERT(!m_backingStore->m_currentTransaction); |
1575 m_backingStore->m_currentTransaction = LevelDBTransaction::create(m_backingS
tore->m_db.get()); | 1574 m_backingStore->m_currentTransaction = LevelDBTransaction::create(m_backingS
tore->m_db.get()); |
1576 } | 1575 } |
1577 | 1576 |
1578 void IDBLevelDBBackingStore::Transaction::commit() | 1577 bool IDBLevelDBBackingStore::Transaction::commit() |
1579 { | 1578 { |
1580 ASSERT(m_backingStore->m_currentTransaction); | 1579 ASSERT(m_backingStore->m_currentTransaction); |
1581 m_backingStore->m_currentTransaction->commit(); | 1580 bool result = m_backingStore->m_currentTransaction->commit(); |
1582 m_backingStore->m_currentTransaction.clear(); | 1581 m_backingStore->m_currentTransaction.clear(); |
| 1582 return result; |
1583 } | 1583 } |
1584 | 1584 |
1585 void IDBLevelDBBackingStore::Transaction::rollback() | 1585 void IDBLevelDBBackingStore::Transaction::rollback() |
1586 { | 1586 { |
1587 ASSERT(m_backingStore->m_currentTransaction); | 1587 ASSERT(m_backingStore->m_currentTransaction); |
1588 m_backingStore->m_currentTransaction->rollback(); | 1588 m_backingStore->m_currentTransaction->rollback(); |
1589 m_backingStore->m_currentTransaction.clear(); | 1589 m_backingStore->m_currentTransaction.clear(); |
1590 } | 1590 } |
1591 | 1591 |
1592 bool IDBLevelDBBackingStore::backingStoreExists(SecurityOrigin* securityOrigin,
const String&, const String& pathBaseArg) | 1592 bool IDBLevelDBBackingStore::backingStoreExists(SecurityOrigin* securityOrigin,
const String&, const String& pathBaseArg) |
1593 { | 1593 { |
1594 String pathBase = pathBaseArg; | 1594 String pathBase = pathBaseArg; |
1595 | 1595 |
1596 if (pathBase.isEmpty()) | 1596 if (pathBase.isEmpty()) |
1597 return false; | 1597 return false; |
1598 | 1598 |
1599 // FIXME: We should eventually use the same LevelDB database for all origins
. | 1599 // FIXME: We should eventually use the same LevelDB database for all origins
. |
1600 String path = pathByAppendingComponent(pathBase, securityOrigin->databaseIde
ntifier() + ".indexeddb.leveldb"); | 1600 String path = pathByAppendingComponent(pathBase, securityOrigin->databaseIde
ntifier() + ".indexeddb.leveldb"); |
1601 | 1601 |
1602 // FIXME: this is checking for presence of the domain, not the database itse
lf | 1602 // FIXME: this is checking for presence of the domain, not the database itse
lf |
1603 return fileExists(path+"/CURRENT"); | 1603 return fileExists(path+"/CURRENT"); |
1604 } | 1604 } |
1605 | 1605 |
1606 } // namespace WebCore | 1606 } // namespace WebCore |
1607 | 1607 |
1608 #endif // USE(LEVELDB) | 1608 #endif // USE(LEVELDB) |
1609 #endif // ENABLE(INDEXED_DATABASE) | 1609 #endif // ENABLE(INDEXED_DATABASE) |
OLD | NEW |