| 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 |
| 11 #include "base/at_exit.h" | 11 #include "base/at_exit.h" |
| 12 #include "base/basictypes.h" | 12 #include "base/basictypes.h" |
| 13 #include "base/bind.h" | 13 #include "base/bind.h" |
| 14 #include "base/command_line.h" | 14 #include "base/command_line.h" |
| 15 #include "base/file_util.h" | 15 #include "base/file_util.h" |
| 16 #include "base/files/scoped_temp_dir.h" |
| 16 #include "base/json/json_file_value_serializer.h" | 17 #include "base/json/json_file_value_serializer.h" |
| 17 #include "base/json/json_reader.h" | 18 #include "base/json/json_reader.h" |
| 18 #include "base/json/json_string_value_serializer.h" | 19 #include "base/json/json_string_value_serializer.h" |
| 19 #include "base/memory/scoped_ptr.h" | 20 #include "base/memory/scoped_ptr.h" |
| 20 #include "base/memory/weak_ptr.h" | 21 #include "base/memory/weak_ptr.h" |
| 21 #include "base/message_loop.h" | 22 #include "base/message_loop.h" |
| 22 #include "base/path_service.h" | 23 #include "base/path_service.h" |
| 23 #include "base/scoped_temp_dir.h" | |
| 24 #include "base/stl_util.h" | 24 #include "base/stl_util.h" |
| 25 #include "base/string16.h" | 25 #include "base/string16.h" |
| 26 #include "base/string_number_conversions.h" | 26 #include "base/string_number_conversions.h" |
| 27 #include "base/string_util.h" | 27 #include "base/string_util.h" |
| 28 #include "base/utf_string_conversions.h" | 28 #include "base/utf_string_conversions.h" |
| 29 #include "base/version.h" | 29 #include "base/version.h" |
| 30 #include "chrome/browser/browser_process.h" | 30 #include "chrome/browser/browser_process.h" |
| 31 #include "chrome/browser/extensions/app_sync_data.h" | 31 #include "chrome/browser/extensions/app_sync_data.h" |
| 32 #include "chrome/browser/extensions/component_loader.h" | 32 #include "chrome/browser/extensions/component_loader.h" |
| 33 #include "chrome/browser/extensions/crx_installer.h" | 33 #include "chrome/browser/extensions/crx_installer.h" |
| (...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 INSTALL_FAILED, | 624 INSTALL_FAILED, |
| 625 INSTALL_UPDATED, | 625 INSTALL_UPDATED, |
| 626 INSTALL_NEW | 626 INSTALL_NEW |
| 627 }; | 627 }; |
| 628 | 628 |
| 629 const Extension* PackAndInstallCRX(const FilePath& dir_path, | 629 const Extension* PackAndInstallCRX(const FilePath& dir_path, |
| 630 const FilePath& pem_path, | 630 const FilePath& pem_path, |
| 631 InstallState install_state, | 631 InstallState install_state, |
| 632 int creation_flags) { | 632 int creation_flags) { |
| 633 FilePath crx_path; | 633 FilePath crx_path; |
| 634 ScopedTempDir temp_dir; | 634 base::ScopedTempDir temp_dir; |
| 635 EXPECT_TRUE(temp_dir.CreateUniqueTempDir()); | 635 EXPECT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 636 crx_path = temp_dir.path().AppendASCII("temp.crx"); | 636 crx_path = temp_dir.path().AppendASCII("temp.crx"); |
| 637 | 637 |
| 638 PackCRX(dir_path, pem_path, crx_path); | 638 PackCRX(dir_path, pem_path, crx_path); |
| 639 return InstallCRX(crx_path, install_state, creation_flags); | 639 return InstallCRX(crx_path, install_state, creation_flags); |
| 640 } | 640 } |
| 641 | 641 |
| 642 const Extension* PackAndInstallCRX(const FilePath& dir_path, | 642 const Extension* PackAndInstallCRX(const FilePath& dir_path, |
| 643 const FilePath& pem_path, | 643 const FilePath& pem_path, |
| 644 InstallState install_state) { | 644 InstallState install_state) { |
| (...skipping 1173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1818 | 1818 |
| 1819 // Test Packaging and installing an extension. | 1819 // Test Packaging and installing an extension. |
| 1820 TEST_F(ExtensionServiceTest, PackExtension) { | 1820 TEST_F(ExtensionServiceTest, PackExtension) { |
| 1821 InitializeEmptyExtensionService(); | 1821 InitializeEmptyExtensionService(); |
| 1822 FilePath input_directory = data_dir_ | 1822 FilePath input_directory = data_dir_ |
| 1823 .AppendASCII("good") | 1823 .AppendASCII("good") |
| 1824 .AppendASCII("Extensions") | 1824 .AppendASCII("Extensions") |
| 1825 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") | 1825 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") |
| 1826 .AppendASCII("1.0.0.0"); | 1826 .AppendASCII("1.0.0.0"); |
| 1827 | 1827 |
| 1828 ScopedTempDir temp_dir; | 1828 base::ScopedTempDir temp_dir; |
| 1829 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 1829 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 1830 FilePath output_directory = temp_dir.path(); | 1830 FilePath output_directory = temp_dir.path(); |
| 1831 | 1831 |
| 1832 FilePath crx_path(output_directory.AppendASCII("ex1.crx")); | 1832 FilePath crx_path(output_directory.AppendASCII("ex1.crx")); |
| 1833 FilePath privkey_path(output_directory.AppendASCII("privkey.pem")); | 1833 FilePath privkey_path(output_directory.AppendASCII("privkey.pem")); |
| 1834 | 1834 |
| 1835 scoped_ptr<ExtensionCreator> creator(new ExtensionCreator()); | 1835 scoped_ptr<ExtensionCreator> creator(new ExtensionCreator()); |
| 1836 ASSERT_TRUE(creator->Run(input_directory, crx_path, FilePath(), | 1836 ASSERT_TRUE(creator->Run(input_directory, crx_path, FilePath(), |
| 1837 privkey_path, ExtensionCreator::kNoRunFlags)); | 1837 privkey_path, ExtensionCreator::kNoRunFlags)); |
| 1838 ASSERT_TRUE(file_util::PathExists(crx_path)); | 1838 ASSERT_TRUE(file_util::PathExists(crx_path)); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1856 ASSERT_TRUE(file_util::PathExists(privkey_path)); | 1856 ASSERT_TRUE(file_util::PathExists(privkey_path)); |
| 1857 InstallCRX(crx_path, INSTALL_NEW); | 1857 InstallCRX(crx_path, INSTALL_NEW); |
| 1858 | 1858 |
| 1859 // Try packing with invalid paths. | 1859 // Try packing with invalid paths. |
| 1860 creator.reset(new ExtensionCreator()); | 1860 creator.reset(new ExtensionCreator()); |
| 1861 ASSERT_FALSE(creator->Run(FilePath(), FilePath(), FilePath(), FilePath(), | 1861 ASSERT_FALSE(creator->Run(FilePath(), FilePath(), FilePath(), FilePath(), |
| 1862 ExtensionCreator::kOverwriteCRX)); | 1862 ExtensionCreator::kOverwriteCRX)); |
| 1863 | 1863 |
| 1864 // Try packing an empty directory. Should fail because an empty directory is | 1864 // Try packing an empty directory. Should fail because an empty directory is |
| 1865 // not a valid extension. | 1865 // not a valid extension. |
| 1866 ScopedTempDir temp_dir2; | 1866 base::ScopedTempDir temp_dir2; |
| 1867 ASSERT_TRUE(temp_dir2.CreateUniqueTempDir()); | 1867 ASSERT_TRUE(temp_dir2.CreateUniqueTempDir()); |
| 1868 creator.reset(new ExtensionCreator()); | 1868 creator.reset(new ExtensionCreator()); |
| 1869 ASSERT_FALSE(creator->Run(temp_dir2.path(), crx_path, privkey_path, | 1869 ASSERT_FALSE(creator->Run(temp_dir2.path(), crx_path, privkey_path, |
| 1870 FilePath(), ExtensionCreator::kOverwriteCRX)); | 1870 FilePath(), ExtensionCreator::kOverwriteCRX)); |
| 1871 | 1871 |
| 1872 // Try packing with an invalid manifest. | 1872 // Try packing with an invalid manifest. |
| 1873 std::string invalid_manifest_content = "I am not a manifest."; | 1873 std::string invalid_manifest_content = "I am not a manifest."; |
| 1874 ASSERT_TRUE(file_util::WriteFile( | 1874 ASSERT_TRUE(file_util::WriteFile( |
| 1875 temp_dir2.path().Append(Extension::kManifestFilename), | 1875 temp_dir2.path().Append(Extension::kManifestFilename), |
| 1876 invalid_manifest_content.c_str(), invalid_manifest_content.size())); | 1876 invalid_manifest_content.c_str(), invalid_manifest_content.size())); |
| 1877 creator.reset(new ExtensionCreator()); | 1877 creator.reset(new ExtensionCreator()); |
| 1878 ASSERT_FALSE(creator->Run(temp_dir2.path(), crx_path, privkey_path, | 1878 ASSERT_FALSE(creator->Run(temp_dir2.path(), crx_path, privkey_path, |
| 1879 FilePath(), ExtensionCreator::kOverwriteCRX)); | 1879 FilePath(), ExtensionCreator::kOverwriteCRX)); |
| 1880 } | 1880 } |
| 1881 | 1881 |
| 1882 // Test Packaging and installing an extension whose name contains punctuation. | 1882 // Test Packaging and installing an extension whose name contains punctuation. |
| 1883 TEST_F(ExtensionServiceTest, PackPunctuatedExtension) { | 1883 TEST_F(ExtensionServiceTest, PackPunctuatedExtension) { |
| 1884 InitializeEmptyExtensionService(); | 1884 InitializeEmptyExtensionService(); |
| 1885 FilePath input_directory = data_dir_ | 1885 FilePath input_directory = data_dir_ |
| 1886 .AppendASCII("good") | 1886 .AppendASCII("good") |
| 1887 .AppendASCII("Extensions") | 1887 .AppendASCII("Extensions") |
| 1888 .AppendASCII(good0) | 1888 .AppendASCII(good0) |
| 1889 .AppendASCII("1.0.0.0"); | 1889 .AppendASCII("1.0.0.0"); |
| 1890 | 1890 |
| 1891 ScopedTempDir temp_dir; | 1891 base::ScopedTempDir temp_dir; |
| 1892 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 1892 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 1893 | 1893 |
| 1894 // Extension names containing punctuation, and the expected names for the | 1894 // Extension names containing punctuation, and the expected names for the |
| 1895 // packed extensions. | 1895 // packed extensions. |
| 1896 const FilePath punctuated_names[] = { | 1896 const FilePath punctuated_names[] = { |
| 1897 FilePath(FILE_PATH_LITERAL("this.extensions.name.has.periods")), | 1897 FilePath(FILE_PATH_LITERAL("this.extensions.name.has.periods")), |
| 1898 FilePath(FILE_PATH_LITERAL(".thisextensionsnamestartswithaperiod")), | 1898 FilePath(FILE_PATH_LITERAL(".thisextensionsnamestartswithaperiod")), |
| 1899 FilePath(FILE_PATH_LITERAL("thisextensionhasaslashinitsname/")). | 1899 FilePath(FILE_PATH_LITERAL("thisextensionhasaslashinitsname/")). |
| 1900 NormalizePathSeparators(), | 1900 NormalizePathSeparators(), |
| 1901 }; | 1901 }; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1938 if (HasFatalFailure()) | 1938 if (HasFatalFailure()) |
| 1939 return; | 1939 return; |
| 1940 | 1940 |
| 1941 InstallCRX(expected_crx_path, INSTALL_NEW); | 1941 InstallCRX(expected_crx_path, INSTALL_NEW); |
| 1942 } | 1942 } |
| 1943 } | 1943 } |
| 1944 | 1944 |
| 1945 TEST_F(ExtensionServiceTest, PackExtensionContainingKeyFails) { | 1945 TEST_F(ExtensionServiceTest, PackExtensionContainingKeyFails) { |
| 1946 InitializeEmptyExtensionService(); | 1946 InitializeEmptyExtensionService(); |
| 1947 | 1947 |
| 1948 ScopedTempDir extension_temp_dir; | 1948 base::ScopedTempDir extension_temp_dir; |
| 1949 ASSERT_TRUE(extension_temp_dir.CreateUniqueTempDir()); | 1949 ASSERT_TRUE(extension_temp_dir.CreateUniqueTempDir()); |
| 1950 FilePath input_directory = extension_temp_dir.path().AppendASCII("ext"); | 1950 FilePath input_directory = extension_temp_dir.path().AppendASCII("ext"); |
| 1951 ASSERT_TRUE(file_util::CopyDirectory( | 1951 ASSERT_TRUE(file_util::CopyDirectory( |
| 1952 data_dir_ | 1952 data_dir_ |
| 1953 .AppendASCII("good") | 1953 .AppendASCII("good") |
| 1954 .AppendASCII("Extensions") | 1954 .AppendASCII("Extensions") |
| 1955 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") | 1955 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") |
| 1956 .AppendASCII("1.0.0.0"), | 1956 .AppendASCII("1.0.0.0"), |
| 1957 input_directory, | 1957 input_directory, |
| 1958 /*recursive=*/true)); | 1958 /*recursive=*/true)); |
| 1959 | 1959 |
| 1960 ScopedTempDir output_temp_dir; | 1960 base::ScopedTempDir output_temp_dir; |
| 1961 ASSERT_TRUE(output_temp_dir.CreateUniqueTempDir()); | 1961 ASSERT_TRUE(output_temp_dir.CreateUniqueTempDir()); |
| 1962 FilePath output_directory = output_temp_dir.path(); | 1962 FilePath output_directory = output_temp_dir.path(); |
| 1963 | 1963 |
| 1964 FilePath crx_path(output_directory.AppendASCII("ex1.crx")); | 1964 FilePath crx_path(output_directory.AppendASCII("ex1.crx")); |
| 1965 FilePath privkey_path(output_directory.AppendASCII("privkey.pem")); | 1965 FilePath privkey_path(output_directory.AppendASCII("privkey.pem")); |
| 1966 | 1966 |
| 1967 // Pack the extension once to get a private key. | 1967 // Pack the extension once to get a private key. |
| 1968 scoped_ptr<ExtensionCreator> creator(new ExtensionCreator()); | 1968 scoped_ptr<ExtensionCreator> creator(new ExtensionCreator()); |
| 1969 ASSERT_TRUE(creator->Run(input_directory, crx_path, FilePath(), | 1969 ASSERT_TRUE(creator->Run(input_directory, crx_path, FilePath(), |
| 1970 privkey_path, ExtensionCreator::kNoRunFlags)) | 1970 privkey_path, ExtensionCreator::kNoRunFlags)) |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1995 InitializeEmptyExtensionService(); | 1995 InitializeEmptyExtensionService(); |
| 1996 FilePath input_directory = data_dir_ | 1996 FilePath input_directory = data_dir_ |
| 1997 .AppendASCII("good") | 1997 .AppendASCII("good") |
| 1998 .AppendASCII("Extensions") | 1998 .AppendASCII("Extensions") |
| 1999 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") | 1999 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") |
| 2000 .AppendASCII("1.0.0.0"); | 2000 .AppendASCII("1.0.0.0"); |
| 2001 FilePath privkey_path(data_dir_.AppendASCII( | 2001 FilePath privkey_path(data_dir_.AppendASCII( |
| 2002 "openssl_privkey_asn1.pem")); | 2002 "openssl_privkey_asn1.pem")); |
| 2003 ASSERT_TRUE(file_util::PathExists(privkey_path)); | 2003 ASSERT_TRUE(file_util::PathExists(privkey_path)); |
| 2004 | 2004 |
| 2005 ScopedTempDir temp_dir; | 2005 base::ScopedTempDir temp_dir; |
| 2006 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 2006 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 2007 FilePath output_directory = temp_dir.path(); | 2007 FilePath output_directory = temp_dir.path(); |
| 2008 | 2008 |
| 2009 FilePath crx_path(output_directory.AppendASCII("ex1.crx")); | 2009 FilePath crx_path(output_directory.AppendASCII("ex1.crx")); |
| 2010 | 2010 |
| 2011 scoped_ptr<ExtensionCreator> creator(new ExtensionCreator()); | 2011 scoped_ptr<ExtensionCreator> creator(new ExtensionCreator()); |
| 2012 ASSERT_TRUE(creator->Run(input_directory, crx_path, privkey_path, | 2012 ASSERT_TRUE(creator->Run(input_directory, crx_path, privkey_path, |
| 2013 FilePath(), ExtensionCreator::kOverwriteCRX)); | 2013 FilePath(), ExtensionCreator::kOverwriteCRX)); |
| 2014 | 2014 |
| 2015 InstallCRX(crx_path, INSTALL_NEW); | 2015 InstallCRX(crx_path, INSTALL_NEW); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2067 const Extension* theme = *service_->extensions()->begin(); | 2067 const Extension* theme = *service_->extensions()->begin(); |
| 2068 EXPECT_EQ("name", theme->name()); | 2068 EXPECT_EQ("name", theme->name()); |
| 2069 EXPECT_EQ("description", theme->description()); | 2069 EXPECT_EQ("description", theme->description()); |
| 2070 } | 2070 } |
| 2071 | 2071 |
| 2072 // Tests that we can change the ID of an unpacked extension by adding a key | 2072 // Tests that we can change the ID of an unpacked extension by adding a key |
| 2073 // to its manifest. | 2073 // to its manifest. |
| 2074 TEST_F(ExtensionServiceTest, UnpackedExtensionCanChangeID) { | 2074 TEST_F(ExtensionServiceTest, UnpackedExtensionCanChangeID) { |
| 2075 InitializeEmptyExtensionService(); | 2075 InitializeEmptyExtensionService(); |
| 2076 | 2076 |
| 2077 ScopedTempDir temp; | 2077 base::ScopedTempDir temp; |
| 2078 ASSERT_TRUE(temp.CreateUniqueTempDir()); | 2078 ASSERT_TRUE(temp.CreateUniqueTempDir()); |
| 2079 | 2079 |
| 2080 FilePath extension_path = temp.path(); | 2080 FilePath extension_path = temp.path(); |
| 2081 FilePath manifest_path = extension_path.Append(Extension::kManifestFilename); | 2081 FilePath manifest_path = extension_path.Append(Extension::kManifestFilename); |
| 2082 FilePath manifest_no_key = data_dir_. | 2082 FilePath manifest_no_key = data_dir_. |
| 2083 AppendASCII("unpacked"). | 2083 AppendASCII("unpacked"). |
| 2084 AppendASCII("manifest_no_key.json"); | 2084 AppendASCII("manifest_no_key.json"); |
| 2085 | 2085 |
| 2086 FilePath manifest_with_key = data_dir_. | 2086 FilePath manifest_with_key = data_dir_. |
| 2087 AppendASCII("unpacked"). | 2087 AppendASCII("unpacked"). |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2119 AppendASCII("unpacked"). | 2119 AppendASCII("unpacked"). |
| 2120 AppendASCII("symlinks_allowed"); | 2120 AppendASCII("symlinks_allowed"); |
| 2121 | 2121 |
| 2122 // Paths to test data files. | 2122 // Paths to test data files. |
| 2123 FilePath source_manifest = source_data_dir.AppendASCII("manifest.json"); | 2123 FilePath source_manifest = source_data_dir.AppendASCII("manifest.json"); |
| 2124 ASSERT_TRUE(file_util::PathExists(source_manifest)); | 2124 ASSERT_TRUE(file_util::PathExists(source_manifest)); |
| 2125 FilePath source_icon = source_data_dir.AppendASCII("icon.png"); | 2125 FilePath source_icon = source_data_dir.AppendASCII("icon.png"); |
| 2126 ASSERT_TRUE(file_util::PathExists(source_icon)); | 2126 ASSERT_TRUE(file_util::PathExists(source_icon)); |
| 2127 | 2127 |
| 2128 // Set up the temporary extension directory. | 2128 // Set up the temporary extension directory. |
| 2129 ScopedTempDir temp; | 2129 base::ScopedTempDir temp; |
| 2130 ASSERT_TRUE(temp.CreateUniqueTempDir()); | 2130 ASSERT_TRUE(temp.CreateUniqueTempDir()); |
| 2131 FilePath extension_path = temp.path(); | 2131 FilePath extension_path = temp.path(); |
| 2132 FilePath manifest = extension_path.Append(Extension::kManifestFilename); | 2132 FilePath manifest = extension_path.Append(Extension::kManifestFilename); |
| 2133 FilePath icon_symlink = extension_path.AppendASCII("icon.png"); | 2133 FilePath icon_symlink = extension_path.AppendASCII("icon.png"); |
| 2134 file_util::CopyFile(source_manifest, manifest); | 2134 file_util::CopyFile(source_manifest, manifest); |
| 2135 file_util::CreateSymbolicLink(source_icon, icon_symlink); | 2135 file_util::CreateSymbolicLink(source_icon, icon_symlink); |
| 2136 | 2136 |
| 2137 // Load extension. | 2137 // Load extension. |
| 2138 InitializeEmptyExtensionService(); | 2138 InitializeEmptyExtensionService(); |
| 2139 extensions::UnpackedInstaller::Create(service_)->Load(extension_path); | 2139 extensions::UnpackedInstaller::Create(service_)->Load(extension_path); |
| (...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2562 UpdateExtension(good_crx, path, ENABLED); | 2562 UpdateExtension(good_crx, path, ENABLED); |
| 2563 const Extension* good2 = service_->GetExtensionById(good_crx, false); | 2563 const Extension* good2 = service_->GetExtensionById(good_crx, false); |
| 2564 ASSERT_EQ("1.0.0.1", good2->version()->GetString()); | 2564 ASSERT_EQ("1.0.0.1", good2->version()->GetString()); |
| 2565 EXPECT_EQ(good2->location(), Extension::EXTERNAL_PREF); | 2565 EXPECT_EQ(good2->location(), Extension::EXTERNAL_PREF); |
| 2566 } | 2566 } |
| 2567 | 2567 |
| 2568 // Makes sure that LOAD extension types can downgrade. | 2568 // Makes sure that LOAD extension types can downgrade. |
| 2569 TEST_F(ExtensionServiceTest, LoadExtensionsCanDowngrade) { | 2569 TEST_F(ExtensionServiceTest, LoadExtensionsCanDowngrade) { |
| 2570 InitializeEmptyExtensionService(); | 2570 InitializeEmptyExtensionService(); |
| 2571 | 2571 |
| 2572 ScopedTempDir temp; | 2572 base::ScopedTempDir temp; |
| 2573 ASSERT_TRUE(temp.CreateUniqueTempDir()); | 2573 ASSERT_TRUE(temp.CreateUniqueTempDir()); |
| 2574 | 2574 |
| 2575 // We'll write the extension manifest dynamically to a temporary path | 2575 // We'll write the extension manifest dynamically to a temporary path |
| 2576 // to make it easier to change the version number. | 2576 // to make it easier to change the version number. |
| 2577 FilePath extension_path = temp.path(); | 2577 FilePath extension_path = temp.path(); |
| 2578 FilePath manifest_path = extension_path.Append(Extension::kManifestFilename); | 2578 FilePath manifest_path = extension_path.Append(Extension::kManifestFilename); |
| 2579 ASSERT_FALSE(file_util::PathExists(manifest_path)); | 2579 ASSERT_FALSE(file_util::PathExists(manifest_path)); |
| 2580 | 2580 |
| 2581 // Start with version 2.0. | 2581 // Start with version 2.0. |
| 2582 DictionaryValue manifest; | 2582 DictionaryValue manifest; |
| (...skipping 3235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5818 EXPECT_FALSE(extensions::HasExternalInstallError(service_)); | 5818 EXPECT_FALSE(extensions::HasExternalInstallError(service_)); |
| 5819 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx)); | 5819 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx)); |
| 5820 EXPECT_TRUE(service_->IsExtensionEnabled(page_action)); | 5820 EXPECT_TRUE(service_->IsExtensionEnabled(page_action)); |
| 5821 | 5821 |
| 5822 ExtensionPrefs* prefs = service_->extension_prefs(); | 5822 ExtensionPrefs* prefs = service_->extension_prefs(); |
| 5823 EXPECT_NE(0, prefs->GetDisableReasons(good_crx) & | 5823 EXPECT_NE(0, prefs->GetDisableReasons(good_crx) & |
| 5824 Extension::DISABLE_SIDELOAD_WIPEOUT); | 5824 Extension::DISABLE_SIDELOAD_WIPEOUT); |
| 5825 EXPECT_EQ(0, prefs->GetDisableReasons(page_action) & | 5825 EXPECT_EQ(0, prefs->GetDisableReasons(page_action) & |
| 5826 Extension::DISABLE_SIDELOAD_WIPEOUT); | 5826 Extension::DISABLE_SIDELOAD_WIPEOUT); |
| 5827 } | 5827 } |
| OLD | NEW |