// Copyright 2018 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_LINUX_FAKE_V4L2_IMPL_H_
#define MEDIA_CAPTURE_VIDEO_LINUX_FAKE_V4L2_IMPL_H_

#include <map>
#include <string>

#include <linux/videodev2.h>

#include "base/synchronization/lock.h"
#include "media/capture/capture_export.h"
#include "media/capture/video/linux/v4l2_capture_device.h"
#include "media/capture/video/video_capture_device_descriptor.h"

namespace media {

struct FakeV4L2DeviceConfig {
  FakeV4L2DeviceConfig(const VideoCaptureDeviceDescriptor& descriptor)
      : descriptor(descriptor) {}

  const VideoCaptureDeviceDescriptor descriptor;
};

// Implementation of V4L2CaptureDevice interface that allows configuring fake
// devices useful for testing.
class CAPTURE_EXPORT FakeV4L2Impl : public V4L2CaptureDevice {
 public:
  FakeV4L2Impl();

  void AddDevice(const std::string& device_name,
                 const FakeV4L2DeviceConfig& config);

  // Implementation of V4L2CaptureDevice interface:
  int open(const char* device_name, int flags) override;
  int close(int fd) override;
  int ioctl(int fd, int request, void* argp) override;
  void* mmap(void* start,
             size_t length,
             int prot,
             int flags,
             int fd,
             off_t offset) override;

  int munmap(void* start, size_t length) override;
  int poll(struct pollfd* ufds, unsigned int nfds, int timeout) override;

 protected:
  ~FakeV4L2Impl() override;

 private:
  class OpenedDevice;

  base::Lock lock_;

  int next_id_to_return_from_open_ GUARDED_BY(lock_);
  std::map<std::string, FakeV4L2DeviceConfig> device_configs_ GUARDED_BY(lock_);
  std::map<std::string, int> device_name_to_open_id_map_ GUARDED_BY(lock_);
  std::map<int /*value returned by open()*/, std::unique_ptr<OpenedDevice>>
      opened_devices_ GUARDED_BY(lock_);
};

}  // namespace media

#endif  // MEDIA_CAPTURE_VIDEO_LINUX_FAKE_V4L2_IMPL_H_
