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

Unified Diff: android_webview/native/permission/media_access_permission_request_unittest.cc

Issue 239793002: Handle media access permission request (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix error, landed it again Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: android_webview/native/permission/media_access_permission_request_unittest.cc
diff --git a/android_webview/native/permission/media_access_permission_request_unittest.cc b/android_webview/native/permission/media_access_permission_request_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..32a190665ef978b1f7c9e960c0b7abf77598286a
--- /dev/null
+++ b/android_webview/native/permission/media_access_permission_request_unittest.cc
@@ -0,0 +1,139 @@
+// Copyright 2014 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 "android_webview/native/permission/media_access_permission_request.h"
+#include "base/bind.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace android_webview {
+
+class TestMediaAccessPermissionRequest : public MediaAccessPermissionRequest {
+ public:
+ TestMediaAccessPermissionRequest(
+ const content::MediaStreamRequest& request,
+ const content::MediaResponseCallback& callback,
+ const content::MediaStreamDevices& audio_devices,
+ const content::MediaStreamDevices& video_devices)
+ : MediaAccessPermissionRequest(request, callback) {
+ audio_test_devices_ = audio_devices;
+ video_test_devices_ = video_devices;
+ }
+};
+
+class MediaAccessPermissionRequestTest : public testing::Test {
+ protected:
+ virtual void SetUp() {
+ audio_device_id_ = "audio";
+ video_device_id_ = "video";
+ first_audio_device_id_ = "audio1";
+ first_video_device_id_ = "video1";
+ }
+
+ scoped_ptr<TestMediaAccessPermissionRequest> CreateRequest(
+ std::string audio_id,
+ std::string video_id) {
+ content::MediaStreamDevices audio_devices;
+ audio_devices.push_back(
+ content::MediaStreamDevice(content::MEDIA_DEVICE_AUDIO_CAPTURE,
+ first_audio_device_id_, "a2"));
+ audio_devices.push_back(
+ content::MediaStreamDevice(content::MEDIA_DEVICE_AUDIO_CAPTURE,
+ audio_device_id_, "a1"));
+
+ content::MediaStreamDevices video_devices;
+ video_devices.push_back(
+ content::MediaStreamDevice(content::MEDIA_DEVICE_VIDEO_CAPTURE,
+ first_video_device_id_, "v2"));
+ video_devices.push_back(
+ content::MediaStreamDevice(content::MEDIA_DEVICE_VIDEO_CAPTURE,
+ video_device_id_, "v1"));
+
+ GURL origin("https://www.google.com");
+ content::MediaStreamRequest request(
+ 0, 0, 0, origin, false, content::MEDIA_GENERATE_STREAM, audio_id,
+ video_id, content::MEDIA_DEVICE_AUDIO_CAPTURE,
+ content::MEDIA_DEVICE_VIDEO_CAPTURE);
+
+ scoped_ptr<TestMediaAccessPermissionRequest> permission_request;
+ permission_request.reset(new TestMediaAccessPermissionRequest(
+ request,
+ base::Bind(&MediaAccessPermissionRequestTest::Callback,
+ base::Unretained(this)),
+ audio_devices, video_devices));
+ return permission_request.Pass();
+ }
+
+ std::string audio_device_id_;
+ std::string video_device_id_;
+ std::string first_audio_device_id_;
+ std::string first_video_device_id_;
+ content::MediaStreamDevices devices_;
+ content::MediaStreamRequestResult result_;
+ private:
+ void Callback(
+ const content::MediaStreamDevices& devices,
+ content::MediaStreamRequestResult result,
+ scoped_ptr<content::MediaStreamUI> ui) {
+ devices_ = devices;
+ result_ = result;
+ }
+};
+
+TEST_F(MediaAccessPermissionRequestTest, TestGrantPermissionRequest) {
+ scoped_ptr<TestMediaAccessPermissionRequest> request =
+ CreateRequest(audio_device_id_, video_device_id_);
+ request->NotifyRequestResult(true);
+
+ EXPECT_EQ(2u, devices_.size());
+ EXPECT_EQ(content::MEDIA_DEVICE_OK, result_);
+
+ bool audio_exist = false;
+ bool video_exist = false;
+ for (content::MediaStreamDevices::iterator i = devices_.begin();
+ i != devices_.end(); ++i) {
+ if (i->type == content::MEDIA_DEVICE_AUDIO_CAPTURE &&
+ i->id == audio_device_id_) {
+ audio_exist = true;
+ } else if (i->type == content::MEDIA_DEVICE_VIDEO_CAPTURE &&
+ i->id == video_device_id_) {
+ video_exist = true;
+ }
+ }
+ EXPECT_TRUE(audio_exist);
+ EXPECT_TRUE(video_exist);
+}
+
+TEST_F(MediaAccessPermissionRequestTest, TestGrantPermissionRequestWithoutID) {
+ scoped_ptr<TestMediaAccessPermissionRequest> request =
+ CreateRequest(std::string(), std::string());
+ request->NotifyRequestResult(true);
+
+ EXPECT_EQ(2u, devices_.size());
+ EXPECT_EQ(content::MEDIA_DEVICE_OK, result_);
+
+ bool audio_exist = false;
+ bool video_exist = false;
+ for (content::MediaStreamDevices::iterator i = devices_.begin();
+ i != devices_.end(); ++i) {
+ if (i->type == content::MEDIA_DEVICE_AUDIO_CAPTURE &&
+ i->id == first_audio_device_id_) {
+ audio_exist = true;
+ } else if (i->type == content::MEDIA_DEVICE_VIDEO_CAPTURE &&
+ i->id == first_video_device_id_) {
+ video_exist = true;
+ }
+ }
+ EXPECT_TRUE(audio_exist);
+ EXPECT_TRUE(video_exist);
+}
+
+TEST_F(MediaAccessPermissionRequestTest, TestDenyPermissionRequest) {
+ scoped_ptr<TestMediaAccessPermissionRequest> request =
+ CreateRequest(std::string(), std::string());
+ request->NotifyRequestResult(false);
+ EXPECT_TRUE(devices_.empty());
+ EXPECT_EQ(content::MEDIA_DEVICE_PERMISSION_DENIED, result_);
+}
+
+} // namespace android_webview

Powered by Google App Engine
This is Rietveld 408576698