chromium/chromeos/dbus/ip_peripheral/fake_ip_peripheral_service_client.h

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMEOS_DBUS_IP_PERIPHERAL_FAKE_IP_PERIPHERAL_SERVICE_CLIENT_H_
#define CHROMEOS_DBUS_IP_PERIPHERAL_FAKE_IP_PERIPHERAL_SERVICE_CLIENT_H_

#include <string>

#include "chromeos/dbus/ip_peripheral/ip_peripheral_service_client.h"

namespace chromeos {

class COMPONENT_EXPORT(DBUS_IP_PERIPHERAL_CLIENT) FakeIpPeripheralServiceClient
    : public IpPeripheralServiceClient {
 public:
  FakeIpPeripheralServiceClient();
  FakeIpPeripheralServiceClient(const FakeIpPeripheralServiceClient&) = delete;
  FakeIpPeripheralServiceClient& operator=(
      const FakeIpPeripheralServiceClient&) = delete;
  ~FakeIpPeripheralServiceClient() override;

  // Checks that FakeIpPeripheralServiceClient was initialized and returns it.
  static FakeIpPeripheralServiceClient* Get();

  // IpPeripheralServiceClient
  void GetPan(const std::string& ip, GetCallback callback) override;
  void GetTilt(const std::string& ip, GetCallback callback) override;
  void GetZoom(const std::string& ip, GetCallback callback) override;
  void SetPan(const std::string& ip,
              int32_t pan,
              SetCallback callback) override;
  void SetTilt(const std::string& ip,
               int32_t tilt,
               SetCallback callback) override;
  void SetZoom(const std::string& ip,
               int32_t zoom,
               SetCallback callback) override;
  void GetControl(const std::string& ip,
                  const std::vector<uint8_t>& guid_le,
                  uint8_t control_selector,
                  uint8_t uvc_get_request,
                  GetControlCallback callback) override;
  void SetControl(const std::string& ip,
                  const std::vector<uint8_t>& guid_le,
                  uint8_t control_selector,
                  const std::vector<uint8_t>& control_setting,
                  SetControlCallback callback) override;

  int get_pan_call_count() const { return get_pan_call_count_; }
  int get_tilt_call_count() const { return get_tilt_call_count_; }
  int get_zoom_call_count() const { return get_zoom_call_count_; }
  int set_pan_call_count() const { return set_pan_call_count_; }
  int set_tilt_call_count() const { return set_tilt_call_count_; }
  int set_zoom_call_count() const { return set_zoom_call_count_; }
  int get_control_call_count() const { return get_control_call_count_; }
  int set_control_call_count() const { return set_control_call_count_; }

  int32_t pan() const { return pan_; }
  void set_pan(int32_t pan) { pan_ = pan; }
  int32_t tilt() const { return tilt_; }
  void set_tilt(int32_t tilt) { tilt_ = tilt; }
  int32_t zoom() const { return zoom_; }
  void set_zoom(int32_t zoom) { zoom_ = zoom; }
  std::vector<uint8_t> control_response() const { return control_response_; }
  void set_control_response(std::vector<uint8_t> control_setting) {
    control_response_ = control_setting;
  }

 private:
  int get_pan_call_count_ = 0;
  int get_tilt_call_count_ = 0;
  int get_zoom_call_count_ = 0;
  int set_pan_call_count_ = 0;
  int set_tilt_call_count_ = 0;
  int set_zoom_call_count_ = 0;
  int32_t pan_ = 0;
  int32_t tilt_ = 0;
  int32_t zoom_ = 0;
  int get_control_call_count_ = 0;
  int set_control_call_count_ = 0;
  std::vector<uint8_t> control_response_;
};

}  // namespace chromeos

#endif  // CHROMEOS_DBUS_IP_PERIPHERAL_FAKE_IP_PERIPHERAL_SERVICE_CLIENT_H_