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

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

Powered by Google App Engine
This is Rietveld 408576698