PassRefPtr<IDBKey> IDBObjectStoreBackendLevelDB::generateKey(PassRefPtr<IDBBackingStore> backingStore, PassRefPtr<IDBTransactionBackendLevelDB> transaction, int64_t databaseId, int64_t objectStoreId) { const int64_t maxGeneratorValue = 9007199254740992LL; // Maximum integer storable as ECMAScript number. int64_t currentNumber; bool ok = backingStore->getKeyGeneratorCurrentNumber(transaction->backingStoreTransaction(), databaseId, objectStoreId, currentNumber); if (!ok) { LOG_ERROR("Failed to getKeyGeneratorCurrentNumber"); return IDBKey::createInvalid(); } if (currentNumber < 0 || currentNumber > maxGeneratorValue) return IDBKey::createInvalid(); return IDBKey::createNumber(currentNumber); }