OLD | NEW |
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" | 5 #include "chrome/browser/extensions/extension_sorting.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "chrome/browser/extensions/extension_prefs_unittest.h" | 9 #include "chrome/browser/extensions/extension_prefs_unittest.h" |
10 #include "chrome/common/extensions/extension_manifest_constants.h" | 10 #include "chrome/common/extensions/extension_manifest_constants.h" |
11 #include "sync/api/string_ordinal.h" | 11 #include "sync/api/string_ordinal.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
13 | 13 |
14 using extensions::Extension; | 14 using extensions::Extension; |
15 | 15 |
16 namespace keys = extension_manifest_keys; | 16 namespace keys = extension_manifest_keys; |
17 | 17 |
18 class ExtensionSortingTest : public extensions::ExtensionPrefsTest { | 18 class ExtensionSortingTest : public extensions::ExtensionPrefsTest { |
19 protected: | 19 protected: |
20 ExtensionSorting* extension_sorting() { | 20 ExtensionSorting* extension_sorting() { |
21 return prefs()->extension_sorting(); | 21 return prefs()->extension_sorting(); |
22 } | 22 } |
23 }; | 23 }; |
24 | 24 |
25 class ExtensionSortingAppLocation : public ExtensionSortingTest { | 25 class ExtensionSortingAppLocation : public ExtensionSortingTest { |
26 public: | 26 public: |
27 virtual void Initialize() OVERRIDE { | 27 virtual void Initialize() OVERRIDE { |
28 extension_ = prefs_.AddExtension("not_an_app"); | 28 extension_ = prefs_->AddExtension("not_an_app"); |
29 // Non-apps should not have any app launch ordinal or page ordinal. | 29 // Non-apps should not have any app launch ordinal or page ordinal. |
30 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, | 30 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, |
31 syncer::StringOrdinal()); | 31 syncer::StringOrdinal()); |
32 } | 32 } |
33 | 33 |
34 virtual void Verify() OVERRIDE { | 34 virtual void Verify() OVERRIDE { |
35 EXPECT_FALSE( | 35 EXPECT_FALSE( |
36 extension_sorting()->GetAppLaunchOrdinal(extension_->id()).IsValid()); | 36 extension_sorting()->GetAppLaunchOrdinal(extension_->id()).IsValid()); |
37 EXPECT_FALSE( | 37 EXPECT_FALSE( |
38 extension_sorting()->GetPageOrdinal(extension_->id()).IsValid()); | 38 extension_sorting()->GetPageOrdinal(extension_->id()).IsValid()); |
39 } | 39 } |
40 | 40 |
41 private: | 41 private: |
42 scoped_refptr<Extension> extension_; | 42 scoped_refptr<Extension> extension_; |
43 }; | 43 }; |
44 TEST_F(ExtensionSortingAppLocation, ExtensionSortingAppLocation) {} | 44 TEST_F(ExtensionSortingAppLocation, ExtensionSortingAppLocation) {} |
45 | 45 |
46 class ExtensionSortingAppLaunchOrdinal : public ExtensionSortingTest { | 46 class ExtensionSortingAppLaunchOrdinal : public ExtensionSortingTest { |
47 public: | 47 public: |
48 virtual void Initialize() OVERRIDE { | 48 virtual void Initialize() OVERRIDE { |
49 // No extensions yet. | 49 // No extensions yet. |
50 syncer::StringOrdinal page = syncer::StringOrdinal::CreateInitialOrdinal(); | 50 syncer::StringOrdinal page = syncer::StringOrdinal::CreateInitialOrdinal(); |
51 EXPECT_TRUE(syncer::StringOrdinal::CreateInitialOrdinal().Equals( | 51 EXPECT_TRUE(syncer::StringOrdinal::CreateInitialOrdinal().Equals( |
52 extension_sorting()->CreateNextAppLaunchOrdinal(page))); | 52 extension_sorting()->CreateNextAppLaunchOrdinal(page))); |
53 | 53 |
54 extension_ = prefs_.AddApp("on_extension_installed"); | 54 extension_ = prefs_->AddApp("on_extension_installed"); |
55 EXPECT_FALSE(prefs()->IsExtensionDisabled(extension_->id())); | 55 EXPECT_FALSE(prefs()->IsExtensionDisabled(extension_->id())); |
56 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, | 56 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, |
57 syncer::StringOrdinal()); | 57 syncer::StringOrdinal()); |
58 } | 58 } |
59 | 59 |
60 virtual void Verify() OVERRIDE { | 60 virtual void Verify() OVERRIDE { |
61 syncer::StringOrdinal launch_ordinal = | 61 syncer::StringOrdinal launch_ordinal = |
62 extension_sorting()->GetAppLaunchOrdinal(extension_->id()); | 62 extension_sorting()->GetAppLaunchOrdinal(extension_->id()); |
63 syncer::StringOrdinal page_ordinal = | 63 syncer::StringOrdinal page_ordinal = |
64 syncer::StringOrdinal::CreateInitialOrdinal(); | 64 syncer::StringOrdinal::CreateInitialOrdinal(); |
(...skipping 28 matching lines...) Expand all Loading... |
93 } | 93 } |
94 | 94 |
95 private: | 95 private: |
96 scoped_refptr<Extension> extension_; | 96 scoped_refptr<Extension> extension_; |
97 }; | 97 }; |
98 TEST_F(ExtensionSortingAppLaunchOrdinal, ExtensionSortingAppLaunchOrdinal) {} | 98 TEST_F(ExtensionSortingAppLaunchOrdinal, ExtensionSortingAppLaunchOrdinal) {} |
99 | 99 |
100 class ExtensionSortingPageOrdinal : public ExtensionSortingTest { | 100 class ExtensionSortingPageOrdinal : public ExtensionSortingTest { |
101 public: | 101 public: |
102 virtual void Initialize() OVERRIDE { | 102 virtual void Initialize() OVERRIDE { |
103 extension_ = prefs_.AddApp("page_ordinal"); | 103 extension_ = prefs_->AddApp("page_ordinal"); |
104 // Install with a page preference. | 104 // Install with a page preference. |
105 first_page_ = syncer::StringOrdinal::CreateInitialOrdinal(); | 105 first_page_ = syncer::StringOrdinal::CreateInitialOrdinal(); |
106 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, | 106 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, |
107 first_page_); | 107 first_page_); |
108 EXPECT_TRUE(first_page_.Equals( | 108 EXPECT_TRUE(first_page_.Equals( |
109 extension_sorting()->GetPageOrdinal(extension_->id()))); | 109 extension_sorting()->GetPageOrdinal(extension_->id()))); |
110 EXPECT_EQ(0, extension_sorting()->PageStringOrdinalAsInteger(first_page_)); | 110 EXPECT_EQ(0, extension_sorting()->PageStringOrdinalAsInteger(first_page_)); |
111 | 111 |
112 scoped_refptr<Extension> extension2 = prefs_.AddApp("page_ordinal_2"); | 112 scoped_refptr<Extension> extension2 = prefs_->AddApp("page_ordinal_2"); |
113 // Install without any page preference. | 113 // Install without any page preference. |
114 prefs()->OnExtensionInstalled(extension2.get(), Extension::ENABLED, | 114 prefs()->OnExtensionInstalled(extension2.get(), Extension::ENABLED, |
115 syncer::StringOrdinal()); | 115 syncer::StringOrdinal()); |
116 EXPECT_TRUE(first_page_.Equals( | 116 EXPECT_TRUE(first_page_.Equals( |
117 extension_sorting()->GetPageOrdinal(extension2->id()))); | 117 extension_sorting()->GetPageOrdinal(extension2->id()))); |
118 } | 118 } |
119 virtual void Verify() OVERRIDE { | 119 virtual void Verify() OVERRIDE { |
120 // Set the page ordinal. | 120 // Set the page ordinal. |
121 syncer::StringOrdinal new_page = first_page_.CreateAfter(); | 121 syncer::StringOrdinal new_page = first_page_.CreateAfter(); |
122 extension_sorting()->SetPageOrdinal(extension_->id(), new_page); | 122 extension_sorting()->SetPageOrdinal(extension_->id(), new_page); |
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
620 public: | 620 public: |
621 ExtensionSortingPreinstalledAppsBase() { | 621 ExtensionSortingPreinstalledAppsBase() { |
622 DictionaryValue simple_dict; | 622 DictionaryValue simple_dict; |
623 simple_dict.SetString(keys::kVersion, "1.0.0.0"); | 623 simple_dict.SetString(keys::kVersion, "1.0.0.0"); |
624 simple_dict.SetString(keys::kName, "unused"); | 624 simple_dict.SetString(keys::kName, "unused"); |
625 simple_dict.SetString(keys::kApp, "true"); | 625 simple_dict.SetString(keys::kApp, "true"); |
626 simple_dict.SetString(keys::kLaunchLocalPath, "fake.html"); | 626 simple_dict.SetString(keys::kLaunchLocalPath, "fake.html"); |
627 | 627 |
628 std::string error; | 628 std::string error; |
629 app1_scoped_ = Extension::Create( | 629 app1_scoped_ = Extension::Create( |
630 prefs_.temp_dir().AppendASCII("app1_"), Extension::EXTERNAL_PREF, | 630 prefs_->temp_dir().AppendASCII("app1_"), Extension::EXTERNAL_PREF, |
631 simple_dict, Extension::NO_FLAGS, &error); | 631 simple_dict, Extension::NO_FLAGS, &error); |
632 prefs()->OnExtensionInstalled(app1_scoped_.get(), | 632 prefs()->OnExtensionInstalled(app1_scoped_.get(), |
633 Extension::ENABLED, | 633 Extension::ENABLED, |
634 syncer::StringOrdinal()); | 634 syncer::StringOrdinal()); |
635 | 635 |
636 app2_scoped_ = Extension::Create( | 636 app2_scoped_ = Extension::Create( |
637 prefs_.temp_dir().AppendASCII("app2_"), Extension::EXTERNAL_PREF, | 637 prefs_->temp_dir().AppendASCII("app2_"), Extension::EXTERNAL_PREF, |
638 simple_dict, Extension::NO_FLAGS, &error); | 638 simple_dict, Extension::NO_FLAGS, &error); |
639 prefs()->OnExtensionInstalled(app2_scoped_.get(), | 639 prefs()->OnExtensionInstalled(app2_scoped_.get(), |
640 Extension::ENABLED, | 640 Extension::ENABLED, |
641 syncer::StringOrdinal()); | 641 syncer::StringOrdinal()); |
642 | 642 |
643 app1_ = app1_scoped_.get(); | 643 app1_ = app1_scoped_.get(); |
644 app2_ = app2_scoped_.get(); | 644 app2_ = app2_scoped_.get(); |
645 } | 645 } |
646 virtual ~ExtensionSortingPreinstalledAppsBase() {} | 646 virtual ~ExtensionSortingPreinstalledAppsBase() {} |
647 | 647 |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
797 protected: | 797 protected: |
798 scoped_refptr<Extension> CreateApp(const std::string& name) { | 798 scoped_refptr<Extension> CreateApp(const std::string& name) { |
799 DictionaryValue simple_dict; | 799 DictionaryValue simple_dict; |
800 simple_dict.SetString(keys::kVersion, "1.0.0.0"); | 800 simple_dict.SetString(keys::kVersion, "1.0.0.0"); |
801 simple_dict.SetString(keys::kName, name); | 801 simple_dict.SetString(keys::kName, name); |
802 simple_dict.SetString(keys::kApp, "true"); | 802 simple_dict.SetString(keys::kApp, "true"); |
803 simple_dict.SetString(keys::kLaunchLocalPath, "fake.html"); | 803 simple_dict.SetString(keys::kLaunchLocalPath, "fake.html"); |
804 | 804 |
805 std::string errors; | 805 std::string errors; |
806 scoped_refptr<Extension> app = Extension::Create( | 806 scoped_refptr<Extension> app = Extension::Create( |
807 prefs_.temp_dir().AppendASCII(name), Extension::EXTERNAL_PREF, | 807 prefs_->temp_dir().AppendASCII(name), Extension::EXTERNAL_PREF, |
808 simple_dict, Extension::NO_FLAGS, &errors); | 808 simple_dict, Extension::NO_FLAGS, &errors); |
809 EXPECT_TRUE(app) << errors; | 809 EXPECT_TRUE(app) << errors; |
810 EXPECT_TRUE(Extension::IdIsValid(app->id())); | 810 EXPECT_TRUE(Extension::IdIsValid(app->id())); |
811 return app; | 811 return app; |
812 } | 812 } |
813 | 813 |
814 void InitDefaultOrdinals() { | 814 void InitDefaultOrdinals() { |
815 default_page_ordinal_ = | 815 default_page_ordinal_ = |
816 syncer::StringOrdinal::CreateInitialOrdinal().CreateAfter(); | 816 syncer::StringOrdinal::CreateInitialOrdinal().CreateAfter(); |
817 default_app_launch_ordinal_ = | 817 default_app_launch_ordinal_ = |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
924 // Use the default page. | 924 // Use the default page. |
925 EXPECT_TRUE(extension_sorting->GetPageOrdinal(app_->id()).Equals( | 925 EXPECT_TRUE(extension_sorting->GetPageOrdinal(app_->id()).Equals( |
926 default_page_ordinal_)); | 926 default_page_ordinal_)); |
927 // Not using the default app launch ordinal because of the collision. | 927 // Not using the default app launch ordinal because of the collision. |
928 EXPECT_FALSE(extension_sorting->GetAppLaunchOrdinal(app_->id()).Equals( | 928 EXPECT_FALSE(extension_sorting->GetAppLaunchOrdinal(app_->id()).Equals( |
929 default_app_launch_ordinal_)); | 929 default_app_launch_ordinal_)); |
930 } | 930 } |
931 | 931 |
932 protected: | 932 protected: |
933 virtual void SetupUserOrdinals() { | 933 virtual void SetupUserOrdinals() { |
934 other_app_ = prefs_.AddApp("other_app"); | 934 other_app_ = prefs_->AddApp("other_app"); |
935 // Creates a collision. | 935 // Creates a collision. |
936 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 936 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
937 extension_sorting->SetPageOrdinal(other_app_->id(), default_page_ordinal_); | 937 extension_sorting->SetPageOrdinal(other_app_->id(), default_page_ordinal_); |
938 extension_sorting->SetAppLaunchOrdinal(other_app_->id(), | 938 extension_sorting->SetAppLaunchOrdinal(other_app_->id(), |
939 default_app_launch_ordinal_); | 939 default_app_launch_ordinal_); |
940 | 940 |
941 yet_another_app_ = prefs_.AddApp("yet_aother_app"); | 941 yet_another_app_ = prefs_.AddApp("yet_aother_app"); |
942 extension_sorting->SetPageOrdinal(yet_another_app_->id(), | 942 extension_sorting->SetPageOrdinal(yet_another_app_->id(), |
943 default_page_ordinal_); | 943 default_page_ordinal_); |
944 extension_sorting->SetAppLaunchOrdinal(yet_another_app_->id(), | 944 extension_sorting->SetAppLaunchOrdinal(yet_another_app_->id(), |
945 default_app_launch_ordinal_); | 945 default_app_launch_ordinal_); |
946 } | 946 } |
947 | 947 |
948 private: | 948 private: |
949 scoped_refptr<Extension> other_app_; | 949 scoped_refptr<Extension> other_app_; |
950 scoped_refptr<Extension> yet_another_app_; | 950 scoped_refptr<Extension> yet_another_app_; |
951 }; | 951 }; |
952 TEST_F(ExtensionSortingDefaultOrdinalNoCollision, | 952 TEST_F(ExtensionSortingDefaultOrdinalNoCollision, |
953 ExtensionSortingDefaultOrdinalNoCollision) {} | 953 ExtensionSortingDefaultOrdinalNoCollision) {} |
OLD | NEW |