Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / media / capture / video / mac / video_capture_device_factory_mac_unittest.mm
blob6b8500d7bba0e3664739e2b50511cb0363ef6c41
1 // Copyright 2014 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.
5 #include "base/command_line.h"
6 #include "base/message_loop/message_loop.h"
7 #include "base/thread_task_runner_handle.h"
8 #import "media/base/mac/avfoundation_glue.h"
9 #include "media/base/media_switches.h"
10 #include "media/capture/video/mac/video_capture_device_factory_mac.h"
11 #include "media/capture/video/mac/video_capture_device_mac.h"
12 #include "testing/gtest/include/gtest/gtest.h"
14 namespace media {
16 class VideoCaptureDeviceFactoryMacTest : public testing::Test {
17   void SetUp() override {
18     AVFoundationGlue::InitializeAVFoundation();
19     base::CommandLine::ForCurrentProcess()->AppendSwitch(
20         switches::kEnableAVFoundation);
21   }
23  private:
24   base::MessageLoop message_loop_;
27 TEST_F(VideoCaptureDeviceFactoryMacTest, ListDevicesAVFoundation) {
28   if (!AVFoundationGlue::IsAVFoundationSupported()) {
29     DVLOG(1) << "AVFoundation not supported, skipping test.";
30     return;
31   }
32   VideoCaptureDeviceFactoryMac video_capture_device_factory(
33       base::ThreadTaskRunnerHandle::Get());
35   VideoCaptureDevice::Names names;
36   video_capture_device_factory.GetDeviceNames(&names);
37   if (!names.size()) {
38     DVLOG(1) << "No camera available. Exiting test.";
39     return;
40   }
41   // There should be no blacklisted devices, i.e. QTKit.
42   std::string device_vid;
43   for (VideoCaptureDevice::Names::const_iterator it = names.begin();
44        it != names.end(); ++it) {
45     EXPECT_EQ(it->capture_api_type(), VideoCaptureDevice::Name::AVFOUNDATION);
46   }
49 };  // namespace media