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

Side by Side Diff: chrome/browser/extensions/extension_sorting_unittest.cc

Issue 10969044: cros: Implement default app ordering. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix clang Created 8 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/extensions/extension_sorting.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/extensions/extension_sorting.h"
6
7 #include <map>
8
5 #include "chrome/browser/extensions/extension_prefs_unittest.h" 9 #include "chrome/browser/extensions/extension_prefs_unittest.h"
6 #include "chrome/browser/extensions/extension_sorting.h"
7 #include "chrome/common/extensions/extension_manifest_constants.h" 10 #include "chrome/common/extensions/extension_manifest_constants.h"
8 #include "sync/api/string_ordinal.h" 11 #include "sync/api/string_ordinal.h"
9 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
10 13
11 using extensions::Extension; 14 using extensions::Extension;
12 15
13 namespace keys = extension_manifest_keys; 16 namespace keys = extension_manifest_keys;
14 17
15 class ExtensionSortingTest : public extensions::ExtensionPrefsTest { 18 class ExtensionSortingTest : public extensions::ExtensionPrefsTest {
16 protected: 19 protected:
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 extension_sorting()->CreateFirstAppLaunchOrdinal(next_page))); 92 extension_sorting()->CreateFirstAppLaunchOrdinal(next_page)));
90 } 93 }
91 94
92 private: 95 private:
93 scoped_refptr<Extension> extension_; 96 scoped_refptr<Extension> extension_;
94 }; 97 };
95 TEST_F(ExtensionSortingAppLaunchOrdinal, ExtensionSortingAppLaunchOrdinal) {} 98 TEST_F(ExtensionSortingAppLaunchOrdinal, ExtensionSortingAppLaunchOrdinal) {}
96 99
97 class ExtensionSortingPageOrdinal : public ExtensionSortingTest { 100 class ExtensionSortingPageOrdinal : public ExtensionSortingTest {
98 public: 101 public:
99 virtual void Initialize() OVERRIDE{ 102 virtual void Initialize() OVERRIDE {
100 extension_ = prefs_.AddApp("page_ordinal"); 103 extension_ = prefs_.AddApp("page_ordinal");
101 // Install with a page preference. 104 // Install with a page preference.
102 first_page_ = syncer::StringOrdinal::CreateInitialOrdinal(); 105 first_page_ = syncer::StringOrdinal::CreateInitialOrdinal();
103 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, 106 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED,
104 false, first_page_); 107 false, first_page_);
105 EXPECT_TRUE(first_page_.Equals( 108 EXPECT_TRUE(first_page_.Equals(
106 extension_sorting()->GetPageOrdinal(extension_->id()))); 109 extension_sorting()->GetPageOrdinal(extension_->id())));
107 EXPECT_EQ(0, extension_sorting()->PageStringOrdinalAsInteger(first_page_)); 110 EXPECT_EQ(0, extension_sorting()->PageStringOrdinalAsInteger(first_page_));
108 111
109 scoped_refptr<Extension> extension2 = prefs_.AddApp("page_ordinal_2"); 112 scoped_refptr<Extension> extension2 = prefs_.AddApp("page_ordinal_2");
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 } 248 }
246 }; 249 };
247 TEST_F(ExtensionSortingInitializeWithNoApps, 250 TEST_F(ExtensionSortingInitializeWithNoApps,
248 ExtensionSortingInitializeWithNoApps) {} 251 ExtensionSortingInitializeWithNoApps) {}
249 252
250 // Tests the application index to ordinal migration code for values that 253 // Tests the application index to ordinal migration code for values that
251 // shouldn't be converted. This should be removed when the migrate code 254 // shouldn't be converted. This should be removed when the migrate code
252 // is taken out. 255 // is taken out.
253 // http://crbug.com/107376 256 // http://crbug.com/107376
254 class ExtensionSortingMigrateAppIndexInvalid 257 class ExtensionSortingMigrateAppIndexInvalid
255 : public extensions::ExtensionPrefsPrepopulatedTest { 258 : public extensions::ExtensionPrefsPrepopulatedTest {
256 public: 259 public:
257 ExtensionSortingMigrateAppIndexInvalid() {} 260 ExtensionSortingMigrateAppIndexInvalid() {}
258 virtual ~ExtensionSortingMigrateAppIndexInvalid() {} 261 virtual ~ExtensionSortingMigrateAppIndexInvalid() {}
259 262
260 virtual void Initialize() OVERRIDE { 263 virtual void Initialize() OVERRIDE {
261 // A preference determining the order of which the apps appear on the NTP. 264 // A preference determining the order of which the apps appear on the NTP.
262 const char kPrefAppLaunchIndexDeprecated[] = "app_launcher_index"; 265 const char kPrefAppLaunchIndexDeprecated[] = "app_launcher_index";
263 // A preference determining the page on which an app appears in the NTP. 266 // A preference determining the page on which an app appears in the NTP.
264 const char kPrefPageIndexDeprecated[] = "page_index"; 267 const char kPrefPageIndexDeprecated[] = "page_index";
265 268
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext4_->id()).Equals( 522 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext4_->id()).Equals(
520 first_ordinal_)); 523 first_ordinal_));
521 } 524 }
522 525
523 private: 526 private:
524 syncer::StringOrdinal first_ordinal_; 527 syncer::StringOrdinal first_ordinal_;
525 }; 528 };
526 TEST_F(ExtensionSortingFixNTPCollisionsTwoCollisions, 529 TEST_F(ExtensionSortingFixNTPCollisionsTwoCollisions,
527 ExtensionSortingFixNTPCollisionsTwoCollisions) {} 530 ExtensionSortingFixNTPCollisionsTwoCollisions) {}
528 531
529 class ExtensionSortingEnsureValidOrdinals : 532 class ExtensionSortingEnsureValidOrdinals
530 public extensions::ExtensionPrefsPrepopulatedTest { 533 : public extensions::ExtensionPrefsPrepopulatedTest {
531 public : 534 public :
532 ExtensionSortingEnsureValidOrdinals() {} 535 ExtensionSortingEnsureValidOrdinals() {}
533 ~ExtensionSortingEnsureValidOrdinals() {} 536 ~ExtensionSortingEnsureValidOrdinals() {}
534 537
535 virtual void Initialize() {} 538 virtual void Initialize() {}
536 virtual void Verify() { 539 virtual void Verify() {
537 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); 540 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
538 541
539 // Give ext1 invalid ordinals and then check that EnsureValidOrdinals fixes 542 // Give ext1 invalid ordinals and then check that EnsureValidOrdinals fixes
540 // them. 543 // them.
541 extension_sorting->SetAppLaunchOrdinal(ext1_->id(), 544 extension_sorting->SetAppLaunchOrdinal(ext1_->id(),
542 syncer::StringOrdinal()); 545 syncer::StringOrdinal());
543 extension_sorting->SetPageOrdinal(ext1_->id(), syncer::StringOrdinal()); 546 extension_sorting->SetPageOrdinal(ext1_->id(), syncer::StringOrdinal());
544 547
545 extension_sorting->EnsureValidOrdinals(ext1_->id()); 548 extension_sorting->EnsureValidOrdinals(ext1_->id(),
549 syncer::StringOrdinal());
546 550
547 EXPECT_TRUE(extension_sorting->GetAppLaunchOrdinal(ext1_->id()).IsValid()); 551 EXPECT_TRUE(extension_sorting->GetAppLaunchOrdinal(ext1_->id()).IsValid());
548 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext1_->id()).IsValid()); 552 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext1_->id()).IsValid());
549 } 553 }
550 }; 554 };
551 TEST_F(ExtensionSortingEnsureValidOrdinals, 555 TEST_F(ExtensionSortingEnsureValidOrdinals,
552 ExtensionSortingEnsureValidOrdinals) {} 556 ExtensionSortingEnsureValidOrdinals) {}
553 557
554 class ExtensionSortingPageOrdinalMapping : 558 class ExtensionSortingPageOrdinalMapping
555 public extensions::ExtensionPrefsPrepopulatedTest { 559 : public extensions::ExtensionPrefsPrepopulatedTest {
556 public: 560 public:
557 ExtensionSortingPageOrdinalMapping() {} 561 ExtensionSortingPageOrdinalMapping() {}
558 virtual ~ExtensionSortingPageOrdinalMapping() {} 562 virtual ~ExtensionSortingPageOrdinalMapping() {}
559 563
560 virtual void Initialize() {} 564 virtual void Initialize() OVERRIDE {}
561 virtual void Verify() { 565 virtual void Verify() OVERRIDE {
562 std::string ext_1 = "ext_1"; 566 std::string ext_1 = "ext_1";
563 std::string ext_2 = "ext_2"; 567 std::string ext_2 = "ext_2";
564 568
565 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); 569 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
566 syncer::StringOrdinal first_ordinal = 570 syncer::StringOrdinal first_ordinal =
567 syncer::StringOrdinal::CreateInitialOrdinal(); 571 syncer::StringOrdinal::CreateInitialOrdinal();
568 572
569 // Ensure attempting to removing a mapping with an invalid page doesn't 573 // Ensure attempting to removing a mapping with an invalid page doesn't
570 // modify the map. 574 // modify the map.
571 EXPECT_TRUE(extension_sorting->ntp_ordinal_map_.empty()); 575 EXPECT_TRUE(extension_sorting->ntp_ordinal_map_.empty());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 EXPECT_EQ(1U, extension_sorting->ntp_ordinal_map_[first_ordinal].size()); 608 EXPECT_EQ(1U, extension_sorting->ntp_ordinal_map_[first_ordinal].size());
605 609
606 it = extension_sorting->ntp_ordinal_map_[first_ordinal].find( 610 it = extension_sorting->ntp_ordinal_map_[first_ordinal].find(
607 first_ordinal); 611 first_ordinal);
608 EXPECT_EQ(ext_2, it->second); 612 EXPECT_EQ(ext_2, it->second);
609 } 613 }
610 }; 614 };
611 TEST_F(ExtensionSortingPageOrdinalMapping, 615 TEST_F(ExtensionSortingPageOrdinalMapping,
612 ExtensionSortingPageOrdinalMapping) {} 616 ExtensionSortingPageOrdinalMapping) {}
613 617
614 class ExtensionSortingPreinstalledAppsBase : 618 class ExtensionSortingPreinstalledAppsBase
615 public extensions::ExtensionPrefsPrepopulatedTest { 619 : public extensions::ExtensionPrefsPrepopulatedTest {
616 public: 620 public:
617 ExtensionSortingPreinstalledAppsBase() { 621 ExtensionSortingPreinstalledAppsBase() {
618 DictionaryValue simple_dict; 622 DictionaryValue simple_dict;
619 simple_dict.SetString(keys::kVersion, "1.0.0.0"); 623 simple_dict.SetString(keys::kVersion, "1.0.0.0");
620 simple_dict.SetString(keys::kName, "unused"); 624 simple_dict.SetString(keys::kName, "unused");
621 simple_dict.SetString(keys::kApp, "true"); 625 simple_dict.SetString(keys::kApp, "true");
622 simple_dict.SetString(keys::kLaunchLocalPath, "fake.html"); 626 simple_dict.SetString(keys::kLaunchLocalPath, "fake.html");
623 627
624 std::string error; 628 std::string error;
625 app1_scoped_ = Extension::Create( 629 app1_scoped_ = Extension::Create(
(...skipping 16 matching lines...) Expand all
642 app2_ = app2_scoped_.get(); 646 app2_ = app2_scoped_.get();
643 } 647 }
644 virtual ~ExtensionSortingPreinstalledAppsBase() {} 648 virtual ~ExtensionSortingPreinstalledAppsBase() {}
645 649
646 protected: 650 protected:
647 // Weak references, for convenience. 651 // Weak references, for convenience.
648 Extension* app1_; 652 Extension* app1_;
649 Extension* app2_; 653 Extension* app2_;
650 654
651 private: 655 private:
652 scoped_refptr<Extension> app1_scoped_; 656 scoped_refptr<Extension> app1_scoped_;
653 scoped_refptr<Extension> app2_scoped_; 657 scoped_refptr<Extension> app2_scoped_;
654 }; 658 };
655 659
656 class ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage : 660 class ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage
657 public ExtensionSortingPreinstalledAppsBase { 661 : public ExtensionSortingPreinstalledAppsBase {
658 public: 662 public:
659 ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage() {} 663 ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage() {}
660 virtual ~ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage() {} 664 virtual ~ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage() {}
661 665
662 virtual void Initialize() OVERRIDE {} 666 virtual void Initialize() OVERRIDE {}
663 virtual void Verify() OVERRIDE { 667 virtual void Verify() OVERRIDE {
664 syncer::StringOrdinal page = syncer::StringOrdinal::CreateInitialOrdinal(); 668 syncer::StringOrdinal page = syncer::StringOrdinal::CreateInitialOrdinal();
665 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); 669 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
666 670
667 syncer::StringOrdinal min = 671 syncer::StringOrdinal min =
(...skipping 22 matching lines...) Expand all
690 ExtensionSorting::MAX_ORDINAL); 694 ExtensionSorting::MAX_ORDINAL);
691 EXPECT_FALSE(min.IsValid()); 695 EXPECT_FALSE(min.IsValid());
692 EXPECT_FALSE(max.IsValid()); 696 EXPECT_FALSE(max.IsValid());
693 } 697 }
694 }; 698 };
695 TEST_F(ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage, 699 TEST_F(ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage,
696 ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage) {} 700 ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage) {}
697 701
698 // Make sure that empty pages aren't removed from the integer to ordinal 702 // Make sure that empty pages aren't removed from the integer to ordinal
699 // mapping. See http://www.crbug.com/109802 for details. 703 // mapping. See http://www.crbug.com/109802 for details.
700 class ExtensionSortingKeepEmptyStringOrdinalPages : 704 class ExtensionSortingKeepEmptyStringOrdinalPages
701 public ExtensionSortingPreinstalledAppsBase { 705 : public ExtensionSortingPreinstalledAppsBase {
702 public: 706 public:
703 ExtensionSortingKeepEmptyStringOrdinalPages() {} 707 ExtensionSortingKeepEmptyStringOrdinalPages() {}
704 virtual ~ExtensionSortingKeepEmptyStringOrdinalPages() {} 708 virtual ~ExtensionSortingKeepEmptyStringOrdinalPages() {}
705 709
706 virtual void Initialize() { 710 virtual void Initialize() OVERRIDE {
707 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); 711 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
708 712
709 syncer::StringOrdinal first_page = 713 syncer::StringOrdinal first_page =
710 syncer::StringOrdinal::CreateInitialOrdinal(); 714 syncer::StringOrdinal::CreateInitialOrdinal();
711 extension_sorting->SetPageOrdinal(app1_->id(), first_page); 715 extension_sorting->SetPageOrdinal(app1_->id(), first_page);
712 EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page)); 716 EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page));
713 717
714 last_page_ = first_page.CreateAfter(); 718 last_page_ = first_page.CreateAfter();
715 extension_sorting->SetPageOrdinal(app2_->id(), last_page_); 719 extension_sorting->SetPageOrdinal(app2_->id(), last_page_);
716 EXPECT_EQ(1, extension_sorting->PageStringOrdinalAsInteger(last_page_)); 720 EXPECT_EQ(1, extension_sorting->PageStringOrdinalAsInteger(last_page_));
717 721
718 // Move the second app to create an empty page. 722 // Move the second app to create an empty page.
719 extension_sorting->SetPageOrdinal(app2_->id(), first_page); 723 extension_sorting->SetPageOrdinal(app2_->id(), first_page);
720 EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page)); 724 EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page));
721 } 725 }
722 virtual void Verify() { 726 virtual void Verify() OVERRIDE {
723 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); 727 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
724 728
725 // Move the second app to a new empty page at the end, skipping over 729 // Move the second app to a new empty page at the end, skipping over
726 // the current empty page. 730 // the current empty page.
727 last_page_ = last_page_.CreateAfter(); 731 last_page_ = last_page_.CreateAfter();
728 extension_sorting->SetPageOrdinal(app2_->id(), last_page_); 732 extension_sorting->SetPageOrdinal(app2_->id(), last_page_);
729 EXPECT_EQ(2, extension_sorting->PageStringOrdinalAsInteger(last_page_)); 733 EXPECT_EQ(2, extension_sorting->PageStringOrdinalAsInteger(last_page_));
730 EXPECT_TRUE( 734 EXPECT_TRUE(
731 last_page_.Equals(extension_sorting->PageIntegerAsStringOrdinal(2))); 735 last_page_.Equals(extension_sorting->PageIntegerAsStringOrdinal(2)));
732 } 736 }
733 737
734 private: 738 private:
735 syncer::StringOrdinal last_page_; 739 syncer::StringOrdinal last_page_;
736 }; 740 };
737 TEST_F(ExtensionSortingKeepEmptyStringOrdinalPages, 741 TEST_F(ExtensionSortingKeepEmptyStringOrdinalPages,
738 ExtensionSortingKeepEmptyStringOrdinalPages) {} 742 ExtensionSortingKeepEmptyStringOrdinalPages) {}
739 743
740 class ExtensionSortingMakesFillerOrdinals : 744 class ExtensionSortingMakesFillerOrdinals
741 public ExtensionSortingPreinstalledAppsBase { 745 : public ExtensionSortingPreinstalledAppsBase {
742 public: 746 public:
743 ExtensionSortingMakesFillerOrdinals() {} 747 ExtensionSortingMakesFillerOrdinals() {}
744 virtual ~ExtensionSortingMakesFillerOrdinals() {} 748 virtual ~ExtensionSortingMakesFillerOrdinals() {}
745 749
746 virtual void Initialize() { 750 virtual void Initialize() OVERRIDE {
747 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); 751 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
748 752
749 syncer::StringOrdinal first_page = 753 syncer::StringOrdinal first_page =
750 syncer::StringOrdinal::CreateInitialOrdinal(); 754 syncer::StringOrdinal::CreateInitialOrdinal();
751 extension_sorting->SetPageOrdinal(app1_->id(), first_page); 755 extension_sorting->SetPageOrdinal(app1_->id(), first_page);
752 EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page)); 756 EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page));
753 } 757 }
754 virtual void Verify() { 758 virtual void Verify() OVERRIDE {
755 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); 759 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
756 760
757 // Because the UI can add an unlimited number of empty pages without an app 761 // Because the UI can add an unlimited number of empty pages without an app
758 // on them, this test simulates dropping of an app on the 1st and 4th empty 762 // on them, this test simulates dropping of an app on the 1st and 4th empty
759 // pages (3rd and 6th pages by index) to ensure we don't crash and that 763 // pages (3rd and 6th pages by index) to ensure we don't crash and that
760 // filler ordinals are created as needed. See: http://crbug.com/122214 764 // filler ordinals are created as needed. See: http://crbug.com/122214
761 syncer::StringOrdinal page_three = 765 syncer::StringOrdinal page_three =
762 extension_sorting->PageIntegerAsStringOrdinal(2); 766 extension_sorting->PageIntegerAsStringOrdinal(2);
763 extension_sorting->SetPageOrdinal(app1_->id(), page_three); 767 extension_sorting->SetPageOrdinal(app1_->id(), page_three);
764 EXPECT_EQ(2, extension_sorting->PageStringOrdinalAsInteger(page_three)); 768 EXPECT_EQ(2, extension_sorting->PageStringOrdinalAsInteger(page_three));
765 769
766 syncer::StringOrdinal page_six = 770 syncer::StringOrdinal page_six =
767 extension_sorting->PageIntegerAsStringOrdinal(5); 771 extension_sorting->PageIntegerAsStringOrdinal(5);
768 extension_sorting->SetPageOrdinal(app1_->id(), page_six); 772 extension_sorting->SetPageOrdinal(app1_->id(), page_six);
769 EXPECT_EQ(5, extension_sorting->PageStringOrdinalAsInteger(page_six)); 773 EXPECT_EQ(5, extension_sorting->PageStringOrdinalAsInteger(page_six));
770 } 774 }
771 }; 775 };
772 TEST_F(ExtensionSortingMakesFillerOrdinals, 776 TEST_F(ExtensionSortingMakesFillerOrdinals,
773 ExtensionSortingMakesFillerOrdinals) {} 777 ExtensionSortingMakesFillerOrdinals) {}
778
779 class ExtensionSortingDefaultOrdinalsBase : public ExtensionSortingTest {
780 public:
781 ExtensionSortingDefaultOrdinalsBase() {}
782 virtual ~ExtensionSortingDefaultOrdinalsBase() {}
783
784 virtual void Initialize() OVERRIDE {
785 app_ = CreateApp("app");
786
787 InitDefaultOrdinals();
788 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
789 ExtensionSorting::AppOrdinalsMap& sorting_defaults =
790 extension_sorting->default_ordinals_;
791 sorting_defaults[app_->id()].page_ordinal = default_page_ordinal_;
792 sorting_defaults[app_->id()].app_launch_ordinal =
793 default_app_launch_ordinal_;
794
795 SetupUserOrdinals();
796 InstallApps();
797 }
798
799 protected:
800 scoped_refptr<Extension> CreateApp(const std::string& name) {
801 DictionaryValue simple_dict;
802 simple_dict.SetString(keys::kVersion, "1.0.0.0");
803 simple_dict.SetString(keys::kName, name);
804 simple_dict.SetString(keys::kApp, "true");
805 simple_dict.SetString(keys::kLaunchLocalPath, "fake.html");
806
807 std::string errors;
808 scoped_refptr<Extension> app = Extension::Create(
809 prefs_.temp_dir().AppendASCII(name), Extension::EXTERNAL_PREF,
810 simple_dict, Extension::NO_FLAGS, &errors);
811 EXPECT_TRUE(app) << errors;
812 EXPECT_TRUE(Extension::IdIsValid(app->id()));
813 return app;
814 }
815
816 void InitDefaultOrdinals() {
817 default_page_ordinal_ =
818 syncer::StringOrdinal::CreateInitialOrdinal().CreateAfter();
819 default_app_launch_ordinal_ =
820 syncer::StringOrdinal::CreateInitialOrdinal().CreateBefore();
821 }
822
823 virtual void SetupUserOrdinals() {}
824
825 virtual void InstallApps() {
826 prefs()->OnExtensionInstalled(app_.get(), Extension::ENABLED,
827 false, syncer::StringOrdinal());
828 }
829
830 scoped_refptr<Extension> app_;
831 syncer::StringOrdinal default_page_ordinal_;
832 syncer::StringOrdinal default_app_launch_ordinal_;
833 };
834
835 // Tests that the app gets its default ordinals.
836 class ExtensionSortingDefaultOrdinals
837 : public ExtensionSortingDefaultOrdinalsBase {
838 public:
839 ExtensionSortingDefaultOrdinals() {}
840 virtual ~ExtensionSortingDefaultOrdinals() {}
841
842 virtual void Verify() OVERRIDE {
843 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
844 EXPECT_TRUE(extension_sorting->GetPageOrdinal(app_->id()).Equals(
845 default_page_ordinal_));
846 EXPECT_TRUE(extension_sorting->GetAppLaunchOrdinal(app_->id()).Equals(
847 default_app_launch_ordinal_));
848 }
849 };
850 TEST_F(ExtensionSortingDefaultOrdinals,
851 ExtensionSortingDefaultOrdinals) {}
852
853 // Tests that the default page ordinal is overridden by install page ordinal.
854 class ExtensionSortingDefaultOrdinalOverriddenByInstallPage
855 : public ExtensionSortingDefaultOrdinalsBase {
856 public:
857 ExtensionSortingDefaultOrdinalOverriddenByInstallPage() {}
858 virtual ~ExtensionSortingDefaultOrdinalOverriddenByInstallPage() {}
859
860 virtual void Verify() OVERRIDE {
861 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
862
863 EXPECT_FALSE(extension_sorting->GetPageOrdinal(app_->id()).Equals(
864 default_page_ordinal_));
865 EXPECT_TRUE(extension_sorting->GetPageOrdinal(app_->id()).Equals(
866 install_page_));
867 }
868
869 protected:
870 virtual void InstallApps() OVERRIDE {
871 install_page_ = default_page_ordinal_.CreateAfter();
872 prefs()->OnExtensionInstalled(app_.get(), Extension::ENABLED,
873 false, install_page_);
874 }
875
876 private:
877 syncer::StringOrdinal install_page_;
878 };
879 TEST_F(ExtensionSortingDefaultOrdinalOverriddenByInstallPage,
880 ExtensionSortingDefaultOrdinalOverriddenByInstallPage) {}
881
882 // Tests that the default ordinals are overridden by user values.
883 class ExtensionSortingDefaultOrdinalOverriddenByUserValue
884 : public ExtensionSortingDefaultOrdinalsBase {
885 public:
886 ExtensionSortingDefaultOrdinalOverriddenByUserValue() {}
887 virtual ~ExtensionSortingDefaultOrdinalOverriddenByUserValue() {}
888
889 virtual void Verify() OVERRIDE {
890 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
891
892 EXPECT_TRUE(extension_sorting->GetPageOrdinal(app_->id()).Equals(
893 user_page_ordinal_));
894 EXPECT_TRUE(extension_sorting->GetAppLaunchOrdinal(app_->id()).Equals(
895 user_app_launch_ordinal_));
896 }
897
898 protected:
899 virtual void SetupUserOrdinals() {
900 user_page_ordinal_ = default_page_ordinal_.CreateAfter();
901 user_app_launch_ordinal_ = default_app_launch_ordinal_.CreateBefore();
902
903 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
904 extension_sorting->SetPageOrdinal(app_->id(), user_page_ordinal_);
905 extension_sorting->SetAppLaunchOrdinal(app_->id(),
906 user_app_launch_ordinal_);
907 }
908
909 private:
910 syncer::StringOrdinal user_page_ordinal_;
911 syncer::StringOrdinal user_app_launch_ordinal_;
912 };
913 TEST_F(ExtensionSortingDefaultOrdinalOverriddenByUserValue,
914 ExtensionSortingDefaultOrdinalOverriddenByUserValue) {}
915
916 // Tests that the default app launch ordinal is changed to avoid collision.
917 class ExtensionSortingDefaultOrdinalNoCollision
918 : public ExtensionSortingDefaultOrdinalsBase {
919 public:
920 ExtensionSortingDefaultOrdinalNoCollision() {}
921 virtual ~ExtensionSortingDefaultOrdinalNoCollision() {}
922
923 virtual void Verify() OVERRIDE {
924 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
925
926 // Use the default page.
927 EXPECT_TRUE(extension_sorting->GetPageOrdinal(app_->id()).Equals(
928 default_page_ordinal_));
929 // Not using the default app launch ordinal because of the collision.
930 EXPECT_FALSE(extension_sorting->GetAppLaunchOrdinal(app_->id()).Equals(
931 default_app_launch_ordinal_));
932 }
933
934 protected:
935 virtual void SetupUserOrdinals() {
936 other_app_ = prefs_.AddApp("other_app");
937 // Creates a collision.
938 ExtensionSorting* extension_sorting = prefs()->extension_sorting();
939 extension_sorting->SetPageOrdinal(other_app_->id(), default_page_ordinal_);
940 extension_sorting->SetAppLaunchOrdinal(other_app_->id(),
941 default_app_launch_ordinal_);
942 }
943
944 private:
945 scoped_refptr<Extension> other_app_;
946 };
947 TEST_F(ExtensionSortingDefaultOrdinalNoCollision,
948 ExtensionSortingDefaultOrdinalNoCollision) {}
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_sorting.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698