| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/common/extensions/extension.h" | 5 #include "chrome/common/extensions/extension.h" |
| 6 | 6 |
| 7 #include "base/format_macros.h" | 7 #include "base/format_macros.h" |
| 8 #include "base/file_path.h" | 8 #include "base/file_path.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 795 EXPECT_TRUE(Extension::GenerateId("test", &result)); | 795 EXPECT_TRUE(Extension::GenerateId("test", &result)); |
| 796 EXPECT_EQ(result, "jpignaibiiemhngfjkcpokkamffknabf"); | 796 EXPECT_EQ(result, "jpignaibiiemhngfjkcpokkamffknabf"); |
| 797 | 797 |
| 798 EXPECT_TRUE(Extension::GenerateId("_", &result)); | 798 EXPECT_TRUE(Extension::GenerateId("_", &result)); |
| 799 EXPECT_EQ(result, "ncocknphbhhlhkikpnnlmbcnbgdempcd"); | 799 EXPECT_EQ(result, "ncocknphbhhlhkikpnnlmbcnbgdempcd"); |
| 800 | 800 |
| 801 EXPECT_TRUE(Extension::GenerateId( | 801 EXPECT_TRUE(Extension::GenerateId( |
| 802 "this_string_is_longer_than_a_single_sha256_hash_digest", &result)); | 802 "this_string_is_longer_than_a_single_sha256_hash_digest", &result)); |
| 803 EXPECT_EQ(result, "jimneklojkjdibfkgiiophfhjhbdgcfi"); | 803 EXPECT_EQ(result, "jimneklojkjdibfkgiiophfhjhbdgcfi"); |
| 804 } | 804 } |
| 805 | |
| 806 namespace { | |
| 807 enum SyncTestExtensionType { | |
| 808 EXTENSION, | |
| 809 USER_SCRIPT, | |
| 810 THEME | |
| 811 }; | |
| 812 | |
| 813 static scoped_refptr<Extension> MakeSyncTestExtension( | |
| 814 SyncTestExtensionType type, | |
| 815 const GURL& update_url, | |
| 816 const GURL& launch_url, | |
| 817 Extension::Location location, | |
| 818 int num_plugins, | |
| 819 const FilePath& extension_path) { | |
| 820 DictionaryValue source; | |
| 821 source.SetString(extension_manifest_keys::kName, | |
| 822 "PossiblySyncableExtension"); | |
| 823 source.SetString(extension_manifest_keys::kVersion, "0.0.0.0"); | |
| 824 if (type == THEME) { | |
| 825 source.Set(extension_manifest_keys::kTheme, new DictionaryValue()); | |
| 826 } | |
| 827 if (!update_url.is_empty()) { | |
| 828 source.SetString(extension_manifest_keys::kUpdateURL, | |
| 829 update_url.spec()); | |
| 830 } | |
| 831 if (!launch_url.is_empty()) { | |
| 832 source.SetString(extension_manifest_keys::kLaunchWebURL, | |
| 833 launch_url.spec()); | |
| 834 } | |
| 835 if (type != THEME) { | |
| 836 source.SetBoolean(extension_manifest_keys::kConvertedFromUserScript, | |
| 837 type == USER_SCRIPT); | |
| 838 ListValue* plugins = new ListValue(); | |
| 839 for (int i = 0; i < num_plugins; ++i) { | |
| 840 DictionaryValue* plugin = new DictionaryValue(); | |
| 841 plugin->SetString(extension_manifest_keys::kPluginsPath, ""); | |
| 842 plugins->Set(i, plugin); | |
| 843 } | |
| 844 source.Set(extension_manifest_keys::kPlugins, plugins); | |
| 845 } | |
| 846 | |
| 847 std::string error; | |
| 848 scoped_refptr<Extension> extension = Extension::Create( | |
| 849 extension_path, location, source, Extension::STRICT_ERROR_CHECKS, &error); | |
| 850 EXPECT_TRUE(extension); | |
| 851 EXPECT_EQ("", error); | |
| 852 return extension; | |
| 853 } | |
| 854 | |
| 855 static const char kValidUpdateUrl1[] = | |
| 856 "http://clients2.google.com/service/update2/crx"; | |
| 857 static const char kValidUpdateUrl2[] = | |
| 858 "https://clients2.google.com/service/update2/crx"; | |
| 859 } | |
| 860 | |
| 861 TEST(ExtensionTest, GetSyncTypeNormalExtensionNoUpdateUrl) { | |
| 862 scoped_refptr<Extension> extension( | |
| 863 MakeSyncTestExtension(EXTENSION, GURL(), GURL(), | |
| 864 Extension::INTERNAL, 0, FilePath())); | |
| 865 EXPECT_NE(extension->GetSyncType(), Extension::SYNC_TYPE_NONE); | |
| 866 } | |
| 867 | |
| 868 TEST(ExtensionTest, GetSyncTypeUserScriptValidUpdateUrl) { | |
| 869 scoped_refptr<Extension> extension( | |
| 870 MakeSyncTestExtension(USER_SCRIPT, GURL(kValidUpdateUrl1), GURL(), | |
| 871 Extension::INTERNAL, 0, FilePath())); | |
| 872 EXPECT_NE(extension->GetSyncType(), Extension::SYNC_TYPE_NONE); | |
| 873 } | |
| 874 | |
| 875 TEST(ExtensionTest, GetSyncTypeUserScriptNoUpdateUrl) { | |
| 876 scoped_refptr<Extension> extension( | |
| 877 MakeSyncTestExtension(USER_SCRIPT, GURL(), GURL(), | |
| 878 Extension::INTERNAL, 0, FilePath())); | |
| 879 EXPECT_EQ(extension->GetSyncType(), Extension::SYNC_TYPE_NONE); | |
| 880 } | |
| 881 | |
| 882 TEST(ExtensionTest, GetSyncTypeThemeNoUpdateUrl) { | |
| 883 scoped_refptr<Extension> extension( | |
| 884 MakeSyncTestExtension(THEME, GURL(), GURL(), | |
| 885 Extension::INTERNAL, 0, FilePath())); | |
| 886 EXPECT_EQ(extension->GetSyncType(), Extension::SYNC_TYPE_NONE); | |
| 887 } | |
| 888 | |
| 889 TEST(ExtensionTest, GetSyncTypeExtensionWithLaunchUrl) { | |
| 890 scoped_refptr<Extension> extension( | |
| 891 MakeSyncTestExtension(EXTENSION, GURL(), GURL("http://www.google.com"), | |
| 892 Extension::INTERNAL, 0, FilePath())); | |
| 893 EXPECT_NE(extension->GetSyncType(), Extension::SYNC_TYPE_NONE); | |
| 894 } | |
| 895 | |
| 896 TEST(ExtensionTest, GetSyncTypeExtensionExternal) { | |
| 897 scoped_refptr<Extension> extension( | |
| 898 MakeSyncTestExtension(EXTENSION, GURL(), GURL(), | |
| 899 Extension::EXTERNAL_PREF, 0, FilePath())); | |
| 900 EXPECT_EQ(extension->GetSyncType(), Extension::SYNC_TYPE_NONE); | |
| 901 } | |
| 902 | |
| 903 TEST(ExtensionTest, GetSyncTypeUserScriptThirdPartyUpdateUrl) { | |
| 904 scoped_refptr<Extension> extension( | |
| 905 MakeSyncTestExtension( | |
| 906 USER_SCRIPT, GURL("http://third-party.update_url.com"), GURL(), | |
| 907 Extension::INTERNAL, 0, FilePath())); | |
| 908 EXPECT_EQ(extension->GetSyncType(), Extension::SYNC_TYPE_NONE); | |
| 909 } | |
| 910 | |
| 911 // These last 2 tests don't make sense on Chrome OS, where extension plugins | |
| 912 // are not allowed. | |
| 913 #if !defined(OS_CHROMEOS) | |
| 914 TEST(ExtensionTest, GetSyncTypeExtensionWithPlugin) { | |
| 915 scoped_refptr<Extension> extension( | |
| 916 MakeSyncTestExtension(EXTENSION, GURL(), GURL(), | |
| 917 Extension::INTERNAL, 1, FilePath())); | |
| 918 if (extension) | |
| 919 EXPECT_EQ(extension->GetSyncType(), Extension::SYNC_TYPE_NONE); | |
| 920 } | |
| 921 | |
| 922 TEST(ExtensionTest, GetSyncTypeExtensionWithTwoPlugins) { | |
| 923 scoped_refptr<Extension> extension( | |
| 924 MakeSyncTestExtension(EXTENSION, GURL(), GURL(), | |
| 925 Extension::INTERNAL, 2, FilePath())); | |
| 926 if (extension) | |
| 927 EXPECT_EQ(extension->GetSyncType(), Extension::SYNC_TYPE_NONE); | |
| 928 } | |
| 929 #endif // !defined(OS_CHROMEOS) | |
| OLD | NEW |