Changeset 127685 in webkit


Ignore:
Timestamp:
Sep 5, 2012 8:54:06 PM (12 years ago)
Author:
jsbell@chromium.org
Message:

IndexedDB: Large integer versions not persisted correctly
https://bugs.webkit.org/show_bug.cgi?id=95873

Reviewed by Tony Chang.

Source/WebCore:

Correctly encode AND decode integer versions numbers as VarInts.

Test: storage/indexeddb/intversion-encoding.html

  • Modules/indexeddb/IDBLevelDBBackingStore.cpp:

(WebCore::getVarInt):
(WebCore):
(WebCore::IDBLevelDBBackingStore::getIDBDatabaseMetaData):

LayoutTests:

Verify large integer versions that encode differently as Ints vs. VarInts.

  • storage/indexeddb/intversion-encoding-expected.txt: Added.
  • storage/indexeddb/intversion-encoding.html: Added.
  • storage/indexeddb/resources/intversion-encoding.js: Added.

(test):
(openFirstTime.request.onupgradeneeded):
(openFirstTime.request.onsuccess):
(openFirstTime):
(openSecondTime.request.onsuccess):
(openSecondTime):

Location:
trunk
Files:
3 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r127684 r127685  
     12012-09-05  Joshua Bell  <jsbell@chromium.org>
     2
     3        IndexedDB: Large integer versions not persisted correctly
     4        https://bugs.webkit.org/show_bug.cgi?id=95873
     5
     6        Reviewed by Tony Chang.
     7
     8        Verify large integer versions that encode differently as Ints vs. VarInts.
     9
     10        * storage/indexeddb/intversion-encoding-expected.txt: Added.
     11        * storage/indexeddb/intversion-encoding.html: Added.
     12        * storage/indexeddb/resources/intversion-encoding.js: Added.
     13        (test):
     14        (openFirstTime.request.onupgradeneeded):
     15        (openFirstTime.request.onsuccess):
     16        (openFirstTime):
     17        (openSecondTime.request.onsuccess):
     18        (openSecondTime):
     19
    1202012-09-05  Sheriff Bot  <webkit.review.bot@gmail.com>
    221
  • trunk/Source/WebCore/ChangeLog

    r127684 r127685  
     12012-09-05  Joshua Bell  <jsbell@chromium.org>
     2
     3        IndexedDB: Large integer versions not persisted correctly
     4        https://bugs.webkit.org/show_bug.cgi?id=95873
     5
     6        Reviewed by Tony Chang.
     7
     8        Correctly encode AND decode integer versions numbers as VarInts.
     9
     10        Test: storage/indexeddb/intversion-encoding.html
     11
     12        * Modules/indexeddb/IDBLevelDBBackingStore.cpp:
     13        (WebCore::getVarInt):
     14        (WebCore):
     15        (WebCore::IDBLevelDBBackingStore::getIDBDatabaseMetaData):
     16
    1172012-09-05  Sheriff Bot  <webkit.review.bot@gmail.com>
    218
  • trunk/Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp

    r127669 r127685  
    8989
    9090template <typename DBOrTransaction>
     91static bool getVarInt(DBOrTransaction* db, const Vector<char>& key, int64_t& foundInt)
     92{
     93    Vector<char> result;
     94    if (!db->get(key, result))
     95        return false;
     96
     97    return decodeVarInt(result.begin(), result.end(), foundInt) == result.end();
     98}
     99
     100template <typename DBOrTransaction>
    91101static bool putVarInt(DBOrTransaction* db, const Vector<char>& key, int64_t value)
    92102{
     
    285295        return false;
    286296
    287     ok = getInt(m_db.get(), DatabaseMetaDataKey::encode(foundId, DatabaseMetaDataKey::UserIntVersion), foundIntVersion);
     297    ok = getVarInt(m_db.get(), DatabaseMetaDataKey::encode(foundId, DatabaseMetaDataKey::UserIntVersion), foundIntVersion);
    288298    if (!ok)
    289299        return false;
Note: See TracChangeset for help on using the changeset viewer.