Changeset 115922 in webkit


Ignore:
Timestamp:
May 2, 2012, 6:12:03 PM (13 years ago)
Author:
zmo@google.com
Message:

Unreviewed, rolling out r115902.
http://trac.webkit.org/changeset/115902
https://bugs.webkit.org/show_bug.cgi?id=85441

Compile failure on linux 32 (Requested by zhenyao on #webkit).

Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2012-05-02

Source/WebCore:

  • Modules/indexeddb/IDBBackingStore.h:

(IDBBackingStore):

  • Modules/indexeddb/IDBLevelDBBackingStore.cpp:

(WebCore::IDBLevelDBBackingStore::nextAutoIncrementNumber):

  • Modules/indexeddb/IDBLevelDBBackingStore.h:

(IDBLevelDBBackingStore):

  • Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:

(WebCore::IDBObjectStoreBackendImpl::putInternal):
(WebCore::IDBObjectStoreBackendImpl::genAutoIncrementKey):

  • Modules/indexeddb/IDBObjectStoreBackendImpl.h:

(IDBObjectStoreBackendImpl):

LayoutTests:

  • storage/indexeddb/key-generator-expected.txt:
  • storage/indexeddb/resources/key-generator.js:
Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r115917 r115922  
     12012-05-02  Sheriff Bot  <webkit.review.bot@gmail.com>
     2
     3        Unreviewed, rolling out r115902.
     4        http://trac.webkit.org/changeset/115902
     5        https://bugs.webkit.org/show_bug.cgi?id=85441
     6
     7        Compile failure on linux 32 (Requested by zhenyao on #webkit).
     8
     9        * storage/indexeddb/key-generator-expected.txt:
     10        * storage/indexeddb/resources/key-generator.js:
     11
    1122012-05-02  Sheriff Bot  <webkit.review.bot@gmail.com>
    213
  • trunk/LayoutTests/storage/indexeddb/key-generator-expected.txt

    r115902 r115922  
    143143PASS Got "d" for key: 2
    144144db.close()
    145 
    146 Verify that keys above 2^53 result in errors.
    147 request = indexedDB.deleteDatabase('key-generator')
    148 request = indexedDB.open('key-generator')
    149 db = request.result
    150 request = db.setVersion('1')
    151 trans = request.result
    152 trans1 = db.transaction(['store'], IDBTransaction.READ_WRITE)
    153 store_t1 = trans1.objectStore('store')
    154 store_t1.put('a')
    155 request = store.get(1)
    156 store_t1.put('b', 9007199254740992)
    157 request = store.get(9007199254740992)
    158 store_t1.put('c')
    159 store_t1.put('d', 2)
    160 request = store.get(2)
    161 PASS Got "a" for key: 1
    162 PASS Got "b" for key: 9007199254740992
    163 Error event fired auto-incrementing past 2^53 (as expected)
    164 PASS event.target.errorCode is IDBDatabaseException.DATA_ERR
    165 event.preventDefault()
    166 PASS Got "d" for key: 2
    167 db.close()
    168145PASS successfullyParsed is true
    169146
  • trunk/LayoutTests/storage/indexeddb/resources/key-generator.js

    r115902 r115922  
    204204);
    205205
    206 defineTest(
    207     'Verify that keys above 2^53 result in errors.',
    208     function (db, trans) {
    209         db.createObjectStore('store', { autoIncrement: true });
    210     },
    211 
    212     function (db, callback) {
    213         evalAndLog("trans1 = db.transaction(['store'], IDBTransaction.READ_WRITE)");
    214         evalAndLog("store_t1 = trans1.objectStore('store')");
    215         evalAndLog("store_t1.put('a')");
    216         check(store_t1, 1, 'a');
    217         evalAndLog("store_t1.put('b', 9007199254740992)");
    218         check(store_t1, 9007199254740992, 'b');
    219         request = evalAndLog("store_t1.put('c')");
    220         request.onsuccess = unexpectedSuccessCallback;
    221         request.onerror = function () {
    222             debug("Error event fired auto-incrementing past 2^53 (as expected)");
    223             shouldBe("event.target.errorCode", "IDBDatabaseException.DATA_ERR");
    224             evalAndLog("event.preventDefault()");
    225         };
    226         evalAndLog("store_t1.put('d', 2)");
    227         check(store_t1, 2, 'd');
    228 
    229         trans1.oncomplete = callback;
    230     }
    231 );
    232 
    233206test();
  • trunk/Source/WebCore/ChangeLog

    r115913 r115922  
     12012-05-02  Sheriff Bot  <webkit.review.bot@gmail.com>
     2
     3        Unreviewed, rolling out r115902.
     4        http://trac.webkit.org/changeset/115902
     5        https://bugs.webkit.org/show_bug.cgi?id=85441
     6
     7        Compile failure on linux 32 (Requested by zhenyao on #webkit).
     8
     9        * Modules/indexeddb/IDBBackingStore.h:
     10        (IDBBackingStore):
     11        * Modules/indexeddb/IDBLevelDBBackingStore.cpp:
     12        (WebCore::IDBLevelDBBackingStore::nextAutoIncrementNumber):
     13        * Modules/indexeddb/IDBLevelDBBackingStore.h:
     14        (IDBLevelDBBackingStore):
     15        * Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:
     16        (WebCore::IDBObjectStoreBackendImpl::putInternal):
     17        (WebCore::IDBObjectStoreBackendImpl::genAutoIncrementKey):
     18        * Modules/indexeddb/IDBObjectStoreBackendImpl.h:
     19        (IDBObjectStoreBackendImpl):
     20
    1212012-05-02  Julien Chaffraix  <jchaffraix@webkit.org>
    222
  • trunk/Source/WebCore/Modules/indexeddb/IDBBackingStore.h

    r115902 r115922  
    6868    virtual void clearObjectStore(int64_t databaseId, int64_t objectStoreId) = 0;
    6969    virtual void deleteObjectStoreRecord(int64_t databaseId, int64_t objectStoreId, const ObjectStoreRecordIdentifier*) = 0;
    70     virtual int64_t nextAutoIncrementNumber(int64_t databaseId, int64_t objectStoreId) = 0;
     70    virtual double nextAutoIncrementNumber(int64_t databaseId, int64_t objectStoreId) = 0;
    7171    virtual bool keyExistsInObjectStore(int64_t databaseId, int64_t objectStoreId, const IDBKey&, ObjectStoreRecordIdentifier* foundRecordIdentifier) = 0;
    7272
  • trunk/Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp

    r115902 r115922  
    603603}
    604604
    605 int64_t IDBLevelDBBackingStore::nextAutoIncrementNumber(int64_t databaseId, int64_t objectStoreId)
     605double IDBLevelDBBackingStore::nextAutoIncrementNumber(int64_t databaseId, int64_t objectStoreId)
    606606{
    607607    ASSERT(m_currentTransaction);
     
    611611    OwnPtr<LevelDBIterator> it = m_currentTransaction->createIterator();
    612612
    613     int64_t maxNumericKey = 0;
    614 
    615     // FIXME: This does a forward scan over all keys. Improve it.
    616     // Since all dates > all numbers, create Date(-Infinity) and seek backwards.
     613    int maxNumericKey = 0;
     614
     615    // FIXME: Be more efficient: seek to something after the object store data, then reverse.
    617616
    618617    for (it->seek(startKey); it->isValid() && compareKeys(it->key(), stopKey) < 0; it->next()) {
  • trunk/Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.h

    r115902 r115922  
    5959    virtual void clearObjectStore(int64_t databaseId, int64_t objectStoreId);
    6060    virtual void deleteObjectStoreRecord(int64_t databaseId, int64_t objectStoreId, const ObjectStoreRecordIdentifier*);
    61     virtual int64_t nextAutoIncrementNumber(int64_t databaseId, int64_t objectStoreId);
     61    virtual double nextAutoIncrementNumber(int64_t databaseId, int64_t objectStoreId);
    6262    virtual bool keyExistsInObjectStore(int64_t databaseId, int64_t objectStoreId, const IDBKey&, ObjectStoreRecordIdentifier* foundRecordIdentifier);
    6363
  • trunk/Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp

    r115902 r115922  
    256256            if (!key) {
    257257                RefPtr<IDBKey> autoIncKey = objectStore->genAutoIncrementKey();
    258                 if (!autoIncKey->valid()) {
    259                     callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::DATA_ERR, "Maximum key generator value reached."));
    260                     return;
    261                 }
    262258                if (hasKeyPath) {
    263259                    RefPtr<SerializedScriptValue> valueAfterInjection = injectKeyIntoKeyPath(autoIncKey, value, objectStore->m_keyPath);
     
    684680PassRefPtr<IDBKey> IDBObjectStoreBackendImpl::genAutoIncrementKey()
    685681{
    686     const int64_t kMaxGeneratorValue = 9007199254740992; // Maximum integer storable as ECMAScript number.
    687     if (m_autoIncrementNumber > kMaxGeneratorValue)
    688         return IDBKey::createInvalid();
    689682    if (m_autoIncrementNumber > 0)
    690683        return IDBKey::createNumber(m_autoIncrementNumber++);
    691684
    692     m_autoIncrementNumber = m_backingStore->nextAutoIncrementNumber(m_databaseId, id());
    693     if (m_autoIncrementNumber > kMaxGeneratorValue)
    694         return IDBKey::createInvalid();
     685    m_autoIncrementNumber = static_cast<int>(m_backingStore->nextAutoIncrementNumber(m_databaseId, id()));
    695686    return IDBKey::createNumber(m_autoIncrementNumber++);
    696687}
  • trunk/Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.h

    r115902 r115922  
    116116    typedef HashMap<String, RefPtr<IDBIndexBackendImpl> > IndexMap;
    117117    IndexMap m_indexes;
    118     int64_t m_autoIncrementNumber;
     118    int m_autoIncrementNumber;
    119119};
    120120
Note: See TracChangeset for help on using the changeset viewer.