| 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 6ee8a83a5ca77bc66a62cb37e69d11b37ee8a1d9..5960d70a5b20d887a25876c116eca3965a07bb63 100644
 | 
| --- a/content/browser/indexed_db/indexed_db_backing_store.cc
 | 
| +++ b/content/browser/indexed_db/indexed_db_backing_store.cc
 | 
| @@ -13,6 +13,7 @@
 | 
|  #include "content/browser/indexed_db/indexed_db_leveldb_coding.h"
 | 
|  #include "content/browser/indexed_db/indexed_db_metadata.h"
 | 
|  #include "content/browser/indexed_db/indexed_db_tracing.h"
 | 
| +#include "content/browser/indexed_db/indexed_db_value.h"
 | 
|  #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"
 | 
| @@ -1170,7 +1171,7 @@ leveldb::Status IndexedDBBackingStore::GetRecord(
 | 
|      int64 database_id,
 | 
|      int64 object_store_id,
 | 
|      const IndexedDBKey& key,
 | 
| -    std::string* record) {
 | 
| +    IndexedDBValue* record) {
 | 
|    IDB_TRACE("IndexedDBBackingStore::GetRecord");
 | 
|    if (!KeyPrefix::ValidIds(database_id, object_store_id))
 | 
|      return InvalidDBKeyStatus();
 | 
| @@ -1202,7 +1203,7 @@ leveldb::Status IndexedDBBackingStore::GetRecord(
 | 
|      return InternalInconsistencyStatus();
 | 
|    }
 | 
|  
 | 
| -  *record = slice.as_string();
 | 
| +  record->bits = slice.as_string();
 | 
|    return s;
 | 
|  }
 | 
|  
 | 
| @@ -1243,7 +1244,7 @@ leveldb::Status IndexedDBBackingStore::PutRecord(
 | 
|      int64 database_id,
 | 
|      int64 object_store_id,
 | 
|      const IndexedDBKey& key,
 | 
| -    const std::string& value,
 | 
| +    const IndexedDBValue& value,
 | 
|      RecordIdentifier* record_identifier) {
 | 
|    IDB_TRACE("IndexedDBBackingStore::PutRecord");
 | 
|    if (!KeyPrefix::ValidIds(database_id, object_store_id))
 | 
| @@ -1257,14 +1258,14 @@ leveldb::Status IndexedDBBackingStore::PutRecord(
 | 
|    if (!s.ok())
 | 
|      return s;
 | 
|    DCHECK_GE(version, 0);
 | 
| -  const std::string object_storedata_key =
 | 
| +  const std::string object_store_data_key =
 | 
|        ObjectStoreDataKey::Encode(database_id, object_store_id, key);
 | 
|  
 | 
|    std::string v;
 | 
|    EncodeVarInt(version, &v);
 | 
| -  v.append(value);
 | 
| +  v.append(value.bits);
 | 
|  
 | 
| -  leveldb_transaction->Put(object_storedata_key, &v);
 | 
| +  leveldb_transaction->Put(object_store_data_key, &v);
 | 
|  
 | 
|    const std::string exists_entry_key =
 | 
|        ExistsEntryKey::Encode(database_id, object_store_id, key);
 | 
| @@ -2061,7 +2062,7 @@ class ObjectStoreKeyCursorImpl : public IndexedDBBackingStore::Cursor {
 | 
|    }
 | 
|  
 | 
|    // IndexedDBBackingStore::Cursor
 | 
| -  virtual std::string* value() OVERRIDE {
 | 
| +  virtual IndexedDBValue* value() OVERRIDE {
 | 
|      NOTREACHED();
 | 
|      return NULL;
 | 
|    }
 | 
| @@ -2118,7 +2119,7 @@ class ObjectStoreCursorImpl : public IndexedDBBackingStore::Cursor {
 | 
|    virtual Cursor* Clone() OVERRIDE { return new ObjectStoreCursorImpl(this); }
 | 
|  
 | 
|    // IndexedDBBackingStore::Cursor
 | 
| -  virtual std::string* value() OVERRIDE { return ¤t_value_; }
 | 
| +  virtual IndexedDBValue* value() OVERRIDE { return ¤t_value_; }
 | 
|    virtual bool LoadCurrentRow() OVERRIDE;
 | 
|  
 | 
|   protected:
 | 
| @@ -2137,13 +2138,13 @@ class ObjectStoreCursorImpl : public IndexedDBBackingStore::Cursor {
 | 
|        : IndexedDBBackingStore::Cursor(other),
 | 
|          current_value_(other->current_value_) {}
 | 
|  
 | 
| -  std::string current_value_;
 | 
| +  IndexedDBValue current_value_;
 | 
|  };
 | 
|  
 | 
|  bool ObjectStoreCursorImpl::LoadCurrentRow() {
 | 
| -  StringPiece slice(iterator_->Key());
 | 
| +  StringPiece key_slice(iterator_->Key());
 | 
|    ObjectStoreDataKey object_store_data_key;
 | 
| -  if (!ObjectStoreDataKey::Decode(&slice, &object_store_data_key)) {
 | 
| +  if (!ObjectStoreDataKey::Decode(&key_slice, &object_store_data_key)) {
 | 
|      INTERNAL_READ_ERROR(LOAD_CURRENT_ROW);
 | 
|      return false;
 | 
|    }
 | 
| @@ -2151,8 +2152,8 @@ bool ObjectStoreCursorImpl::LoadCurrentRow() {
 | 
|    current_key_ = object_store_data_key.user_key();
 | 
|  
 | 
|    int64 version;
 | 
| -  slice = StringPiece(iterator_->Value());
 | 
| -  if (!DecodeVarInt(&slice, &version)) {
 | 
| +  StringPiece value_slice = StringPiece(iterator_->Value());
 | 
| +  if (!DecodeVarInt(&value_slice, &version)) {
 | 
|      INTERNAL_READ_ERROR(LOAD_CURRENT_ROW);
 | 
|      return false;
 | 
|    }
 | 
| @@ -2162,7 +2163,7 @@ bool ObjectStoreCursorImpl::LoadCurrentRow() {
 | 
|    EncodeIDBKey(*current_key_, &encoded_key);
 | 
|    record_identifier_.Reset(encoded_key, version);
 | 
|  
 | 
| -  current_value_ = slice.as_string();
 | 
| +  current_value_.bits = value_slice.as_string();
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| @@ -2176,7 +2177,7 @@ class IndexKeyCursorImpl : public IndexedDBBackingStore::Cursor {
 | 
|    virtual Cursor* Clone() OVERRIDE { return new IndexKeyCursorImpl(this); }
 | 
|  
 | 
|    // IndexedDBBackingStore::Cursor
 | 
| -  virtual std::string* value() OVERRIDE {
 | 
| +  virtual IndexedDBValue* value() OVERRIDE {
 | 
|      NOTREACHED();
 | 
|      return NULL;
 | 
|    }
 | 
| @@ -2283,7 +2284,7 @@ class IndexCursorImpl : public IndexedDBBackingStore::Cursor {
 | 
|    virtual Cursor* Clone() OVERRIDE { return new IndexCursorImpl(this); }
 | 
|  
 | 
|    // IndexedDBBackingStore::Cursor
 | 
| -  virtual std::string* value() OVERRIDE { return ¤t_value_; }
 | 
| +  virtual IndexedDBValue* value() OVERRIDE { return ¤t_value_; }
 | 
|    virtual const IndexedDBKey& primary_key() const OVERRIDE {
 | 
|      return *primary_key_;
 | 
|    }
 | 
| @@ -2318,7 +2319,7 @@ class IndexCursorImpl : public IndexedDBBackingStore::Cursor {
 | 
|          primary_leveldb_key_(other->primary_leveldb_key_) {}
 | 
|  
 | 
|    scoped_ptr<IndexedDBKey> primary_key_;
 | 
| -  std::string current_value_;
 | 
| +  IndexedDBValue current_value_;
 | 
|    std::string primary_leveldb_key_;
 | 
|  };
 | 
|  
 | 
| @@ -2377,7 +2378,7 @@ bool IndexCursorImpl::LoadCurrentRow() {
 | 
|      return false;
 | 
|    }
 | 
|  
 | 
| -  current_value_ = slice.as_string();
 | 
| +  current_value_.bits = slice.as_string();
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| 
 |