Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(352)

Side by Side Diff: android_webview/native/permission/media_access_permission_request_unittest.cc

Issue 2863233002: [WebView] Move files from native to browser (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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.
4
5 #include "android_webview/native/permission/media_access_permission_request.h"
6 #include "base/bind.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8
9 namespace android_webview {
10
11 class TestMediaAccessPermissionRequest : public MediaAccessPermissionRequest {
12 public:
13 TestMediaAccessPermissionRequest(
14 const content::MediaStreamRequest& request,
15 const content::MediaResponseCallback& callback,
16 const content::MediaStreamDevices& audio_devices,
17 const content::MediaStreamDevices& video_devices)
18 : MediaAccessPermissionRequest(request, callback) {
19 audio_test_devices_ = audio_devices;
20 video_test_devices_ = video_devices;
21 }
22 };
23
24 class MediaAccessPermissionRequestTest : public testing::Test {
25 protected:
26 void SetUp() override {
27 audio_device_id_ = "audio";
28 video_device_id_ = "video";
29 first_audio_device_id_ = "audio1";
30 first_video_device_id_ = "video1";
31 }
32
33 std::unique_ptr<TestMediaAccessPermissionRequest> CreateRequest(
34 std::string audio_id,
35 std::string video_id) {
36 content::MediaStreamDevices audio_devices;
37 audio_devices.push_back(
38 content::MediaStreamDevice(content::MEDIA_DEVICE_AUDIO_CAPTURE,
39 first_audio_device_id_, "a2"));
40 audio_devices.push_back(
41 content::MediaStreamDevice(content::MEDIA_DEVICE_AUDIO_CAPTURE,
42 audio_device_id_, "a1"));
43
44 content::MediaStreamDevices video_devices;
45 video_devices.push_back(
46 content::MediaStreamDevice(content::MEDIA_DEVICE_VIDEO_CAPTURE,
47 first_video_device_id_, "v2"));
48 video_devices.push_back(
49 content::MediaStreamDevice(content::MEDIA_DEVICE_VIDEO_CAPTURE,
50 video_device_id_, "v1"));
51
52 GURL origin("https://www.google.com");
53 content::MediaStreamRequest request(
54 0, 0, 0, origin, false, content::MEDIA_GENERATE_STREAM, audio_id,
55 video_id, content::MEDIA_DEVICE_AUDIO_CAPTURE,
56 content::MEDIA_DEVICE_VIDEO_CAPTURE, false /* disable_local_echo */);
57
58 std::unique_ptr<TestMediaAccessPermissionRequest> permission_request;
59 permission_request.reset(new TestMediaAccessPermissionRequest(
60 request,
61 base::Bind(&MediaAccessPermissionRequestTest::Callback,
62 base::Unretained(this)),
63 audio_devices, video_devices));
64 return permission_request;
65 }
66
67 std::string audio_device_id_;
68 std::string video_device_id_;
69 std::string first_audio_device_id_;
70 std::string first_video_device_id_;
71 content::MediaStreamDevices devices_;
72 content::MediaStreamRequestResult result_;
73 private:
74 void Callback(const content::MediaStreamDevices& devices,
75 content::MediaStreamRequestResult result,
76 std::unique_ptr<content::MediaStreamUI> ui) {
77 devices_ = devices;
78 result_ = result;
79 }
80 };
81
82 TEST_F(MediaAccessPermissionRequestTest, TestGrantPermissionRequest) {
83 std::unique_ptr<TestMediaAccessPermissionRequest> request =
84 CreateRequest(audio_device_id_, video_device_id_);
85 request->NotifyRequestResult(true);
86
87 EXPECT_EQ(2u, devices_.size());
88 EXPECT_EQ(content::MEDIA_DEVICE_OK, result_);
89
90 bool audio_exist = false;
91 bool video_exist = false;
92 for (content::MediaStreamDevices::iterator i = devices_.begin();
93 i != devices_.end(); ++i) {
94 if (i->type == content::MEDIA_DEVICE_AUDIO_CAPTURE &&
95 i->id == audio_device_id_) {
96 audio_exist = true;
97 } else if (i->type == content::MEDIA_DEVICE_VIDEO_CAPTURE &&
98 i->id == video_device_id_) {
99 video_exist = true;
100 }
101 }
102 EXPECT_TRUE(audio_exist);
103 EXPECT_TRUE(video_exist);
104 }
105
106 TEST_F(MediaAccessPermissionRequestTest, TestGrantPermissionRequestWithoutID) {
107 std::unique_ptr<TestMediaAccessPermissionRequest> request =
108 CreateRequest(std::string(), std::string());
109 request->NotifyRequestResult(true);
110
111 EXPECT_EQ(2u, devices_.size());
112 EXPECT_EQ(content::MEDIA_DEVICE_OK, result_);
113
114 bool audio_exist = false;
115 bool video_exist = false;
116 for (content::MediaStreamDevices::iterator i = devices_.begin();
117 i != devices_.end(); ++i) {
118 if (i->type == content::MEDIA_DEVICE_AUDIO_CAPTURE &&
119 i->id == first_audio_device_id_) {
120 audio_exist = true;
121 } else if (i->type == content::MEDIA_DEVICE_VIDEO_CAPTURE &&
122 i->id == first_video_device_id_) {
123 video_exist = true;
124 }
125 }
126 EXPECT_TRUE(audio_exist);
127 EXPECT_TRUE(video_exist);
128 }
129
130 TEST_F(MediaAccessPermissionRequestTest, TestDenyPermissionRequest) {
131 std::unique_ptr<TestMediaAccessPermissionRequest> request =
132 CreateRequest(std::string(), std::string());
133 request->NotifyRequestResult(false);
134 EXPECT_TRUE(devices_.empty());
135 EXPECT_EQ(content::MEDIA_DEVICE_PERMISSION_DENIED, result_);
136 }
137
138 } // namespace android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698