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 |