| 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 |