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