Commit 5a86ada3 authored by felt's avatar felt Committed by Commit bot

Update push messaging tests to use both infobars and bubbles (w/ autoresponse)

- This CL updates the Permission Bubble Manager to autorespond for browser tests.
  The test tells the Permission Bubble Manager which response is desired, and the
  Permission Bubble Manager will execute that response immediately after Show().

- This CL applies the new responder to parameterized PushMessagingBrowsertests.

BUG=438758

Review URL: https://codereview.chromium.org/1154943008

Cr-Commit-Position: refs/heads/master@{#333166}
parent 403f2058
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
#include "chrome/browser/services/gcm/gcm_profile_service_factory.h" #include "chrome/browser/services/gcm/gcm_profile_service_factory.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"
#include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h" #include "chrome/test/base/ui_test_utils.h"
#include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/browser/host_content_settings_map.h"
...@@ -69,7 +71,8 @@ class UnregistrationCallback { ...@@ -69,7 +71,8 @@ class UnregistrationCallback {
} // namespace } // namespace
class PushMessagingBrowserTest : public InProcessBrowserTest { class PushMessagingBrowserTest : public InProcessBrowserTest,
public testing::WithParamInterface<bool> {
public: public:
PushMessagingBrowserTest() : gcm_service_(nullptr) {} PushMessagingBrowserTest() : gcm_service_(nullptr) {}
~PushMessagingBrowserTest() override {} ~PushMessagingBrowserTest() override {}
...@@ -78,6 +81,14 @@ class PushMessagingBrowserTest : public InProcessBrowserTest { ...@@ -78,6 +81,14 @@ class PushMessagingBrowserTest : public InProcessBrowserTest {
void SetUpCommandLine(base::CommandLine* command_line) override { void SetUpCommandLine(base::CommandLine* command_line) override {
command_line->AppendSwitch(switches::kEnablePushMessagePayload); command_line->AppendSwitch(switches::kEnablePushMessagePayload);
if (GetParam()) {
command_line->AppendSwitch(switches::kEnablePermissionsBubbles);
EXPECT_TRUE(PermissionBubbleManager::Enabled());
} else {
command_line->AppendSwitch(switches::kDisablePermissionsBubbles);
EXPECT_FALSE(PermissionBubbleManager::Enabled());
}
InProcessBrowserTest::SetUpCommandLine(command_line); InProcessBrowserTest::SetUpCommandLine(command_line);
} }
...@@ -143,6 +154,14 @@ class PushMessagingBrowserTest : public InProcessBrowserTest { ...@@ -143,6 +154,14 @@ class PushMessagingBrowserTest : public InProcessBrowserTest {
result); result);
} }
PermissionBubbleManager* GetPermissionBubbleManager() {
return PermissionBubbleManager::FromWebContents(
GetBrowser()->tab_strip_model()->GetActiveWebContents());
}
void RequestAndAcceptPermission();
void RequestAndDenyPermission();
void TryToSubscribeSuccessfully( void TryToSubscribeSuccessfully(
const std::string& expected_push_subscription_id); const std::string& expected_push_subscription_id);
...@@ -216,6 +235,34 @@ class PushMessagingBrowserTestEmptySubscriptionOptions ...@@ -216,6 +235,34 @@ class PushMessagingBrowserTestEmptySubscriptionOptions
} }
}; };
void PushMessagingBrowserTest::RequestAndAcceptPermission() {
std::string script_result;
if (PermissionBubbleManager::Enabled()) {
GetPermissionBubbleManager()->set_auto_response_for_test(
PermissionBubbleManager::ACCEPT_ALL);
EXPECT_TRUE(RunScript("requestNotificationPermission();", &script_result));
} else {
InfoBarResponder infobar_accept_responder(GetInfoBarService(), true);
EXPECT_TRUE(RunScript("requestNotificationPermission();", &script_result));
}
EXPECT_EQ("permission status - granted", script_result);
}
void PushMessagingBrowserTest::RequestAndDenyPermission() {
std::string script_result;
if (PermissionBubbleManager::Enabled()) {
GetPermissionBubbleManager()->set_auto_response_for_test(
PermissionBubbleManager::DENY_ALL);
EXPECT_TRUE(RunScript("requestNotificationPermission();", &script_result));
} else {
InfoBarResponder infobar_deny_responder(GetInfoBarService(), false);
EXPECT_TRUE(RunScript("requestNotificationPermission();", &script_result));
}
EXPECT_EQ("permission status - denied", script_result);
}
void PushMessagingBrowserTest::TryToSubscribeSuccessfully( void PushMessagingBrowserTest::TryToSubscribeSuccessfully(
const std::string& expected_push_subscription_id) { const std::string& expected_push_subscription_id) {
std::string script_result; std::string script_result;
...@@ -223,9 +270,7 @@ void PushMessagingBrowserTest::TryToSubscribeSuccessfully( ...@@ -223,9 +270,7 @@ void PushMessagingBrowserTest::TryToSubscribeSuccessfully(
EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result));
EXPECT_EQ("ok - service worker registered", script_result); EXPECT_EQ("ok - service worker registered", script_result);
InfoBarResponder accepting_responder(GetInfoBarService(), true); RequestAndAcceptPermission();
EXPECT_TRUE(RunScript("requestNotificationPermission()", &script_result));
EXPECT_EQ("permission status - granted", script_result);
EXPECT_TRUE(RunScript("subscribePush()", &script_result)); EXPECT_TRUE(RunScript("subscribePush()", &script_result));
EXPECT_EQ(GetEndpointForSubscriptionId(expected_push_subscription_id), EXPECT_EQ(GetEndpointForSubscriptionId(expected_push_subscription_id),
...@@ -252,7 +297,7 @@ void PushMessagingBrowserTest::SendMessageAndWaitUntilHandled( ...@@ -252,7 +297,7 @@ void PushMessagingBrowserTest::SendMessageAndWaitUntilHandled(
run_loop.Run(); run_loop.Run();
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
SubscribeSuccessNotificationsGranted) { SubscribeSuccessNotificationsGranted) {
TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */);
...@@ -262,17 +307,22 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -262,17 +307,22 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
SubscribeSuccessNotificationsPrompt) { SubscribeSuccessNotificationsPrompt) {
std::string script_result; std::string script_result;
ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
ASSERT_EQ("ok - service worker registered", script_result); ASSERT_EQ("ok - service worker registered", script_result);
InfoBarResponder accepting_responder(GetInfoBarService(), true); if (PermissionBubbleManager::Enabled()) {
GetPermissionBubbleManager()->set_auto_response_for_test(
PermissionBubbleManager::ACCEPT_ALL);
ASSERT_TRUE(RunScript("subscribePush()", &script_result)); ASSERT_TRUE(RunScript("subscribePush()", &script_result));
EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), } else {
script_result); InfoBarResponder infobar_accept_responder(GetInfoBarService(), true);
ASSERT_TRUE(RunScript("subscribePush()", &script_result));
}
EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), script_result);
PushMessagingAppIdentifier app_identifier = PushMessagingAppIdentifier app_identifier =
GetAppIdentifierForServiceWorkerRegistration(0LL); GetAppIdentifierForServiceWorkerRegistration(0LL);
...@@ -280,31 +330,27 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -280,31 +330,27 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
SubscribeFailureNotificationsBlocked) { SubscribeFailureNotificationsBlocked) {
std::string script_result; std::string script_result;
ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
ASSERT_EQ("ok - service worker registered", script_result); ASSERT_EQ("ok - service worker registered", script_result);
InfoBarResponder cancelling_responder(GetInfoBarService(), false); RequestAndDenyPermission();
ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result));
ASSERT_EQ("permission status - denied", script_result);
ASSERT_TRUE(RunScript("subscribePush()", &script_result)); ASSERT_TRUE(RunScript("subscribePush()", &script_result));
EXPECT_EQ("AbortError - Registration failed - permission denied", EXPECT_EQ("AbortError - Registration failed - permission denied",
script_result); script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureNoManifest) { IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, SubscribeFailureNoManifest) {
std::string script_result; std::string script_result;
ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
ASSERT_EQ("ok - service worker registered", script_result); ASSERT_EQ("ok - service worker registered", script_result);
InfoBarResponder accepting_responder(GetInfoBarService(), true); RequestAndAcceptPermission();
ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result));
ASSERT_EQ("permission status - granted", script_result);
ASSERT_TRUE(RunScript("removeManifest()", &script_result)); ASSERT_TRUE(RunScript("removeManifest()", &script_result));
ASSERT_EQ("manifest removed", script_result); ASSERT_EQ("manifest removed", script_result);
...@@ -316,23 +362,21 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureNoManifest) { ...@@ -316,23 +362,21 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureNoManifest) {
// TODO(johnme): Test subscribing from a worker - see https://crbug.com/437298. // TODO(johnme): Test subscribing from a worker - see https://crbug.com/437298.
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTestEmptySubscriptionOptions, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTestEmptySubscriptionOptions,
RegisterFailureEmptyPushSubscriptionOptions) { RegisterFailureEmptyPushSubscriptionOptions) {
std::string script_result; std::string script_result;
ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
ASSERT_EQ("ok - service worker registered", script_result); ASSERT_EQ("ok - service worker registered", script_result);
InfoBarResponder accepting_responder(GetInfoBarService(), true); RequestAndAcceptPermission();
ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result));
ASSERT_EQ("permission status - granted", script_result);
ASSERT_TRUE(RunScript("subscribePush()", &script_result)); ASSERT_TRUE(RunScript("subscribePush()", &script_result));
EXPECT_EQ("AbortError - Registration failed - permission denied", EXPECT_EQ("AbortError - Registration failed - permission denied",
script_result); script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribePersisted) { IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, SubscribePersisted) {
std::string script_result; std::string script_result;
// First, test that Service Worker registration IDs are assigned in order of // First, test that Service Worker registration IDs are assigned in order of
...@@ -389,7 +433,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribePersisted) { ...@@ -389,7 +433,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribePersisted) {
EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id());
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, PushEventSuccess) {
std::string script_result; std::string script_result;
TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */);
...@@ -415,7 +459,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { ...@@ -415,7 +459,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) {
EXPECT_EQ("testdata", script_result); EXPECT_EQ("testdata", script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) { IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, PushEventNoServiceWorker) {
std::string script_result; std::string script_result;
TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */);
...@@ -457,7 +501,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) { ...@@ -457,7 +501,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) {
} }
#if defined(ENABLE_NOTIFICATIONS) #if defined(ENABLE_NOTIFICATIONS)
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
PushEventEnforcesUserVisibleNotification) { PushEventEnforcesUserVisibleNotification) {
std::string script_result; std::string script_result;
...@@ -563,7 +607,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -563,7 +607,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
EXPECT_EQ(0u, notification_manager()->GetNotificationCount()); EXPECT_EQ(0u, notification_manager()->GetNotificationCount());
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
PushEventEnforcesUserVisibleNotificationAfterQueue) { PushEventEnforcesUserVisibleNotificationAfterQueue) {
std::string script_result; std::string script_result;
...@@ -615,7 +659,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -615,7 +659,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
EXPECT_EQ(1u, number_of_notifications_shown[1]); EXPECT_EQ(1u, number_of_notifications_shown[1]);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
PushEventNotificationWithoutEventWaitUntil) { PushEventNotificationWithoutEventWaitUntil) {
std::string script_result; std::string script_result;
content::WebContents* web_contents = content::WebContents* web_contents =
...@@ -660,7 +704,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -660,7 +704,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
} }
#endif #endif
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysPrompt) { IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, PermissionStateSaysPrompt) {
std::string script_result; std::string script_result;
ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
...@@ -670,15 +714,13 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysPrompt) { ...@@ -670,15 +714,13 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysPrompt) {
ASSERT_EQ("permission status - prompt", script_result); ASSERT_EQ("permission status - prompt", script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysGranted) { IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, PermissionStateSaysGranted) {
std::string script_result; std::string script_result;
ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
ASSERT_EQ("ok - service worker registered", script_result); ASSERT_EQ("ok - service worker registered", script_result);
InfoBarResponder accepting_responder(GetInfoBarService(), true); RequestAndAcceptPermission();
ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result));
EXPECT_EQ("permission status - granted", script_result);
ASSERT_TRUE(RunScript("subscribePush()", &script_result)); ASSERT_TRUE(RunScript("subscribePush()", &script_result));
EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), EXPECT_EQ(GetEndpointForSubscriptionId("1-0"),
...@@ -688,15 +730,13 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysGranted) { ...@@ -688,15 +730,13 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysGranted) {
EXPECT_EQ("permission status - granted", script_result); EXPECT_EQ("permission status - granted", script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysDenied) { IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, PermissionStateSaysDenied) {
std::string script_result; std::string script_result;
ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
ASSERT_EQ("ok - service worker registered", script_result); ASSERT_EQ("ok - service worker registered", script_result);
InfoBarResponder cancelling_responder(GetInfoBarService(), false); RequestAndDenyPermission();
ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result));
EXPECT_EQ("permission status - denied", script_result);
ASSERT_TRUE(RunScript("subscribePush()", &script_result)); ASSERT_TRUE(RunScript("subscribePush()", &script_result));
EXPECT_EQ("AbortError - Registration failed - permission denied", EXPECT_EQ("AbortError - Registration failed - permission denied",
...@@ -706,7 +746,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysDenied) { ...@@ -706,7 +746,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysDenied) {
EXPECT_EQ("permission status - denied", script_result); EXPECT_EQ("permission status - denied", script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) { IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, UnsubscribeSuccess) {
std::string script_result; std::string script_result;
EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result));
...@@ -748,7 +788,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) { ...@@ -748,7 +788,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) {
EXPECT_EQ("unsubscribe result: false", script_result); EXPECT_EQ("unsubscribe result: false", script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
GlobalResetPushPermissionUnsubscribes) { GlobalResetPushPermissionUnsubscribes) {
std::string script_result; std::string script_result;
...@@ -777,7 +817,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -777,7 +817,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
EXPECT_EQ("false - not subscribed", script_result); EXPECT_EQ("false - not subscribed", script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
LocalResetPushPermissionUnsubscribes) { LocalResetPushPermissionUnsubscribes) {
std::string script_result; std::string script_result;
...@@ -811,7 +851,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -811,7 +851,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
EXPECT_EQ("false - not subscribed", script_result); EXPECT_EQ("false - not subscribed", script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
DenyPushPermissionUnsubscribes) { DenyPushPermissionUnsubscribes) {
std::string script_result; std::string script_result;
...@@ -845,7 +885,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -845,7 +885,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
EXPECT_EQ("false - not subscribed", script_result); EXPECT_EQ("false - not subscribed", script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
GlobalResetNotificationsPermissionUnsubscribes) { GlobalResetNotificationsPermissionUnsubscribes) {
std::string script_result; std::string script_result;
...@@ -874,7 +914,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -874,7 +914,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
EXPECT_EQ("false - not subscribed", script_result); EXPECT_EQ("false - not subscribed", script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
LocalResetNotificationsPermissionUnsubscribes) { LocalResetNotificationsPermissionUnsubscribes) {
std::string script_result; std::string script_result;
...@@ -908,7 +948,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -908,7 +948,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
EXPECT_EQ("false - not subscribed", script_result); EXPECT_EQ("false - not subscribed", script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
DenyNotificationsPermissionUnsubscribes) { DenyNotificationsPermissionUnsubscribes) {
std::string script_result; std::string script_result;
...@@ -942,7 +982,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -942,7 +982,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
EXPECT_EQ("false - not subscribed", script_result); EXPECT_EQ("false - not subscribed", script_result);
} }
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
GrantAlreadyGrantedPermissionDoesNotUnsubscribe) { GrantAlreadyGrantedPermissionDoesNotUnsubscribe) {
std::string script_result; std::string script_result;
...@@ -986,7 +1026,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -986,7 +1026,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
// that they are respected with regards to automatic unsubscription. In other // that they are respected with regards to automatic unsubscription. In other
// words, it checks that the push service does not end up unsubscribing origins // words, it checks that the push service does not end up unsubscribing origins
// that have push permission with some non-common rules. // that have push permission with some non-common rules.
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
AutomaticUnsubscriptionFollowsContentSettingRules) { AutomaticUnsubscriptionFollowsContentSettingRules) {
std::string script_result; std::string script_result;
...@@ -1045,7 +1085,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ...@@ -1045,7 +1085,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
// Checks that automatically unsubscribing due to a revoked permission is // Checks that automatically unsubscribing due to a revoked permission is
// handled well if the sender ID needed to unsubscribe was already deleted. // handled well if the sender ID needed to unsubscribe was already deleted.
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
ResetPushPermissionAfterClearingSiteData) { ResetPushPermissionAfterClearingSiteData) {
std::string script_result; std::string script_result;
...@@ -1104,7 +1144,7 @@ class PushMessagingIncognitoBrowserTest : public PushMessagingBrowserTest { ...@@ -1104,7 +1144,7 @@ class PushMessagingIncognitoBrowserTest : public PushMessagingBrowserTest {
}; };
// Regression test for https://crbug.com/476474 // Regression test for https://crbug.com/476474
IN_PROC_BROWSER_TEST_F(PushMessagingIncognitoBrowserTest, IN_PROC_BROWSER_TEST_P(PushMessagingIncognitoBrowserTest,
IncognitoGetSubscriptionDoesNotHang) { IncognitoGetSubscriptionDoesNotHang) {
ASSERT_TRUE(GetBrowser()->profile()->IsOffTheRecord()); ASSERT_TRUE(GetBrowser()->profile()->IsOffTheRecord());
...@@ -1118,3 +1158,10 @@ IN_PROC_BROWSER_TEST_F(PushMessagingIncognitoBrowserTest, ...@@ -1118,3 +1158,10 @@ IN_PROC_BROWSER_TEST_F(PushMessagingIncognitoBrowserTest,
ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); ASSERT_TRUE(RunScript("hasSubscription()", &script_result));
ASSERT_EQ("false - not subscribed", script_result); ASSERT_EQ("false - not subscribed", script_result);
} }
INSTANTIATE_TEST_CASE_P(PushMessagingBrowserTestWithParams,
PushMessagingBrowserTest,
testing::Values(true, false));
INSTANTIATE_TEST_CASE_P(PushMessagingIncognitoBrowserTestWithParams,
PushMessagingIncognitoBrowserTest,
testing::Values(true, false));
...@@ -83,7 +83,9 @@ PermissionBubbleManager::PermissionBubbleManager( ...@@ -83,7 +83,9 @@ PermissionBubbleManager::PermissionBubbleManager(
bubble_showing_(false), bubble_showing_(false),
view_(NULL), view_(NULL),
request_url_has_loaded_(false), request_url_has_loaded_(false),
weak_factory_(this) {} auto_response_for_test_(NONE),
weak_factory_(this) {
}
PermissionBubbleManager::~PermissionBubbleManager() { PermissionBubbleManager::~PermissionBubbleManager() {
if (view_ != NULL) if (view_ != NULL)
...@@ -346,6 +348,10 @@ void PermissionBubbleManager::TriggerShowBubble() { ...@@ -346,6 +348,10 @@ void PermissionBubbleManager::TriggerShowBubble() {
// case we may do in-line calling of finalization. // case we may do in-line calling of finalization.
bubble_showing_ = true; bubble_showing_ = true;
view_->Show(requests_, accept_states_); view_->Show(requests_, accept_states_);
// If in testing mode, automatically respond to the bubble that was shown.
if (auto_response_for_test_ != NONE)
DoAutoResponseForTesting();
} }
void PermissionBubbleManager::FinalizeBubble() { void PermissionBubbleManager::FinalizeBubble() {
...@@ -414,3 +420,18 @@ bool PermissionBubbleManager::HasUserGestureRequest( ...@@ -414,3 +420,18 @@ bool PermissionBubbleManager::HasUserGestureRequest(
return false; return false;
} }
void PermissionBubbleManager::DoAutoResponseForTesting() {
switch (auto_response_for_test_) {
case ACCEPT_ALL:
Accept();
break;
case DENY_ALL:
Deny();
break;
case DISMISS:
Closing();
break;
case NONE:
NOTREACHED();
}
}
...@@ -30,6 +30,13 @@ class PermissionBubbleManager ...@@ -30,6 +30,13 @@ class PermissionBubbleManager
public content::WebContentsUserData<PermissionBubbleManager>, public content::WebContentsUserData<PermissionBubbleManager>,
public PermissionBubbleView::Delegate { public PermissionBubbleView::Delegate {
public: public:
enum AutoResponseType {
NONE,
ACCEPT_ALL,
DENY_ALL,
DISMISS
};
// Return the enabled state of permissions bubbles. // Return the enabled state of permissions bubbles.
// Controlled by a flag and FieldTrial. // Controlled by a flag and FieldTrial.
static bool Enabled(); static bool Enabled();
...@@ -64,6 +71,14 @@ class PermissionBubbleManager ...@@ -64,6 +71,14 @@ class PermissionBubbleManager
// comes in with a user gesture. // comes in with a user gesture.
void RequireUserGesture(bool required); void RequireUserGesture(bool required);
// Do NOT use this methods in production code. Use this methods in browser
// tests that need to accept or deny permissions when requested in
// JavaScript. Your test needs to set this appropriately, and then the bubble
// will proceed as desired as soon as Show() is called.
void set_auto_response_for_test(AutoResponseType response) {
auto_response_for_test_ = response;
}
private: private:
friend class DownloadRequestLimiterTest; friend class DownloadRequestLimiterTest;
friend class GeolocationBrowserTest; friend class GeolocationBrowserTest;
...@@ -119,6 +134,8 @@ class PermissionBubbleManager ...@@ -119,6 +134,8 @@ class PermissionBubbleManager
bool HasUserGestureRequest( bool HasUserGestureRequest(
const std::vector<PermissionBubbleRequest*>& queue); const std::vector<PermissionBubbleRequest*>& queue);
void DoAutoResponseForTesting();
// Whether to delay displaying the bubble until a request with a user gesture. // Whether to delay displaying the bubble until a request with a user gesture.
// False by default, unless RequireUserGesture(bool) changes the value. // False by default, unless RequireUserGesture(bool) changes the value.
bool require_user_gesture_; bool require_user_gesture_;
...@@ -140,6 +157,8 @@ class PermissionBubbleManager ...@@ -140,6 +157,8 @@ class PermissionBubbleManager
std::vector<bool> accept_states_; std::vector<bool> accept_states_;
AutoResponseType auto_response_for_test_;
base::WeakPtrFactory<PermissionBubbleManager> weak_factory_; base::WeakPtrFactory<PermissionBubbleManager> weak_factory_;
}; };
......
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