summaryrefslogtreecommitdiff
path: root/chromium/media/capture/video/chromeos/mock_camera_module.h
blob: 12397b61455e375ba38b88cdd3d1d8bf4c85fa13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MEDIA_CAPTURE_VIDEO_CHROMEOS_MOCK_CAMERA_MODULE_H_
#define MEDIA_CAPTURE_VIDEO_CHROMEOS_MOCK_CAMERA_MODULE_H_

#include <stddef.h>
#include <stdint.h>

#include "base/threading/thread.h"
#include "media/capture/video/chromeos/mojom/camera3.mojom.h"
#include "media/capture/video/chromeos/mojom/camera_common.mojom.h"
#include "mojo/public/cpp/bindings/associated_remote.h"
#include "mojo/public/cpp/bindings/pending_associated_remote.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "testing/gmock/include/gmock/gmock.h"

namespace media {
namespace unittest_internal {

class MockCameraModule : public cros::mojom::CameraModule {
 public:
  MockCameraModule();

  ~MockCameraModule();

  void OpenDevice(
      int32_t camera_id,
      mojo::PendingReceiver<cros::mojom::Camera3DeviceOps> device_ops_receiver,
      OpenDeviceCallback callback) override;
  MOCK_METHOD3(DoOpenDevice,
               void(int32_t camera_id,
                    mojo::PendingReceiver<cros::mojom::Camera3DeviceOps>
                        device_ops_receiver,
                    OpenDeviceCallback& callback));

  void GetNumberOfCameras(GetNumberOfCamerasCallback callback) override;
  MOCK_METHOD1(DoGetNumberOfCameras,
               void(GetNumberOfCamerasCallback& callback));

  void GetCameraInfo(int32_t camera_id,
                     GetCameraInfoCallback callback) override;
  MOCK_METHOD2(DoGetCameraInfo,
               void(int32_t camera_id, GetCameraInfoCallback& callback));

  void SetCallbacks(
      mojo::PendingRemote<cros::mojom::CameraModuleCallbacks> callbacks,
      SetCallbacksCallback callback) override;
  MOCK_METHOD2(
      DoSetCallbacks,
      void(mojo::PendingRemote<cros::mojom::CameraModuleCallbacks>& callbacks,
           SetCallbacksCallback& callback));

  void Init(InitCallback callback) override;
  MOCK_METHOD1(DoInit, void(InitCallback& callback));

  void SetTorchMode(int32_t camera_id,
                    bool enabled,
                    SetTorchModeCallback callback) override;
  MOCK_METHOD3(DoSetTorchMode,
               void(int32_t camera_id,
                    bool enabled,
                    SetTorchModeCallback& callback));

  void GetVendorTagOps(
      mojo::PendingReceiver<cros::mojom::VendorTagOps> vendor_tag_ops_receiver,
      GetVendorTagOpsCallback callback) override;
  MOCK_METHOD2(DoGetVendorTagOps,
               void(mojo::PendingReceiver<cros::mojom::VendorTagOps>
                        vendor_tag_ops_receiver,
                    GetVendorTagOpsCallback& callback));

  void SetCallbacksAssociated(mojo::PendingAssociatedRemote<
                                  cros::mojom::CameraModuleCallbacks> callbacks,
                              SetCallbacksAssociatedCallback callback) override;
  MOCK_METHOD2(DoSetCallbacksAssociated,
               void(mojo::PendingAssociatedRemote<
                        cros::mojom::CameraModuleCallbacks>& callbacks,
                    SetCallbacksAssociatedCallback& callback));

  void NotifyCameraDeviceChange(int camera_id,
                                cros::mojom::CameraDeviceStatus status);

  mojo::PendingRemote<cros::mojom::CameraModule> GetPendingRemote();

 private:
  void NotifyCameraDeviceChangeOnThread(int camera_id,
                                        cros::mojom::CameraDeviceStatus status);

  void CloseBindingOnThread();

  void BindOnThread(
      base::WaitableEvent* done,
      mojo::PendingRemote<cros::mojom::CameraModule>* pending_remote);

  base::Thread mock_module_thread_;
  mojo::Receiver<cros::mojom::CameraModule> receiver_{this};
  mojo::AssociatedRemote<cros::mojom::CameraModuleCallbacks> callbacks_;

  DISALLOW_COPY_AND_ASSIGN(MockCameraModule);
};

}  // namespace unittest_internal
}  // namespace media

#endif  // MEDIA_CAPTURE_VIDEO_CHROMEOS_MOCK_CAMERA_MODULE_H_