| OLD | NEW | 
|---|
| 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  Loading... | 
| 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_ | 
| OLD | NEW | 
|---|