Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(849)

Side by Side Diff: content/browser/indexed_db/indexed_db_database.cc

Issue 18075008: IndexedDB: Switch key/value handling from vector<char> to std::string (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove C++11ism Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/indexed_db/indexed_db_database.h" 5 #include "content/browser/indexed_db/indexed_db_database.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <vector>
9 8
10 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
11 #include "base/logging.h" 10 #include "base/logging.h"
12 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
13 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
14 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
15 #include "content/browser/indexed_db/indexed_db_backing_store.h" 14 #include "content/browser/indexed_db/indexed_db_backing_store.h"
16 #include "content/browser/indexed_db/indexed_db_connection.h" 15 #include "content/browser/indexed_db/indexed_db_connection.h"
17 #include "content/browser/indexed_db/indexed_db_cursor.h" 16 #include "content/browser/indexed_db/indexed_db_cursor.h"
18 #include "content/browser/indexed_db/indexed_db_factory.h" 17 #include "content/browser/indexed_db/indexed_db_factory.h"
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 const scoped_ptr<IndexedDBKeyRange> key_range_; 220 const scoped_ptr<IndexedDBKeyRange> key_range_;
222 const indexed_db::CursorType cursor_type_; 221 const indexed_db::CursorType cursor_type_;
223 const scoped_refptr<IndexedDBCallbacks> callbacks_; 222 const scoped_refptr<IndexedDBCallbacks> callbacks_;
224 }; 223 };
225 224
226 class PutOperation : public IndexedDBTransaction::Operation { 225 class PutOperation : public IndexedDBTransaction::Operation {
227 public: 226 public:
228 PutOperation(scoped_refptr<IndexedDBBackingStore> backing_store, 227 PutOperation(scoped_refptr<IndexedDBBackingStore> backing_store,
229 int64 database_id, 228 int64 database_id,
230 const IndexedDBObjectStoreMetadata& object_store, 229 const IndexedDBObjectStoreMetadata& object_store,
231 std::vector<char>* value, 230 std::string* value,
232 scoped_ptr<IndexedDBKey> key, 231 scoped_ptr<IndexedDBKey> key,
233 IndexedDBDatabase::PutMode put_mode, 232 IndexedDBDatabase::PutMode put_mode,
234 scoped_refptr<IndexedDBCallbacks> callbacks, 233 scoped_refptr<IndexedDBCallbacks> callbacks,
235 const std::vector<int64>& index_ids, 234 const std::vector<int64>& index_ids,
236 const std::vector<IndexedDBDatabase::IndexKeys>& index_keys) 235 const std::vector<IndexedDBDatabase::IndexKeys>& index_keys)
237 : backing_store_(backing_store), 236 : backing_store_(backing_store),
238 database_id_(database_id), 237 database_id_(database_id),
239 object_store_(object_store), 238 object_store_(object_store),
240 key_(key.Pass()), 239 key_(key.Pass()),
241 put_mode_(put_mode), 240 put_mode_(put_mode),
242 callbacks_(callbacks), 241 callbacks_(callbacks),
243 index_ids_(index_ids), 242 index_ids_(index_ids),
244 index_keys_(index_keys) { 243 index_keys_(index_keys) {
245 value_.swap(*value); 244 value_.swap(*value);
246 } 245 }
247 virtual void Perform(IndexedDBTransaction* transaction) OVERRIDE; 246 virtual void Perform(IndexedDBTransaction* transaction) OVERRIDE;
248 247
249 private: 248 private:
250 const scoped_refptr<IndexedDBBackingStore> backing_store_; 249 const scoped_refptr<IndexedDBBackingStore> backing_store_;
251 const int64 database_id_; 250 const int64 database_id_;
252 const IndexedDBObjectStoreMetadata object_store_; 251 const IndexedDBObjectStoreMetadata object_store_;
253 std::vector<char> value_; 252 std::string value_;
254 scoped_ptr<IndexedDBKey> key_; 253 scoped_ptr<IndexedDBKey> key_;
255 const IndexedDBDatabase::PutMode put_mode_; 254 const IndexedDBDatabase::PutMode put_mode_;
256 const scoped_refptr<IndexedDBCallbacks> callbacks_; 255 const scoped_refptr<IndexedDBCallbacks> callbacks_;
257 const std::vector<int64> index_ids_; 256 const std::vector<int64> index_ids_;
258 const std::vector<IndexedDBDatabase::IndexKeys> index_keys_; 257 const std::vector<IndexedDBDatabase::IndexKeys> index_keys_;
259 }; 258 };
260 259
261 class SetIndexesReadyOperation : public IndexedDBTransaction::Operation { 260 class SetIndexesReadyOperation : public IndexedDBTransaction::Operation {
262 public: 261 public:
263 explicit SetIndexesReadyOperation(size_t index_count) 262 explicit SetIndexesReadyOperation(size_t index_count)
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 return; 822 return;
824 } 823 }
825 824
826 key = &backing_store_cursor->key(); 825 key = &backing_store_cursor->key();
827 } 826 }
828 827
829 scoped_ptr<IndexedDBKey> primary_key; 828 scoped_ptr<IndexedDBKey> primary_key;
830 bool ok; 829 bool ok;
831 if (index_id_ == IndexedDBIndexMetadata::kInvalidId) { 830 if (index_id_ == IndexedDBIndexMetadata::kInvalidId) {
832 // Object Store Retrieval Operation 831 // Object Store Retrieval Operation
833 std::vector<char> value; 832 std::string value;
834 ok = backing_store_->GetRecord(transaction->BackingStoreTransaction(), 833 ok = backing_store_->GetRecord(transaction->BackingStoreTransaction(),
835 database_id_, 834 database_id_,
836 object_store_id_, 835 object_store_id_,
837 *key, 836 *key,
838 &value); 837 &value);
839 if (!ok) { 838 if (!ok) {
840 callbacks_->OnError( 839 callbacks_->OnError(
841 IndexedDBDatabaseError(WebKit::WebIDBDatabaseExceptionUnknownError, 840 IndexedDBDatabaseError(WebKit::WebIDBDatabaseExceptionUnknownError,
842 "Internal error in GetRecord.")); 841 "Internal error in GetRecord."));
843 return; 842 return;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 callbacks_->OnSuccess(); 874 callbacks_->OnSuccess();
876 return; 875 return;
877 } 876 }
878 if (cursor_type_ == indexed_db::CURSOR_KEY_ONLY) { 877 if (cursor_type_ == indexed_db::CURSOR_KEY_ONLY) {
879 // Index Value Retrieval Operation 878 // Index Value Retrieval Operation
880 callbacks_->OnSuccess(*primary_key); 879 callbacks_->OnSuccess(*primary_key);
881 return; 880 return;
882 } 881 }
883 882
884 // Index Referenced Value Retrieval Operation 883 // Index Referenced Value Retrieval Operation
885 std::vector<char> value; 884 std::string value;
886 ok = backing_store_->GetRecord(transaction->BackingStoreTransaction(), 885 ok = backing_store_->GetRecord(transaction->BackingStoreTransaction(),
887 database_id_, 886 database_id_,
888 object_store_id_, 887 object_store_id_,
889 *primary_key, 888 *primary_key,
890 &value); 889 &value);
891 if (!ok) { 890 if (!ok) {
892 callbacks_->OnError( 891 callbacks_->OnError(
893 IndexedDBDatabaseError(WebKit::WebIDBDatabaseExceptionUnknownError, 892 IndexedDBDatabaseError(WebKit::WebIDBDatabaseExceptionUnknownError,
894 "Internal error in GetRecord.")); 893 "Internal error in GetRecord."));
895 return; 894 return;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 return backing_store->MaybeUpdateKeyGeneratorCurrentNumber( 941 return backing_store->MaybeUpdateKeyGeneratorCurrentNumber(
943 transaction->BackingStoreTransaction(), 942 transaction->BackingStoreTransaction(),
944 database_id, 943 database_id,
945 object_store_id, 944 object_store_id,
946 static_cast<int64>(floor(key->number())) + 1, 945 static_cast<int64>(floor(key->number())) + 1,
947 check_current); 946 check_current);
948 } 947 }
949 948
950 void IndexedDBDatabase::Put(int64 transaction_id, 949 void IndexedDBDatabase::Put(int64 transaction_id,
951 int64 object_store_id, 950 int64 object_store_id,
952 std::vector<char>* value, 951 std::string* value,
953 scoped_ptr<IndexedDBKey> key, 952 scoped_ptr<IndexedDBKey> key,
954 PutMode put_mode, 953 PutMode put_mode,
955 scoped_refptr<IndexedDBCallbacks> callbacks, 954 scoped_refptr<IndexedDBCallbacks> callbacks,
956 const std::vector<int64>& index_ids, 955 const std::vector<int64>& index_ids,
957 const std::vector<IndexKeys>& index_keys) { 956 const std::vector<IndexKeys>& index_keys) {
958 IDB_TRACE("IndexedDBDatabase::Put"); 957 IDB_TRACE("IndexedDBDatabase::Put");
959 TransactionMap::const_iterator trans_iterator = 958 TransactionMap::const_iterator trans_iterator =
960 transactions_.find(transaction_id); 959 transactions_.find(transaction_id);
961 if (trans_iterator == transactions_.end()) 960 if (trans_iterator == transactions_.end())
962 return; 961 return;
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
1260 transaction->BackingStoreTransaction(), 1259 transaction->BackingStoreTransaction(),
1261 database_id_, 1260 database_id_,
1262 object_store_id_, 1261 object_store_id_,
1263 index_id_, 1262 index_id_,
1264 *key_range_, 1263 *key_range_,
1265 direction_); 1264 direction_);
1266 } 1265 }
1267 } 1266 }
1268 1267
1269 if (!backing_store_cursor) { 1268 if (!backing_store_cursor) {
1270 callbacks_->OnSuccess(static_cast<std::vector<char>*>(NULL)); 1269 callbacks_->OnSuccess(static_cast<std::string*>(NULL));
1271 return; 1270 return;
1272 } 1271 }
1273 1272
1274 IndexedDBDatabase::TaskType task_type( 1273 IndexedDBDatabase::TaskType task_type(
1275 static_cast<IndexedDBDatabase::TaskType>(task_type_)); 1274 static_cast<IndexedDBDatabase::TaskType>(task_type_));
1276 scoped_refptr<IndexedDBCursor> cursor = IndexedDBCursor::Create( 1275 scoped_refptr<IndexedDBCursor> cursor = IndexedDBCursor::Create(
1277 backing_store_cursor.Pass(), cursor_type_, task_type, transaction); 1276 backing_store_cursor.Pass(), cursor_type_, task_type, transaction);
1278 callbacks_->OnSuccess( 1277 callbacks_->OnSuccess(
1279 cursor, cursor->key(), cursor->primary_key(), cursor->Value()); 1278 cursor, cursor->key(), cursor->primary_key(), cursor->Value());
1280 } 1279 }
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after
1873 1872
1874 void IndexedDBDatabase::VersionChangeAbortOperation::Perform( 1873 void IndexedDBDatabase::VersionChangeAbortOperation::Perform(
1875 IndexedDBTransaction* transaction) { 1874 IndexedDBTransaction* transaction) {
1876 IDB_TRACE("VersionChangeAbortOperation"); 1875 IDB_TRACE("VersionChangeAbortOperation");
1877 DCHECK(!transaction); 1876 DCHECK(!transaction);
1878 database_->metadata_.version = previous_version_; 1877 database_->metadata_.version = previous_version_;
1879 database_->metadata_.int_version = previous_int_version_; 1878 database_->metadata_.int_version = previous_int_version_;
1880 } 1879 }
1881 1880
1882 } // namespace content 1881 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_database.h ('k') | content/browser/indexed_db/indexed_db_database_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698