Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2454)

Unified Diff: chrome/browser/push_messaging/push_messaging_browsertest.cc

Issue 2737533003: Grant bonus engagement to origins with notification permission. (Closed)
Patch Set: Address comments Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/engagement/site_engagement_service_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 024accdb7bb1a361dfd5708353fbac0ca04492bf..8dc6def69a2f6061e174146ad111e6bc419cf01b 100644
--- a/chrome/browser/push_messaging/push_messaging_browsertest.cc
+++ b/chrome/browser/push_messaging/push_messaging_browsertest.cc
@@ -23,6 +23,7 @@
#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
#include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
+#include "chrome/browser/engagement/site_engagement_score.h"
#include "chrome/browser/engagement/site_engagement_service.h"
#include "chrome/browser/gcm/fake_gcm_profile_service.h"
#include "chrome/browser/gcm/gcm_profile_service_factory.h"
@@ -124,6 +125,7 @@ class PushMessagingBrowserTest : public InProcessBrowserTest {
notification_manager_.reset(new StubNotificationUIManager);
+ SiteEngagementScore::SetParamValuesForTesting();
InProcessBrowserTest::SetUp();
}
void SetUpCommandLine(base::CommandLine* command_line) override {
@@ -272,10 +274,15 @@ class PushMessagingBrowserTest : public InProcessBrowserTest {
PushMessagingServiceImpl* push_service() const { return push_service_; }
- void SetSiteEngagementScore(const GURL& url, double score) {
+ void SetSiteEngagementScore(const GURL& url,
+ double score,
+ double expected_score) {
+ // There will be a bonus of 5.0 points for having notification permission
+ // granted, so we assert that the final score is as expected.
SiteEngagementService* service =
SiteEngagementService::Get(GetBrowser()->profile());
service->ResetScoreForURL(url, score);
+ EXPECT_EQ(expected_score, service->GetScore(url));
}
protected:
@@ -1240,7 +1247,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
// Set the site engagement score for the site. Setting it to 10 means it
// should have a budget of 4, enough for two non-shown notification, which
// cost 2 each.
- SetSiteEngagementScore(web_contents->GetURL(), 10.0);
+ SetSiteEngagementScore(web_contents->GetURL(), 5.0, 10.0);
// If the site is visible in an active tab, we should not force a notification
// to be shown. Try it twice, since we allow one mistake per 10 push events.
@@ -1342,16 +1349,14 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
content::WebContents* web_contents =
GetBrowser()->tab_strip_model()->GetActiveWebContents();
+ SetSiteEngagementScore(web_contents->GetURL(), 0.0, 5.0);
+
ui_test_utils::NavigateToURLWithDisposition(
GetBrowser(), GURL("about:blank"),
WindowOpenDisposition::NEW_FOREGROUND_TAB,
ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB);
- SetSiteEngagementScore(web_contents->GetURL(), 0.0);
-
- // If the Service Worker push event handler does not show a notification, we
- // should show a forced one providing there is no foreground tab and the
- // origin ran out of budget.
+ // Send a missed notification to use up the budget.
gcm::IncomingMessage message;
message.sender_id = GetTestApplicationServerKey();
message.raw_data = "testdata";
@@ -1360,6 +1365,14 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
SendMessageAndWaitUntilHandled(app_identifier, message);
ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result, web_contents));
EXPECT_EQ("testdata", script_result);
+ EXPECT_EQ(0u, notification_manager()->GetNotificationCount());
+
+ // If the Service Worker push event handler does not show a notification, we
+ // should show a forced one providing there is no foreground tab and the
+ // origin ran out of budget.
+ SendMessageAndWaitUntilHandled(app_identifier, message);
+ ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result, web_contents));
+ EXPECT_EQ("testdata", script_result);
// Because the --allow-silent-push command line flag has not been passed,
// this should have shown a default notification.
« no previous file with comments | « chrome/browser/engagement/site_engagement_service_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698