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_service_unittest.h" | 5 #include "chrome/browser/extensions/extension_service_unittest.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 const char* const all_zero = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; | 91 const char* const all_zero = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; |
92 const char* const zero_n_one = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"; | 92 const char* const zero_n_one = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"; |
93 const char* const good0 = "behllobkkfkfnphdnhnkndlbkcpglgmj"; | 93 const char* const good0 = "behllobkkfkfnphdnhnkndlbkcpglgmj"; |
94 const char* const good1 = "hpiknbiabeeppbpihjehijgoemciehgk"; | 94 const char* const good1 = "hpiknbiabeeppbpihjehijgoemciehgk"; |
95 const char* const good2 = "bjafgdebaacbbbecmhlhpofkepfkgcpa"; | 95 const char* const good2 = "bjafgdebaacbbbecmhlhpofkepfkgcpa"; |
96 const char* const good_crx = "ldnnhddmnhbkjipkidpdiheffobcpfmf"; | 96 const char* const good_crx = "ldnnhddmnhbkjipkidpdiheffobcpfmf"; |
97 const char* const page_action = "obcimlgaoabeegjmmpldobjndiealpln"; | 97 const char* const page_action = "obcimlgaoabeegjmmpldobjndiealpln"; |
98 const char* const theme_crx = "iamefpfkojoapidjnbafmgkgncegbkad"; | 98 const char* const theme_crx = "iamefpfkojoapidjnbafmgkgncegbkad"; |
99 const char* const theme2_crx = "pjpgmfcmabopnnfonnhmdjglfpjjfkbf"; | 99 const char* const theme2_crx = "pjpgmfcmabopnnfonnhmdjglfpjjfkbf"; |
100 const char* const permissions_crx = "eagpmdpfmaekmmcejjbmjoecnejeiiin"; | 100 const char* const permissions_crx = "eagpmdpfmaekmmcejjbmjoecnejeiiin"; |
| 101 const char* const unpacked = "cbcdidchbppangcjoddlpdjlenngjldk"; |
101 | 102 |
102 struct ExtensionsOrder { | 103 struct ExtensionsOrder { |
103 bool operator()(const Extension* a, const Extension* b) { | 104 bool operator()(const Extension* a, const Extension* b) { |
104 return a->name() < b->name(); | 105 return a->name() < b->name(); |
105 } | 106 } |
106 }; | 107 }; |
107 | 108 |
108 static std::vector<string16> GetErrors() { | 109 static std::vector<string16> GetErrors() { |
109 const std::vector<string16>* errors = | 110 const std::vector<string16>* errors = |
110 ExtensionErrorReporter::GetInstance()->GetErrors(); | 111 ExtensionErrorReporter::GetInstance()->GetErrors(); |
(...skipping 1777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1888 extensions::UnpackedInstaller::Create(service_)->Load(extension_path); | 1889 extensions::UnpackedInstaller::Create(service_)->Load(extension_path); |
1889 loop_.RunAllPending(); | 1890 loop_.RunAllPending(); |
1890 EXPECT_EQ(0u, GetErrors().size()); | 1891 EXPECT_EQ(0u, GetErrors().size()); |
1891 ASSERT_EQ(1u, loaded_.size()); | 1892 ASSERT_EQ(1u, loaded_.size()); |
1892 EXPECT_EQ(1u, service_->extensions()->size()); | 1893 EXPECT_EQ(1u, service_->extensions()->size()); |
1893 const Extension* theme = *service_->extensions()->begin(); | 1894 const Extension* theme = *service_->extensions()->begin(); |
1894 EXPECT_EQ("name", theme->name()); | 1895 EXPECT_EQ("name", theme->name()); |
1895 EXPECT_EQ("description", theme->description()); | 1896 EXPECT_EQ("description", theme->description()); |
1896 } | 1897 } |
1897 | 1898 |
| 1899 // Tests that we can change the ID of an unpacked extension by adding a key |
| 1900 // to its manifest. |
| 1901 TEST_F(ExtensionServiceTest, UnpackedExtensionCanChangeID) { |
| 1902 InitializeEmptyExtensionService(); |
| 1903 |
| 1904 ScopedTempDir temp; |
| 1905 ASSERT_TRUE(temp.CreateUniqueTempDir()); |
| 1906 |
| 1907 FilePath extension_path = temp.path(); |
| 1908 FilePath manifest_path = extension_path.Append(Extension::kManifestFilename); |
| 1909 FilePath manifest_no_key = data_dir_. |
| 1910 AppendASCII("unpacked"). |
| 1911 AppendASCII("manifest_no_key.json"); |
| 1912 |
| 1913 FilePath manifest_with_key = data_dir_. |
| 1914 AppendASCII("unpacked"). |
| 1915 AppendASCII("manifest_with_key.json"); |
| 1916 |
| 1917 ASSERT_TRUE(file_util::PathExists(manifest_no_key)); |
| 1918 ASSERT_TRUE(file_util::PathExists(manifest_with_key)); |
| 1919 |
| 1920 // Load the unpacked extension with no key. |
| 1921 file_util::CopyFile(manifest_no_key, manifest_path); |
| 1922 extensions::UnpackedInstaller::Create(service_)->Load(extension_path); |
| 1923 |
| 1924 loop_.RunAllPending(); |
| 1925 EXPECT_EQ(0u, GetErrors().size()); |
| 1926 ASSERT_EQ(1u, loaded_.size()); |
| 1927 EXPECT_EQ(1u, service_->extensions()->size()); |
| 1928 |
| 1929 // Add the key to the manifest. |
| 1930 file_util::CopyFile(manifest_with_key, manifest_path); |
| 1931 loaded_.clear(); |
| 1932 |
| 1933 // Reload the extensions. |
| 1934 service_->ReloadExtensions(); |
| 1935 const Extension* extension = service_->GetExtensionById(unpacked, false); |
| 1936 EXPECT_EQ(unpacked, extension->id()); |
| 1937 ASSERT_EQ(1u, loaded_.size()); |
| 1938 |
| 1939 // TODO(jstritar): Right now this just makes sure we don't crash and burn, but |
| 1940 // we should also test that preferences are preserved. |
| 1941 } |
| 1942 |
1898 TEST_F(ExtensionServiceTest, InstallLocalizedTheme) { | 1943 TEST_F(ExtensionServiceTest, InstallLocalizedTheme) { |
1899 InitializeEmptyExtensionService(); | 1944 InitializeEmptyExtensionService(); |
1900 FilePath theme_path = data_dir_ | 1945 FilePath theme_path = data_dir_ |
1901 .AppendASCII("theme_i18n"); | 1946 .AppendASCII("theme_i18n"); |
1902 | 1947 |
1903 const Extension* theme = PackAndInstallCRX(theme_path, INSTALL_NEW); | 1948 const Extension* theme = PackAndInstallCRX(theme_path, INSTALL_NEW); |
1904 | 1949 |
1905 EXPECT_EQ(0u, GetErrors().size()); | 1950 EXPECT_EQ(0u, GetErrors().size()); |
1906 EXPECT_EQ(1u, service_->extensions()->size()); | 1951 EXPECT_EQ(1u, service_->extensions()->size()); |
1907 EXPECT_EQ("name", theme->name()); | 1952 EXPECT_EQ("name", theme->name()); |
(...skipping 2835 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4743 ASSERT_FALSE(AddPendingSyncInstall()); | 4788 ASSERT_FALSE(AddPendingSyncInstall()); |
4744 | 4789 |
4745 // Wait for the external source to install. | 4790 // Wait for the external source to install. |
4746 WaitForCrxInstall(crx_path_, INSTALL_NEW); | 4791 WaitForCrxInstall(crx_path_, INSTALL_NEW); |
4747 ASSERT_TRUE(IsCrxInstalled()); | 4792 ASSERT_TRUE(IsCrxInstalled()); |
4748 | 4793 |
4749 // Now that the extension is installed, sync request should fail | 4794 // Now that the extension is installed, sync request should fail |
4750 // because the extension is already installed. | 4795 // because the extension is already installed. |
4751 ASSERT_FALSE(AddPendingSyncInstall()); | 4796 ASSERT_FALSE(AddPendingSyncInstall()); |
4752 } | 4797 } |
OLD | NEW |