blob: 84682f793921272d7795b90ec4ce452a4e864734 [file] [log] [blame]
// Copyright 2016 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.
#include "services/video_capture/test/video_capture_service_test.h"
#include "base/command_line.h"
#include "base/threading/thread_task_runner_handle.h"
#include "media/base/media_switches.h"
#include "services/video_capture/public/cpp/mock_producer.h"
#include "services/video_capture/public/mojom/constants.mojom.h"
namespace video_capture {
VideoCaptureServiceTest::SharedMemoryVirtualDeviceContext::
SharedMemoryVirtualDeviceContext(
mojo::PendingReceiver<mojom::Producer> producer_receiver)
: mock_producer(
std::make_unique<MockProducer>(std::move(producer_receiver))) {}
VideoCaptureServiceTest::SharedMemoryVirtualDeviceContext::
~SharedMemoryVirtualDeviceContext() = default;
VideoCaptureServiceTest::VideoCaptureServiceTest() = default;
VideoCaptureServiceTest::~VideoCaptureServiceTest() = default;
void VideoCaptureServiceTest::SetUp() {
base::CommandLine::ForCurrentProcess()->AppendSwitch(
switches::kUseFakeMjpegDecodeAccelerator);
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
switches::kUseFakeDeviceForMediaStream, "device-count=3");
service_impl_ = std::make_unique<VideoCaptureServiceImpl>(
service_remote_.BindNewPipeAndPassReceiver(),
base::ThreadTaskRunnerHandle::Get());
// Note, that we explicitly do *not* call
// |service_remote_->InjectGpuDependencies()| here. Test case
// |FakeMjpegVideoCaptureDeviceTest.
// CanDecodeMjpegWithoutInjectedGpuDependencies| depends on this assumption.
service_remote_->ConnectToDeviceFactory(
factory_.BindNewPipeAndPassReceiver());
}
std::unique_ptr<VideoCaptureServiceTest::SharedMemoryVirtualDeviceContext>
VideoCaptureServiceTest::AddSharedMemoryVirtualDevice(
const std::string& device_id) {
media::VideoCaptureDeviceInfo device_info;
device_info.descriptor.device_id = device_id;
mojo::PendingRemote<mojom::Producer> producer;
auto result = std::make_unique<SharedMemoryVirtualDeviceContext>(
producer.InitWithNewPipeAndPassReceiver());
factory_->AddSharedMemoryVirtualDevice(
device_info, std::move(producer),
false /* send_buffer_handles_to_producer_as_raw_file_descriptors */,
result->device.BindNewPipeAndPassReceiver());
return result;
}
mojo::PendingRemote<mojom::TextureVirtualDevice>
VideoCaptureServiceTest::AddTextureVirtualDevice(const std::string& device_id) {
media::VideoCaptureDeviceInfo device_info;
device_info.descriptor.device_id = device_id;
mojo::PendingRemote<mojom::TextureVirtualDevice> device;
factory_->AddTextureVirtualDevice(device_info,
device.InitWithNewPipeAndPassReceiver());
return device;
}
} // namespace video_capture