OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <vector> | 5 #include <vector> |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 | 106 |
107 DISALLOW_COPY_AND_ASSIGN(AppBannerManagerTest); | 107 DISALLOW_COPY_AND_ASSIGN(AppBannerManagerTest); |
108 }; | 108 }; |
109 | 109 |
110 class AppBannerManagerBrowserTest : public InProcessBrowserTest { | 110 class AppBannerManagerBrowserTest : public InProcessBrowserTest { |
111 public: | 111 public: |
112 void SetUpOnMainThread() override { | 112 void SetUpOnMainThread() override { |
113 AppBannerSettingsHelper::SetTotalEngagementToTrigger(10); | 113 AppBannerSettingsHelper::SetTotalEngagementToTrigger(10); |
114 SiteEngagementScore::SetParamValuesForTesting(); | 114 SiteEngagementScore::SetParamValuesForTesting(); |
115 ASSERT_TRUE(embedded_test_server()->Start()); | 115 ASSERT_TRUE(embedded_test_server()->Start()); |
| 116 |
| 117 // Make sure app banners are disabled in the browser, otherwise they will |
| 118 // interfere with the test. |
| 119 feature_list_.InitAndDisableFeature(features::kAppBanners); |
116 InProcessBrowserTest::SetUpOnMainThread(); | 120 InProcessBrowserTest::SetUpOnMainThread(); |
117 } | 121 } |
118 | 122 |
119 void SetUpCommandLine(base::CommandLine* command_line) override { | |
120 // Make sure app banners are disabled in the browser, otherwise they will | |
121 // interfere with the test. | |
122 command_line->AppendSwitch(switches::kDisableAddToShelf); | |
123 } | |
124 | |
125 protected: | 123 protected: |
126 // Returns a test server URL to page |page_url| with |manifest_url| injected | 124 // Returns a test server URL to page |page_url| with |manifest_url| injected |
127 // as the manifest tag. | 125 // as the manifest tag. |
128 std::string GetURLOfPageWithManifest(const std::string& page_url, | 126 std::string GetURLOfPageWithManifest(const std::string& page_url, |
129 const std::string& manifest_url) { | 127 const std::string& manifest_url) { |
130 return page_url + embedded_test_server()->GetURL(manifest_url).spec(); | 128 return page_url + embedded_test_server()->GetURL(manifest_url).spec(); |
131 } | 129 } |
132 | 130 |
133 // Returns a test server URL to a page controlled by a service worker with | 131 // Returns a test server URL to a page controlled by a service worker with |
134 // |manifest_url| injected as the manifest tag. | 132 // |manifest_url| injected as the manifest tag. |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 histograms.ExpectTotalCount(banners::kMinutesHistogram, 0); | 213 histograms.ExpectTotalCount(banners::kMinutesHistogram, 0); |
216 histograms.ExpectTotalCount(banners::kInstallableStatusCodeHistogram, 0); | 214 histograms.ExpectTotalCount(banners::kInstallableStatusCodeHistogram, 0); |
217 } else { | 215 } else { |
218 histograms.ExpectTotalCount(banners::kMinutesHistogram, | 216 histograms.ExpectTotalCount(banners::kMinutesHistogram, |
219 (manager->will_show() ? 1 : 0)); | 217 (manager->will_show() ? 1 : 0)); |
220 histograms.ExpectUniqueSample(banners::kInstallableStatusCodeHistogram, | 218 histograms.ExpectUniqueSample(banners::kInstallableStatusCodeHistogram, |
221 expected_code_for_histogram, 1); | 219 expected_code_for_histogram, 1); |
222 EXPECT_FALSE(manager->need_to_log_status()); | 220 EXPECT_FALSE(manager->need_to_log_status()); |
223 } | 221 } |
224 } | 222 } |
| 223 |
| 224 base::test::ScopedFeatureList feature_list_; |
225 }; | 225 }; |
226 | 226 |
227 IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, WebAppBannerCreated) { | 227 IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, WebAppBannerCreated) { |
228 std::unique_ptr<AppBannerManagerTest> manager( | 228 std::unique_ptr<AppBannerManagerTest> manager( |
229 CreateAppBannerManager(browser())); | 229 CreateAppBannerManager(browser())); |
230 std::vector<double> engagement_scores{0, 10}; | 230 std::vector<double> engagement_scores{0, 10}; |
231 RunBannerTest(browser(), manager.get(), "/banners/manifest_test_page.html", | 231 RunBannerTest(browser(), manager.get(), "/banners/manifest_test_page.html", |
232 engagement_scores, SHOWING_WEB_APP_BANNER, true); | 232 engagement_scores, SHOWING_WEB_APP_BANNER, true); |
233 } | 233 } |
234 | 234 |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 CreateAppBannerManager(incognito_browser)); | 386 CreateAppBannerManager(incognito_browser)); |
387 std::vector<double> engagement_scores{10}; | 387 std::vector<double> engagement_scores{10}; |
388 RunBannerTest(incognito_browser, manager.get(), | 388 RunBannerTest(incognito_browser, manager.get(), |
389 "/banners/manifest_test_page.html", engagement_scores, | 389 "/banners/manifest_test_page.html", engagement_scores, |
390 IN_INCOGNITO, false); | 390 IN_INCOGNITO, false); |
391 } | 391 } |
392 | 392 |
393 IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, | 393 IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, |
394 CheckOnLoadWithSufficientEngagement) { | 394 CheckOnLoadWithSufficientEngagement) { |
395 base::test::ScopedFeatureList feature_list; | 395 base::test::ScopedFeatureList feature_list; |
396 feature_list.InitAndEnableFeature( | 396 feature_list.InitWithFeatures({features::kCheckInstallabilityForBannerOnLoad}, |
397 features::kCheckInstallabilityForBannerOnLoad); | 397 {features::kAppBanners}); |
398 std::unique_ptr<AppBannerManagerTest> manager( | 398 std::unique_ptr<AppBannerManagerTest> manager( |
399 CreateAppBannerManager(browser())); | 399 CreateAppBannerManager(browser())); |
400 std::vector<double> engagement_scores{10}; | 400 std::vector<double> engagement_scores{10}; |
401 RunBannerTest(browser(), manager.get(), "/banners/manifest_test_page.html", | 401 RunBannerTest(browser(), manager.get(), "/banners/manifest_test_page.html", |
402 engagement_scores, SHOWING_WEB_APP_BANNER, true); | 402 engagement_scores, SHOWING_WEB_APP_BANNER, true); |
403 } | 403 } |
404 | 404 |
405 IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, | 405 IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, |
406 CheckOnLoadWithSufficientEngagementCancelDirect) { | 406 CheckOnLoadWithSufficientEngagementCancelDirect) { |
407 base::test::ScopedFeatureList feature_list; | 407 base::test::ScopedFeatureList feature_list; |
408 feature_list.InitAndEnableFeature( | 408 feature_list.InitWithFeatures({features::kCheckInstallabilityForBannerOnLoad}, |
409 features::kCheckInstallabilityForBannerOnLoad); | 409 {features::kAppBanners}); |
410 std::unique_ptr<AppBannerManagerTest> manager( | 410 std::unique_ptr<AppBannerManagerTest> manager( |
411 CreateAppBannerManager(browser())); | 411 CreateAppBannerManager(browser())); |
412 std::vector<double> engagement_scores{10}; | 412 std::vector<double> engagement_scores{10}; |
413 RunBannerTest(browser(), manager.get(), "/banners/cancel_test_page.html", | 413 RunBannerTest(browser(), manager.get(), "/banners/cancel_test_page.html", |
414 engagement_scores, RENDERER_CANCELLED, false); | 414 engagement_scores, RENDERER_CANCELLED, false); |
415 } | 415 } |
416 | 416 |
417 IN_PROC_BROWSER_TEST_F( | 417 IN_PROC_BROWSER_TEST_F( |
418 AppBannerManagerBrowserTest, | 418 AppBannerManagerBrowserTest, |
419 CheckOnLoadWithSufficientEngagementCancelBannerAfterPromptInHandler) { | 419 CheckOnLoadWithSufficientEngagementCancelBannerAfterPromptInHandler) { |
420 base::test::ScopedFeatureList feature_list; | 420 base::test::ScopedFeatureList feature_list; |
421 feature_list.InitAndEnableFeature( | 421 feature_list.InitWithFeatures({features::kCheckInstallabilityForBannerOnLoad}, |
422 features::kCheckInstallabilityForBannerOnLoad); | 422 {features::kAppBanners}); |
423 std::unique_ptr<AppBannerManagerTest> manager( | 423 std::unique_ptr<AppBannerManagerTest> manager( |
424 CreateAppBannerManager(browser())); | 424 CreateAppBannerManager(browser())); |
425 std::vector<double> engagement_scores{10}; | 425 std::vector<double> engagement_scores{10}; |
426 RunBannerTest(browser(), manager.get(), | 426 RunBannerTest(browser(), manager.get(), |
427 "/banners/prompt_in_handler_test_page.html", engagement_scores, | 427 "/banners/prompt_in_handler_test_page.html", engagement_scores, |
428 SHOWING_WEB_APP_BANNER, true); | 428 SHOWING_WEB_APP_BANNER, true); |
429 std::string cancel_test_page_url = | 429 std::string cancel_test_page_url = |
430 GetURLOfPageWithManifest("/banners/cancel_test_page.html?manifest=", | 430 GetURLOfPageWithManifest("/banners/cancel_test_page.html?manifest=", |
431 "/banners/manifest_different_start_url.json"); | 431 "/banners/manifest_different_start_url.json"); |
432 RunBannerTest(browser(), manager.get(), cancel_test_page_url, | 432 RunBannerTest(browser(), manager.get(), cancel_test_page_url, |
433 engagement_scores, RENDERER_CANCELLED, false); | 433 engagement_scores, RENDERER_CANCELLED, false); |
434 } | 434 } |
435 | 435 |
436 IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, | 436 IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, |
437 CheckOnLoadWithoutSufficientEngagement) { | 437 CheckOnLoadWithoutSufficientEngagement) { |
438 AppBannerSettingsHelper::SetTotalEngagementToTrigger(1); | 438 AppBannerSettingsHelper::SetTotalEngagementToTrigger(1); |
439 SiteEngagementService* service = | 439 SiteEngagementService* service = |
440 SiteEngagementService::Get(browser()->profile()); | 440 SiteEngagementService::Get(browser()->profile()); |
441 base::test::ScopedFeatureList feature_list; | 441 base::test::ScopedFeatureList feature_list; |
442 feature_list.InitAndEnableFeature( | 442 feature_list.InitWithFeatures({features::kCheckInstallabilityForBannerOnLoad}, |
443 features::kCheckInstallabilityForBannerOnLoad); | 443 {features::kAppBanners}); |
444 std::unique_ptr<AppBannerManagerTest> manager( | 444 std::unique_ptr<AppBannerManagerTest> manager( |
445 CreateAppBannerManager(browser())); | 445 CreateAppBannerManager(browser())); |
446 | 446 |
447 base::HistogramTester histograms; | 447 base::HistogramTester histograms; |
448 GURL test_url = | 448 GURL test_url = |
449 embedded_test_server()->GetURL("/banners/manifest_test_page.html"); | 449 embedded_test_server()->GetURL("/banners/manifest_test_page.html"); |
450 service->ResetBaseScoreForURL(test_url, 0); | 450 service->ResetBaseScoreForURL(test_url, 0); |
451 | 451 |
452 // First run through: expect the manager to end up stopped in the pending | 452 // First run through: expect the manager to end up stopped in the pending |
453 // state, without showing a banner. | 453 // state, without showing a banner. |
(...skipping 27 matching lines...) Expand all Loading... |
481 EXPECT_FALSE(manager->need_to_log_status()); | 481 EXPECT_FALSE(manager->need_to_log_status()); |
482 EXPECT_TRUE(manager->is_complete()); | 482 EXPECT_TRUE(manager->is_complete()); |
483 | 483 |
484 histograms.ExpectTotalCount(banners::kMinutesHistogram, 1); | 484 histograms.ExpectTotalCount(banners::kMinutesHistogram, 1); |
485 histograms.ExpectUniqueSample(banners::kInstallableStatusCodeHistogram, | 485 histograms.ExpectUniqueSample(banners::kInstallableStatusCodeHistogram, |
486 SHOWING_WEB_APP_BANNER, 1); | 486 SHOWING_WEB_APP_BANNER, 1); |
487 } | 487 } |
488 | 488 |
489 IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, CheckOnLoadThenNavigate) { | 489 IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, CheckOnLoadThenNavigate) { |
490 base::test::ScopedFeatureList feature_list; | 490 base::test::ScopedFeatureList feature_list; |
491 feature_list.InitAndEnableFeature( | 491 feature_list.InitWithFeatures({features::kCheckInstallabilityForBannerOnLoad}, |
492 features::kCheckInstallabilityForBannerOnLoad); | 492 {features::kAppBanners}); |
493 std::unique_ptr<AppBannerManagerTest> manager( | 493 std::unique_ptr<AppBannerManagerTest> manager( |
494 CreateAppBannerManager(browser())); | 494 CreateAppBannerManager(browser())); |
495 | 495 |
496 base::HistogramTester histograms; | 496 base::HistogramTester histograms; |
497 GURL test_url = | 497 GURL test_url = |
498 embedded_test_server()->GetURL("/banners/manifest_test_page.html"); | 498 embedded_test_server()->GetURL("/banners/manifest_test_page.html"); |
499 | 499 |
500 // First run through: expect the manager to end up stopped in the pending | 500 // First run through: expect the manager to end up stopped in the pending |
501 // state, without showing a banner. | 501 // state, without showing a banner. |
502 { | 502 { |
(...skipping 21 matching lines...) Expand all Loading... |
524 EXPECT_FALSE(manager->will_show()); | 524 EXPECT_FALSE(manager->will_show()); |
525 EXPECT_FALSE(manager->is_active()); | 525 EXPECT_FALSE(manager->is_active()); |
526 EXPECT_FALSE(manager->need_to_log_status()); | 526 EXPECT_FALSE(manager->need_to_log_status()); |
527 | 527 |
528 histograms.ExpectTotalCount(banners::kMinutesHistogram, 0); | 528 histograms.ExpectTotalCount(banners::kMinutesHistogram, 0); |
529 histograms.ExpectUniqueSample(banners::kInstallableStatusCodeHistogram, | 529 histograms.ExpectUniqueSample(banners::kInstallableStatusCodeHistogram, |
530 INSUFFICIENT_ENGAGEMENT, 1); | 530 INSUFFICIENT_ENGAGEMENT, 1); |
531 } | 531 } |
532 | 532 |
533 } // namespace banners | 533 } // namespace banners |
OLD | NEW |