1 // Copyright (c) 2012 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 "ppapi/c/dev/ppb_video_capture_dev.h"
6 #include "ppapi/c/pp_errors.h"
7 #include "ppapi/c/private/ppb_flash.h"
8 #include "ppapi/proxy/locking_resource_releaser.h"
9 #include "ppapi/proxy/ppapi_messages.h"
10 #include "ppapi/proxy/ppapi_proxy_test.h"
11 #include "ppapi/thunk/thunk.h"
18 typedef PluginProxyTest FlashResourceTest
;
20 void* Unused(void* user_data
, uint32_t element_count
, uint32_t element_size
) {
26 // Does a test of EnumerateVideoCaptureDevices() and reply functionality in
27 // the plugin side using the public C interfaces.
28 TEST_F(FlashResourceTest
, EnumerateVideoCaptureDevices
) {
29 // TODO(raymes): This doesn't actually check that the data is converted from
30 // |ppapi::DeviceRefData| to |PPB_DeviceRef| correctly, just that the right
33 // Set up a sync call handler that should return this message.
34 std::vector
<ppapi::DeviceRefData
> reply_device_ref_data
;
35 int32_t expected_result
= PP_OK
;
36 PpapiPluginMsg_DeviceEnumeration_EnumerateDevicesReply
reply_msg(
37 reply_device_ref_data
);
38 ResourceSyncCallHandler
enumerate_video_devices_handler(
40 PpapiHostMsg_DeviceEnumeration_EnumerateDevices::ID
,
43 sink().AddFilter(&enumerate_video_devices_handler
);
45 // Set up the arguments to the call.
46 LockingResourceReleaser
video_capture(
47 ::ppapi::thunk::GetPPB_VideoCapture_Dev_0_3_Thunk()->Create(
49 std::vector
<PP_Resource
> unused
;
50 PP_ArrayOutput output
;
51 output
.GetDataBuffer
= &Unused
;
52 output
.user_data
= &unused
;
55 const PPB_Flash_12_6
* flash_iface
= ::ppapi::thunk::GetPPB_Flash_12_6_Thunk();
56 int32_t actual_result
= flash_iface
->EnumerateVideoCaptureDevices(
57 pp_instance(), video_capture
.get(), output
);
59 // Check the result is as expected.
60 EXPECT_EQ(expected_result
, actual_result
);
62 // Should have sent an "DeviceEnumeration_EnumerateDevices" message.
63 ASSERT_TRUE(enumerate_video_devices_handler
.last_handled_msg().type() ==
64 PpapiHostMsg_DeviceEnumeration_EnumerateDevices::ID
);
66 // Remove the filter or it will be destroyed before the sink() is destroyed.
67 sink().RemoveFilter(&enumerate_video_devices_handler
);