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

Side by Side Diff: content/browser/indexed_db/indexed_db_leveldb_coding.h

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 #ifndef CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_LEVELDB_CODING_H_ 5 #ifndef CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_LEVELDB_CODING_H_
6 #define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_LEVELDB_CODING_H_ 6 #define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_LEVELDB_CODING_H_
7 7
8 #include <vector> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "base/strings/string16.h" 14 #include "base/strings/string16.h"
15 #include "base/strings/string_piece.h" 15 #include "base/strings/string_piece.h"
16 #include "content/common/indexed_db/indexed_db_key.h" 16 #include "content/common/indexed_db/indexed_db_key.h"
17 #include "content/common/indexed_db/indexed_db_key_path.h" 17 #include "content/common/indexed_db/indexed_db_key_path.h"
18 18
19 namespace content { 19 namespace content {
20 20
21 class LevelDBSlice;
22
23 CONTENT_EXPORT extern const unsigned char kMinimumIndexId; 21 CONTENT_EXPORT extern const unsigned char kMinimumIndexId;
24 22
25 CONTENT_EXPORT std::vector<char> MaxIDBKey(); 23 CONTENT_EXPORT std::string MaxIDBKey();
26 CONTENT_EXPORT std::vector<char> MinIDBKey(); 24 CONTENT_EXPORT std::string MinIDBKey();
27 25
28 CONTENT_EXPORT void EncodeByte(unsigned char value, std::vector<char>* into); 26 CONTENT_EXPORT void EncodeByte(unsigned char value, std::string* into);
29 CONTENT_EXPORT void EncodeBool(bool value, std::vector<char>* into); 27 CONTENT_EXPORT void EncodeBool(bool value, std::string* into);
30 CONTENT_EXPORT void EncodeInt(int64 value, std::vector<char>* into); 28 CONTENT_EXPORT void EncodeInt(int64 value, std::string* into);
31 CONTENT_EXPORT void EncodeVarInt(int64 value, std::vector<char>* into); 29 CONTENT_EXPORT void EncodeVarInt(int64 value, std::string* into);
32 CONTENT_EXPORT void EncodeString(const string16& value, 30 CONTENT_EXPORT void EncodeString(const string16& value, std::string* into);
33 std::vector<char>* into);
34 CONTENT_EXPORT void EncodeStringWithLength(const string16& value, 31 CONTENT_EXPORT void EncodeStringWithLength(const string16& value,
35 std::vector<char>* into); 32 std::string* into);
36 CONTENT_EXPORT void EncodeDouble(double value, std::vector<char>* into); 33 CONTENT_EXPORT void EncodeDouble(double value, std::string* into);
37 CONTENT_EXPORT void EncodeIDBKey(const IndexedDBKey& value, 34 CONTENT_EXPORT void EncodeIDBKey(const IndexedDBKey& value, std::string* into);
38 std::vector<char>* into);
39 CONTENT_EXPORT void EncodeIDBKeyPath(const IndexedDBKeyPath& value, 35 CONTENT_EXPORT void EncodeIDBKeyPath(const IndexedDBKeyPath& value,
40 std::vector<char>* into); 36 std::string* into);
41 37
42 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeByte(base::StringPiece* slice, 38 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeByte(base::StringPiece* slice,
43 unsigned char* value); 39 unsigned char* value);
44 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeBool(base::StringPiece* slice, 40 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeBool(base::StringPiece* slice,
45 bool* value); 41 bool* value);
46 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeInt(base::StringPiece* slice, 42 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeInt(base::StringPiece* slice,
47 int64* value); 43 int64* value);
48 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeVarInt(base::StringPiece* slice, 44 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeVarInt(base::StringPiece* slice,
49 int64* value); 45 int64* value);
50 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeString(base::StringPiece* slice, 46 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeString(base::StringPiece* slice,
51 string16* value); 47 string16* value);
52 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeStringWithLength( 48 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeStringWithLength(
53 base::StringPiece* slice, 49 base::StringPiece* slice,
54 string16* value); 50 string16* value);
55 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeDouble(base::StringPiece* slice, 51 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeDouble(base::StringPiece* slice,
56 double* value); 52 double* value);
57 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeIDBKey( 53 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeIDBKey(
58 base::StringPiece* slice, 54 base::StringPiece* slice,
59 scoped_ptr<IndexedDBKey>* value); 55 scoped_ptr<IndexedDBKey>* value);
60 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeIDBKeyPath( 56 CONTENT_EXPORT WARN_UNUSED_RESULT bool DecodeIDBKeyPath(
61 base::StringPiece* slice, 57 base::StringPiece* slice,
62 IndexedDBKeyPath* value); 58 IndexedDBKeyPath* value);
63 59
64 CONTENT_EXPORT int CompareEncodedStringsWithLength(base::StringPiece* slice1, 60 CONTENT_EXPORT int CompareEncodedStringsWithLength(base::StringPiece* slice1,
65 base::StringPiece* slice2, 61 base::StringPiece* slice2,
66 bool* ok); 62 bool* ok);
67 63
68 CONTENT_EXPORT WARN_UNUSED_RESULT bool ExtractEncodedIDBKey( 64 CONTENT_EXPORT WARN_UNUSED_RESULT bool ExtractEncodedIDBKey(
69 base::StringPiece* slice, 65 base::StringPiece* slice,
70 std::vector<char>* result); 66 std::string* result);
71 67
72 CONTENT_EXPORT int CompareEncodedIDBKeys(const std::vector<char>& a, 68 CONTENT_EXPORT int CompareEncodedIDBKeys(const std::string& a,
73 const std::vector<char>& b, 69 const std::string& b,
74 bool* ok); 70 bool* ok);
75 71
76 CONTENT_EXPORT int Compare(const LevelDBSlice& a, 72 CONTENT_EXPORT int Compare(const base::StringPiece& a,
77 const LevelDBSlice& b, 73 const base::StringPiece& b,
78 bool index_keys); 74 bool index_keys);
79 75
80 class KeyPrefix { 76 class KeyPrefix {
81 public: 77 public:
82 KeyPrefix(); 78 KeyPrefix();
83 explicit KeyPrefix(int64 database_id); 79 explicit KeyPrefix(int64 database_id);
84 KeyPrefix(int64 database_id, int64 object_store_id); 80 KeyPrefix(int64 database_id, int64 object_store_id);
85 KeyPrefix(int64 database_id, int64 object_store_id, int64 index_id); 81 KeyPrefix(int64 database_id, int64 object_store_id, int64 index_id);
86 static KeyPrefix CreateWithSpecialIndex(int64 database_id, 82 static KeyPrefix CreateWithSpecialIndex(int64 database_id,
87 int64 object_store_id, 83 int64 object_store_id,
88 int64 index_id); 84 int64 index_id);
89 85
90 static const char* Decode(const char* start, 86 static const char* Decode(const char* start,
91 const char* limit, 87 const char* limit,
92 KeyPrefix* result); 88 KeyPrefix* result);
93 std::vector<char> Encode() const; 89 std::string Encode() const;
94 static std::vector<char> EncodeEmpty(); 90 static std::string EncodeEmpty();
95 int Compare(const KeyPrefix& other) const; 91 int Compare(const KeyPrefix& other) const;
96 92
97 enum Type { 93 enum Type {
98 GLOBAL_METADATA, 94 GLOBAL_METADATA,
99 DATABASE_METADATA, 95 DATABASE_METADATA,
100 OBJECT_STORE_DATA, 96 OBJECT_STORE_DATA,
101 EXISTS_ENTRY, 97 EXISTS_ENTRY,
102 INDEX_DATA, 98 INDEX_DATA,
103 INVALID_TYPE 99 INVALID_TYPE
104 }; 100 };
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 138
143 Type type() const; 139 Type type() const;
144 140
145 int64 database_id_; 141 int64 database_id_;
146 int64 object_store_id_; 142 int64 object_store_id_;
147 int64 index_id_; 143 int64 index_id_;
148 144
149 static const int64 kInvalidId = -1; 145 static const int64 kInvalidId = -1;
150 146
151 private: 147 private:
152 static std::vector<char> EncodeInternal(int64 database_id, 148 static std::string EncodeInternal(int64 database_id,
153 int64 object_store_id, 149 int64 object_store_id,
154 int64 index_id); 150 int64 index_id);
155 // Special constructor for CreateWithSpecialIndex() 151 // Special constructor for CreateWithSpecialIndex()
156 KeyPrefix(enum Type, 152 KeyPrefix(enum Type,
157 int64 database_id, 153 int64 database_id,
158 int64 object_store_id, 154 int64 object_store_id,
159 int64 index_id); 155 int64 index_id);
160 }; 156 };
161 157
162 class SchemaVersionKey { 158 class SchemaVersionKey {
163 public: 159 public:
164 CONTENT_EXPORT static std::vector<char> Encode(); 160 CONTENT_EXPORT static std::string Encode();
165 }; 161 };
166 162
167 class MaxDatabaseIdKey { 163 class MaxDatabaseIdKey {
168 public: 164 public:
169 CONTENT_EXPORT static std::vector<char> Encode(); 165 CONTENT_EXPORT static std::string Encode();
170 }; 166 };
171 167
172 class DataVersionKey { 168 class DataVersionKey {
173 public: 169 public:
174 static std::vector<char> Encode(); 170 static std::string Encode();
175 }; 171 };
176 172
177 class DatabaseFreeListKey { 173 class DatabaseFreeListKey {
178 public: 174 public:
179 DatabaseFreeListKey(); 175 DatabaseFreeListKey();
180 static const char* Decode(const char* start, 176 static const char* Decode(const char* start,
181 const char* limit, 177 const char* limit,
182 DatabaseFreeListKey* result); 178 DatabaseFreeListKey* result);
183 CONTENT_EXPORT static std::vector<char> Encode(int64 database_id); 179 CONTENT_EXPORT static std::string Encode(int64 database_id);
184 static CONTENT_EXPORT std::vector<char> EncodeMaxKey(); 180 static CONTENT_EXPORT std::string EncodeMaxKey();
185 int64 DatabaseId() const; 181 int64 DatabaseId() const;
186 int Compare(const DatabaseFreeListKey& other) const; 182 int Compare(const DatabaseFreeListKey& other) const;
187 183
188 private: 184 private:
189 int64 database_id_; 185 int64 database_id_;
190 }; 186 };
191 187
192 class DatabaseNameKey { 188 class DatabaseNameKey {
193 public: 189 public:
194 static const char* Decode(const char* start, 190 static const char* Decode(const char* start,
195 const char* limit, 191 const char* limit,
196 DatabaseNameKey* result); 192 DatabaseNameKey* result);
197 CONTENT_EXPORT static std::vector<char> Encode( 193 CONTENT_EXPORT static std::string Encode(const std::string& origin_identifier,
198 const std::string& origin_identifier, 194 const string16& database_name);
199 const string16& database_name); 195 static std::string EncodeMinKeyForOrigin(
200 static std::vector<char> EncodeMinKeyForOrigin(
201 const std::string& origin_identifier); 196 const std::string& origin_identifier);
202 static std::vector<char> EncodeStopKeyForOrigin( 197 static std::string EncodeStopKeyForOrigin(
203 const std::string& origin_identifier); 198 const std::string& origin_identifier);
204 string16 origin() const { return origin_; } 199 string16 origin() const { return origin_; }
205 string16 database_name() const { return database_name_; } 200 string16 database_name() const { return database_name_; }
206 int Compare(const DatabaseNameKey& other); 201 int Compare(const DatabaseNameKey& other);
207 202
208 private: 203 private:
209 string16 origin_; // TODO(jsbell): Store encoded strings, or just pointers. 204 string16 origin_; // TODO(jsbell): Store encoded strings, or just pointers.
210 string16 database_name_; 205 string16 database_name_;
211 }; 206 };
212 207
213 class DatabaseMetaDataKey { 208 class DatabaseMetaDataKey {
214 public: 209 public:
215 enum MetaDataType { 210 enum MetaDataType {
216 ORIGIN_NAME = 0, 211 ORIGIN_NAME = 0,
217 DATABASE_NAME = 1, 212 DATABASE_NAME = 1,
218 USER_VERSION = 2, 213 USER_VERSION = 2,
219 MAX_OBJECT_STORE_ID = 3, 214 MAX_OBJECT_STORE_ID = 3,
220 USER_INT_VERSION = 4, 215 USER_INT_VERSION = 4,
221 MAX_SIMPLE_METADATA_TYPE = 5 216 MAX_SIMPLE_METADATA_TYPE = 5
222 }; 217 };
223 218
224 CONTENT_EXPORT static std::vector<char> Encode(int64 database_id, 219 CONTENT_EXPORT static std::string Encode(int64 database_id,
225 MetaDataType type); 220 MetaDataType type);
226 }; 221 };
227 222
228 class ObjectStoreMetaDataKey { 223 class ObjectStoreMetaDataKey {
229 public: 224 public:
230 enum MetaDataType { 225 enum MetaDataType {
231 NAME = 0, 226 NAME = 0,
232 KEY_PATH = 1, 227 KEY_PATH = 1,
233 AUTO_INCREMENT = 2, 228 AUTO_INCREMENT = 2,
234 EVICTABLE = 3, 229 EVICTABLE = 3,
235 LAST_VERSION = 4, 230 LAST_VERSION = 4,
236 MAX_INDEX_ID = 5, 231 MAX_INDEX_ID = 5,
237 HAS_KEY_PATH = 6, 232 HAS_KEY_PATH = 6,
238 KEY_GENERATOR_CURRENT_NUMBER = 7 233 KEY_GENERATOR_CURRENT_NUMBER = 7
239 }; 234 };
240 235
241 ObjectStoreMetaDataKey(); 236 ObjectStoreMetaDataKey();
242 static const char* Decode(const char* start, 237 static const char* Decode(const char* start,
243 const char* limit, 238 const char* limit,
244 ObjectStoreMetaDataKey* result); 239 ObjectStoreMetaDataKey* result);
245 CONTENT_EXPORT static std::vector<char> Encode(int64 database_id, 240 CONTENT_EXPORT static std::string Encode(int64 database_id,
246 int64 object_store_id, 241 int64 object_store_id,
247 unsigned char meta_data_type); 242 unsigned char meta_data_type);
248 CONTENT_EXPORT static std::vector<char> EncodeMaxKey(int64 database_id); 243 CONTENT_EXPORT static std::string EncodeMaxKey(int64 database_id);
249 CONTENT_EXPORT static std::vector<char> EncodeMaxKey(int64 database_id, 244 CONTENT_EXPORT static std::string EncodeMaxKey(int64 database_id,
250 int64 object_store_id); 245 int64 object_store_id);
251 int64 ObjectStoreId() const; 246 int64 ObjectStoreId() const;
252 unsigned char MetaDataType() const; 247 unsigned char MetaDataType() const;
253 int Compare(const ObjectStoreMetaDataKey& other); 248 int Compare(const ObjectStoreMetaDataKey& other);
254 249
255 private: 250 private:
256 int64 object_store_id_; 251 int64 object_store_id_;
257 unsigned char meta_data_type_; 252 unsigned char meta_data_type_;
258 }; 253 };
259 254
260 class IndexMetaDataKey { 255 class IndexMetaDataKey {
261 public: 256 public:
262 enum MetaDataType { 257 enum MetaDataType {
263 NAME = 0, 258 NAME = 0,
264 UNIQUE = 1, 259 UNIQUE = 1,
265 KEY_PATH = 2, 260 KEY_PATH = 2,
266 MULTI_ENTRY = 3 261 MULTI_ENTRY = 3
267 }; 262 };
268 263
269 IndexMetaDataKey(); 264 IndexMetaDataKey();
270 static const char* Decode(const char* start, 265 static const char* Decode(const char* start,
271 const char* limit, 266 const char* limit,
272 IndexMetaDataKey* result); 267 IndexMetaDataKey* result);
273 CONTENT_EXPORT static std::vector<char> Encode(int64 database_id, 268 CONTENT_EXPORT static std::string Encode(int64 database_id,
269 int64 object_store_id,
270 int64 index_id,
271 unsigned char meta_data_type);
272 CONTENT_EXPORT static std::string EncodeMaxKey(int64 database_id,
273 int64 object_store_id);
274 CONTENT_EXPORT static std::string EncodeMaxKey(int64 database_id,
274 int64 object_store_id, 275 int64 object_store_id,
275 int64 index_id, 276 int64 index_id);
276 unsigned char meta_data_type);
277 CONTENT_EXPORT static std::vector<char> EncodeMaxKey(int64 database_id,
278 int64 object_store_id);
279 CONTENT_EXPORT static std::vector<char> EncodeMaxKey(int64 database_id,
280 int64 object_store_id,
281 int64 index_id);
282 int Compare(const IndexMetaDataKey& other); 277 int Compare(const IndexMetaDataKey& other);
283 int64 IndexId() const; 278 int64 IndexId() const;
284 unsigned char meta_data_type() const { return meta_data_type_; } 279 unsigned char meta_data_type() const { return meta_data_type_; }
285 280
286 private: 281 private:
287 int64 object_store_id_; 282 int64 object_store_id_;
288 int64 index_id_; 283 int64 index_id_;
289 unsigned char meta_data_type_; 284 unsigned char meta_data_type_;
290 }; 285 };
291 286
292 class ObjectStoreFreeListKey { 287 class ObjectStoreFreeListKey {
293 public: 288 public:
294 ObjectStoreFreeListKey(); 289 ObjectStoreFreeListKey();
295 static const char* Decode(const char* start, 290 static const char* Decode(const char* start,
296 const char* limit, 291 const char* limit,
297 ObjectStoreFreeListKey* result); 292 ObjectStoreFreeListKey* result);
298 CONTENT_EXPORT static std::vector<char> Encode(int64 database_id, 293 CONTENT_EXPORT static std::string Encode(int64 database_id,
299 int64 object_store_id); 294 int64 object_store_id);
300 CONTENT_EXPORT static std::vector<char> EncodeMaxKey(int64 database_id); 295 CONTENT_EXPORT static std::string EncodeMaxKey(int64 database_id);
301 int64 ObjectStoreId() const; 296 int64 ObjectStoreId() const;
302 int Compare(const ObjectStoreFreeListKey& other); 297 int Compare(const ObjectStoreFreeListKey& other);
303 298
304 private: 299 private:
305 int64 object_store_id_; 300 int64 object_store_id_;
306 }; 301 };
307 302
308 class IndexFreeListKey { 303 class IndexFreeListKey {
309 public: 304 public:
310 IndexFreeListKey(); 305 IndexFreeListKey();
311 static const char* Decode(const char* start, 306 static const char* Decode(const char* start,
312 const char* limit, 307 const char* limit,
313 IndexFreeListKey* result); 308 IndexFreeListKey* result);
314 CONTENT_EXPORT static std::vector<char> Encode(int64 database_id, 309 CONTENT_EXPORT static std::string Encode(int64 database_id,
315 int64 object_store_id, 310 int64 object_store_id,
316 int64 index_id); 311 int64 index_id);
317 CONTENT_EXPORT static std::vector<char> EncodeMaxKey(int64 database_id, 312 CONTENT_EXPORT static std::string EncodeMaxKey(int64 database_id,
318 int64 object_store_id); 313 int64 object_store_id);
319 int Compare(const IndexFreeListKey& other); 314 int Compare(const IndexFreeListKey& other);
320 int64 ObjectStoreId() const; 315 int64 ObjectStoreId() const;
321 int64 IndexId() const; 316 int64 IndexId() const;
322 317
323 private: 318 private:
324 int64 object_store_id_; 319 int64 object_store_id_;
325 int64 index_id_; 320 int64 index_id_;
326 }; 321 };
327 322
328 class ObjectStoreNamesKey { 323 class ObjectStoreNamesKey {
329 public: 324 public:
330 // TODO(jsbell): We never use this to look up object store ids, 325 // TODO(jsbell): We never use this to look up object store ids,
331 // because a mapping is kept in the IndexedDBDatabase. Can the 326 // because a mapping is kept in the IndexedDBDatabase. Can the
332 // mapping become unreliable? Can we remove this? 327 // mapping become unreliable? Can we remove this?
333 static const char* Decode(const char* start, 328 static const char* Decode(const char* start,
334 const char* limit, 329 const char* limit,
335 ObjectStoreNamesKey* result); 330 ObjectStoreNamesKey* result);
336 CONTENT_EXPORT static std::vector<char> Encode( 331 CONTENT_EXPORT static std::string Encode(int64 database_id,
337 int64 database_id, 332 const string16& object_store_name);
338 const string16& object_store_name);
339 int Compare(const ObjectStoreNamesKey& other); 333 int Compare(const ObjectStoreNamesKey& other);
340 string16 object_store_name() const { return object_store_name_; } 334 string16 object_store_name() const { return object_store_name_; }
341 335
342 private: 336 private:
343 // TODO(jsbell): Store the encoded string, or just pointers to it. 337 // TODO(jsbell): Store the encoded string, or just pointers to it.
344 string16 object_store_name_; 338 string16 object_store_name_;
345 }; 339 };
346 340
347 class IndexNamesKey { 341 class IndexNamesKey {
348 public: 342 public:
349 IndexNamesKey(); 343 IndexNamesKey();
350 // TODO(jsbell): We never use this to look up index ids, because a mapping 344 // TODO(jsbell): We never use this to look up index ids, because a mapping
351 // is kept at a higher level. 345 // is kept at a higher level.
352 static const char* Decode(const char* start, 346 static const char* Decode(const char* start,
353 const char* limit, 347 const char* limit,
354 IndexNamesKey* result); 348 IndexNamesKey* result);
355 CONTENT_EXPORT static std::vector<char> Encode(int64 database_id, 349 CONTENT_EXPORT static std::string Encode(int64 database_id,
356 int64 object_store_id, 350 int64 object_store_id,
357 const string16& index_name); 351 const string16& index_name);
358 int Compare(const IndexNamesKey& other); 352 int Compare(const IndexNamesKey& other);
359 string16 index_name() const { return index_name_; } 353 string16 index_name() const { return index_name_; }
360 354
361 private: 355 private:
362 int64 object_store_id_; 356 int64 object_store_id_;
363 string16 index_name_; 357 string16 index_name_;
364 }; 358 };
365 359
366 class ObjectStoreDataKey { 360 class ObjectStoreDataKey {
367 public: 361 public:
368 static const char* Decode(const char* start, 362 static const char* Decode(const char* start,
369 const char* end, 363 const char* end,
370 ObjectStoreDataKey* result); 364 ObjectStoreDataKey* result);
371 CONTENT_EXPORT static std::vector<char> Encode( 365 CONTENT_EXPORT static std::string Encode(int64 database_id,
372 int64 database_id, 366 int64 object_store_id,
373 int64 object_store_id, 367 const std::string encoded_user_key);
374 const std::vector<char> encoded_user_key); 368 static std::string Encode(int64 database_id,
375 static std::vector<char> Encode(int64 database_id, 369 int64 object_store_id,
376 int64 object_store_id, 370 const IndexedDBKey& user_key);
377 const IndexedDBKey& user_key);
378 int Compare(const ObjectStoreDataKey& other, bool* ok); 371 int Compare(const ObjectStoreDataKey& other, bool* ok);
379 scoped_ptr<IndexedDBKey> user_key() const; 372 scoped_ptr<IndexedDBKey> user_key() const;
380 static const int64 kSpecialIndexNumber; 373 static const int64 kSpecialIndexNumber;
381 ObjectStoreDataKey(); 374 ObjectStoreDataKey();
382 ~ObjectStoreDataKey(); 375 ~ObjectStoreDataKey();
383 376
384 private: 377 private:
385 std::vector<char> encoded_user_key_; 378 std::string encoded_user_key_;
386 }; 379 };
387 380
388 class ExistsEntryKey { 381 class ExistsEntryKey {
389 public: 382 public:
390 ExistsEntryKey(); 383 ExistsEntryKey();
391 ~ExistsEntryKey(); 384 ~ExistsEntryKey();
392 385
393 static const char* Decode(const char* start, 386 static const char* Decode(const char* start,
394 const char* end, 387 const char* end,
395 ExistsEntryKey* result); 388 ExistsEntryKey* result);
396 CONTENT_EXPORT static std::vector<char> Encode( 389 CONTENT_EXPORT static std::string Encode(int64 database_id,
397 int64 database_id, 390 int64 object_store_id,
398 int64 object_store_id, 391 const std::string& encoded_key);
399 const std::vector<char>& encoded_key); 392 static std::string Encode(int64 database_id,
400 static std::vector<char> Encode(int64 database_id, 393 int64 object_store_id,
401 int64 object_store_id, 394 const IndexedDBKey& user_key);
402 const IndexedDBKey& user_key);
403 int Compare(const ExistsEntryKey& other, bool* ok); 395 int Compare(const ExistsEntryKey& other, bool* ok);
404 scoped_ptr<IndexedDBKey> user_key() const; 396 scoped_ptr<IndexedDBKey> user_key() const;
405 397
406 static const int64 kSpecialIndexNumber; 398 static const int64 kSpecialIndexNumber;
407 399
408 private: 400 private:
409 std::vector<char> encoded_user_key_; 401 std::string encoded_user_key_;
410 DISALLOW_COPY_AND_ASSIGN(ExistsEntryKey); 402 DISALLOW_COPY_AND_ASSIGN(ExistsEntryKey);
411 }; 403 };
412 404
413 class IndexDataKey { 405 class IndexDataKey {
414 public: 406 public:
415 IndexDataKey(); 407 IndexDataKey();
416 ~IndexDataKey(); 408 ~IndexDataKey();
417 static const char* Decode(const char* start, 409 static const char* Decode(const char* start,
418 const char* limit, 410 const char* limit,
419 IndexDataKey* result); 411 IndexDataKey* result);
420 CONTENT_EXPORT static std::vector<char> Encode( 412 CONTENT_EXPORT static std::string Encode(
421 int64 database_id, 413 int64 database_id,
422 int64 object_store_id, 414 int64 object_store_id,
423 int64 index_id, 415 int64 index_id,
424 const std::vector<char>& encoded_user_key, 416 const std::string& encoded_user_key,
425 const std::vector<char>& encoded_primary_key, 417 const std::string& encoded_primary_key,
426 int64 sequence_number); 418 int64 sequence_number);
427 static std::vector<char> Encode(int64 database_id, 419 static std::string Encode(int64 database_id,
420 int64 object_store_id,
421 int64 index_id,
422 const IndexedDBKey& user_key);
423 static std::string EncodeMinKey(int64 database_id,
428 int64 object_store_id, 424 int64 object_store_id,
429 int64 index_id, 425 int64 index_id);
430 const IndexedDBKey& user_key); 426 CONTENT_EXPORT static std::string EncodeMaxKey(int64 database_id,
431 static std::vector<char> EncodeMinKey(int64 database_id, 427 int64 object_store_id,
432 int64 object_store_id, 428 int64 index_id);
433 int64 index_id);
434 CONTENT_EXPORT static std::vector<char> EncodeMaxKey(int64 database_id,
435 int64 object_store_id,
436 int64 index_id);
437 int Compare(const IndexDataKey& other, bool ignore_duplicates, bool* ok); 429 int Compare(const IndexDataKey& other, bool ignore_duplicates, bool* ok);
438 int64 DatabaseId() const; 430 int64 DatabaseId() const;
439 int64 ObjectStoreId() const; 431 int64 ObjectStoreId() const;
440 int64 IndexId() const; 432 int64 IndexId() const;
441 scoped_ptr<IndexedDBKey> user_key() const; 433 scoped_ptr<IndexedDBKey> user_key() const;
442 scoped_ptr<IndexedDBKey> primary_key() const; 434 scoped_ptr<IndexedDBKey> primary_key() const;
443 435
444 private: 436 private:
445 int64 database_id_; 437 int64 database_id_;
446 int64 object_store_id_; 438 int64 object_store_id_;
447 int64 index_id_; 439 int64 index_id_;
448 std::vector<char> encoded_user_key_; 440 std::string encoded_user_key_;
449 std::vector<char> encoded_primary_key_; 441 std::string encoded_primary_key_;
450 int64 sequence_number_; 442 int64 sequence_number_;
451 443
452 DISALLOW_COPY_AND_ASSIGN(IndexDataKey); 444 DISALLOW_COPY_AND_ASSIGN(IndexDataKey);
453 }; 445 };
454 446
455 } // namespace content 447 } // namespace content
456 448
457 #endif // CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_LEVELDB_CODING_H_ 449 #endif // CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_LEVELDB_CODING_H_
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_fake_backing_store.cc ('k') | content/browser/indexed_db/indexed_db_leveldb_coding.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698