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

Side by Side Diff: chrome/browser/installable/installable_manager_browsertest.cc

Issue 2942513002: Allow banners to trigger on sites which don't register a service worker onload. (Closed)
Patch Set: Fix windows compile Created 3 years, 6 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 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 "chrome/browser/installable/installable_manager.h" 5 #include "chrome/browser/installable/installable_manager.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/threading/thread_task_runner_handle.h" 9 #include "base/threading/thread_task_runner_handle.h"
10 #include "chrome/browser/ui/browser.h" 10 #include "chrome/browser/ui/browser.h"
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 ManagerBeginsInEmptyState) { 207 ManagerBeginsInEmptyState) {
208 // Ensure that the InstallableManager starts off with everything null. 208 // Ensure that the InstallableManager starts off with everything null.
209 InstallableManager* manager = GetManager(); 209 InstallableManager* manager = GetManager();
210 210
211 EXPECT_TRUE(manager->manifest().IsEmpty()); 211 EXPECT_TRUE(manager->manifest().IsEmpty());
212 EXPECT_TRUE(manager->manifest_url().is_empty()); 212 EXPECT_TRUE(manager->manifest_url().is_empty());
213 EXPECT_TRUE(manager->icons_.empty()); 213 EXPECT_TRUE(manager->icons_.empty());
214 EXPECT_FALSE(manager->is_installable()); 214 EXPECT_FALSE(manager->is_installable());
215 215
216 EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error()); 216 EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error());
217 EXPECT_EQ(NO_ERROR_DETECTED, manager->installable_error()); 217 EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error());
218 EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error());
218 EXPECT_TRUE(manager->tasks_.empty()); 219 EXPECT_TRUE(manager->tasks_.empty());
219 } 220 }
220 221
221 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckNoManifest) { 222 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckNoManifest) {
222 // Ensure that a page with no manifest returns the appropriate error and with 223 // Ensure that a page with no manifest returns the appropriate error and with
223 // null fields for everything. 224 // null fields for everything.
224 base::RunLoop run_loop; 225 base::RunLoop run_loop;
225 std::unique_ptr<CallbackTester> tester( 226 std::unique_ptr<CallbackTester> tester(
226 new CallbackTester(run_loop.QuitClosure())); 227 new CallbackTester(run_loop.QuitClosure()));
227 228
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 // Verify that the returned state matches manager internal state. 537 // Verify that the returned state matches manager internal state.
537 InstallableManager* manager = GetManager(); 538 InstallableManager* manager = GetManager();
538 539
539 EXPECT_FALSE(manager->manifest().IsEmpty()); 540 EXPECT_FALSE(manager->manifest().IsEmpty());
540 EXPECT_FALSE(manager->manifest_url().is_empty()); 541 EXPECT_FALSE(manager->manifest_url().is_empty());
541 EXPECT_TRUE(manager->is_installable()); 542 EXPECT_TRUE(manager->is_installable());
542 EXPECT_EQ(1u, manager->icons_.size()); 543 EXPECT_EQ(1u, manager->icons_.size());
543 EXPECT_FALSE((manager->icon_url(kPrimaryIconParams).is_empty())); 544 EXPECT_FALSE((manager->icon_url(kPrimaryIconParams).is_empty()));
544 EXPECT_NE(nullptr, (manager->icon(kPrimaryIconParams))); 545 EXPECT_NE(nullptr, (manager->icon(kPrimaryIconParams)));
545 EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error()); 546 EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error());
546 EXPECT_EQ(NO_ERROR_DETECTED, manager->installable_error()); 547 EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error());
548 EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error());
547 EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(kPrimaryIconParams))); 549 EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(kPrimaryIconParams)));
548 EXPECT_TRUE(manager->tasks_.empty()); 550 EXPECT_TRUE(manager->tasks_.empty());
549 } 551 }
550 552
551 // Request everything except badge icon again without navigating away. This 553 // Request everything except badge icon again without navigating away. This
552 // should work fine. 554 // should work fine.
553 { 555 {
554 base::RunLoop run_loop; 556 base::RunLoop run_loop;
555 std::unique_ptr<CallbackTester> tester( 557 std::unique_ptr<CallbackTester> tester(
556 new CallbackTester(run_loop.QuitClosure())); 558 new CallbackTester(run_loop.QuitClosure()));
(...skipping 15 matching lines...) Expand all
572 // Verify that the returned state matches manager internal state. 574 // Verify that the returned state matches manager internal state.
573 InstallableManager* manager = GetManager(); 575 InstallableManager* manager = GetManager();
574 576
575 EXPECT_FALSE(manager->manifest().IsEmpty()); 577 EXPECT_FALSE(manager->manifest().IsEmpty());
576 EXPECT_FALSE(manager->manifest_url().is_empty()); 578 EXPECT_FALSE(manager->manifest_url().is_empty());
577 EXPECT_TRUE(manager->is_installable()); 579 EXPECT_TRUE(manager->is_installable());
578 EXPECT_EQ(1u, manager->icons_.size()); 580 EXPECT_EQ(1u, manager->icons_.size());
579 EXPECT_FALSE((manager->icon_url(kPrimaryIconParams).is_empty())); 581 EXPECT_FALSE((manager->icon_url(kPrimaryIconParams).is_empty()));
580 EXPECT_NE(nullptr, (manager->icon(kPrimaryIconParams))); 582 EXPECT_NE(nullptr, (manager->icon(kPrimaryIconParams)));
581 EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error()); 583 EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error());
582 EXPECT_EQ(NO_ERROR_DETECTED, manager->installable_error()); 584 EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error());
585 EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error());
583 EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(kPrimaryIconParams))); 586 EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(kPrimaryIconParams)));
584 EXPECT_TRUE(manager->tasks_.empty()); 587 EXPECT_TRUE(manager->tasks_.empty());
585 } 588 }
586 589
587 { 590 {
588 // Check that a subsequent navigation resets state. 591 // Check that a subsequent navigation resets state.
589 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); 592 ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
590 InstallableManager* manager = GetManager(); 593 InstallableManager* manager = GetManager();
591 594
592 EXPECT_TRUE(manager->manifest().IsEmpty()); 595 EXPECT_TRUE(manager->manifest().IsEmpty());
593 EXPECT_TRUE(manager->manifest_url().is_empty()); 596 EXPECT_TRUE(manager->manifest_url().is_empty());
594 EXPECT_FALSE(manager->is_installable()); 597 EXPECT_FALSE(manager->is_installable());
595 EXPECT_TRUE(manager->icons_.empty()); 598 EXPECT_TRUE(manager->icons_.empty());
596 EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error()); 599 EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error());
597 EXPECT_EQ(NO_ERROR_DETECTED, manager->installable_error()); 600 EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error());
601 EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error());
598 EXPECT_TRUE(manager->tasks_.empty()); 602 EXPECT_TRUE(manager->tasks_.empty());
599 } 603 }
600 } 604 }
601 605
602 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckWebappInIframe) { 606 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckWebappInIframe) {
603 base::RunLoop run_loop; 607 base::RunLoop run_loop;
604 std::unique_ptr<CallbackTester> tester( 608 std::unique_ptr<CallbackTester> tester(
605 new CallbackTester(run_loop.QuitClosure())); 609 new CallbackTester(run_loop.QuitClosure()));
606 610
607 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(), 611 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(),
608 "/banners/iframe_test_page.html"); 612 "/banners/iframe_test_page.html");
609 run_loop.Run(); 613 run_loop.Run();
610 614
611 // The installable manager should only retrieve items in the main frame; 615 // The installable manager should only retrieve items in the main frame;
612 // everything should be empty here. 616 // everything should be empty here.
613 EXPECT_TRUE(tester->manifest().IsEmpty()); 617 EXPECT_TRUE(tester->manifest().IsEmpty());
614 EXPECT_TRUE(tester->manifest_url().is_empty()); 618 EXPECT_TRUE(tester->manifest_url().is_empty());
615 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 619 EXPECT_TRUE(tester->primary_icon_url().is_empty());
616 EXPECT_EQ(nullptr, tester->primary_icon()); 620 EXPECT_EQ(nullptr, tester->primary_icon());
617 EXPECT_FALSE(tester->is_installable()); 621 EXPECT_FALSE(tester->is_installable());
618 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 622 EXPECT_TRUE(tester->badge_icon_url().is_empty());
619 EXPECT_EQ(nullptr, tester->badge_icon()); 623 EXPECT_EQ(nullptr, tester->badge_icon());
620 EXPECT_EQ(NO_MANIFEST, tester->error_code()); 624 EXPECT_EQ(NO_MANIFEST, tester->error_code());
621 EXPECT_EQ(GetStatus(), 625 EXPECT_EQ(GetStatus(),
622 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP); 626 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP);
623 } 627 }
624 628
625 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, 629 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckLazyServiceWorker) {
626 CheckPageWithManifestAndNoServiceWorker) {
benwells 2017/06/14 11:39:06 Is the no service worker case tested at all?
dominickn 2017/06/15 04:16:07 I can restore the no service worker test with the
627 // Just fetch the manifest. This should have no error.
628 { 630 {
629 base::RunLoop run_loop; 631 base::RunLoop run_loop;
630 std::unique_ptr<CallbackTester> tester( 632 std::unique_ptr<CallbackTester> tester(
631 new CallbackTester(run_loop.QuitClosure())); 633 new CallbackTester(run_loop.QuitClosure()));
632 634
633 NavigateAndRunInstallableManager( 635 NavigateAndRunInstallableManager(
634 tester.get(), GetManifestParams(), 636 tester.get(), GetWebAppParams(),
635 "/banners/manifest_no_service_worker.html"); 637 "/banners/lazy_service_worker_test_page.html");
636 run_loop.Run(); 638 run_loop.Run();
637 639
638 EXPECT_FALSE(tester->manifest().IsEmpty()); 640 EXPECT_FALSE(tester->manifest().IsEmpty());
639 EXPECT_FALSE(tester->manifest_url().is_empty()); 641 EXPECT_FALSE(tester->manifest_url().is_empty());
640 642 EXPECT_FALSE(tester->primary_icon_url().is_empty());
641 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 643 EXPECT_NE(nullptr, tester->primary_icon());
642 EXPECT_EQ(nullptr, tester->primary_icon()); 644 EXPECT_TRUE(tester->is_installable());
643 EXPECT_FALSE(tester->is_installable());
644 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 645 EXPECT_TRUE(tester->badge_icon_url().is_empty());
645 EXPECT_EQ(nullptr, tester->badge_icon()); 646 EXPECT_EQ(nullptr, tester->badge_icon());
646 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 647 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
647 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_COMPLETED); 648 EXPECT_EQ(GetStatus(),
649 InstallabilityCheckStatus::COMPLETE_PROGRESSIVE_WEB_APP);
650
651 // Verify that the returned state matches manager internal state.
652 InstallableManager* manager = GetManager();
653
654 EXPECT_FALSE(manager->manifest().IsEmpty());
655 EXPECT_FALSE(manager->manifest_url().is_empty());
656 EXPECT_TRUE(manager->is_installable());
657 EXPECT_EQ(1u, manager->icons_.size());
658 EXPECT_FALSE((manager->icon_url(kPrimaryIconParams).is_empty()));
659 EXPECT_NE(nullptr, (manager->icon(kPrimaryIconParams)));
660 EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error());
661 EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error());
662 EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error());
663 EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(kPrimaryIconParams)));
664 EXPECT_TRUE(manager->tasks_.empty());
648 } 665 }
649 666
650 // Fetch the full criteria should fail.
651 { 667 {
652 base::RunLoop run_loop; 668 // Check that a subsequent navigation resets state.
653 std::unique_ptr<CallbackTester> tester( 669 ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
654 new CallbackTester(run_loop.QuitClosure())); 670 InstallableManager* manager = GetManager();
655 671
656 RunInstallableManager(tester.get(), GetWebAppParams()); 672 EXPECT_TRUE(manager->manifest().IsEmpty());
657 run_loop.Run(); 673 EXPECT_TRUE(manager->manifest_url().is_empty());
658 674 EXPECT_FALSE(manager->is_installable());
659 EXPECT_FALSE(tester->manifest().IsEmpty()); 675 EXPECT_TRUE(manager->icons_.empty());
660 EXPECT_FALSE(tester->manifest_url().is_empty()); 676 EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error());
661 677 EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error());
662 EXPECT_FALSE(tester->primary_icon_url().is_empty()); 678 EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error());
663 EXPECT_NE(nullptr, tester->primary_icon()); 679 EXPECT_TRUE(manager->tasks_.empty());
664 EXPECT_FALSE(tester->is_installable());
665 EXPECT_TRUE(tester->badge_icon_url().is_empty());
666 EXPECT_EQ(nullptr, tester->badge_icon());
667 EXPECT_EQ(NO_MATCHING_SERVICE_WORKER, tester->error_code());
668 EXPECT_EQ(GetStatus(),
669 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP);
670 } 680 }
671 } 681 }
672 682
673 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, 683 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest,
674 CheckPageWithNoServiceWorkerFetchHandler) { 684 CheckPageWithNoServiceWorkerFetchHandler) {
675 base::RunLoop run_loop; 685 base::RunLoop run_loop;
676 std::unique_ptr<CallbackTester> tester( 686 std::unique_ptr<CallbackTester> tester(
677 new CallbackTester(run_loop.QuitClosure())); 687 new CallbackTester(run_loop.QuitClosure()));
678 688
679 NavigateAndRunInstallableManager( 689 NavigateAndRunInstallableManager(
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 CheckNestedCallsToGetData) { 851 CheckNestedCallsToGetData) {
842 // Verify that we can call GetData while in a callback from GetData. 852 // Verify that we can call GetData while in a callback from GetData.
843 base::RunLoop run_loop; 853 base::RunLoop run_loop;
844 InstallableParams params = GetWebAppParams(); 854 InstallableParams params = GetWebAppParams();
845 std::unique_ptr<NestedCallbackTester> tester( 855 std::unique_ptr<NestedCallbackTester> tester(
846 new NestedCallbackTester(GetManager(), params, run_loop.QuitClosure())); 856 new NestedCallbackTester(GetManager(), params, run_loop.QuitClosure()));
847 857
848 tester->Run(); 858 tester->Run();
849 run_loop.Run(); 859 run_loop.Run();
850 } 860 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698