| Index: chrome/browser/notifications/platform_notification_service_interactive_uitest.cc
|
| diff --git a/chrome/browser/notifications/platform_notification_service_interactive_uitest.cc b/chrome/browser/notifications/platform_notification_service_interactive_uitest.cc
|
| index 2314d241b4c66bfb50afb9f694ccba952df448a0..b454f6d9febbb992222e770c156cee8aee7854eb 100644
|
| --- a/chrome/browser/notifications/platform_notification_service_interactive_uitest.cc
|
| +++ b/chrome/browser/notifications/platform_notification_service_interactive_uitest.cc
|
| @@ -15,6 +15,8 @@
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/test/scoped_feature_list.h"
|
| #include "base/time/time.h"
|
| +#include "chrome/browser/engagement/site_engagement_score.h"
|
| +#include "chrome/browser/engagement/site_engagement_service.h"
|
| #include "chrome/browser/notifications/desktop_notification_profile_util.h"
|
| #include "chrome/browser/notifications/message_center_display_service.h"
|
| #include "chrome/browser/notifications/notification.h"
|
| @@ -87,6 +89,9 @@ class PlatformNotificationServiceBrowserTest : public InProcessBrowserTest {
|
| void EnableFullscreenNotifications();
|
| void DisableFullscreenNotifications();
|
|
|
| + double GetEngagementScore(const GURL& origin) const;
|
| + GURL GetLastCommittedURL() const;
|
| +
|
| // Returns the UI Manager on which notifications will be displayed.
|
| StubNotificationUIManager* ui_manager() const { return ui_manager_.get(); }
|
|
|
| @@ -110,6 +115,7 @@ class PlatformNotificationServiceBrowserTest : public InProcessBrowserTest {
|
| return browser->tab_strip_model()->GetActiveWebContents();
|
| }
|
|
|
| + SiteEngagementService* engagement_service_;
|
| const base::FilePath server_root_;
|
| const std::string test_page_url_;
|
| std::unique_ptr<StubNotificationUIManager> ui_manager_;
|
| @@ -147,6 +153,8 @@ void PlatformNotificationServiceBrowserTest::SetUp() {
|
| }
|
|
|
| void PlatformNotificationServiceBrowserTest::SetUpOnMainThread() {
|
| + SiteEngagementScore::SetParamValuesForTesting();
|
| + engagement_service_ = SiteEngagementService::Get(browser()->profile());
|
| NavigateToTestPage(test_page_url_);
|
| display_service_.reset(
|
| new MessageCenterDisplayService(browser()->profile(), ui_manager_.get()));
|
| @@ -227,6 +235,18 @@ void PlatformNotificationServiceBrowserTest::DisableFullscreenNotifications() {
|
| {features::kAllowFullscreenWebNotificationsFeature});
|
| }
|
|
|
| +double PlatformNotificationServiceBrowserTest::GetEngagementScore(
|
| + const GURL& origin) const {
|
| + return engagement_service_->GetScore(origin);
|
| +}
|
| +
|
| +GURL PlatformNotificationServiceBrowserTest::GetLastCommittedURL() const {
|
| + return browser()
|
| + ->tab_strip_model()
|
| + ->GetActiveWebContents()
|
| + ->GetLastCommittedURL();
|
| +}
|
| +
|
| // -----------------------------------------------------------------------------
|
|
|
| // TODO(peter): Move PlatformNotificationService-related tests over from
|
| @@ -249,6 +269,9 @@ IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
| DisplayPersistentNotificationWithPermission) {
|
| RequestAndAcceptPermission();
|
|
|
| + // Expect 5 engagement for notification permission and 0.5 for the navigation.
|
| + EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(GetLastCommittedURL()));
|
| +
|
| std::string script_result;
|
| ASSERT_TRUE(RunScript("DisplayPersistentNotification('action_none')",
|
| &script_result));
|
| @@ -261,8 +284,10 @@ IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
| KeepAliveOrigin::PENDING_NOTIFICATION_CLICK_EVENT));
|
| #endif
|
|
|
| + // We expect +1 engagement for the notification interaction.
|
| const Notification& notification = ui_manager()->GetNotificationAt(0);
|
| notification.delegate()->Click();
|
| + EXPECT_DOUBLE_EQ(6.5, GetEngagementScore(GetLastCommittedURL()));
|
|
|
| #if BUILDFLAG(ENABLE_BACKGROUND)
|
| ASSERT_TRUE(KeepAliveRegistry::GetInstance()->IsOriginRegistered(
|
| @@ -350,6 +375,12 @@ IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
| WebNotificationSiteSettingsButton) {
|
| ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
|
|
|
| + // Expect 5 engagement for notification permission and 0.5 for the navigation.
|
| + content::WebContents* web_contents =
|
| + browser()->tab_strip_model()->GetActiveWebContents();
|
| + GURL origin = web_contents->GetLastCommittedURL();
|
| + EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(origin));
|
| +
|
| std::string script_result;
|
| ASSERT_TRUE(RunScript("DisplayPersistentNotification('Some title', {})",
|
| &script_result));
|
| @@ -364,10 +395,12 @@ IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
|
|
| notification.delegate()->SettingsClick();
|
| ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
|
| - content::WebContents* web_contents =
|
| - browser()->tab_strip_model()->GetActiveWebContents();
|
| + web_contents = browser()->tab_strip_model()->GetActiveWebContents();
|
| ASSERT_TRUE(content::WaitForLoadStop(web_contents));
|
|
|
| + // No engagement should be granted for clicking on the settings link.
|
| + EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(origin));
|
| +
|
| std::string url = web_contents->GetLastCommittedURL().spec();
|
| if (base::FeatureList::IsEnabled(features::kMaterialDesignSettings))
|
| ASSERT_EQ("chrome://settings/content/notifications", url);
|
| @@ -398,6 +431,9 @@ IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
| CloseDisplayedPersistentNotification) {
|
| ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
|
|
|
| + // Expect 5 engagement for notification permission and 0.5 for the navigation.
|
| + EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(GetLastCommittedURL()));
|
| +
|
| std::string script_result;
|
| ASSERT_TRUE(RunScript("DisplayPersistentNotification('action_close')",
|
| &script_result));
|
| @@ -408,6 +444,9 @@ IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
| const Notification& notification = ui_manager()->GetNotificationAt(0);
|
| notification.delegate()->Click();
|
|
|
| + // We have interacted with the button, so expect a notification bump.
|
| + EXPECT_DOUBLE_EQ(6.5, GetEngagementScore(GetLastCommittedURL()));
|
| +
|
| ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
|
| EXPECT_EQ("action_close", script_result);
|
|
|
| @@ -418,6 +457,9 @@ IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
| UserClosesPersistentNotification) {
|
| ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
|
|
|
| + // Expect 5 engagement for notification permission and 0.5 for the navigation.
|
| + EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(GetLastCommittedURL()));
|
| +
|
| std::string script_result;
|
| ASSERT_TRUE(
|
| RunScript("DisplayPersistentNotification('close_test')", &script_result));
|
| @@ -427,6 +469,9 @@ IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
| const Notification& notification = ui_manager()->GetNotificationAt(0);
|
| notification.delegate()->Close(true /* by_user */);
|
|
|
| + // The user closed this notification so the score should remain the same.
|
| + EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(GetLastCommittedURL()));
|
| +
|
| ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
|
| EXPECT_EQ("closing notification: close_test", script_result);
|
| }
|
| @@ -550,6 +595,9 @@ IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
| DisplayPersistentNotificationWithActionButtons) {
|
| ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
|
|
|
| + // Expect 5 engagement for notification permission and 0.5 for the navigation.
|
| + EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(GetLastCommittedURL()));
|
| +
|
| std::string script_result;
|
| ASSERT_TRUE(RunScript("DisplayPersistentNotificationWithActionButtons()",
|
| &script_result));
|
| @@ -564,16 +612,21 @@ IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
| notification.delegate()->ButtonClick(0);
|
| ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
|
| EXPECT_EQ("action_button_click actionId1", script_result);
|
| + EXPECT_DOUBLE_EQ(6.5, GetEngagementScore(GetLastCommittedURL()));
|
|
|
| notification.delegate()->ButtonClick(1);
|
| ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
|
| EXPECT_EQ("action_button_click actionId2", script_result);
|
| + EXPECT_DOUBLE_EQ(7.5, GetEngagementScore(GetLastCommittedURL()));
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
| DisplayPersistentNotificationWithReplyButton) {
|
| ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
|
|
|
| + // Expect 5 engagement for notification permission and 0.5 for the navigation.
|
| + EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(GetLastCommittedURL()));
|
| +
|
| std::string script_result;
|
| ASSERT_TRUE(RunScript("DisplayPersistentNotificationWithReplyButton()",
|
| &script_result));
|
| @@ -587,6 +640,7 @@ IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
| notification.delegate()->ButtonClickWithReply(0, base::ASCIIToUTF16("hello"));
|
| ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
|
| EXPECT_EQ("action_button_click actionId1 hello", script_result);
|
| + EXPECT_DOUBLE_EQ(6.5, GetEngagementScore(GetLastCommittedURL()));
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
|
|
|