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

Side by Side Diff: chrome/browser/notifications/platform_notification_service_interactive_uitest.cc

Issue 2748103011: Grant origins engagement for having interactions on their notifications. (Closed)
Patch Set: Unfriend 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <memory> 5 #include <memory>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/feature_list.h" 10 #include "base/feature_list.h"
11 #include "base/files/file_path.h" 11 #include "base/files/file_path.h"
12 #include "base/path_service.h" 12 #include "base/path_service.h"
13 #include "base/strings/string_piece.h" 13 #include "base/strings/string_piece.h"
14 #include "base/strings/string_split.h" 14 #include "base/strings/string_split.h"
15 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
16 #include "base/test/scoped_feature_list.h" 16 #include "base/test/scoped_feature_list.h"
17 #include "base/time/time.h" 17 #include "base/time/time.h"
18 #include "chrome/browser/engagement/site_engagement_score.h"
19 #include "chrome/browser/engagement/site_engagement_service.h"
18 #include "chrome/browser/notifications/desktop_notification_profile_util.h" 20 #include "chrome/browser/notifications/desktop_notification_profile_util.h"
19 #include "chrome/browser/notifications/message_center_display_service.h" 21 #include "chrome/browser/notifications/message_center_display_service.h"
20 #include "chrome/browser/notifications/notification.h" 22 #include "chrome/browser/notifications/notification.h"
21 #include "chrome/browser/notifications/notification_test_util.h" 23 #include "chrome/browser/notifications/notification_test_util.h"
22 #include "chrome/browser/notifications/platform_notification_service_impl.h" 24 #include "chrome/browser/notifications/platform_notification_service_impl.h"
23 #include "chrome/browser/notifications/web_notification_delegate.h" 25 #include "chrome/browser/notifications/web_notification_delegate.h"
24 #include "chrome/browser/permissions/permission_manager.h" 26 #include "chrome/browser/permissions/permission_manager.h"
25 #include "chrome/browser/permissions/permission_request_manager.h" 27 #include "chrome/browser/permissions/permission_request_manager.h"
26 #include "chrome/browser/permissions/permission_result.h" 28 #include "chrome/browser/permissions/permission_result.h"
27 #include "chrome/browser/ui/browser.h" 29 #include "chrome/browser/ui/browser.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 // Grants permission to display Web Notifications for origin of the test 82 // Grants permission to display Web Notifications for origin of the test
81 // page that's being used in this browser test. 83 // page that's being used in this browser test.
82 void GrantNotificationPermissionForTest() const; 84 void GrantNotificationPermissionForTest() const;
83 85
84 bool RequestAndAcceptPermission(); 86 bool RequestAndAcceptPermission();
85 bool RequestAndDenyPermission(); 87 bool RequestAndDenyPermission();
86 88
87 void EnableFullscreenNotifications(); 89 void EnableFullscreenNotifications();
88 void DisableFullscreenNotifications(); 90 void DisableFullscreenNotifications();
89 91
92 double GetEngagementScore(const GURL& origin) const;
93 GURL GetLastCommittedURL() const;
94
90 // Returns the UI Manager on which notifications will be displayed. 95 // Returns the UI Manager on which notifications will be displayed.
91 StubNotificationUIManager* ui_manager() const { return ui_manager_.get(); } 96 StubNotificationUIManager* ui_manager() const { return ui_manager_.get(); }
92 97
93 const base::FilePath& server_root() const { return server_root_; } 98 const base::FilePath& server_root() const { return server_root_; }
94 99
95 // Navigates the browser to the test page indicated by |path|. 100 // Navigates the browser to the test page indicated by |path|.
96 void NavigateToTestPage(const std::string& path) const; 101 void NavigateToTestPage(const std::string& path) const;
97 102
98 // Executes |script| and stores the result as a string in |result|. A boolean 103 // Executes |script| and stores the result as a string in |result|. A boolean
99 // will be returned, indicating whether the script was executed successfully. 104 // will be returned, indicating whether the script was executed successfully.
100 bool RunScript(const std::string& script, std::string* result) const; 105 bool RunScript(const std::string& script, std::string* result) const;
101 106
102 net::HostPortPair ServerHostPort() const; 107 net::HostPortPair ServerHostPort() const;
103 GURL TestPageUrl() const; 108 GURL TestPageUrl() const;
104 109
105 private: 110 private:
106 std::string RequestAndRespondToPermission( 111 std::string RequestAndRespondToPermission(
107 PermissionRequestManager::AutoResponseType bubble_response); 112 PermissionRequestManager::AutoResponseType bubble_response);
108 113
109 content::WebContents* GetActiveWebContents(Browser* browser) { 114 content::WebContents* GetActiveWebContents(Browser* browser) {
110 return browser->tab_strip_model()->GetActiveWebContents(); 115 return browser->tab_strip_model()->GetActiveWebContents();
111 } 116 }
112 117
118 SiteEngagementService* engagement_service_;
113 const base::FilePath server_root_; 119 const base::FilePath server_root_;
114 const std::string test_page_url_; 120 const std::string test_page_url_;
115 std::unique_ptr<StubNotificationUIManager> ui_manager_; 121 std::unique_ptr<StubNotificationUIManager> ui_manager_;
116 std::unique_ptr<MessageCenterDisplayService> display_service_; 122 std::unique_ptr<MessageCenterDisplayService> display_service_;
117 std::unique_ptr<net::EmbeddedTestServer> https_server_; 123 std::unique_ptr<net::EmbeddedTestServer> https_server_;
118 base::test::ScopedFeatureList feature_list_; 124 base::test::ScopedFeatureList feature_list_;
119 }; 125 };
120 126
121 // ----------------------------------------------------------------------------- 127 // -----------------------------------------------------------------------------
122 128
(...skipping 17 matching lines...) Expand all
140 void PlatformNotificationServiceBrowserTest::SetUp() { 146 void PlatformNotificationServiceBrowserTest::SetUp() {
141 ui_manager_.reset(new StubNotificationUIManager); 147 ui_manager_.reset(new StubNotificationUIManager);
142 https_server_.reset( 148 https_server_.reset(
143 new net::EmbeddedTestServer(net::EmbeddedTestServer::TYPE_HTTPS)); 149 new net::EmbeddedTestServer(net::EmbeddedTestServer::TYPE_HTTPS));
144 https_server_->ServeFilesFromSourceDirectory(server_root_); 150 https_server_->ServeFilesFromSourceDirectory(server_root_);
145 ASSERT_TRUE(https_server_->Start()); 151 ASSERT_TRUE(https_server_->Start());
146 InProcessBrowserTest::SetUp(); 152 InProcessBrowserTest::SetUp();
147 } 153 }
148 154
149 void PlatformNotificationServiceBrowserTest::SetUpOnMainThread() { 155 void PlatformNotificationServiceBrowserTest::SetUpOnMainThread() {
156 SiteEngagementScore::SetParamValuesForTesting();
157 engagement_service_ = SiteEngagementService::Get(browser()->profile());
150 NavigateToTestPage(test_page_url_); 158 NavigateToTestPage(test_page_url_);
151 display_service_.reset( 159 display_service_.reset(
152 new MessageCenterDisplayService(browser()->profile(), ui_manager_.get())); 160 new MessageCenterDisplayService(browser()->profile(), ui_manager_.get()));
153 service()->SetNotificationDisplayServiceForTesting(display_service_.get()); 161 service()->SetNotificationDisplayServiceForTesting(display_service_.get());
154 InProcessBrowserTest::SetUpOnMainThread(); 162 InProcessBrowserTest::SetUpOnMainThread();
155 } 163 }
156 164
157 void PlatformNotificationServiceBrowserTest::TearDown() { 165 void PlatformNotificationServiceBrowserTest::TearDown() {
158 service()->SetNotificationDisplayServiceForTesting(nullptr); 166 service()->SetNotificationDisplayServiceForTesting(nullptr);
159 } 167 }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 features::kPreferHtmlOverPlugins, 228 features::kPreferHtmlOverPlugins,
221 features::kAllowFullscreenWebNotificationsFeature}, {}); 229 features::kAllowFullscreenWebNotificationsFeature}, {});
222 } 230 }
223 231
224 void PlatformNotificationServiceBrowserTest::DisableFullscreenNotifications() { 232 void PlatformNotificationServiceBrowserTest::DisableFullscreenNotifications() {
225 feature_list_.InitWithFeatures( 233 feature_list_.InitWithFeatures(
226 {features::kPreferHtmlOverPlugins}, 234 {features::kPreferHtmlOverPlugins},
227 {features::kAllowFullscreenWebNotificationsFeature}); 235 {features::kAllowFullscreenWebNotificationsFeature});
228 } 236 }
229 237
238 double PlatformNotificationServiceBrowserTest::GetEngagementScore(
239 const GURL& origin) const {
240 return engagement_service_->GetScore(origin);
241 }
242
243 GURL PlatformNotificationServiceBrowserTest::GetLastCommittedURL() const {
244 return browser()
245 ->tab_strip_model()
246 ->GetActiveWebContents()
247 ->GetLastCommittedURL();
248 }
249
230 // ----------------------------------------------------------------------------- 250 // -----------------------------------------------------------------------------
231 251
232 // TODO(peter): Move PlatformNotificationService-related tests over from 252 // TODO(peter): Move PlatformNotificationService-related tests over from
233 // notification_browsertest.cc to this file. 253 // notification_browsertest.cc to this file.
234 254
235 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, 255 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
236 DisplayPersistentNotificationWithoutPermission) { 256 DisplayPersistentNotificationWithoutPermission) {
237 RequestAndDenyPermission(); 257 RequestAndDenyPermission();
238 258
239 std::string script_result; 259 std::string script_result;
240 ASSERT_TRUE(RunScript("DisplayPersistentNotification()", &script_result)); 260 ASSERT_TRUE(RunScript("DisplayPersistentNotification()", &script_result));
241 EXPECT_EQ( 261 EXPECT_EQ(
242 "TypeError: No notification permission has been granted for this origin.", 262 "TypeError: No notification permission has been granted for this origin.",
243 script_result); 263 script_result);
244 264
245 ASSERT_EQ(0u, ui_manager()->GetNotificationCount()); 265 ASSERT_EQ(0u, ui_manager()->GetNotificationCount());
246 } 266 }
247 267
248 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, 268 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
249 DisplayPersistentNotificationWithPermission) { 269 DisplayPersistentNotificationWithPermission) {
250 RequestAndAcceptPermission(); 270 RequestAndAcceptPermission();
251 271
272 // Expect 5 engagement for notification permission and 0.5 for the navigation.
273 EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(GetLastCommittedURL()));
274
252 std::string script_result; 275 std::string script_result;
253 ASSERT_TRUE(RunScript("DisplayPersistentNotification('action_none')", 276 ASSERT_TRUE(RunScript("DisplayPersistentNotification('action_none')",
254 &script_result)); 277 &script_result));
255 EXPECT_EQ("ok", script_result); 278 EXPECT_EQ("ok", script_result);
256 279
257 ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); 280 ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
258 281
259 #if BUILDFLAG(ENABLE_BACKGROUND) 282 #if BUILDFLAG(ENABLE_BACKGROUND)
260 ASSERT_FALSE(KeepAliveRegistry::GetInstance()->IsOriginRegistered( 283 ASSERT_FALSE(KeepAliveRegistry::GetInstance()->IsOriginRegistered(
261 KeepAliveOrigin::PENDING_NOTIFICATION_CLICK_EVENT)); 284 KeepAliveOrigin::PENDING_NOTIFICATION_CLICK_EVENT));
262 #endif 285 #endif
263 286
287 // We expect +1 engagement for the notification interaction.
264 const Notification& notification = ui_manager()->GetNotificationAt(0); 288 const Notification& notification = ui_manager()->GetNotificationAt(0);
265 notification.delegate()->Click(); 289 notification.delegate()->Click();
290 EXPECT_DOUBLE_EQ(6.5, GetEngagementScore(GetLastCommittedURL()));
266 291
267 #if BUILDFLAG(ENABLE_BACKGROUND) 292 #if BUILDFLAG(ENABLE_BACKGROUND)
268 ASSERT_TRUE(KeepAliveRegistry::GetInstance()->IsOriginRegistered( 293 ASSERT_TRUE(KeepAliveRegistry::GetInstance()->IsOriginRegistered(
269 KeepAliveOrigin::PENDING_NOTIFICATION_CLICK_EVENT)); 294 KeepAliveOrigin::PENDING_NOTIFICATION_CLICK_EVENT));
270 #endif 295 #endif
271 296
272 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result)); 297 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
273 EXPECT_EQ("action_none", script_result); 298 EXPECT_EQ("action_none", script_result);
274 299
275 #if BUILDFLAG(ENABLE_BACKGROUND) 300 #if BUILDFLAG(ENABLE_BACKGROUND)
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 base::UTF16ToUTF8(all_options_notification.buttons()[0].title)); 368 base::UTF16ToUTF8(all_options_notification.buttons()[0].title));
344 EXPECT_FALSE(all_options_notification.buttons()[0].icon.IsEmpty()); 369 EXPECT_FALSE(all_options_notification.buttons()[0].icon.IsEmpty());
345 EXPECT_EQ(kIconWidth, all_options_notification.buttons()[0].icon.Width()); 370 EXPECT_EQ(kIconWidth, all_options_notification.buttons()[0].icon.Width());
346 EXPECT_EQ(kIconHeight, all_options_notification.buttons()[0].icon.Height()); 371 EXPECT_EQ(kIconHeight, all_options_notification.buttons()[0].icon.Height());
347 } 372 }
348 373
349 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, 374 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
350 WebNotificationSiteSettingsButton) { 375 WebNotificationSiteSettingsButton) {
351 ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest()); 376 ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
352 377
378 // Expect 5 engagement for notification permission and 0.5 for the navigation.
379 content::WebContents* web_contents =
380 browser()->tab_strip_model()->GetActiveWebContents();
381 GURL origin = web_contents->GetLastCommittedURL();
382 EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(origin));
383
353 std::string script_result; 384 std::string script_result;
354 ASSERT_TRUE(RunScript("DisplayPersistentNotification('Some title', {})", 385 ASSERT_TRUE(RunScript("DisplayPersistentNotification('Some title', {})",
355 &script_result)); 386 &script_result));
356 EXPECT_EQ("ok", script_result); 387 EXPECT_EQ("ok", script_result);
357 388
358 ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); 389 ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
359 390
360 const Notification& notification = ui_manager()->GetNotificationAt(0); 391 const Notification& notification = ui_manager()->GetNotificationAt(0);
361 const std::vector<message_center::ButtonInfo>& buttons = 392 const std::vector<message_center::ButtonInfo>& buttons =
362 notification.buttons(); 393 notification.buttons();
363 EXPECT_EQ(0u, buttons.size()); 394 EXPECT_EQ(0u, buttons.size());
364 395
365 notification.delegate()->SettingsClick(); 396 notification.delegate()->SettingsClick();
366 ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); 397 ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
367 content::WebContents* web_contents = 398 web_contents = browser()->tab_strip_model()->GetActiveWebContents();
368 browser()->tab_strip_model()->GetActiveWebContents();
369 ASSERT_TRUE(content::WaitForLoadStop(web_contents)); 399 ASSERT_TRUE(content::WaitForLoadStop(web_contents));
370 400
401 // No engagement should be granted for clicking on the settings link.
402 EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(origin));
403
371 std::string url = web_contents->GetLastCommittedURL().spec(); 404 std::string url = web_contents->GetLastCommittedURL().spec();
372 if (base::FeatureList::IsEnabled(features::kMaterialDesignSettings)) 405 if (base::FeatureList::IsEnabled(features::kMaterialDesignSettings))
373 ASSERT_EQ("chrome://settings/content/notifications", url); 406 ASSERT_EQ("chrome://settings/content/notifications", url);
374 else 407 else
375 ASSERT_EQ("chrome://settings/contentExceptions#notifications", url); 408 ASSERT_EQ("chrome://settings/contentExceptions#notifications", url);
376 } 409 }
377 410
378 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, 411 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
379 WebNotificationOptionsVibrationPattern) { 412 WebNotificationOptionsVibrationPattern) {
380 ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest()); 413 ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
(...skipping 10 matching lines...) Expand all
391 EXPECT_EQ("Contents", base::UTF16ToUTF8(notification.message())); 424 EXPECT_EQ("Contents", base::UTF16ToUTF8(notification.message()));
392 425
393 EXPECT_THAT(notification.vibration_pattern(), 426 EXPECT_THAT(notification.vibration_pattern(),
394 testing::ElementsAreArray(kNotificationVibrationPattern)); 427 testing::ElementsAreArray(kNotificationVibrationPattern));
395 } 428 }
396 429
397 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, 430 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
398 CloseDisplayedPersistentNotification) { 431 CloseDisplayedPersistentNotification) {
399 ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest()); 432 ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
400 433
434 // Expect 5 engagement for notification permission and 0.5 for the navigation.
435 EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(GetLastCommittedURL()));
436
401 std::string script_result; 437 std::string script_result;
402 ASSERT_TRUE(RunScript("DisplayPersistentNotification('action_close')", 438 ASSERT_TRUE(RunScript("DisplayPersistentNotification('action_close')",
403 &script_result)); 439 &script_result));
404 EXPECT_EQ("ok", script_result); 440 EXPECT_EQ("ok", script_result);
405 441
406 ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); 442 ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
407 443
408 const Notification& notification = ui_manager()->GetNotificationAt(0); 444 const Notification& notification = ui_manager()->GetNotificationAt(0);
409 notification.delegate()->Click(); 445 notification.delegate()->Click();
410 446
447 // We have interacted with the button, so expect a notification bump.
448 EXPECT_DOUBLE_EQ(6.5, GetEngagementScore(GetLastCommittedURL()));
449
411 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result)); 450 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
412 EXPECT_EQ("action_close", script_result); 451 EXPECT_EQ("action_close", script_result);
413 452
414 ASSERT_EQ(0u, ui_manager()->GetNotificationCount()); 453 ASSERT_EQ(0u, ui_manager()->GetNotificationCount());
415 } 454 }
416 455
417 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, 456 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
418 UserClosesPersistentNotification) { 457 UserClosesPersistentNotification) {
419 ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest()); 458 ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
420 459
460 // Expect 5 engagement for notification permission and 0.5 for the navigation.
461 EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(GetLastCommittedURL()));
462
421 std::string script_result; 463 std::string script_result;
422 ASSERT_TRUE( 464 ASSERT_TRUE(
423 RunScript("DisplayPersistentNotification('close_test')", &script_result)); 465 RunScript("DisplayPersistentNotification('close_test')", &script_result));
424 EXPECT_EQ("ok", script_result); 466 EXPECT_EQ("ok", script_result);
425 467
426 ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); 468 ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
427 const Notification& notification = ui_manager()->GetNotificationAt(0); 469 const Notification& notification = ui_manager()->GetNotificationAt(0);
428 notification.delegate()->Close(true /* by_user */); 470 notification.delegate()->Close(true /* by_user */);
429 471
472 // The user closed this notification so the score should remain the same.
473 EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(GetLastCommittedURL()));
474
430 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result)); 475 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
431 EXPECT_EQ("closing notification: close_test", script_result); 476 EXPECT_EQ("closing notification: close_test", script_result);
432 } 477 }
433 478
434 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, 479 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
435 TestDisplayOriginContextMessage) { 480 TestDisplayOriginContextMessage) {
436 RequestAndAcceptPermission(); 481 RequestAndAcceptPermission();
437 482
438 // Creates a simple notification. 483 // Creates a simple notification.
439 std::string script_result; 484 std::string script_result;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 588
544 EXPECT_EQ("Blob Title", base::UTF16ToUTF8(notification.title())); 589 EXPECT_EQ("Blob Title", base::UTF16ToUTF8(notification.title()));
545 EXPECT_EQ(kIconWidth, notification.icon().Width()); 590 EXPECT_EQ(kIconWidth, notification.icon().Width());
546 EXPECT_EQ(kIconHeight, notification.icon().Height()); 591 EXPECT_EQ(kIconHeight, notification.icon().Height());
547 } 592 }
548 593
549 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, 594 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
550 DisplayPersistentNotificationWithActionButtons) { 595 DisplayPersistentNotificationWithActionButtons) {
551 ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest()); 596 ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
552 597
598 // Expect 5 engagement for notification permission and 0.5 for the navigation.
599 EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(GetLastCommittedURL()));
600
553 std::string script_result; 601 std::string script_result;
554 ASSERT_TRUE(RunScript("DisplayPersistentNotificationWithActionButtons()", 602 ASSERT_TRUE(RunScript("DisplayPersistentNotificationWithActionButtons()",
555 &script_result)); 603 &script_result));
556 EXPECT_EQ("ok", script_result); 604 EXPECT_EQ("ok", script_result);
557 ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); 605 ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
558 606
559 const Notification& notification = ui_manager()->GetNotificationAt(0); 607 const Notification& notification = ui_manager()->GetNotificationAt(0);
560 ASSERT_EQ(2u, notification.buttons().size()); 608 ASSERT_EQ(2u, notification.buttons().size());
561 EXPECT_EQ("actionTitle1", base::UTF16ToUTF8(notification.buttons()[0].title)); 609 EXPECT_EQ("actionTitle1", base::UTF16ToUTF8(notification.buttons()[0].title));
562 EXPECT_EQ("actionTitle2", base::UTF16ToUTF8(notification.buttons()[1].title)); 610 EXPECT_EQ("actionTitle2", base::UTF16ToUTF8(notification.buttons()[1].title));
563 611
564 notification.delegate()->ButtonClick(0); 612 notification.delegate()->ButtonClick(0);
565 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result)); 613 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
566 EXPECT_EQ("action_button_click actionId1", script_result); 614 EXPECT_EQ("action_button_click actionId1", script_result);
615 EXPECT_DOUBLE_EQ(6.5, GetEngagementScore(GetLastCommittedURL()));
567 616
568 notification.delegate()->ButtonClick(1); 617 notification.delegate()->ButtonClick(1);
569 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result)); 618 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
570 EXPECT_EQ("action_button_click actionId2", script_result); 619 EXPECT_EQ("action_button_click actionId2", script_result);
620 EXPECT_DOUBLE_EQ(7.5, GetEngagementScore(GetLastCommittedURL()));
571 } 621 }
572 622
573 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, 623 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
574 DisplayPersistentNotificationWithReplyButton) { 624 DisplayPersistentNotificationWithReplyButton) {
575 ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest()); 625 ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
576 626
627 // Expect 5 engagement for notification permission and 0.5 for the navigation.
628 EXPECT_DOUBLE_EQ(5.5, GetEngagementScore(GetLastCommittedURL()));
629
577 std::string script_result; 630 std::string script_result;
578 ASSERT_TRUE(RunScript("DisplayPersistentNotificationWithReplyButton()", 631 ASSERT_TRUE(RunScript("DisplayPersistentNotificationWithReplyButton()",
579 &script_result)); 632 &script_result));
580 EXPECT_EQ("ok", script_result); 633 EXPECT_EQ("ok", script_result);
581 ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); 634 ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
582 635
583 const Notification& notification = ui_manager()->GetNotificationAt(0); 636 const Notification& notification = ui_manager()->GetNotificationAt(0);
584 ASSERT_EQ(1u, notification.buttons().size()); 637 ASSERT_EQ(1u, notification.buttons().size());
585 EXPECT_EQ("actionTitle1", base::UTF16ToUTF8(notification.buttons()[0].title)); 638 EXPECT_EQ("actionTitle1", base::UTF16ToUTF8(notification.buttons()[0].title));
586 639
587 notification.delegate()->ButtonClickWithReply(0, base::ASCIIToUTF16("hello")); 640 notification.delegate()->ButtonClickWithReply(0, base::ASCIIToUTF16("hello"));
588 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result)); 641 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
589 EXPECT_EQ("action_button_click actionId1 hello", script_result); 642 EXPECT_EQ("action_button_click actionId1 hello", script_result);
643 EXPECT_DOUBLE_EQ(6.5, GetEngagementScore(GetLastCommittedURL()));
590 } 644 }
591 645
592 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, 646 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
593 GetDisplayedNotifications) { 647 GetDisplayedNotifications) {
594 RequestAndAcceptPermission(); 648 RequestAndAcceptPermission();
595 649
596 std::string script_result; 650 std::string script_result;
597 std::string script_message; 651 std::string script_message;
598 ASSERT_TRUE(RunScript("DisplayNonPersistentNotification('NonPersistent')", 652 ASSERT_TRUE(RunScript("DisplayNonPersistentNotification('NonPersistent')",
599 &script_result)); 653 &script_result));
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 RunScript("DisplayPersistentAllOptionsNotification()", &script_result)); 841 RunScript("DisplayPersistentAllOptionsNotification()", &script_result));
788 EXPECT_EQ("ok", script_result); 842 EXPECT_EQ("ok", script_result);
789 843
790 ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); 844 ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
791 const Notification& notification = ui_manager()->GetNotificationAt(0); 845 const Notification& notification = ui_manager()->GetNotificationAt(0);
792 846
793 // Since the kNotificationContentImage kill switch has disabled images, the 847 // Since the kNotificationContentImage kill switch has disabled images, the
794 // notification should be shown without an image. 848 // notification should be shown without an image.
795 EXPECT_TRUE(notification.image().IsEmpty()); 849 EXPECT_TRUE(notification.image().IsEmpty());
796 } 850 }
OLDNEW
« no previous file with comments | « chrome/browser/notifications/platform_notification_service_impl.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698