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