Index: content/browser/indexed_db/indexed_db_backing_store.cc |
diff --git a/content/browser/indexed_db/indexed_db_backing_store.cc b/content/browser/indexed_db/indexed_db_backing_store.cc |
index 0da2abd5b8aff66b948e8cbf036f755d4f13c730..d4a5334bfec00e9d1cdced5d87600872c6a46527 100644 |
--- a/content/browser/indexed_db/indexed_db_backing_store.cc |
+++ b/content/browser/indexed_db/indexed_db_backing_store.cc |
@@ -4,8 +4,6 @@ |
#include "content/browser/indexed_db/indexed_db_backing_store.h" |
-#include <string> |
- |
#include "base/file_util.h" |
#include "base/logging.h" |
#include "base/metrics/histogram.h" |
@@ -17,7 +15,6 @@ |
#include "content/browser/indexed_db/leveldb/leveldb_comparator.h" |
#include "content/browser/indexed_db/leveldb/leveldb_database.h" |
#include "content/browser/indexed_db/leveldb/leveldb_iterator.h" |
-#include "content/browser/indexed_db/leveldb/leveldb_slice.h" |
#include "content/browser/indexed_db/leveldb/leveldb_transaction.h" |
#include "content/common/indexed_db/indexed_db_key.h" |
#include "content/common/indexed_db/indexed_db_key_path.h" |
@@ -88,16 +85,16 @@ static void RecordInternalError(const char* type, |
#define INTERNAL_WRITE_ERROR(location) REPORT_ERROR("Write", location) |
static void PutBool(LevelDBTransaction* transaction, |
- const LevelDBSlice& key, |
+ const StringPiece& key, |
bool value) { |
- std::vector<char> buffer; |
+ std::string buffer; |
EncodeBool(value, &buffer); |
transaction->Put(key, &buffer); |
} |
template <typename DBOrTransaction> |
static bool GetInt(DBOrTransaction* db, |
- const LevelDBSlice& key, |
+ const StringPiece& key, |
int64* found_int, |
bool* found) { |
std::string result; |
@@ -111,17 +108,17 @@ static bool GetInt(DBOrTransaction* db, |
} |
static void PutInt(LevelDBTransaction* transaction, |
- const LevelDBSlice& key, |
+ const StringPiece& key, |
int64 value) { |
DCHECK_GE(value, 0); |
- std::vector<char> buffer; |
+ std::string buffer; |
EncodeInt(value, &buffer); |
transaction->Put(key, &buffer); |
} |
template <typename DBOrTransaction> |
WARN_UNUSED_RESULT static bool GetVarInt(DBOrTransaction* db, |
- const LevelDBSlice& key, |
+ const StringPiece& key, |
int64* found_int, |
bool* found) { |
std::string result; |
@@ -135,16 +132,16 @@ WARN_UNUSED_RESULT static bool GetVarInt(DBOrTransaction* db, |
} |
static void PutVarInt(LevelDBTransaction* transaction, |
- const LevelDBSlice& key, |
+ const StringPiece& key, |
int64 value) { |
- std::vector<char> buffer; |
+ std::string buffer; |
EncodeVarInt(value, &buffer); |
transaction->Put(key, &buffer); |
} |
template <typename DBOrTransaction> |
WARN_UNUSED_RESULT static bool GetString(DBOrTransaction* db, |
- const LevelDBSlice& key, |
+ const StringPiece& key, |
string16* found_string, |
bool* found) { |
std::string result; |
@@ -159,32 +156,32 @@ WARN_UNUSED_RESULT static bool GetString(DBOrTransaction* db, |
} |
static void PutString(LevelDBTransaction* transaction, |
- const LevelDBSlice& key, |
+ const StringPiece& key, |
const string16& value) { |
- std::vector<char> buffer; |
+ std::string buffer; |
EncodeString(value, &buffer); |
transaction->Put(key, &buffer); |
} |
static void PutIDBKeyPath(LevelDBTransaction* transaction, |
- const LevelDBSlice& key, |
+ const StringPiece& key, |
const IndexedDBKeyPath& value) { |
- std::vector<char> buffer; |
+ std::string buffer; |
EncodeIDBKeyPath(value, &buffer); |
transaction->Put(key, &buffer); |
} |
-static int CompareKeys(const LevelDBSlice& a, const LevelDBSlice& b) { |
+static int CompareKeys(const StringPiece& a, const StringPiece& b) { |
return Compare(a, b, false /*index_keys*/); |
} |
-static int CompareIndexKeys(const LevelDBSlice& a, const LevelDBSlice& b) { |
+static int CompareIndexKeys(const StringPiece& a, const StringPiece& b) { |
return Compare(a, b, true /*index_keys*/); |
} |
class Comparator : public LevelDBComparator { |
public: |
- virtual int Compare(const LevelDBSlice& a, const LevelDBSlice& b) const |
+ virtual int Compare(const StringPiece& a, const StringPiece& b) const |
OVERRIDE { |
return content::Compare(a, b, false /*index_keys*/); |
} |
@@ -198,8 +195,7 @@ static const int64 kLatestKnownSchemaVersion = 2; |
WARN_UNUSED_RESULT static bool IsSchemaKnown(LevelDBDatabase* db, bool* known) { |
int64 db_schema_version = 0; |
bool found = false; |
- bool ok = GetInt( |
- db, LevelDBSlice(SchemaVersionKey::Encode()), &db_schema_version, &found); |
+ bool ok = GetInt(db, SchemaVersionKey::Encode(), &db_schema_version, &found); |
if (!ok) |
return false; |
if (!found) { |
@@ -213,8 +209,7 @@ WARN_UNUSED_RESULT static bool IsSchemaKnown(LevelDBDatabase* db, bool* known) { |
const uint32 latest_known_data_version = kWireVersion; |
int64 db_data_version = 0; |
- ok = GetInt( |
- db, LevelDBSlice(DataVersionKey::Encode()), &db_data_version, &found); |
+ ok = GetInt(db, DataVersionKey::Encode(), &db_data_version, &found); |
if (!ok) |
return false; |
if (!found) { |
@@ -235,8 +230,8 @@ WARN_UNUSED_RESULT static bool SetUpMetadata( |
LevelDBDatabase* db, |
const std::string& origin_identifier) { |
const uint32 latest_known_data_version = kWireVersion; |
- const std::vector<char> schema_version_key = SchemaVersionKey::Encode(); |
- const std::vector<char> data_version_key = DataVersionKey::Encode(); |
+ const std::string schema_version_key = SchemaVersionKey::Encode(); |
+ const std::string data_version_key = DataVersionKey::Encode(); |
scoped_refptr<LevelDBTransaction> transaction = |
LevelDBTransaction::Create(db); |
@@ -244,10 +239,8 @@ WARN_UNUSED_RESULT static bool SetUpMetadata( |
int64 db_schema_version = 0; |
int64 db_data_version = 0; |
bool found = false; |
- bool ok = GetInt(transaction.get(), |
- LevelDBSlice(schema_version_key), |
- &db_schema_version, |
- &found); |
+ bool ok = |
+ GetInt(transaction.get(), schema_version_key, &db_schema_version, &found); |
if (!ok) { |
INTERNAL_READ_ERROR(SET_UP_METADATA); |
return false; |
@@ -255,25 +248,22 @@ WARN_UNUSED_RESULT static bool SetUpMetadata( |
if (!found) { |
// Initialize new backing store. |
db_schema_version = kLatestKnownSchemaVersion; |
- PutInt( |
- transaction.get(), LevelDBSlice(schema_version_key), db_schema_version); |
+ PutInt(transaction.get(), schema_version_key, db_schema_version); |
db_data_version = latest_known_data_version; |
- PutInt(transaction.get(), LevelDBSlice(data_version_key), db_data_version); |
+ PutInt(transaction.get(), data_version_key, db_data_version); |
} else { |
// Upgrade old backing store. |
DCHECK_LE(db_schema_version, kLatestKnownSchemaVersion); |
if (db_schema_version < 1) { |
db_schema_version = 1; |
- PutInt(transaction.get(), |
- LevelDBSlice(schema_version_key), |
- db_schema_version); |
- const std::vector<char> start_key = |
+ PutInt(transaction.get(), schema_version_key, db_schema_version); |
+ const std::string start_key = |
DatabaseNameKey::EncodeMinKeyForOrigin(origin_identifier); |
- const std::vector<char> stop_key = |
+ const std::string stop_key = |
DatabaseNameKey::EncodeStopKeyForOrigin(origin_identifier); |
scoped_ptr<LevelDBIterator> it = db->CreateIterator(); |
- for (it->Seek(LevelDBSlice(start_key)); |
- it->IsValid() && CompareKeys(it->Key(), LevelDBSlice(stop_key)) < 0; |
+ for (it->Seek(start_key); |
+ it->IsValid() && CompareKeys(it->Key(), stop_key) < 0; |
it->Next()) { |
int64 database_id = 0; |
found = false; |
@@ -286,30 +276,24 @@ WARN_UNUSED_RESULT static bool SetUpMetadata( |
INTERNAL_CONSISTENCY_ERROR(SET_UP_METADATA); |
return false; |
} |
- std::vector<char> int_version_key = DatabaseMetaDataKey::Encode( |
+ std::string int_version_key = DatabaseMetaDataKey::Encode( |
database_id, DatabaseMetaDataKey::USER_INT_VERSION); |
PutVarInt(transaction.get(), |
- LevelDBSlice(int_version_key), |
+ int_version_key, |
IndexedDBDatabaseMetadata::DEFAULT_INT_VERSION); |
} |
} |
if (db_schema_version < 2) { |
db_schema_version = 2; |
- PutInt(transaction.get(), |
- LevelDBSlice(schema_version_key), |
- db_schema_version); |
+ PutInt(transaction.get(), schema_version_key, db_schema_version); |
db_data_version = kWireVersion; |
- PutInt( |
- transaction.get(), LevelDBSlice(data_version_key), db_data_version); |
+ PutInt(transaction.get(), data_version_key, db_data_version); |
} |
} |
// All new values will be written using this serialization version. |
found = false; |
- ok = GetInt(transaction.get(), |
- LevelDBSlice(data_version_key), |
- &db_data_version, |
- &found); |
+ ok = GetInt(transaction.get(), data_version_key, &db_data_version, &found); |
if (!ok) { |
INTERNAL_READ_ERROR(SET_UP_METADATA); |
return false; |
@@ -320,7 +304,7 @@ WARN_UNUSED_RESULT static bool SetUpMetadata( |
} |
if (db_data_version < latest_known_data_version) { |
db_data_version = latest_known_data_version; |
- PutInt(transaction.get(), LevelDBSlice(data_version_key), db_data_version); |
+ PutInt(transaction.get(), data_version_key, db_data_version); |
} |
DCHECK_EQ(db_schema_version, kLatestKnownSchemaVersion); |
@@ -337,7 +321,7 @@ template <typename DBOrTransaction> |
WARN_UNUSED_RESULT static bool GetMaxObjectStoreId(DBOrTransaction* db, |
int64 database_id, |
int64* max_object_store_id) { |
- const std::vector<char> max_object_store_id_key = DatabaseMetaDataKey::Encode( |
+ const std::string max_object_store_id_key = DatabaseMetaDataKey::Encode( |
database_id, DatabaseMetaDataKey::MAX_OBJECT_STORE_ID); |
bool ok = |
GetMaxObjectStoreId(db, max_object_store_id_key, max_object_store_id); |
@@ -347,12 +331,11 @@ WARN_UNUSED_RESULT static bool GetMaxObjectStoreId(DBOrTransaction* db, |
template <typename DBOrTransaction> |
WARN_UNUSED_RESULT static bool GetMaxObjectStoreId( |
DBOrTransaction* db, |
- const std::vector<char>& max_object_store_id_key, |
+ const std::string& max_object_store_id_key, |
int64* max_object_store_id) { |
*max_object_store_id = -1; |
bool found = false; |
- bool ok = GetInt( |
- db, LevelDBSlice(max_object_store_id_key), max_object_store_id, &found); |
+ bool ok = GetInt(db, max_object_store_id_key, max_object_store_id, &found); |
if (!ok) |
return false; |
if (!found) |
@@ -391,7 +374,7 @@ IndexedDBBackingStore::~IndexedDBBackingStore() { |
} |
IndexedDBBackingStore::RecordIdentifier::RecordIdentifier( |
- const std::vector<char>& primary_key, |
+ const std::string& primary_key, |
int64 version) |
: primary_key_(primary_key), version_(version) { |
DCHECK(!primary_key.empty()); |
@@ -468,8 +451,8 @@ scoped_refptr<IndexedDBBackingStore> IndexedDBBackingStore::Open( |
} |
base::FilePath identifier_path = |
- base::FilePath().AppendASCII(origin_identifier). |
- AddExtension(FILE_PATH_LITERAL(".indexeddb.leveldb")); |
+ base::FilePath().AppendASCII(origin_identifier) |
+ .AddExtension(FILE_PATH_LITERAL(".indexeddb.leveldb")); |
int limit = file_util::GetMaximumPathComponentLength(path_base); |
if (limit == -1) { |
@@ -549,12 +532,11 @@ scoped_refptr<IndexedDBBackingStore> IndexedDBBackingStore::Open( |
->Add(INDEXED_DB_LEVEL_DB_BACKING_STORE_OPEN_SUCCESS); |
} else if (is_disk_full) { |
LOG(ERROR) << "Unable to open backing store - disk is full."; |
- base::Histogram::FactoryGet( |
- "WebCore.IndexedDB.BackingStore.OpenStatus", |
- 1, |
- INDEXED_DB_LEVEL_DB_BACKING_STORE_OPEN_MAX, |
- INDEXED_DB_LEVEL_DB_BACKING_STORE_OPEN_MAX + 1, |
- base::HistogramBase::kUmaTargetedHistogramFlag) |
+ base::Histogram::FactoryGet("WebCore.IndexedDB.BackingStore.OpenStatus", |
+ 1, |
+ INDEXED_DB_LEVEL_DB_BACKING_STORE_OPEN_MAX, |
+ INDEXED_DB_LEVEL_DB_BACKING_STORE_OPEN_MAX + 1, |
+ base::HistogramBase::kUmaTargetedHistogramFlag) |
->Add(INDEXED_DB_LEVEL_DB_BACKING_STORE_OPEN_DISK_FULL); |
return scoped_refptr<IndexedDBBackingStore>(); |
} else { |
@@ -658,16 +640,16 @@ scoped_refptr<IndexedDBBackingStore> IndexedDBBackingStore::Create( |
std::vector<string16> IndexedDBBackingStore::GetDatabaseNames() { |
std::vector<string16> found_names; |
- const std::vector<char> start_key = |
+ const std::string start_key = |
DatabaseNameKey::EncodeMinKeyForOrigin(identifier_); |
- const std::vector<char> stop_key = |
+ const std::string stop_key = |
DatabaseNameKey::EncodeStopKeyForOrigin(identifier_); |
DCHECK(found_names.empty()); |
scoped_ptr<LevelDBIterator> it = db_->CreateIterator(); |
- for (it->Seek(LevelDBSlice(start_key)); |
- it->IsValid() && CompareKeys(it->Key(), LevelDBSlice(stop_key)) < 0; |
+ for (it->Seek(start_key); |
+ it->IsValid() && CompareKeys(it->Key(), stop_key) < 0; |
it->Next()) { |
const char* p = it->Key().begin(); |
const char* limit = it->Key().end(); |
@@ -685,10 +667,10 @@ bool IndexedDBBackingStore::GetIDBDatabaseMetaData( |
const string16& name, |
IndexedDBDatabaseMetadata* metadata, |
bool* found) { |
- const std::vector<char> key = DatabaseNameKey::Encode(identifier_, name); |
+ const std::string key = DatabaseNameKey::Encode(identifier_, name); |
*found = false; |
- bool ok = GetInt(db_.get(), LevelDBSlice(key), &metadata->id, found); |
+ bool ok = GetInt(db_.get(), key, &metadata->id, found); |
if (!ok) { |
INTERNAL_READ_ERROR(GET_IDBDATABASE_METADATA); |
return false; |
@@ -697,8 +679,8 @@ bool IndexedDBBackingStore::GetIDBDatabaseMetaData( |
return true; |
ok = GetString(db_.get(), |
- LevelDBSlice(DatabaseMetaDataKey::Encode( |
- metadata->id, DatabaseMetaDataKey::USER_VERSION)), |
+ DatabaseMetaDataKey::Encode(metadata->id, |
+ DatabaseMetaDataKey::USER_VERSION), |
&metadata->version, |
found); |
if (!ok) { |
@@ -711,8 +693,8 @@ bool IndexedDBBackingStore::GetIDBDatabaseMetaData( |
} |
ok = GetVarInt(db_.get(), |
- LevelDBSlice(DatabaseMetaDataKey::Encode( |
- metadata->id, DatabaseMetaDataKey::USER_INT_VERSION)), |
+ DatabaseMetaDataKey::Encode( |
+ metadata->id, DatabaseMetaDataKey::USER_INT_VERSION), |
&metadata->int_version, |
found); |
if (!ok) { |
@@ -745,10 +727,8 @@ WARN_UNUSED_RESULT static bool GetNewDatabaseId(LevelDBDatabase* db, |
*new_id = -1; |
int64 max_database_id = -1; |
bool found = false; |
- bool ok = GetInt(transaction.get(), |
- LevelDBSlice(MaxDatabaseIdKey::Encode()), |
- &max_database_id, |
- &found); |
+ bool ok = GetInt( |
+ transaction.get(), MaxDatabaseIdKey::Encode(), &max_database_id, &found); |
if (!ok) { |
INTERNAL_READ_ERROR(GET_NEW_DATABASE_ID); |
return false; |
@@ -759,8 +739,7 @@ WARN_UNUSED_RESULT static bool GetNewDatabaseId(LevelDBDatabase* db, |
DCHECK_GE(max_database_id, 0); |
int64 database_id = max_database_id + 1; |
- PutInt( |
- transaction.get(), LevelDBSlice(MaxDatabaseIdKey::Encode()), database_id); |
+ PutInt(transaction.get(), MaxDatabaseIdKey::Encode(), database_id); |
if (!transaction->Commit()) { |
INTERNAL_WRITE_ERROR(GET_NEW_DATABASE_ID); |
return false; |
@@ -783,16 +762,15 @@ bool IndexedDBBackingStore::CreateIDBDatabaseMetaData(const string16& name, |
scoped_refptr<LevelDBTransaction> transaction = |
LevelDBTransaction::Create(db_.get()); |
- PutInt(transaction.get(), |
- LevelDBSlice(DatabaseNameKey::Encode(identifier_, name)), |
- *row_id); |
- PutString(transaction.get(), |
- LevelDBSlice(DatabaseMetaDataKey::Encode( |
- *row_id, DatabaseMetaDataKey::USER_VERSION)), |
- version); |
+ PutInt( |
+ transaction.get(), DatabaseNameKey::Encode(identifier_, name), *row_id); |
+ PutString( |
+ transaction.get(), |
+ DatabaseMetaDataKey::Encode(*row_id, DatabaseMetaDataKey::USER_VERSION), |
+ version); |
PutVarInt(transaction.get(), |
- LevelDBSlice(DatabaseMetaDataKey::Encode( |
- *row_id, DatabaseMetaDataKey::USER_INT_VERSION)), |
+ DatabaseMetaDataKey::Encode(*row_id, |
+ DatabaseMetaDataKey::USER_INT_VERSION), |
int_version); |
if (!transaction->Commit()) { |
INTERNAL_WRITE_ERROR(CREATE_IDBDATABASE_METADATA); |
@@ -809,8 +787,8 @@ bool IndexedDBBackingStore::UpdateIDBDatabaseIntVersion( |
int_version = IndexedDBDatabaseMetadata::DEFAULT_INT_VERSION; |
DCHECK_GE(int_version, 0) << "int_version was " << int_version; |
PutVarInt(Transaction::LevelDBTransactionFrom(transaction), |
- LevelDBSlice(DatabaseMetaDataKey::Encode( |
- row_id, DatabaseMetaDataKey::USER_INT_VERSION)), |
+ DatabaseMetaDataKey::Encode(row_id, |
+ DatabaseMetaDataKey::USER_INT_VERSION), |
int_version); |
return true; |
} |
@@ -819,19 +797,18 @@ bool IndexedDBBackingStore::UpdateIDBDatabaseMetaData( |
IndexedDBBackingStore::Transaction* transaction, |
int64 row_id, |
const string16& version) { |
- PutString(Transaction::LevelDBTransactionFrom(transaction), |
- LevelDBSlice(DatabaseMetaDataKey::Encode( |
- row_id, DatabaseMetaDataKey::USER_VERSION)), |
- version); |
+ PutString( |
+ Transaction::LevelDBTransactionFrom(transaction), |
+ DatabaseMetaDataKey::Encode(row_id, DatabaseMetaDataKey::USER_VERSION), |
+ version); |
return true; |
} |
static void DeleteRange(LevelDBTransaction* transaction, |
- const std::vector<char>& begin, |
- const std::vector<char>& end) { |
+ const std::string& begin, |
+ const std::string& end) { |
scoped_ptr<LevelDBIterator> it = transaction->CreateIterator(); |
- for (it->Seek(LevelDBSlice(begin)); |
- it->IsValid() && CompareKeys(it->Key(), LevelDBSlice(end)) < 0; |
+ for (it->Seek(begin); it->IsValid() && CompareKeys(it->Key(), end) < 0; |
it->Next()) |
transaction->Remove(it->Key()); |
} |
@@ -849,18 +826,18 @@ bool IndexedDBBackingStore::DeleteDatabase(const string16& name) { |
if (!success) |
return true; |
- const std::vector<char> start_key = DatabaseMetaDataKey::Encode( |
+ const std::string start_key = DatabaseMetaDataKey::Encode( |
metadata.id, DatabaseMetaDataKey::ORIGIN_NAME); |
- const std::vector<char> stop_key = DatabaseMetaDataKey::Encode( |
+ const std::string stop_key = DatabaseMetaDataKey::Encode( |
metadata.id + 1, DatabaseMetaDataKey::ORIGIN_NAME); |
scoped_ptr<LevelDBIterator> it = db_->CreateIterator(); |
- for (it->Seek(LevelDBSlice(start_key)); |
- it->IsValid() && CompareKeys(it->Key(), LevelDBSlice(stop_key)) < 0; |
+ for (it->Seek(start_key); |
+ it->IsValid() && CompareKeys(it->Key(), stop_key) < 0; |
it->Next()) |
transaction->Remove(it->Key()); |
- const std::vector<char> key = DatabaseNameKey::Encode(identifier_, name); |
- transaction->Remove(LevelDBSlice(key)); |
+ const std::string key = DatabaseNameKey::Encode(identifier_, name); |
+ transaction->Remove(key); |
if (!transaction->Commit()) { |
INTERNAL_WRITE_ERROR(DELETE_DATABASE); |
@@ -870,10 +847,10 @@ bool IndexedDBBackingStore::DeleteDatabase(const string16& name) { |
} |
static bool CheckObjectStoreAndMetaDataType(const LevelDBIterator* it, |
- const std::vector<char>& stop_key, |
+ const std::string& stop_key, |
int64 object_store_id, |
int64 meta_data_type) { |
- if (!it->IsValid() || CompareKeys(it->Key(), LevelDBSlice(stop_key)) >= 0) |
+ if (!it->IsValid() || CompareKeys(it->Key(), stop_key) >= 0) |
return false; |
ObjectStoreMetaDataKey meta_data_key; |
@@ -895,16 +872,16 @@ bool IndexedDBBackingStore::GetObjectStores( |
IDB_TRACE("IndexedDBBackingStore::GetObjectStores"); |
if (!KeyPrefix::IsValidDatabaseId(database_id)) |
return false; |
- const std::vector<char> start_key = |
+ const std::string start_key = |
ObjectStoreMetaDataKey::Encode(database_id, 1, 0); |
- const std::vector<char> stop_key = |
+ const std::string stop_key = |
ObjectStoreMetaDataKey::EncodeMaxKey(database_id); |
DCHECK(object_stores->empty()); |
scoped_ptr<LevelDBIterator> it = db_->CreateIterator(); |
- it->Seek(LevelDBSlice(start_key)); |
- while (it->IsValid() && CompareKeys(it->Key(), LevelDBSlice(stop_key)) < 0) { |
+ it->Seek(start_key); |
+ while (it->IsValid() && CompareKeys(it->Key(), stop_key) < 0) { |
const char* p = it->Key().begin(); |
const char* limit = it->Key().end(); |
@@ -924,7 +901,7 @@ bool IndexedDBBackingStore::GetObjectStores( |
// simplify. |
string16 object_store_name; |
{ |
- StringPiece slice(it->Value().AsStringPiece()); |
+ StringPiece slice(it->Value()); |
if (!DecodeString(&slice, &object_store_name) || !slice.empty()) |
INTERNAL_CONSISTENCY_ERROR(GET_OBJECT_STORES); |
} |
@@ -939,7 +916,7 @@ bool IndexedDBBackingStore::GetObjectStores( |
} |
IndexedDBKeyPath key_path; |
{ |
- StringPiece slice(it->Value().AsStringPiece()); |
+ StringPiece slice(it->Value()); |
if (!DecodeIDBKeyPath(&slice, &key_path) || !slice.empty()) |
INTERNAL_CONSISTENCY_ERROR(GET_OBJECT_STORES); |
} |
@@ -955,7 +932,7 @@ bool IndexedDBBackingStore::GetObjectStores( |
} |
bool auto_increment; |
{ |
- StringPiece slice(it->Value().AsStringPiece()); |
+ StringPiece slice(it->Value()); |
if (!DecodeBool(&slice, &auto_increment) || !slice.empty()) |
INTERNAL_CONSISTENCY_ERROR(GET_OBJECT_STORES); |
} |
@@ -990,7 +967,7 @@ bool IndexedDBBackingStore::GetObjectStores( |
} |
int64 max_index_id; |
{ |
- StringPiece slice(it->Value().AsStringPiece()); |
+ StringPiece slice(it->Value()); |
if (!DecodeInt(&slice, &max_index_id) || !slice.empty()) |
INTERNAL_CONSISTENCY_ERROR(GET_OBJECT_STORES); |
} |
@@ -1002,7 +979,7 @@ bool IndexedDBBackingStore::GetObjectStores( |
ObjectStoreMetaDataKey::HAS_KEY_PATH)) { |
bool has_key_path; |
{ |
- StringPiece slice(it->Value().AsStringPiece()); |
+ StringPiece slice(it->Value()); |
if (!DecodeBool(&slice, &has_key_path)) |
INTERNAL_CONSISTENCY_ERROR(GET_OBJECT_STORES); |
} |
@@ -1027,7 +1004,7 @@ bool IndexedDBBackingStore::GetObjectStores( |
stop_key, |
object_store_id, |
ObjectStoreMetaDataKey::KEY_GENERATOR_CURRENT_NUMBER)) { |
- StringPiece slice(it->Value().AsStringPiece()); |
+ StringPiece slice(it->Value()); |
if (!DecodeInt(&slice, &key_generator_current_number) || !slice.empty()) |
INTERNAL_CONSISTENCY_ERROR(GET_OBJECT_STORES); |
@@ -1054,7 +1031,7 @@ WARN_UNUSED_RESULT static bool SetMaxObjectStoreId( |
LevelDBTransaction* transaction, |
int64 database_id, |
int64 object_store_id) { |
- const std::vector<char> max_object_store_id_key = DatabaseMetaDataKey::Encode( |
+ const std::string max_object_store_id_key = DatabaseMetaDataKey::Encode( |
database_id, DatabaseMetaDataKey::MAX_OBJECT_STORE_ID); |
int64 max_object_store_id = -1; |
bool ok = GetMaxObjectStoreId( |
@@ -1068,7 +1045,7 @@ WARN_UNUSED_RESULT static bool SetMaxObjectStoreId( |
INTERNAL_CONSISTENCY_ERROR(SET_MAX_OBJECT_STORE_ID); |
return false; |
} |
- PutInt(transaction, LevelDBSlice(max_object_store_id_key), object_store_id); |
+ PutInt(transaction, max_object_store_id_key, object_store_id); |
return true; |
} |
@@ -1087,40 +1064,38 @@ bool IndexedDBBackingStore::CreateObjectStore( |
if (!SetMaxObjectStoreId(leveldb_transaction, database_id, object_store_id)) |
return false; |
- const std::vector<char> name_key = ObjectStoreMetaDataKey::Encode( |
+ const std::string name_key = ObjectStoreMetaDataKey::Encode( |
database_id, object_store_id, ObjectStoreMetaDataKey::NAME); |
- const std::vector<char> key_path_key = ObjectStoreMetaDataKey::Encode( |
+ const std::string key_path_key = ObjectStoreMetaDataKey::Encode( |
database_id, object_store_id, ObjectStoreMetaDataKey::KEY_PATH); |
- const std::vector<char> auto_increment_key = ObjectStoreMetaDataKey::Encode( |
+ const std::string auto_increment_key = ObjectStoreMetaDataKey::Encode( |
database_id, object_store_id, ObjectStoreMetaDataKey::AUTO_INCREMENT); |
- const std::vector<char> evictable_key = ObjectStoreMetaDataKey::Encode( |
+ const std::string evictable_key = ObjectStoreMetaDataKey::Encode( |
database_id, object_store_id, ObjectStoreMetaDataKey::EVICTABLE); |
- const std::vector<char> last_version_key = ObjectStoreMetaDataKey::Encode( |
+ const std::string last_version_key = ObjectStoreMetaDataKey::Encode( |
database_id, object_store_id, ObjectStoreMetaDataKey::LAST_VERSION); |
- const std::vector<char> max_index_id_key = ObjectStoreMetaDataKey::Encode( |
+ const std::string max_index_id_key = ObjectStoreMetaDataKey::Encode( |
database_id, object_store_id, ObjectStoreMetaDataKey::MAX_INDEX_ID); |
- const std::vector<char> has_key_path_key = ObjectStoreMetaDataKey::Encode( |
+ const std::string has_key_path_key = ObjectStoreMetaDataKey::Encode( |
database_id, object_store_id, ObjectStoreMetaDataKey::HAS_KEY_PATH); |
- const std::vector<char> key_generator_current_number_key = |
+ const std::string key_generator_current_number_key = |
ObjectStoreMetaDataKey::Encode( |
database_id, |
object_store_id, |
ObjectStoreMetaDataKey::KEY_GENERATOR_CURRENT_NUMBER); |
- const std::vector<char> names_key = |
- ObjectStoreNamesKey::Encode(database_id, name); |
- |
- PutString(leveldb_transaction, LevelDBSlice(name_key), name); |
- PutIDBKeyPath(leveldb_transaction, LevelDBSlice(key_path_key), key_path); |
- PutInt(leveldb_transaction, LevelDBSlice(auto_increment_key), auto_increment); |
- PutInt(leveldb_transaction, LevelDBSlice(evictable_key), false); |
- PutInt(leveldb_transaction, LevelDBSlice(last_version_key), 1); |
- PutInt(leveldb_transaction, LevelDBSlice(max_index_id_key), kMinimumIndexId); |
- PutBool( |
- leveldb_transaction, LevelDBSlice(has_key_path_key), !key_path.IsNull()); |
+ const std::string names_key = ObjectStoreNamesKey::Encode(database_id, name); |
+ |
+ PutString(leveldb_transaction, name_key, name); |
+ PutIDBKeyPath(leveldb_transaction, key_path_key, key_path); |
+ PutInt(leveldb_transaction, auto_increment_key, auto_increment); |
+ PutInt(leveldb_transaction, evictable_key, false); |
+ PutInt(leveldb_transaction, last_version_key, 1); |
+ PutInt(leveldb_transaction, max_index_id_key, kMinimumIndexId); |
+ PutBool(leveldb_transaction, has_key_path_key, !key_path.IsNull()); |
PutInt(leveldb_transaction, |
- LevelDBSlice(key_generator_current_number_key), |
+ key_generator_current_number_key, |
kKeyGeneratorInitialNumber); |
- PutInt(leveldb_transaction, LevelDBSlice(names_key), object_store_id); |
+ PutInt(leveldb_transaction, names_key, object_store_id); |
return true; |
} |
@@ -1138,8 +1113,8 @@ bool IndexedDBBackingStore::DeleteObjectStore( |
bool found = false; |
bool ok = GetString( |
leveldb_transaction, |
- LevelDBSlice(ObjectStoreMetaDataKey::Encode( |
- database_id, object_store_id, ObjectStoreMetaDataKey::NAME)), |
+ ObjectStoreMetaDataKey::Encode( |
+ database_id, object_store_id, ObjectStoreMetaDataKey::NAME), |
&object_store_name, |
&found); |
if (!ok) { |
@@ -1156,8 +1131,8 @@ bool IndexedDBBackingStore::DeleteObjectStore( |
ObjectStoreMetaDataKey::Encode(database_id, object_store_id, 0), |
ObjectStoreMetaDataKey::EncodeMaxKey(database_id, object_store_id)); |
- leveldb_transaction->Remove(LevelDBSlice( |
- ObjectStoreNamesKey::Encode(database_id, object_store_name))); |
+ leveldb_transaction->Remove( |
+ ObjectStoreNamesKey::Encode(database_id, object_store_name)); |
DeleteRange(leveldb_transaction, |
IndexFreeListKey::Encode(database_id, object_store_id, 0), |
@@ -1174,21 +1149,21 @@ bool IndexedDBBackingStore::GetRecord( |
int64 database_id, |
int64 object_store_id, |
const IndexedDBKey& key, |
- std::vector<char>* record) { |
+ std::string* record) { |
IDB_TRACE("IndexedDBBackingStore::GetRecord"); |
if (!KeyPrefix::ValidIds(database_id, object_store_id)) |
return false; |
LevelDBTransaction* leveldb_transaction = |
IndexedDBBackingStore::Transaction::LevelDBTransactionFrom(transaction); |
- const std::vector<char> leveldb_key = |
+ const std::string leveldb_key = |
ObjectStoreDataKey::Encode(database_id, object_store_id, key); |
std::string data; |
record->clear(); |
bool found = false; |
- bool ok = leveldb_transaction->Get(LevelDBSlice(leveldb_key), &data, &found); |
+ bool ok = leveldb_transaction->Get(leveldb_key, &data, &found); |
if (!ok) { |
INTERNAL_READ_ERROR(GET_RECORD); |
return false; |
@@ -1216,14 +1191,13 @@ WARN_UNUSED_RESULT static bool GetNewVersionNumber( |
int64 database_id, |
int64 object_store_id, |
int64* new_version_number) { |
- const std::vector<char> last_version_key = ObjectStoreMetaDataKey::Encode( |
+ const std::string last_version_key = ObjectStoreMetaDataKey::Encode( |
database_id, object_store_id, ObjectStoreMetaDataKey::LAST_VERSION); |
*new_version_number = -1; |
int64 last_version = -1; |
bool found = false; |
- bool ok = GetInt( |
- transaction, LevelDBSlice(last_version_key), &last_version, &found); |
+ bool ok = GetInt(transaction, last_version_key, &last_version, &found); |
if (!ok) { |
INTERNAL_READ_ERROR(GET_NEW_VERSION_NUMBER); |
return false; |
@@ -1234,7 +1208,7 @@ WARN_UNUSED_RESULT static bool GetNewVersionNumber( |
DCHECK_GE(last_version, 0); |
int64 version = last_version + 1; |
- PutInt(transaction, LevelDBSlice(last_version_key), version); |
+ PutInt(transaction, last_version_key, version); |
// TODO(jsbell): Think about how we want to handle the overflow scenario. |
DCHECK(version > last_version); |
@@ -1248,7 +1222,7 @@ bool IndexedDBBackingStore::PutRecord( |
int64 database_id, |
int64 object_store_id, |
const IndexedDBKey& key, |
- const std::vector<char>& value, |
+ const std::string& value, |
RecordIdentifier* record_identifier) { |
IDB_TRACE("IndexedDBBackingStore::PutRecord"); |
if (!KeyPrefix::ValidIds(database_id, object_store_id)) |
@@ -1263,22 +1237,22 @@ bool IndexedDBBackingStore::PutRecord( |
if (!ok) |
return false; |
DCHECK_GE(version, 0); |
- const std::vector<char> object_storedata_key = |
+ const std::string object_storedata_key = |
ObjectStoreDataKey::Encode(database_id, object_store_id, key); |
- std::vector<char> v; |
+ std::string v; |
EncodeVarInt(version, &v); |
v.insert(v.end(), value.begin(), value.end()); |
- leveldb_transaction->Put(LevelDBSlice(object_storedata_key), &v); |
+ leveldb_transaction->Put(object_storedata_key, &v); |
- const std::vector<char> exists_entry_key = |
+ const std::string exists_entry_key = |
ExistsEntryKey::Encode(database_id, object_store_id, key); |
- std::vector<char> version_encoded; |
+ std::string version_encoded; |
EncodeInt(version, &version_encoded); |
- leveldb_transaction->Put(LevelDBSlice(exists_entry_key), &version_encoded); |
+ leveldb_transaction->Put(exists_entry_key, &version_encoded); |
- std::vector<char> key_encoded; |
+ std::string key_encoded; |
EncodeIDBKey(key, &key_encoded); |
record_identifier->Reset(key_encoded, version); |
return true; |
@@ -1293,9 +1267,9 @@ bool IndexedDBBackingStore::ClearObjectStore( |
return false; |
LevelDBTransaction* leveldb_transaction = |
IndexedDBBackingStore::Transaction::LevelDBTransactionFrom(transaction); |
- const std::vector<char> start_key = |
+ const std::string start_key = |
KeyPrefix(database_id, object_store_id).Encode(); |
- const std::vector<char> stop_key = |
+ const std::string stop_key = |
KeyPrefix(database_id, object_store_id + 1).Encode(); |
DeleteRange(leveldb_transaction, start_key, stop_key); |
@@ -1313,13 +1287,13 @@ bool IndexedDBBackingStore::DeleteRecord( |
LevelDBTransaction* leveldb_transaction = |
IndexedDBBackingStore::Transaction::LevelDBTransactionFrom(transaction); |
- const std::vector<char> object_store_data_key = ObjectStoreDataKey::Encode( |
+ const std::string object_store_data_key = ObjectStoreDataKey::Encode( |
database_id, object_store_id, record_identifier.primary_key()); |
- leveldb_transaction->Remove(LevelDBSlice(object_store_data_key)); |
+ leveldb_transaction->Remove(object_store_data_key); |
- const std::vector<char> exists_entry_key = ExistsEntryKey::Encode( |
+ const std::string exists_entry_key = ExistsEntryKey::Encode( |
database_id, object_store_id, record_identifier.primary_key()); |
- leveldb_transaction->Remove(LevelDBSlice(exists_entry_key)); |
+ leveldb_transaction->Remove(exists_entry_key); |
return true; |
} |
@@ -1333,7 +1307,7 @@ bool IndexedDBBackingStore::GetKeyGeneratorCurrentNumber( |
LevelDBTransaction* leveldb_transaction = |
IndexedDBBackingStore::Transaction::LevelDBTransactionFrom(transaction); |
- const std::vector<char> key_generator_current_number_key = |
+ const std::string key_generator_current_number_key = |
ObjectStoreMetaDataKey::Encode( |
database_id, |
object_store_id, |
@@ -1343,8 +1317,8 @@ bool IndexedDBBackingStore::GetKeyGeneratorCurrentNumber( |
std::string data; |
bool found = false; |
- bool ok = leveldb_transaction->Get( |
- LevelDBSlice(key_generator_current_number_key), &data, &found); |
+ bool ok = |
+ leveldb_transaction->Get(key_generator_current_number_key, &data, &found); |
if (!ok) { |
INTERNAL_READ_ERROR(GET_KEY_GENERATOR_CURRENT_NUMBER); |
return false; |
@@ -1363,16 +1337,16 @@ bool IndexedDBBackingStore::GetKeyGeneratorCurrentNumber( |
// data. This violates the spec as the data may be cleared but the |
// key generator state must be preserved. |
// TODO(jsbell): Fix this for all stores on database open? |
- const std::vector<char> start_key = |
+ const std::string start_key = |
ObjectStoreDataKey::Encode(database_id, object_store_id, MinIDBKey()); |
- const std::vector<char> stop_key = |
+ const std::string stop_key = |
ObjectStoreDataKey::Encode(database_id, object_store_id, MaxIDBKey()); |
scoped_ptr<LevelDBIterator> it = leveldb_transaction->CreateIterator(); |
int64 max_numeric_key = 0; |
- for (it->Seek(LevelDBSlice(start_key)); |
- it->IsValid() && CompareKeys(it->Key(), LevelDBSlice(stop_key)) < 0; |
+ for (it->Seek(start_key); |
+ it->IsValid() && CompareKeys(it->Key(), stop_key) < 0; |
it->Next()) { |
const char* p = it->Key().begin(); |
const char* limit = it->Key().end(); |
@@ -1414,14 +1388,12 @@ bool IndexedDBBackingStore::MaybeUpdateKeyGeneratorCurrentNumber( |
return true; |
} |
- const std::vector<char> key_generator_current_number_key = |
+ const std::string key_generator_current_number_key = |
ObjectStoreMetaDataKey::Encode( |
database_id, |
object_store_id, |
ObjectStoreMetaDataKey::KEY_GENERATOR_CURRENT_NUMBER); |
- PutInt(leveldb_transaction, |
- LevelDBSlice(key_generator_current_number_key), |
- new_number); |
+ PutInt(leveldb_transaction, key_generator_current_number_key, new_number); |
return true; |
} |
@@ -1438,11 +1410,11 @@ bool IndexedDBBackingStore::KeyExistsInObjectStore( |
*found = false; |
LevelDBTransaction* leveldb_transaction = |
IndexedDBBackingStore::Transaction::LevelDBTransactionFrom(transaction); |
- const std::vector<char> leveldb_key = |
+ const std::string leveldb_key = |
ObjectStoreDataKey::Encode(database_id, object_store_id, key); |
std::string data; |
- bool ok = leveldb_transaction->Get(LevelDBSlice(leveldb_key), &data, found); |
+ bool ok = leveldb_transaction->Get(leveldb_key, &data, found); |
if (!ok) { |
INTERNAL_READ_ERROR(KEY_EXISTS_IN_OBJECT_STORE); |
return false; |
@@ -1459,17 +1431,17 @@ bool IndexedDBBackingStore::KeyExistsInObjectStore( |
if (!DecodeVarInt(&slice, &version)) |
return false; |
- std::vector<char> encoded_key; |
+ std::string encoded_key; |
EncodeIDBKey(key, &encoded_key); |
found_record_identifier->Reset(encoded_key, version); |
return true; |
} |
static bool CheckIndexAndMetaDataKey(const LevelDBIterator* it, |
- const std::vector<char>& stop_key, |
+ const std::string& stop_key, |
int64 index_id, |
unsigned char meta_data_type) { |
- if (!it->IsValid() || CompareKeys(it->Key(), LevelDBSlice(stop_key)) >= 0) |
+ if (!it->IsValid() || CompareKeys(it->Key(), stop_key) >= 0) |
return false; |
IndexMetaDataKey meta_data_key; |
@@ -1492,17 +1464,16 @@ bool IndexedDBBackingStore::GetIndexes( |
IDB_TRACE("IndexedDBBackingStore::GetIndexes"); |
if (!KeyPrefix::ValidIds(database_id, object_store_id)) |
return false; |
- const std::vector<char> start_key = |
+ const std::string start_key = |
IndexMetaDataKey::Encode(database_id, object_store_id, 0, 0); |
- const std::vector<char> stop_key = |
+ const std::string stop_key = |
IndexMetaDataKey::Encode(database_id, object_store_id + 1, 0, 0); |
DCHECK(indexes->empty()); |
scoped_ptr<LevelDBIterator> it = db_->CreateIterator(); |
- it->Seek(LevelDBSlice(start_key)); |
- while (it->IsValid() && |
- CompareKeys(LevelDBSlice(it->Key()), LevelDBSlice(stop_key)) < 0) { |
+ it->Seek(start_key); |
+ while (it->IsValid() && CompareKeys(it->Key(), stop_key) < 0) { |
const char* p = it->Key().begin(); |
const char* limit = it->Key().end(); |
@@ -1522,7 +1493,7 @@ bool IndexedDBBackingStore::GetIndexes( |
int64 index_id = meta_data_key.IndexId(); |
string16 index_name; |
{ |
- StringPiece slice(it->Value().AsStringPiece()); |
+ StringPiece slice(it->Value()); |
if (!DecodeString(&slice, &index_name) || !slice.empty()) |
INTERNAL_CONSISTENCY_ERROR(GET_INDEXES); |
} |
@@ -1535,7 +1506,7 @@ bool IndexedDBBackingStore::GetIndexes( |
} |
bool index_unique; |
{ |
- StringPiece slice(it->Value().AsStringPiece()); |
+ StringPiece slice(it->Value()); |
if (!DecodeBool(&slice, &index_unique) || !slice.empty()) |
INTERNAL_CONSISTENCY_ERROR(GET_INDEXES); |
} |
@@ -1548,7 +1519,7 @@ bool IndexedDBBackingStore::GetIndexes( |
} |
IndexedDBKeyPath key_path; |
{ |
- StringPiece slice(it->Value().AsStringPiece()); |
+ StringPiece slice(it->Value()); |
if (!DecodeIDBKeyPath(&slice, &key_path) || !slice.empty()) |
INTERNAL_CONSISTENCY_ERROR(GET_INDEXES); |
} |
@@ -1557,7 +1528,7 @@ bool IndexedDBBackingStore::GetIndexes( |
bool index_multi_entry = false; |
if (CheckIndexAndMetaDataKey( |
it.get(), stop_key, index_id, IndexMetaDataKey::MULTI_ENTRY)) { |
- StringPiece slice(it->Value().AsStringPiece()); |
+ StringPiece slice(it->Value()); |
if (!DecodeBool(&slice, &index_multi_entry) || !slice.empty()) |
INTERNAL_CONSISTENCY_ERROR(GET_INDEXES); |
@@ -1575,11 +1546,10 @@ WARN_UNUSED_RESULT static bool SetMaxIndexId(LevelDBTransaction* transaction, |
int64 object_store_id, |
int64 index_id) { |
int64 max_index_id = -1; |
- const std::vector<char> max_index_id_key = ObjectStoreMetaDataKey::Encode( |
+ const std::string max_index_id_key = ObjectStoreMetaDataKey::Encode( |
database_id, object_store_id, ObjectStoreMetaDataKey::MAX_INDEX_ID); |
bool found = false; |
- bool ok = GetInt( |
- transaction, LevelDBSlice(max_index_id_key), &max_index_id, &found); |
+ bool ok = GetInt(transaction, max_index_id_key, &max_index_id, &found); |
if (!ok) { |
INTERNAL_READ_ERROR(SET_MAX_INDEX_ID); |
return false; |
@@ -1592,7 +1562,7 @@ WARN_UNUSED_RESULT static bool SetMaxIndexId(LevelDBTransaction* transaction, |
return false; |
} |
- PutInt(transaction, LevelDBSlice(max_index_id_key), index_id); |
+ PutInt(transaction, max_index_id_key, index_id); |
return true; |
} |
@@ -1614,19 +1584,19 @@ bool IndexedDBBackingStore::CreateIndex( |
leveldb_transaction, database_id, object_store_id, index_id)) |
return false; |
- const std::vector<char> name_key = IndexMetaDataKey::Encode( |
+ const std::string name_key = IndexMetaDataKey::Encode( |
database_id, object_store_id, index_id, IndexMetaDataKey::NAME); |
- const std::vector<char> unique_key = IndexMetaDataKey::Encode( |
+ const std::string unique_key = IndexMetaDataKey::Encode( |
database_id, object_store_id, index_id, IndexMetaDataKey::UNIQUE); |
- const std::vector<char> key_path_key = IndexMetaDataKey::Encode( |
+ const std::string key_path_key = IndexMetaDataKey::Encode( |
database_id, object_store_id, index_id, IndexMetaDataKey::KEY_PATH); |
- const std::vector<char> multi_entry_key = IndexMetaDataKey::Encode( |
+ const std::string multi_entry_key = IndexMetaDataKey::Encode( |
database_id, object_store_id, index_id, IndexMetaDataKey::MULTI_ENTRY); |
- PutString(leveldb_transaction, LevelDBSlice(name_key), name); |
- PutBool(leveldb_transaction, LevelDBSlice(unique_key), is_unique); |
- PutIDBKeyPath(leveldb_transaction, LevelDBSlice(key_path_key), key_path); |
- PutBool(leveldb_transaction, LevelDBSlice(multi_entry_key), is_multi_entry); |
+ PutString(leveldb_transaction, name_key, name); |
+ PutBool(leveldb_transaction, unique_key, is_unique); |
+ PutIDBKeyPath(leveldb_transaction, key_path_key, key_path); |
+ PutBool(leveldb_transaction, multi_entry_key, is_multi_entry); |
return true; |
} |
@@ -1641,15 +1611,15 @@ bool IndexedDBBackingStore::DeleteIndex( |
LevelDBTransaction* leveldb_transaction = |
IndexedDBBackingStore::Transaction::LevelDBTransactionFrom(transaction); |
- const std::vector<char> index_meta_data_start = |
+ const std::string index_meta_data_start = |
IndexMetaDataKey::Encode(database_id, object_store_id, index_id, 0); |
- const std::vector<char> index_meta_data_end = |
+ const std::string index_meta_data_end = |
IndexMetaDataKey::EncodeMaxKey(database_id, object_store_id, index_id); |
DeleteRange(leveldb_transaction, index_meta_data_start, index_meta_data_end); |
- const std::vector<char> index_data_start = |
+ const std::string index_data_start = |
IndexDataKey::EncodeMinKey(database_id, object_store_id, index_id); |
- const std::vector<char> index_data_end = |
+ const std::string index_data_end = |
IndexDataKey::EncodeMaxKey(database_id, object_store_id, index_id); |
DeleteRange(leveldb_transaction, index_data_start, index_data_end); |
return true; |
@@ -1670,10 +1640,10 @@ bool IndexedDBBackingStore::PutIndexDataForRecord( |
LevelDBTransaction* leveldb_transaction = |
IndexedDBBackingStore::Transaction::LevelDBTransactionFrom(transaction); |
- std::vector<char> encoded_key; |
+ std::string encoded_key; |
EncodeIDBKey(key, &encoded_key); |
- const std::vector<char> index_data_key = |
+ const std::string index_data_key = |
IndexDataKey::Encode(database_id, |
object_store_id, |
index_id, |
@@ -1681,20 +1651,20 @@ bool IndexedDBBackingStore::PutIndexDataForRecord( |
record_identifier.primary_key(), |
0); |
- std::vector<char> data; |
+ std::string data; |
EncodeVarInt(record_identifier.version(), &data); |
- const std::vector<char>& primary_key = record_identifier.primary_key(); |
+ const std::string& primary_key = record_identifier.primary_key(); |
data.insert(data.end(), primary_key.begin(), primary_key.end()); |
- leveldb_transaction->Put(LevelDBSlice(index_data_key), &data); |
+ leveldb_transaction->Put(index_data_key, &data); |
return true; |
} |
static bool FindGreatestKeyLessThanOrEqual(LevelDBTransaction* transaction, |
- const std::vector<char>& target, |
- std::vector<char>* found_key) { |
+ const std::string& target, |
+ std::string* found_key) { |
scoped_ptr<LevelDBIterator> it = transaction->CreateIterator(); |
- it->Seek(LevelDBSlice(target)); |
+ it->Seek(target); |
if (!it->IsValid()) { |
it->SeekToLast(); |
@@ -1702,7 +1672,7 @@ static bool FindGreatestKeyLessThanOrEqual(LevelDBTransaction* transaction, |
return false; |
} |
- while (CompareIndexKeys(LevelDBSlice(it->Key()), LevelDBSlice(target)) > 0) { |
+ while (CompareIndexKeys(it->Key(), target) > 0) { |
alecflett
2013/07/09 18:26:30
Not a code review comment but:
This is interestin
jsbell
2013/07/09 19:41:46
I filed crbug.com/258538
Note that comparisons do
|
it->Prev(); |
if (!it->IsValid()) |
return false; |
@@ -1713,7 +1683,7 @@ static bool FindGreatestKeyLessThanOrEqual(LevelDBTransaction* transaction, |
// There can be several index keys that compare equal. We want the last one. |
it->Next(); |
- } while (it->IsValid() && !CompareIndexKeys(it->Key(), LevelDBSlice(target))); |
+ } while (it->IsValid() && !CompareIndexKeys(it->Key(), target)); |
alecflett
2013/07/09 18:26:30
ditto here about the pre-decoding on 'target'
|
return true; |
} |
@@ -1722,13 +1692,13 @@ static bool VersionExists(LevelDBTransaction* transaction, |
int64 database_id, |
int64 object_store_id, |
int64 version, |
- const std::vector<char>& encoded_primary_key, |
+ const std::string& encoded_primary_key, |
bool* exists) { |
- const std::vector<char> key = |
+ const std::string key = |
ExistsEntryKey::Encode(database_id, object_store_id, encoded_primary_key); |
std::string data; |
- bool ok = transaction->Get(LevelDBSlice(key), &data, exists); |
+ bool ok = transaction->Get(key, &data, exists); |
if (!ok) { |
INTERNAL_READ_ERROR(VERSION_EXISTS); |
return false; |
@@ -1750,7 +1720,7 @@ bool IndexedDBBackingStore::FindKeyInIndex( |
int64 object_store_id, |
int64 index_id, |
const IndexedDBKey& key, |
- std::vector<char>* found_encoded_primary_key, |
+ std::string* found_encoded_primary_key, |
bool* found) { |
IDB_TRACE("IndexedDBBackingStore::FindKeyInIndex"); |
DCHECK(KeyPrefix::ValidIds(database_id, object_store_id, index_id)); |
@@ -1760,18 +1730,18 @@ bool IndexedDBBackingStore::FindKeyInIndex( |
LevelDBTransaction* leveldb_transaction = |
IndexedDBBackingStore::Transaction::LevelDBTransactionFrom(transaction); |
- const std::vector<char> leveldb_key = |
+ const std::string leveldb_key = |
IndexDataKey::Encode(database_id, object_store_id, index_id, key); |
scoped_ptr<LevelDBIterator> it = leveldb_transaction->CreateIterator(); |
- it->Seek(LevelDBSlice(leveldb_key)); |
+ it->Seek(leveldb_key); |
for (;;) { |
if (!it->IsValid()) |
return true; |
- if (CompareIndexKeys(it->Key(), LevelDBSlice(leveldb_key)) > 0) |
+ if (CompareIndexKeys(it->Key(), leveldb_key) > 0) |
alecflett
2013/07/09 18:26:30
oh wow, lots of opportunity for pre-decoding?
|
return true; |
- StringPiece slice(it->Value().AsStringPiece()); |
+ StringPiece slice(it->Value()); |
int64 version; |
if (!DecodeVarInt(&slice, &version)) { |
@@ -1813,7 +1783,7 @@ bool IndexedDBBackingStore::GetPrimaryKeyViaIndex( |
return false; |
bool found = false; |
- std::vector<char> found_encoded_primary_key; |
+ std::string found_encoded_primary_key; |
bool ok = FindKeyInIndex(transaction, |
database_id, |
object_store_id, |
@@ -1850,7 +1820,7 @@ bool IndexedDBBackingStore::KeyExistsInIndex( |
return false; |
*exists = false; |
- std::vector<char> found_encoded_primary_key; |
+ std::string found_encoded_primary_key; |
bool ok = FindKeyInIndex(transaction, |
database_id, |
object_store_id, |
@@ -1897,9 +1867,9 @@ IndexedDBBackingStore::Cursor::~Cursor() {} |
bool IndexedDBBackingStore::Cursor::FirstSeek() { |
iterator_ = transaction_->CreateIterator(); |
if (cursor_options_.forward) |
- iterator_->Seek(LevelDBSlice(cursor_options_.low_key)); |
+ iterator_->Seek(cursor_options_.low_key); |
else |
- iterator_->Seek(LevelDBSlice(cursor_options_.high_key)); |
+ iterator_->Seek(cursor_options_.high_key); |
return ContinueFunction(0, READY); |
} |
@@ -1930,7 +1900,7 @@ bool IndexedDBBackingStore::Cursor::ContinueFunction(const IndexedDBKey* key, |
if (next_state == SEEK) { |
// TODO(jsbell): Optimize seeking for reverse cursors as well. |
if (first_iteration && key && key->IsValid() && forward) { |
- iterator_->Seek(LevelDBSlice(EncodeKey(*key))); |
+ iterator_->Seek(EncodeKey(*key)); |
first_iteration = false; |
} else if (forward) { |
iterator_->Next(); |
@@ -2015,15 +1985,13 @@ bool IndexedDBBackingStore::Cursor::ContinueFunction(const IndexedDBKey* key, |
bool IndexedDBBackingStore::Cursor::HaveEnteredRange() const { |
if (cursor_options_.forward) { |
- int compare = CompareIndexKeys(iterator_->Key(), |
- LevelDBSlice(cursor_options_.low_key)); |
+ int compare = CompareIndexKeys(iterator_->Key(), cursor_options_.low_key); |
alecflett
2013/07/09 18:26:30
I guess we should just look at every call in our o
|
if (cursor_options_.low_open) { |
return compare > 0; |
} |
return compare >= 0; |
} |
- int compare = CompareIndexKeys(iterator_->Key(), |
- LevelDBSlice(cursor_options_.high_key)); |
+ int compare = CompareIndexKeys(iterator_->Key(), cursor_options_.high_key); |
if (cursor_options_.high_open) { |
return compare < 0; |
} |
@@ -2032,15 +2000,13 @@ bool IndexedDBBackingStore::Cursor::HaveEnteredRange() const { |
bool IndexedDBBackingStore::Cursor::IsPastBounds() const { |
if (cursor_options_.forward) { |
- int compare = CompareIndexKeys(iterator_->Key(), |
- LevelDBSlice(cursor_options_.high_key)); |
+ int compare = CompareIndexKeys(iterator_->Key(), cursor_options_.high_key); |
if (cursor_options_.high_open) { |
return compare >= 0; |
} |
return compare > 0; |
} |
- int compare = |
- CompareIndexKeys(iterator_->Key(), LevelDBSlice(cursor_options_.low_key)); |
+ int compare = CompareIndexKeys(iterator_->Key(), cursor_options_.low_key); |
if (cursor_options_.low_open) { |
return compare <= 0; |
} |
@@ -2068,14 +2034,14 @@ class ObjectStoreKeyCursorImpl : public IndexedDBBackingStore::Cursor { |
} |
// IndexedDBBackingStore::Cursor |
- virtual std::vector<char>* Value() OVERRIDE { |
+ virtual std::string* Value() OVERRIDE { |
NOTREACHED(); |
return NULL; |
} |
virtual bool LoadCurrentRow() OVERRIDE; |
protected: |
- virtual std::vector<char> EncodeKey(const IndexedDBKey& key) OVERRIDE { |
+ virtual std::string EncodeKey(const IndexedDBKey& key) OVERRIDE { |
return ObjectStoreDataKey::Encode( |
cursor_options_.database_id, cursor_options_.object_store_id, key); |
} |
@@ -2100,14 +2066,14 @@ bool ObjectStoreKeyCursorImpl::LoadCurrentRow() { |
current_key_ = object_store_data_key.user_key(); |
int64 version; |
- StringPiece slice(iterator_->Value().AsStringPiece()); |
+ StringPiece slice(iterator_->Value()); |
if (!DecodeVarInt(&slice, &version)) { |
INTERNAL_READ_ERROR(LOAD_CURRENT_ROW); |
return false; |
} |
// TODO(jsbell): This re-encodes what was just decoded; try and optimize. |
- std::vector<char> encoded_key; |
+ std::string encoded_key; |
EncodeIDBKey(*current_key_, &encoded_key); |
record_identifier_.Reset(encoded_key, version); |
@@ -2124,11 +2090,11 @@ class ObjectStoreCursorImpl : public IndexedDBBackingStore::Cursor { |
virtual Cursor* Clone() OVERRIDE { return new ObjectStoreCursorImpl(this); } |
// IndexedDBBackingStore::Cursor |
- virtual std::vector<char>* Value() OVERRIDE { return ¤t_value_; } |
+ virtual std::string* Value() OVERRIDE { return ¤t_value_; } |
virtual bool LoadCurrentRow() OVERRIDE; |
protected: |
- virtual std::vector<char> EncodeKey(const IndexedDBKey& key) OVERRIDE { |
+ virtual std::string EncodeKey(const IndexedDBKey& key) OVERRIDE { |
return ObjectStoreDataKey::Encode( |
cursor_options_.database_id, cursor_options_.object_store_id, key); |
} |
@@ -2138,7 +2104,7 @@ class ObjectStoreCursorImpl : public IndexedDBBackingStore::Cursor { |
: IndexedDBBackingStore::Cursor(other), |
current_value_(other->current_value_) {} |
- std::vector<char> current_value_; |
+ std::string current_value_; |
}; |
bool ObjectStoreCursorImpl::LoadCurrentRow() { |
@@ -2156,18 +2122,18 @@ bool ObjectStoreCursorImpl::LoadCurrentRow() { |
current_key_ = object_store_data_key.user_key(); |
int64 version; |
- StringPiece slice(iterator_->Value().AsStringPiece()); |
+ StringPiece slice(iterator_->Value()); |
if (!DecodeVarInt(&slice, &version)) { |
INTERNAL_READ_ERROR(LOAD_CURRENT_ROW); |
return false; |
} |
// TODO(jsbell): This re-encodes what was just decoded; try and optimize. |
- std::vector<char> encoded_key; |
+ std::string encoded_key; |
EncodeIDBKey(*current_key_, &encoded_key); |
record_identifier_.Reset(encoded_key, version); |
- std::vector<char> value; |
+ std::string value; |
value.insert(value.end(), slice.begin(), slice.end()); |
current_value_.swap(value); |
return true; |
@@ -2183,7 +2149,7 @@ class IndexKeyCursorImpl : public IndexedDBBackingStore::Cursor { |
virtual Cursor* Clone() OVERRIDE { return new IndexKeyCursorImpl(this); } |
// IndexedDBBackingStore::Cursor |
- virtual std::vector<char>* Value() OVERRIDE { |
+ virtual std::string* Value() OVERRIDE { |
NOTREACHED(); |
return NULL; |
} |
@@ -2198,7 +2164,7 @@ class IndexKeyCursorImpl : public IndexedDBBackingStore::Cursor { |
virtual bool LoadCurrentRow() OVERRIDE; |
protected: |
- virtual std::vector<char> EncodeKey(const IndexedDBKey& key) OVERRIDE { |
+ virtual std::string EncodeKey(const IndexedDBKey& key) OVERRIDE { |
return IndexDataKey::Encode(cursor_options_.database_id, |
cursor_options_.object_store_id, |
cursor_options_.index_id, |
@@ -2223,7 +2189,7 @@ bool IndexKeyCursorImpl::LoadCurrentRow() { |
current_key_ = index_data_key.user_key(); |
DCHECK(current_key_); |
- StringPiece slice(iterator_->Value().AsStringPiece()); |
+ StringPiece slice(iterator_->Value()); |
int64 index_data_version; |
if (!DecodeVarInt(&slice, &index_data_version)) { |
INTERNAL_READ_ERROR(LOAD_CURRENT_ROW); |
@@ -2235,15 +2201,14 @@ bool IndexKeyCursorImpl::LoadCurrentRow() { |
return false; |
} |
- std::vector<char> primary_leveldb_key = |
+ std::string primary_leveldb_key = |
ObjectStoreDataKey::Encode(index_data_key.DatabaseId(), |
index_data_key.ObjectStoreId(), |
*primary_key_); |
std::string result; |
bool found = false; |
- bool ok = |
- transaction_->Get(LevelDBSlice(primary_leveldb_key), &result, &found); |
+ bool ok = transaction_->Get(primary_leveldb_key, &result, &found); |
if (!ok) { |
INTERNAL_READ_ERROR(LOAD_CURRENT_ROW); |
return false; |
@@ -2282,7 +2247,7 @@ class IndexCursorImpl : public IndexedDBBackingStore::Cursor { |
virtual Cursor* Clone() OVERRIDE { return new IndexCursorImpl(this); } |
// IndexedDBBackingStore::Cursor |
- virtual std::vector<char>* Value() OVERRIDE { return ¤t_value_; } |
+ virtual std::string* Value() OVERRIDE { return ¤t_value_; } |
virtual const IndexedDBKey& primary_key() const OVERRIDE { |
return *primary_key_; |
} |
@@ -2294,7 +2259,7 @@ class IndexCursorImpl : public IndexedDBBackingStore::Cursor { |
virtual bool LoadCurrentRow() OVERRIDE; |
protected: |
- virtual std::vector<char> EncodeKey(const IndexedDBKey& key) OVERRIDE { |
+ virtual std::string EncodeKey(const IndexedDBKey& key) OVERRIDE { |
return IndexDataKey::Encode(cursor_options_.database_id, |
cursor_options_.object_store_id, |
cursor_options_.index_id, |
@@ -2309,8 +2274,8 @@ class IndexCursorImpl : public IndexedDBBackingStore::Cursor { |
primary_leveldb_key_(other->primary_leveldb_key_) {} |
scoped_ptr<IndexedDBKey> primary_key_; |
- std::vector<char> current_value_; |
- std::vector<char> primary_leveldb_key_; |
+ std::string current_value_; |
+ std::string primary_leveldb_key_; |
}; |
bool IndexCursorImpl::LoadCurrentRow() { |
@@ -2323,7 +2288,7 @@ bool IndexCursorImpl::LoadCurrentRow() { |
current_key_ = index_data_key.user_key(); |
DCHECK(current_key_); |
- StringPiece slice(iterator_->Value().AsStringPiece()); |
+ StringPiece slice(iterator_->Value()); |
int64 index_data_version; |
if (!DecodeVarInt(&slice, &index_data_version)) { |
INTERNAL_READ_ERROR(LOAD_CURRENT_ROW); |
@@ -2341,8 +2306,7 @@ bool IndexCursorImpl::LoadCurrentRow() { |
std::string result; |
bool found = false; |
- bool ok = |
- transaction_->Get(LevelDBSlice(primary_leveldb_key_), &result, &found); |
+ bool ok = transaction_->Get(primary_leveldb_key_, &result, &found); |
if (!ok) { |
INTERNAL_READ_ERROR(LOAD_CURRENT_ROW); |
return false; |
@@ -2421,7 +2385,7 @@ bool ObjectStoreCursorOptions( |
if (!cursor_options->forward) { |
// For reverse cursors, we need a key that exists. |
- std::vector<char> found_high_key; |
+ std::string found_high_key; |
if (!FindGreatestKeyLessThanOrEqual( |
transaction, cursor_options->high_key, &found_high_key)) |
return false; |
@@ -2429,9 +2393,7 @@ bool ObjectStoreCursorOptions( |
// If the target key should not be included, but we end up with a smaller |
// key, we should include that. |
if (cursor_options->high_open && |
- CompareIndexKeys(LevelDBSlice(found_high_key), |
- LevelDBSlice(cursor_options->high_key)) < |
- 0) |
+ CompareIndexKeys(found_high_key, cursor_options->high_key) < 0) |
cursor_options->high_open = false; |
cursor_options->high_key = found_high_key; |
@@ -2491,7 +2453,7 @@ bool IndexCursorOptions( |
database_id, object_store_id, index_id, range.upper()); |
cursor_options->high_open = range.upperOpen(); |
- std::vector<char> found_high_key; |
+ std::string found_high_key; |
// Seek to the *last* key in the set of non-unique keys |
if (!FindGreatestKeyLessThanOrEqual( |
transaction, cursor_options->high_key, &found_high_key)) |
@@ -2500,9 +2462,7 @@ bool IndexCursorOptions( |
// If the target key should not be included, but we end up with a smaller |
// key, we should include that. |
if (cursor_options->high_open && |
- CompareIndexKeys(LevelDBSlice(found_high_key), |
- LevelDBSlice(cursor_options->high_key)) < |
- 0) |
+ CompareIndexKeys(found_high_key, cursor_options->high_key) < 0) |
cursor_options->high_open = false; |
cursor_options->high_key = found_high_key; |