| Index: chrome/browser/media/media_stream_devices_controller_browsertest.cc
|
| diff --git a/chrome/browser/media/media_stream_devices_controller_browsertest.cc b/chrome/browser/media/media_stream_devices_controller_browsertest.cc
|
| index 632c331bf6204a5a26324d18c030a0a97dfb54d2..e274d165a9c4b169c2877a3527e7b8122b4548b7 100644
|
| --- a/chrome/browser/media/media_stream_devices_controller_browsertest.cc
|
| +++ b/chrome/browser/media/media_stream_devices_controller_browsertest.cc
|
| @@ -49,6 +49,7 @@ class MediaStreamDevicesControllerTest : public WebRtcTestBase {
|
| MediaStreamDevicesControllerTest()
|
| : example_audio_id_("fake_audio_dev"),
|
| example_video_id_("fake_video_dev"),
|
| + example_screen_id_("fake_screen_dev"),
|
| media_stream_result_(content::NUM_MEDIA_REQUEST_RESULTS) {}
|
|
|
| // Dummy callback for when we deny the current request directly.
|
| @@ -71,6 +72,7 @@ class MediaStreamDevicesControllerTest : public WebRtcTestBase {
|
|
|
| const std::string& example_audio_id() const { return example_audio_id_; }
|
| const std::string& example_video_id() const { return example_video_id_; }
|
| + const std::string& example_screen_id() const { return example_screen_id_;}
|
|
|
| content::MediaStreamRequestResult media_stream_result() const {
|
| return media_stream_result_;
|
| @@ -109,17 +111,21 @@ class MediaStreamDevicesControllerTest : public WebRtcTestBase {
|
|
|
| // Checks whether the devices returned in OnMediaStreamResponse contains a
|
| // microphone and/or camera device.
|
| - bool DevicesContains(bool needs_mic, bool needs_cam) {
|
| - bool has_mic = false;
|
| - bool has_cam = false;
|
| + bool DevicesContains(bool needs_audio, bool needs_video) {
|
| + bool has_audio = false;
|
| + bool has_video = false;
|
| for (const auto& device : media_stream_devices_) {
|
| if (device.type == content::MEDIA_DEVICE_AUDIO_CAPTURE)
|
| - has_mic = true;
|
| + has_audio = true;
|
| if (device.type == content::MEDIA_DEVICE_VIDEO_CAPTURE)
|
| - has_cam = true;
|
| + has_video = true;
|
| +#if defined(OS_ANDROID)
|
| + if (device.type == content::MEDIA_DESKTOP_VIDEO_CAPTURE)
|
| + has_video = true;
|
| +#endif
|
| }
|
|
|
| - return needs_mic == has_mic && needs_cam == has_cam;
|
| + return needs_audio == has_audio && needs_video == has_video;
|
| }
|
|
|
| content::WebContents* GetWebContents() {
|
| @@ -138,6 +144,11 @@ class MediaStreamDevicesControllerTest : public WebRtcTestBase {
|
| content::MediaStreamType video_type =
|
| video_id.empty() ? content::MEDIA_NO_SERVICE
|
| : content::MEDIA_DEVICE_VIDEO_CAPTURE;
|
| +#if defined(OS_ANDROID)
|
| + if (!video_id.compare(example_screen_id()))
|
| + video_type = content::MEDIA_DESKTOP_VIDEO_CAPTURE;
|
| +#endif
|
| +
|
| return content::MediaStreamRequest(0, 0, 0, example_url(), false,
|
| request_type, audio_id, video_id,
|
| audio_type, video_type);
|
| @@ -185,6 +196,7 @@ class MediaStreamDevicesControllerTest : public WebRtcTestBase {
|
| GURL example_url_;
|
| const std::string example_audio_id_;
|
| const std::string example_video_id_;
|
| + const std::string example_screen_id_;
|
|
|
| content::MediaStreamDevices media_stream_devices_;
|
| content::MediaStreamRequestResult media_stream_result_;
|
| @@ -732,3 +744,27 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| EXPECT_FALSE(controller.IsAskingForAudio());
|
| EXPECT_FALSE(controller.IsAskingForVideo());
|
| }
|
| +
|
| +#if defined(OS_ANDROID)
|
| +IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest, RequestScreenCapture) {
|
| + InitWithUrl(GURL("https://www.example.com"));
|
| + // Test that a prompt is required.
|
| + MediaStreamDevicesController controller(
|
| + GetWebContents(), CreateRequest(std::string(), example_screen_id()),
|
| + base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| + this));
|
| + ASSERT_TRUE(controller.IsAskingForScreenCapture());
|
| +
|
| + // Accept the prompt.
|
| + controller.PermissionGranted();
|
| + ASSERT_EQ(content::MEDIA_DEVICE_OK, media_stream_result());
|
| + ASSERT_TRUE(DevicesContains(false, true));
|
| +
|
| + // Check that re-requesting still requires prompting.
|
| + MediaStreamDevicesController controller2(
|
| + GetWebContents(), CreateRequest(std::string(), example_screen_id()),
|
| + base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| + this));
|
| + ASSERT_TRUE(controller2.IsAskingForScreenCapture());
|
| +}
|
| +#endif
|
|
|