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_MOCK_MOJO_INDEXED_DB_CALLBACKS_H_
6 #define CONTENT_BROWSER_INDEXED_DB_MOCK_MOJO_INDEXED_DB_CALLBACKS_H_
7 
8 #include <stddef.h>
9 #include <string>
10 
11 #include "base/macros.h"
12 #include "mojo/public/cpp/bindings/associated_receiver.h"
13 #include "mojo/public/cpp/bindings/pending_associated_remote.h"
14 #include "testing/gmock/include/gmock/gmock.h"
15 #include "third_party/blink/public/common/indexeddb/indexeddb_key.h"
16 #include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom.h"
17 
18 namespace blink {
19 struct IndexedDBDatabaseMetadata;
20 }
21 
22 namespace content {
23 
24 class MockMojoIndexedDBCallbacks : public blink::mojom::IDBCallbacks {
25  public:
26   explicit MockMojoIndexedDBCallbacks();
27   ~MockMojoIndexedDBCallbacks() override;
28 
29   mojo::PendingAssociatedRemote<blink::mojom::IDBCallbacks>
30   CreateInterfacePtrAndBind();
31 
32   MOCK_METHOD2(Error,
33                void(blink::mojom::IDBException code,
34                     const base::string16& message));
35 
36   MOCK_METHOD1(SuccessNamesAndVersionsList,
37                void(std::vector<blink::mojom::IDBNameAndVersionPtr> list));
38 
39   MOCK_METHOD1(SuccessStringList,
40                void(const std::vector<base::string16>& value));
41 
42   MOCK_METHOD1(Blocked, void(int64_t existing_version));
43 
44   MOCK_METHOD5(MockedUpgradeNeeded,
45                void(mojo::PendingAssociatedRemote<blink::mojom::IDBDatabase>*
46                         pending_database,
47                     int64_t old_version,
48                     blink::mojom::IDBDataLoss data_loss,
49                     const std::string& data_loss_message,
50                     const blink::IndexedDBDatabaseMetadata& metadata));
51 
52   // Move-only types not supported by mock methods.
UpgradeNeeded(mojo::PendingAssociatedRemote<blink::mojom::IDBDatabase> pending_database,int64_t old_version,blink::mojom::IDBDataLoss data_loss,const std::string & data_loss_message,const blink::IndexedDBDatabaseMetadata & metadata)53   void UpgradeNeeded(
54       mojo::PendingAssociatedRemote<blink::mojom::IDBDatabase> pending_database,
55       int64_t old_version,
56       blink::mojom::IDBDataLoss data_loss,
57       const std::string& data_loss_message,
58       const blink::IndexedDBDatabaseMetadata& metadata) override {
59     MockedUpgradeNeeded(&pending_database, old_version, data_loss,
60                         data_loss_message, metadata);
61   }
62 
63   MOCK_METHOD2(MockedSuccessDatabase,
64                void(mojo::PendingAssociatedRemote<blink::mojom::IDBDatabase>*
65                         pending_database,
66                     const blink::IndexedDBDatabaseMetadata& metadata));
SuccessDatabase(mojo::PendingAssociatedRemote<blink::mojom::IDBDatabase> pending_database,const blink::IndexedDBDatabaseMetadata & metadata)67   void SuccessDatabase(
68       mojo::PendingAssociatedRemote<blink::mojom::IDBDatabase> pending_database,
69       const blink::IndexedDBDatabaseMetadata& metadata) override {
70     MockedSuccessDatabase(&pending_database, metadata);
71   }
72 
73   MOCK_METHOD1(SuccessInteger, void(int64_t value));
74   MOCK_METHOD0(Success, void());
75 
76  private:
77   mojo::AssociatedReceiver<blink::mojom::IDBCallbacks> receiver_{this};
78 
79   DISALLOW_COPY_AND_ASSIGN(MockMojoIndexedDBCallbacks);
80 };
81 
82 }  // namespace content
83 
84 #endif  // CONTENT_BROWSER_INDEXED_DB_MOCK_MOJO_INDEXED_DB_CALLBACKS_H_
85