Commit f1314f61 authored by Bret Sepulveda's avatar Bret Sepulveda Committed by Commit Bot

Add UI tests for multiple downloads and security key permission prompts.

Bug: 1110905
Change-Id: Ia514d54ce5ca83f72de5d310a681c800811f5836
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2513652
Commit-Queue: Bret Sepulveda <bsep@chromium.org>
Reviewed-by: default avatarAndy Paicu <andypaicu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#823944}
parent 7cca28c8
...@@ -14,7 +14,9 @@ ...@@ -14,7 +14,9 @@
#include "build/build_config.h" #include "build/build_config.h"
#include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h" #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h"
#include "chrome/browser/custom_handlers/register_protocol_handler_permission_request.h" #include "chrome/browser/custom_handlers/register_protocol_handler_permission_request.h"
#include "chrome/browser/download/download_permission_request.h"
#include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h" #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
#include "chrome/browser/permissions/attestation_permission_request.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
...@@ -44,6 +46,8 @@ ...@@ -44,6 +46,8 @@
#include "content/public/test/test_utils.h" #include "content/public/test/test_utils.h"
#include "net/dns/mock_host_resolver.h" #include "net/dns/mock_host_resolver.h"
#include "net/test/embedded_test_server/embedded_test_server.h" #include "net/test/embedded_test_server/embedded_test_server.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace { namespace {
...@@ -216,6 +220,8 @@ class PermissionDialogTest ...@@ -216,6 +220,8 @@ class PermissionDialogTest
permissions::PermissionRequest* MakePermissionRequest( permissions::PermissionRequest* MakePermissionRequest(
ContentSettingsType permission); ContentSettingsType permission);
void AddRequestForContentSetting(const std::string& name);
// TestBrowserDialog: // TestBrowserDialog:
void ShowUi(const std::string& name) override; void ShowUi(const std::string& name) override;
void DismissUi() override; void DismissUi() override;
...@@ -267,7 +273,8 @@ permissions::PermissionRequest* PermissionDialogTest::MakePermissionRequest( ...@@ -267,7 +273,8 @@ permissions::PermissionRequest* PermissionDialogTest::MakePermissionRequest(
return owned_requests_.back().get(); return owned_requests_.back().get();
} }
void PermissionDialogTest::ShowUi(const std::string& name) { void PermissionDialogTest::AddRequestForContentSetting(
const std::string& name) {
constexpr const char* kMultipleName = "multiple"; constexpr const char* kMultipleName = "multiple";
constexpr struct { constexpr struct {
const char* name; const char* name;
...@@ -282,6 +289,7 @@ void PermissionDialogTest::ShowUi(const std::string& name) { ...@@ -282,6 +289,7 @@ void PermissionDialogTest::ShowUi(const std::string& name) {
{"protocol_handlers", ContentSettingsType::PROTOCOL_HANDLERS}, {"protocol_handlers", ContentSettingsType::PROTOCOL_HANDLERS},
{"midi", ContentSettingsType::MIDI_SYSEX}, {"midi", ContentSettingsType::MIDI_SYSEX},
{"storage_access", ContentSettingsType::STORAGE_ACCESS}, {"storage_access", ContentSettingsType::STORAGE_ACCESS},
{"downloads", ContentSettingsType::AUTOMATIC_DOWNLOADS},
{kMultipleName, ContentSettingsType::DEFAULT}}; {kMultipleName, ContentSettingsType::DEFAULT}};
const auto* it = std::begin(kNameToType); const auto* it = std::begin(kNameToType);
for (; it != std::end(kNameToType); ++it) { for (; it != std::end(kNameToType); ++it) {
...@@ -300,7 +308,9 @@ void PermissionDialogTest::ShowUi(const std::string& name) { ...@@ -300,7 +308,9 @@ void PermissionDialogTest::ShowUi(const std::string& name) {
manager->AddRequest(source_frame, MakeRegisterProtocolHandlerRequest()); manager->AddRequest(source_frame, MakeRegisterProtocolHandlerRequest());
break; break;
case ContentSettingsType::AUTOMATIC_DOWNLOADS: case ContentSettingsType::AUTOMATIC_DOWNLOADS:
// TODO(tapted): Prompt for downloading multiple files. manager->AddRequest(source_frame,
new DownloadPermissionRequest(
nullptr, url::Origin::Create(GetUrl())));
break; break;
case ContentSettingsType::DURABLE_STORAGE: case ContentSettingsType::DURABLE_STORAGE:
// TODO(tapted): Prompt for quota request. // TODO(tapted): Prompt for quota request.
...@@ -332,6 +342,18 @@ void PermissionDialogTest::ShowUi(const std::string& name) { ...@@ -332,6 +342,18 @@ void PermissionDialogTest::ShowUi(const std::string& name) {
ADD_FAILURE() << "Not a permission type, or one that doesn't prompt."; ADD_FAILURE() << "Not a permission type, or one that doesn't prompt.";
return; return;
} }
}
void PermissionDialogTest::ShowUi(const std::string& name) {
if (name == "security_key") {
// This one doesn't have a ContentSettingsType.
GetPermissionRequestManager()->AddRequest(
GetActiveMainFrame(),
NewAttestationPermissionRequest(url::Origin::Create(GetUrl()),
base::BindOnce([](bool) {})));
} else {
AddRequestForContentSetting(name);
}
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
} }
...@@ -1010,6 +1032,16 @@ IN_PROC_BROWSER_TEST_F(PermissionDialogTest, InvokeUi_storage_access) { ...@@ -1010,6 +1032,16 @@ IN_PROC_BROWSER_TEST_F(PermissionDialogTest, InvokeUi_storage_access) {
ShowAndVerifyUi(); ShowAndVerifyUi();
} }
// Host wants to trigger multiple downloads.
IN_PROC_BROWSER_TEST_F(PermissionDialogTest, InvokeUi_downloads) {
ShowAndVerifyUi();
}
// Host wants to access data about your security key.
IN_PROC_BROWSER_TEST_F(PermissionDialogTest, InvokeUi_security_key) {
ShowAndVerifyUi();
}
// Shows a permissions bubble with multiple requests. // Shows a permissions bubble with multiple requests.
IN_PROC_BROWSER_TEST_F(PermissionDialogTest, InvokeUi_multiple) { IN_PROC_BROWSER_TEST_F(PermissionDialogTest, InvokeUi_multiple) {
ShowAndVerifyUi(); ShowAndVerifyUi();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment