| Index: content/browser/indexed_db/indexed_db_leveldb_coding.cc
|
| diff --git a/content/browser/indexed_db/indexed_db_leveldb_coding.cc b/content/browser/indexed_db/indexed_db_leveldb_coding.cc
|
| index 44556833f69543eb6ee523724a9c01e9dc8e4f44..2de9b6d585db798e7ecc3fee710bae07de6e5bc0 100644
|
| --- a/content/browser/indexed_db/indexed_db_leveldb_coding.cc
|
| +++ b/content/browser/indexed_db/indexed_db_leveldb_coding.cc
|
| @@ -375,6 +375,14 @@ void EncodeIDBKeyPath(const IndexedDBKeyPath& value, std::string* into) {
|
| }
|
| }
|
|
|
| +void EncodeBlobJournal(const BlobJournalType& journal, std::string* into) {
|
| + BlobJournalType::const_iterator iter;
|
| + for (iter = journal.begin(); iter != journal.end(); ++iter) {
|
| + EncodeVarInt(iter->first, into);
|
| + EncodeVarInt(iter->second, into);
|
| + }
|
| +}
|
| +
|
| bool DecodeByte(StringPiece* slice, unsigned char* value) {
|
| if (slice->empty())
|
| return false;
|
| @@ -607,6 +615,27 @@ bool DecodeIDBKeyPath(StringPiece* slice, IndexedDBKeyPath* value) {
|
| return false;
|
| }
|
|
|
| +bool DecodeBlobJournal(StringPiece* slice, BlobJournalType* journal) {
|
| + BlobJournalType output;
|
| + while (!slice->empty()) {
|
| + int64 database_id = -1;
|
| + int64 blob_key = -1;
|
| + if (!DecodeVarInt(slice, &database_id))
|
| + return false;
|
| + if (!KeyPrefix::IsValidDatabaseId(database_id))
|
| + return false;
|
| + if (!DecodeVarInt(slice, &blob_key))
|
| + return false;
|
| + if (!DatabaseMetaDataKey::IsValidBlobKey(blob_key) &&
|
| + (blob_key != DatabaseMetaDataKey::kAllBlobsKey)) {
|
| + return false;
|
| + }
|
| + output.push_back(std::make_pair(database_id, blob_key));
|
| + }
|
| + journal->swap(output);
|
| + return true;
|
| +}
|
| +
|
| bool ConsumeEncodedIDBKey(StringPiece* slice) {
|
| unsigned char type = (*slice)[0];
|
| slice->remove_prefix(1);
|
|
|