| Index: chrome/browser/push_messaging/push_messaging_browsertest.cc
|
| diff --git a/chrome/browser/push_messaging/push_messaging_browsertest.cc b/chrome/browser/push_messaging/push_messaging_browsertest.cc
|
| index 94afec494158e1af8092f5939372fd4fc9c0c8ec..a9acc332a6556cd6b09235315b9669915ab57a5a 100644
|
| --- a/chrome/browser/push_messaging/push_messaging_browsertest.cc
|
| +++ b/chrome/browser/push_messaging/push_messaging_browsertest.cc
|
| @@ -27,6 +27,8 @@
|
| #include "chrome/browser/services/gcm/gcm_profile_service_factory.h"
|
| #include "chrome/browser/ui/browser.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/ui_test_utils.h"
|
| #include "components/content_settings/core/browser/host_content_settings_map.h"
|
| @@ -69,7 +71,8 @@ class UnregistrationCallback {
|
|
|
| } // namespace
|
|
|
| -class PushMessagingBrowserTest : public InProcessBrowserTest {
|
| +class PushMessagingBrowserTest : public InProcessBrowserTest,
|
| + public testing::WithParamInterface<bool> {
|
| public:
|
| PushMessagingBrowserTest() : gcm_service_(nullptr) {}
|
| ~PushMessagingBrowserTest() override {}
|
| @@ -78,6 +81,14 @@ class PushMessagingBrowserTest : public InProcessBrowserTest {
|
| void SetUpCommandLine(base::CommandLine* command_line) override {
|
| 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);
|
| }
|
|
|
| @@ -143,6 +154,14 @@ class PushMessagingBrowserTest : public InProcessBrowserTest {
|
| result);
|
| }
|
|
|
| + PermissionBubbleManager* GetPermissionBubbleManager() {
|
| + return PermissionBubbleManager::FromWebContents(
|
| + GetBrowser()->tab_strip_model()->GetActiveWebContents());
|
| + }
|
| +
|
| + void RequestAndAcceptPermission();
|
| + void RequestAndDenyPermission();
|
| +
|
| void TryToSubscribeSuccessfully(
|
| const std::string& expected_push_subscription_id);
|
|
|
| @@ -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(
|
| const std::string& expected_push_subscription_id) {
|
| std::string script_result;
|
| @@ -223,9 +270,7 @@ void PushMessagingBrowserTest::TryToSubscribeSuccessfully(
|
| EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result));
|
| EXPECT_EQ("ok - service worker registered", script_result);
|
|
|
| - InfoBarResponder accepting_responder(GetInfoBarService(), true);
|
| - EXPECT_TRUE(RunScript("requestNotificationPermission()", &script_result));
|
| - EXPECT_EQ("permission status - granted", script_result);
|
| + RequestAndAcceptPermission();
|
|
|
| EXPECT_TRUE(RunScript("subscribePush()", &script_result));
|
| EXPECT_EQ(GetEndpointForSubscriptionId(expected_push_subscription_id),
|
| @@ -252,7 +297,7 @@ void PushMessagingBrowserTest::SendMessageAndWaitUntilHandled(
|
| run_loop.Run();
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| SubscribeSuccessNotificationsGranted) {
|
| TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */);
|
|
|
| @@ -262,17 +307,22 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| SubscribeSuccessNotificationsPrompt) {
|
| std::string script_result;
|
|
|
| ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
|
| ASSERT_EQ("ok - service worker registered", script_result);
|
|
|
| - InfoBarResponder accepting_responder(GetInfoBarService(), true);
|
| - ASSERT_TRUE(RunScript("subscribePush()", &script_result));
|
| - EXPECT_EQ(GetEndpointForSubscriptionId("1-0"),
|
| - script_result);
|
| + if (PermissionBubbleManager::Enabled()) {
|
| + GetPermissionBubbleManager()->set_auto_response_for_test(
|
| + PermissionBubbleManager::ACCEPT_ALL);
|
| + ASSERT_TRUE(RunScript("subscribePush()", &script_result));
|
| + } else {
|
| + InfoBarResponder infobar_accept_responder(GetInfoBarService(), true);
|
| + ASSERT_TRUE(RunScript("subscribePush()", &script_result));
|
| + }
|
| + EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), script_result);
|
|
|
| PushMessagingAppIdentifier app_identifier =
|
| GetAppIdentifierForServiceWorkerRegistration(0LL);
|
| @@ -280,31 +330,27 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| SubscribeFailureNotificationsBlocked) {
|
| std::string script_result;
|
|
|
| ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
|
| ASSERT_EQ("ok - service worker registered", script_result);
|
|
|
| - InfoBarResponder cancelling_responder(GetInfoBarService(), false);
|
| - ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result));
|
| - ASSERT_EQ("permission status - denied", script_result);
|
| + RequestAndDenyPermission();
|
|
|
| ASSERT_TRUE(RunScript("subscribePush()", &script_result));
|
| EXPECT_EQ("AbortError - Registration failed - permission denied",
|
| script_result);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureNoManifest) {
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, SubscribeFailureNoManifest) {
|
| std::string script_result;
|
|
|
| ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
|
| ASSERT_EQ("ok - service worker registered", script_result);
|
|
|
| - InfoBarResponder accepting_responder(GetInfoBarService(), true);
|
| - ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result));
|
| - ASSERT_EQ("permission status - granted", script_result);
|
| + RequestAndAcceptPermission();
|
|
|
| ASSERT_TRUE(RunScript("removeManifest()", &script_result));
|
| ASSERT_EQ("manifest removed", script_result);
|
| @@ -316,23 +362,21 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureNoManifest) {
|
|
|
| // 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) {
|
| std::string script_result;
|
|
|
| ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
|
| ASSERT_EQ("ok - service worker registered", script_result);
|
|
|
| - InfoBarResponder accepting_responder(GetInfoBarService(), true);
|
| - ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result));
|
| - ASSERT_EQ("permission status - granted", script_result);
|
| + RequestAndAcceptPermission();
|
|
|
| ASSERT_TRUE(RunScript("subscribePush()", &script_result));
|
| EXPECT_EQ("AbortError - Registration failed - permission denied",
|
| script_result);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribePersisted) {
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, SubscribePersisted) {
|
| std::string script_result;
|
|
|
| // First, test that Service Worker registration IDs are assigned in order of
|
| @@ -389,7 +433,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribePersisted) {
|
| 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;
|
|
|
| TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */);
|
| @@ -415,7 +459,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) {
|
| EXPECT_EQ("testdata", script_result);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) {
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, PushEventNoServiceWorker) {
|
| std::string script_result;
|
|
|
| TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */);
|
| @@ -457,7 +501,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) {
|
| }
|
|
|
| #if defined(ENABLE_NOTIFICATIONS)
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| PushEventEnforcesUserVisibleNotification) {
|
| std::string script_result;
|
|
|
| @@ -563,7 +607,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| EXPECT_EQ(0u, notification_manager()->GetNotificationCount());
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| PushEventEnforcesUserVisibleNotificationAfterQueue) {
|
| std::string script_result;
|
|
|
| @@ -615,7 +659,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| EXPECT_EQ(1u, number_of_notifications_shown[1]);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| PushEventNotificationWithoutEventWaitUntil) {
|
| std::string script_result;
|
| content::WebContents* web_contents =
|
| @@ -660,7 +704,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| }
|
| #endif
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysPrompt) {
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, PermissionStateSaysPrompt) {
|
| std::string script_result;
|
|
|
| ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
|
| @@ -670,15 +714,13 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysPrompt) {
|
| 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;
|
|
|
| ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
|
| ASSERT_EQ("ok - service worker registered", script_result);
|
|
|
| - InfoBarResponder accepting_responder(GetInfoBarService(), true);
|
| - ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result));
|
| - EXPECT_EQ("permission status - granted", script_result);
|
| + RequestAndAcceptPermission();
|
|
|
| ASSERT_TRUE(RunScript("subscribePush()", &script_result));
|
| EXPECT_EQ(GetEndpointForSubscriptionId("1-0"),
|
| @@ -688,15 +730,13 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysGranted) {
|
| 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;
|
|
|
| ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
|
| ASSERT_EQ("ok - service worker registered", script_result);
|
|
|
| - InfoBarResponder cancelling_responder(GetInfoBarService(), false);
|
| - ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result));
|
| - EXPECT_EQ("permission status - denied", script_result);
|
| + RequestAndDenyPermission();
|
|
|
| ASSERT_TRUE(RunScript("subscribePush()", &script_result));
|
| EXPECT_EQ("AbortError - Registration failed - permission denied",
|
| @@ -706,7 +746,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysDenied) {
|
| 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;
|
|
|
| EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result));
|
| @@ -748,7 +788,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) {
|
| EXPECT_EQ("unsubscribe result: false", script_result);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| GlobalResetPushPermissionUnsubscribes) {
|
| std::string script_result;
|
|
|
| @@ -777,7 +817,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| EXPECT_EQ("false - not subscribed", script_result);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| LocalResetPushPermissionUnsubscribes) {
|
| std::string script_result;
|
|
|
| @@ -811,7 +851,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| EXPECT_EQ("false - not subscribed", script_result);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| DenyPushPermissionUnsubscribes) {
|
| std::string script_result;
|
|
|
| @@ -845,7 +885,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| EXPECT_EQ("false - not subscribed", script_result);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| GlobalResetNotificationsPermissionUnsubscribes) {
|
| std::string script_result;
|
|
|
| @@ -874,7 +914,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| EXPECT_EQ("false - not subscribed", script_result);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| LocalResetNotificationsPermissionUnsubscribes) {
|
| std::string script_result;
|
|
|
| @@ -908,7 +948,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| EXPECT_EQ("false - not subscribed", script_result);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| DenyNotificationsPermissionUnsubscribes) {
|
| std::string script_result;
|
|
|
| @@ -942,7 +982,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| EXPECT_EQ("false - not subscribed", script_result);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| GrantAlreadyGrantedPermissionDoesNotUnsubscribe) {
|
| std::string script_result;
|
|
|
| @@ -986,7 +1026,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| // that they are respected with regards to automatic unsubscription. In other
|
| // words, it checks that the push service does not end up unsubscribing origins
|
| // that have push permission with some non-common rules.
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest,
|
| AutomaticUnsubscriptionFollowsContentSettingRules) {
|
| std::string script_result;
|
|
|
| @@ -1045,7 +1085,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
|
|
| // Checks that automatically unsubscribing due to a revoked permission is
|
| // 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) {
|
| std::string script_result;
|
|
|
| @@ -1104,7 +1144,7 @@ class PushMessagingIncognitoBrowserTest : public PushMessagingBrowserTest {
|
| };
|
|
|
| // Regression test for https://crbug.com/476474
|
| -IN_PROC_BROWSER_TEST_F(PushMessagingIncognitoBrowserTest,
|
| +IN_PROC_BROWSER_TEST_P(PushMessagingIncognitoBrowserTest,
|
| IncognitoGetSubscriptionDoesNotHang) {
|
| ASSERT_TRUE(GetBrowser()->profile()->IsOffTheRecord());
|
|
|
| @@ -1118,3 +1158,10 @@ IN_PROC_BROWSER_TEST_F(PushMessagingIncognitoBrowserTest,
|
| ASSERT_TRUE(RunScript("hasSubscription()", &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));
|
|
|