| Index: chrome/browser/media/webrtc/media_stream_devices_controller_browsertest.cc
|
| diff --git a/chrome/browser/media/webrtc/media_stream_devices_controller_browsertest.cc b/chrome/browser/media/webrtc/media_stream_devices_controller_browsertest.cc
|
| index 19d44472321bff4fa15679ba9141ed6de6b1cfa5..6900dba6da5ca31faf0fa8add3bf1dc44f72ed98 100644
|
| --- a/chrome/browser/media/webrtc/media_stream_devices_controller_browsertest.cc
|
| +++ b/chrome/browser/media/webrtc/media_stream_devices_controller_browsertest.cc
|
| @@ -5,7 +5,10 @@
|
| #include <string>
|
|
|
| #include "base/bind.h"
|
| +#include "base/callback.h"
|
| #include "base/metrics/field_trial.h"
|
| +#include "base/run_loop.h"
|
| +#include "base/test/scoped_feature_list.h"
|
| #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
|
| #include "chrome/browser/content_settings/tab_specific_content_settings.h"
|
| #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
|
| @@ -14,11 +17,14 @@
|
| #include "chrome/browser/media/webrtc/media_stream_devices_controller.h"
|
| #include "chrome/browser/media/webrtc/webrtc_browsertest_base.h"
|
| #include "chrome/browser/permissions/permission_context_base.h"
|
| +#include "chrome/browser/permissions/permission_request.h"
|
| #include "chrome/browser/permissions/permission_request_manager.h"
|
| #include "chrome/browser/permissions/permission_util.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/browser.h"
|
| +#include "chrome/browser/ui/permission_bubble/mock_permission_prompt_factory.h"
|
| #include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| +#include "chrome/common/chrome_features.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "chrome/test/base/ui_test_utils.h"
|
| #include "components/content_settings/core/browser/host_content_settings_map.h"
|
| @@ -29,7 +35,14 @@
|
| #include "content/public/test/mock_render_process_host.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| -class MediaStreamDevicesControllerTest : public WebRtcTestBase {
|
| +enum class TestType {
|
| + DEFAULT,
|
| + TEST_WITH_GROUPED_MEDIA_REQUESTS,
|
| +};
|
| +
|
| +class MediaStreamDevicesControllerTest
|
| + : public WebRtcTestBase,
|
| + public ::testing::WithParamInterface<TestType> {
|
| public:
|
| // TODO(raymes): When crbug.com/606138 is finished and the
|
| // PermissionRequestManager is used to show all prompts on Android/Desktop
|
| @@ -84,6 +97,8 @@ class MediaStreamDevicesControllerTest : public WebRtcTestBase {
|
| std::unique_ptr<content::MediaStreamUI> ui) {
|
| media_stream_devices_ = devices;
|
| media_stream_result_ = result;
|
| + quit_closure_.Run();
|
| + quit_closure_ = base::Closure();
|
| }
|
|
|
| protected:
|
| @@ -106,12 +121,14 @@ class MediaStreamDevicesControllerTest : public WebRtcTestBase {
|
| void RequestPermissions(content::WebContents* web_contents,
|
| const content::MediaStreamRequest& request,
|
| const content::MediaResponseCallback& callback) {
|
| + base::RunLoop run_loop;
|
| + ASSERT_TRUE(quit_closure_.is_null());
|
| + quit_closure_ = run_loop.QuitClosure();
|
| MediaStreamDevicesController::RequestPermissionsWithDelegate(
|
| request, callback, &prompt_delegate_);
|
| + run_loop.Run();
|
| }
|
|
|
| - TestPermissionPromptDelegate* prompt_delegate() { return &prompt_delegate_; }
|
| -
|
| // Sets the device policy-controlled |access| for |example_url_| to be for the
|
| // selected |device_type|.
|
| void SetDevicePolicy(DeviceType device_type, Access access) {
|
| @@ -193,10 +210,67 @@ class MediaStreamDevicesControllerTest : public WebRtcTestBase {
|
| GetContentSettings()->GetMicrophoneCameraState());
|
| }
|
|
|
| + void SetPromptResponseType(
|
| + PermissionRequestManager::AutoResponseType response_type) {
|
| + if (base::FeatureList::IsEnabled(
|
| + features::kUsePermissionManagerForMediaRequests)) {
|
| + prompt_factory_->set_response_type(response_type);
|
| + } else {
|
| + prompt_delegate_.set_response_type(response_type);
|
| + }
|
| + }
|
| +
|
| + size_t TotalPromptRequestCount() {
|
| + if (base::FeatureList::IsEnabled(
|
| + features::kUsePermissionManagerForMediaRequests)) {
|
| + return prompt_factory_->TotalRequestCount();
|
| + } else {
|
| + return prompt_delegate_.TotalRequestCount();
|
| + }
|
| + }
|
| +
|
| + bool WasPermissionShown(ContentSettingsType type) {
|
| + if (base::FeatureList::IsEnabled(
|
| + features::kUsePermissionManagerForMediaRequests)) {
|
| + if (type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC) {
|
| + return prompt_factory_->RequestTypeSeen(
|
| + PermissionRequestType::PERMISSION_MEDIASTREAM_MIC);
|
| + } else if (type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) {
|
| + return prompt_factory_->RequestTypeSeen(
|
| + PermissionRequestType::PERMISSION_MEDIASTREAM_CAMERA);
|
| + } else {
|
| + NOTREACHED();
|
| + return false;
|
| + }
|
| + } else {
|
| + return prompt_delegate_.WasRequested(type);
|
| + }
|
| + }
|
| +
|
| + void ResetPromptCounters() {
|
| + if (base::FeatureList::IsEnabled(
|
| + features::kUsePermissionManagerForMediaRequests)) {
|
| + prompt_factory_->ResetCounts();
|
| + } else {
|
| + prompt_delegate_.Reset();
|
| + }
|
| + }
|
| +
|
| private:
|
| void SetUpOnMainThread() override {
|
| WebRtcTestBase::SetUpOnMainThread();
|
|
|
| + if (static_cast<TestType>(GetParam()) ==
|
| + TestType::TEST_WITH_GROUPED_MEDIA_REQUESTS) {
|
| + scoped_feature_list_.InitAndEnableFeature(
|
| + features::kUsePermissionManagerForMediaRequests);
|
| + PermissionRequestManager* manager =
|
| + PermissionRequestManager::FromWebContents(
|
| + browser()->tab_strip_model()->GetActiveWebContents());
|
| + prompt_factory_.reset(new MockPermissionPromptFactory(manager));
|
| + manager->DisplayPendingRequests();
|
| + }
|
| +
|
| // Cleanup.
|
| media_stream_devices_.clear();
|
| media_stream_result_ = content::NUM_MEDIA_REQUEST_RESULTS;
|
| @@ -218,6 +292,12 @@ class MediaStreamDevicesControllerTest : public WebRtcTestBase {
|
| video_devices);
|
| }
|
|
|
| + void TearDownOnMainThread() override {
|
| + prompt_factory_.reset();
|
| +
|
| + WebRtcTestBase::TearDownOnMainThread();
|
| + }
|
| +
|
| GURL example_url_;
|
| const std::string example_audio_id_;
|
| const std::string example_video_id_;
|
| @@ -225,16 +305,21 @@ class MediaStreamDevicesControllerTest : public WebRtcTestBase {
|
| content::MediaStreamDevices media_stream_devices_;
|
| content::MediaStreamRequestResult media_stream_result_;
|
|
|
| + base::Closure quit_closure_;
|
| +
|
| TestPermissionPromptDelegate prompt_delegate_;
|
| + std::unique_ptr<MockPermissionPromptFactory> prompt_factory_;
|
| +
|
| + base::test::ScopedFeatureList scoped_feature_list_;
|
| };
|
|
|
| // Request and allow microphone access.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest, RequestAndAllowMic) {
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest, RequestAndAllowMic) {
|
| InitWithUrl(GURL("https://www.example.com"));
|
| SetDevicePolicy(DEVICE_TYPE_AUDIO, ACCESS_ALLOWED);
|
| // Ensure the prompt is accepted if necessary such that tab specific content
|
| // settings are updated.
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(example_audio_id(), std::string()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| @@ -257,12 +342,12 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest, RequestAndAllowMic) {
|
| }
|
|
|
| // Request and allow camera access.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest, RequestAndAllowCam) {
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest, RequestAndAllowCam) {
|
| InitWithUrl(GURL("https://www.example.com"));
|
| SetDevicePolicy(DEVICE_TYPE_VIDEO, ACCESS_ALLOWED);
|
| // Ensure the prompt is accepted if necessary such that tab specific content
|
| // settings are updated.
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(std::string(), example_video_id()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| @@ -285,12 +370,12 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest, RequestAndAllowCam) {
|
| }
|
|
|
| // Request and block microphone access.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest, RequestAndBlockMic) {
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest, RequestAndBlockMic) {
|
| InitWithUrl(GURL("https://www.example.com"));
|
| SetDevicePolicy(DEVICE_TYPE_AUDIO, ACCESS_DENIED);
|
| // Ensure the prompt is accepted if necessary such that tab specific content
|
| // settings are updated.
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(example_audio_id(), std::string()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| @@ -314,12 +399,12 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest, RequestAndBlockMic) {
|
| }
|
|
|
| // Request and block camera access.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest, RequestAndBlockCam) {
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest, RequestAndBlockCam) {
|
| InitWithUrl(GURL("https://www.example.com"));
|
| SetDevicePolicy(DEVICE_TYPE_VIDEO, ACCESS_DENIED);
|
| // Ensure the prompt is accepted if necessary such that tab specific content
|
| // settings are updated.
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(std::string(), example_video_id()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| @@ -343,14 +428,14 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest, RequestAndBlockCam) {
|
| }
|
|
|
| // Request and allow microphone and camera access.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest,
|
| RequestAndAllowMicCam) {
|
| InitWithUrl(GURL("https://www.example.com"));
|
| SetDevicePolicy(DEVICE_TYPE_AUDIO, ACCESS_ALLOWED);
|
| SetDevicePolicy(DEVICE_TYPE_VIDEO, ACCESS_ALLOWED);
|
| // Ensure the prompt is accepted if necessary such that tab specific content
|
| // settings are updated.
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(example_audio_id(), example_video_id()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| @@ -378,14 +463,14 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| }
|
|
|
| // Request and block microphone and camera access.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest,
|
| RequestAndBlockMicCam) {
|
| InitWithUrl(GURL("https://www.example.com"));
|
| SetDevicePolicy(DEVICE_TYPE_AUDIO, ACCESS_DENIED);
|
| SetDevicePolicy(DEVICE_TYPE_VIDEO, ACCESS_DENIED);
|
| // Ensure the prompt is accepted if necessary such that tab specific content
|
| // settings are updated.
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(example_audio_id(), example_video_id()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| @@ -415,14 +500,14 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| }
|
|
|
| // Request microphone and camera access. Allow microphone, block camera.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest,
|
| RequestMicCamBlockCam) {
|
| InitWithUrl(GURL("https://www.example.com"));
|
| SetDevicePolicy(DEVICE_TYPE_AUDIO, ACCESS_ALLOWED);
|
| SetDevicePolicy(DEVICE_TYPE_VIDEO, ACCESS_DENIED);
|
| // Ensure the prompt is accepted if necessary such that tab specific content
|
| // settings are updated.
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(example_audio_id(), example_video_id()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| @@ -451,14 +536,14 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| }
|
|
|
| // Request microphone and camera access. Block microphone, allow camera.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest,
|
| RequestMicCamBlockMic) {
|
| InitWithUrl(GURL("https://www.example.com"));
|
| SetDevicePolicy(DEVICE_TYPE_AUDIO, ACCESS_DENIED);
|
| SetDevicePolicy(DEVICE_TYPE_VIDEO, ACCESS_ALLOWED);
|
| // Ensure the prompt is accepted if necessary such that tab specific content
|
| // settings are updated.
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(example_audio_id(), example_video_id()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| @@ -488,14 +573,14 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
|
|
| // Request microphone access. Requesting camera should not change microphone
|
| // state.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest,
|
| RequestCamDoesNotChangeMic) {
|
| InitWithUrl(GURL("https://www.example.com"));
|
| // Request mic and deny.
|
| SetDevicePolicy(DEVICE_TYPE_AUDIO, ACCESS_DENIED);
|
| // Ensure the prompt is accepted if necessary such that tab specific content
|
| // settings are updated.
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(example_audio_id(), std::string()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| @@ -536,14 +621,14 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| }
|
|
|
| // Denying mic access after camera access should still show the camera as state.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest,
|
| DenyMicDoesNotChangeCam) {
|
| InitWithUrl(GURL("https://www.example.com"));
|
| // Request cam and allow
|
| SetDevicePolicy(DEVICE_TYPE_VIDEO, ACCESS_ALLOWED);
|
| // Ensure the prompt is accepted if necessary such that tab specific content
|
| // settings are updated.
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(std::string(), example_video_id()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| @@ -576,7 +661,7 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| SetDevicePolicy(DEVICE_TYPE_AUDIO, ACCESS_DENIED);
|
| // Ensure the prompt is accepted if necessary such that tab specific content
|
| // settings are updated.
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(example_audio_id(), std::string()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| @@ -648,7 +733,7 @@ struct ContentSettingsTestData {
|
|
|
| // Test all combinations of cam/mic content settings. Then tests the result of
|
| // clicking both accept/deny on the infobar. Both cam/mic are requested.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest, ContentSettings) {
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest, ContentSettings) {
|
| InitWithUrl(GURL("https://www.example.com"));
|
| static const ContentSettingsTestData tests[] = {
|
| // Settings that won't result in an infobar.
|
| @@ -677,32 +762,28 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest, ContentSettings) {
|
| for (auto& test : tests) {
|
| SetContentSettings(test.mic, test.cam);
|
|
|
| - prompt_delegate()->Reset();
|
| + ResetPromptCounters();
|
|
|
| // Accept or deny the infobar if it's showing.
|
| if (test.ExpectMicInfobar() || test.ExpectCamInfobar()) {
|
| if (test.accept_infobar) {
|
| - prompt_delegate()->set_response_type(
|
| - PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| } else {
|
| - prompt_delegate()->set_response_type(
|
| - PermissionRequestManager::DENY_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::DENY_ALL);
|
| }
|
| } else {
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::NONE);
|
| + SetPromptResponseType(PermissionRequestManager::NONE);
|
| }
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(example_audio_id(), example_video_id()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| base::Unretained(this)));
|
|
|
| - ASSERT_LE(prompt_delegate()->TotalRequestCount(), 2u);
|
| - ASSERT_EQ(
|
| - test.ExpectMicInfobar(),
|
| - prompt_delegate()->WasRequested(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
|
| + ASSERT_LE(TotalPromptRequestCount(), 2u);
|
| + ASSERT_EQ(test.ExpectMicInfobar(),
|
| + WasPermissionShown(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
|
| ASSERT_EQ(test.ExpectCamInfobar(),
|
| - prompt_delegate()->WasRequested(
|
| - CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
|
| + WasPermissionShown(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
|
|
|
| // Check the media stream result is expected and the devices returned are
|
| // expected;
|
| @@ -715,7 +796,7 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest, ContentSettings) {
|
| }
|
|
|
| // Request and allow camera access on WebUI pages without prompting.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest,
|
| WebUIRequestAndAllowCam) {
|
| InitWithUrl(GURL("chrome://test-page"));
|
| RequestPermissions(
|
| @@ -723,27 +804,25 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| base::Unretained(this)));
|
|
|
| - ASSERT_EQ(0u, prompt_delegate()->TotalRequestCount());
|
| + ASSERT_EQ(0u, TotalPromptRequestCount());
|
|
|
| ASSERT_EQ(content::MEDIA_DEVICE_OK, media_stream_result());
|
| ASSERT_FALSE(CheckDevicesListContains(content::MEDIA_DEVICE_AUDIO_CAPTURE));
|
| ASSERT_TRUE(CheckDevicesListContains(content::MEDIA_DEVICE_VIDEO_CAPTURE));
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest,
|
| ExtensionRequestMicCam) {
|
| InitWithUrl(GURL("chrome-extension://test-page"));
|
| // Test that a prompt is required.
|
| - prompt_delegate()->set_response_type(PermissionRequestManager::ACCEPT_ALL);
|
| + SetPromptResponseType(PermissionRequestManager::ACCEPT_ALL);
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(example_audio_id(), example_video_id()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| base::Unretained(this)));
|
| - ASSERT_EQ(2u, prompt_delegate()->TotalRequestCount());
|
| - ASSERT_TRUE(prompt_delegate()->WasRequested(
|
| - CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
|
| - ASSERT_TRUE(
|
| - prompt_delegate()->WasRequested(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
|
| + ASSERT_EQ(2u, TotalPromptRequestCount());
|
| + ASSERT_TRUE(WasPermissionShown(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
|
| + ASSERT_TRUE(WasPermissionShown(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
|
|
|
| // Accept the prompt.
|
| ASSERT_EQ(content::MEDIA_DEVICE_OK, media_stream_result());
|
| @@ -751,12 +830,12 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| ASSERT_TRUE(CheckDevicesListContains(content::MEDIA_DEVICE_VIDEO_CAPTURE));
|
|
|
| // Check that re-requesting allows without prompting.
|
| - prompt_delegate()->Reset();
|
| + ResetPromptCounters();
|
| RequestPermissions(
|
| GetWebContents(), CreateRequest(example_audio_id(), example_video_id()),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| base::Unretained(this)));
|
| - ASSERT_EQ(0u, prompt_delegate()->TotalRequestCount());
|
| + ASSERT_EQ(0u, TotalPromptRequestCount());
|
|
|
| ASSERT_EQ(content::MEDIA_DEVICE_OK, media_stream_result());
|
| ASSERT_TRUE(CheckDevicesListContains(content::MEDIA_DEVICE_AUDIO_CAPTURE));
|
| @@ -765,7 +844,7 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
|
|
| // For Pepper request from insecure origin, even if it's ALLOW, it won't be
|
| // changed to ASK.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest,
|
| PepperRequestInsecure) {
|
| InitWithUrl(GURL("http://www.example.com"));
|
| SetContentSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_ALLOW);
|
| @@ -776,11 +855,11 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| content::MEDIA_OPEN_DEVICE_PEPPER_ONLY),
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| base::Unretained(this)));
|
| - ASSERT_EQ(0u, prompt_delegate()->TotalRequestCount());
|
| + ASSERT_EQ(0u, TotalPromptRequestCount());
|
| }
|
|
|
| // Request and block microphone and camera access with kill switch.
|
| -IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| +IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerTest,
|
| RequestAndKillSwitchMicCam) {
|
| std::map<std::string, std::string> params;
|
| params[PermissionUtil::GetPermissionString(
|
| @@ -803,9 +882,15 @@ IN_PROC_BROWSER_TEST_F(MediaStreamDevicesControllerTest,
|
| base::Bind(&MediaStreamDevicesControllerTest::OnMediaStreamResponse,
|
| base::Unretained(this)));
|
|
|
| - ASSERT_EQ(0u, prompt_delegate()->TotalRequestCount());
|
| + ASSERT_EQ(0u, TotalPromptRequestCount());
|
|
|
| ASSERT_EQ(content::MEDIA_DEVICE_KILL_SWITCH_ON, media_stream_result());
|
| ASSERT_FALSE(CheckDevicesListContains(content::MEDIA_DEVICE_AUDIO_CAPTURE));
|
| ASSERT_FALSE(CheckDevicesListContains(content::MEDIA_DEVICE_VIDEO_CAPTURE));
|
| }
|
| +
|
| +INSTANTIATE_TEST_CASE_P(
|
| + MediaStreamDevicesControllerTestInstance,
|
| + MediaStreamDevicesControllerTest,
|
| + ::testing::Values(TestType::DEFAULT,
|
| + TestType::TEST_WITH_GROUPED_MEDIA_REQUESTS));
|
|
|