1 // Copyright 2017 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_BROWSER_INDEXED_DB_FAKE_INDEXED_DB_METADATA_CODING_H_ 6 #define CONTENT_BROWSER_INDEXED_DB_FAKE_INDEXED_DB_METADATA_CODING_H_ 7 8 #include <stdint.h> 9 #include <map> 10 #include <string> 11 #include <vector> 12 13 #include "base/macros.h" 14 #include "base/strings/string16.h" 15 #include "content/browser/indexed_db/indexed_db_metadata_coding.h" 16 #include "third_party/blink/public/common/indexeddb/indexeddb_key_path.h" 17 #include "third_party/leveldatabase/src/include/leveldb/status.h" 18 19 namespace blink { 20 struct IndexedDBDatabaseMetadata; 21 struct IndexedDBIndexMetadata; 22 struct IndexedDBObjectStoreMetadata; 23 } // namespace blink 24 25 namespace content { 26 class TransactionalLevelDBDatabase; 27 class TransactionalLevelDBTransaction; 28 29 // A fake implementation of IndexedDBMetadataCoding, for testing. 30 class FakeIndexedDBMetadataCoding : public IndexedDBMetadataCoding { 31 public: 32 FakeIndexedDBMetadataCoding(); 33 ~FakeIndexedDBMetadataCoding() override; 34 35 leveldb::Status ReadDatabaseNames( 36 TransactionalLevelDBDatabase* db, 37 const std::string& origin_identifier, 38 std::vector<base::string16>* names) override; 39 40 leveldb::Status ReadMetadataForDatabaseName( 41 TransactionalLevelDBDatabase* db, 42 const std::string& origin_identifier, 43 const base::string16& name, 44 blink::IndexedDBDatabaseMetadata* metadata, 45 bool* found) override; 46 leveldb::Status CreateDatabase( 47 TransactionalLevelDBDatabase* database, 48 const std::string& origin_identifier, 49 const base::string16& name, 50 int64_t version, 51 blink::IndexedDBDatabaseMetadata* metadata) override; 52 53 leveldb::Status SetDatabaseVersion( 54 TransactionalLevelDBTransaction* transaction, 55 int64_t row_id, 56 int64_t version, 57 blink::IndexedDBDatabaseMetadata* metadata) override; 58 59 leveldb::Status FindDatabaseId(TransactionalLevelDBDatabase* db, 60 const std::string& origin_identifier, 61 const base::string16& name, 62 int64_t* id, 63 bool* found) override; 64 65 leveldb::Status CreateObjectStore( 66 TransactionalLevelDBTransaction* transaction, 67 int64_t database_id, 68 int64_t object_store_id, 69 base::string16 name, 70 blink::IndexedDBKeyPath key_path, 71 bool auto_increment, 72 blink::IndexedDBObjectStoreMetadata* metadata) override; 73 74 leveldb::Status RenameObjectStore( 75 TransactionalLevelDBTransaction* transaction, 76 int64_t database_id, 77 base::string16 new_name, 78 base::string16* old_name, 79 blink::IndexedDBObjectStoreMetadata* metadata) override; 80 81 leveldb::Status DeleteObjectStore( 82 TransactionalLevelDBTransaction* transaction, 83 int64_t database_id, 84 const blink::IndexedDBObjectStoreMetadata& object_store) override; 85 86 leveldb::Status CreateIndex(TransactionalLevelDBTransaction* transaction, 87 int64_t database_id, 88 int64_t object_store_id, 89 int64_t index_id, 90 base::string16 name, 91 blink::IndexedDBKeyPath key_path, 92 bool is_unique, 93 bool is_multi_entry, 94 blink::IndexedDBIndexMetadata* metadata) override; 95 96 leveldb::Status RenameIndex(TransactionalLevelDBTransaction* transaction, 97 int64_t database_id, 98 int64_t object_store_id, 99 base::string16 new_name, 100 base::string16* old_name, 101 blink::IndexedDBIndexMetadata* metadata) override; 102 103 leveldb::Status DeleteIndex( 104 TransactionalLevelDBTransaction* transaction, 105 int64_t database_id, 106 int64_t object_store_id, 107 const blink::IndexedDBIndexMetadata& metadata) override; 108 109 private: 110 DISALLOW_COPY_AND_ASSIGN(FakeIndexedDBMetadataCoding); 111 }; 112 113 } // namespace content 114 #endif // CONTENT_BROWSER_INDEXED_DB_FAKE_INDEXED_DB_METADATA_CODING_H_ 115