OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 #include "chrome/common/chrome_constants.h" | 61 #include "chrome/common/chrome_constants.h" |
62 #include "chrome/common/chrome_notification_types.h" | 62 #include "chrome/common/chrome_notification_types.h" |
63 #include "chrome/common/chrome_paths.h" | 63 #include "chrome/common/chrome_paths.h" |
64 #include "chrome/common/chrome_switches.h" | 64 #include "chrome/common/chrome_switches.h" |
65 #include "chrome/common/extensions/api/i18n/default_locale_handler.h" | 65 #include "chrome/common/extensions/api/i18n/default_locale_handler.h" |
66 #include "chrome/common/extensions/api/plugins/plugins_handler.h" | 66 #include "chrome/common/extensions/api/plugins/plugins_handler.h" |
67 #include "chrome/common/extensions/background_info.h" | 67 #include "chrome/common/extensions/background_info.h" |
68 #include "chrome/common/extensions/extension.h" | 68 #include "chrome/common/extensions/extension.h" |
69 #include "chrome/common/extensions/extension_l10n_util.h" | 69 #include "chrome/common/extensions/extension_l10n_util.h" |
70 #include "chrome/common/extensions/extension_manifest_constants.h" | 70 #include "chrome/common/extensions/extension_manifest_constants.h" |
71 #include "chrome/common/extensions/extension_resource.h" | |
72 #include "chrome/common/extensions/manifest_handler.h" | 71 #include "chrome/common/extensions/manifest_handler.h" |
73 #include "chrome/common/extensions/manifest_url_handler.h" | 72 #include "chrome/common/extensions/manifest_url_handler.h" |
74 #include "chrome/common/extensions/permissions/permission_set.h" | 73 #include "chrome/common/extensions/permissions/permission_set.h" |
75 #include "chrome/common/pref_names.h" | 74 #include "chrome/common/pref_names.h" |
76 #include "chrome/common/url_constants.h" | 75 #include "chrome/common/url_constants.h" |
77 #include "chrome/test/base/testing_profile.h" | 76 #include "chrome/test/base/testing_profile.h" |
78 #include "components/user_prefs/pref_registry_syncable.h" | 77 #include "components/user_prefs/pref_registry_syncable.h" |
79 #include "content/public/browser/dom_storage_context.h" | 78 #include "content/public/browser/dom_storage_context.h" |
80 #include "content/public/browser/gpu_data_manager.h" | 79 #include "content/public/browser/gpu_data_manager.h" |
81 #include "content/public/browser/indexed_db_context.h" | 80 #include "content/public/browser/indexed_db_context.h" |
82 #include "content/public/browser/notification_registrar.h" | 81 #include "content/public/browser/notification_registrar.h" |
83 #include "content/public/browser/notification_service.h" | 82 #include "content/public/browser/notification_service.h" |
84 #include "content/public/browser/plugin_service.h" | 83 #include "content/public/browser/plugin_service.h" |
85 #include "content/public/browser/storage_partition.h" | 84 #include "content/public/browser/storage_partition.h" |
86 #include "content/public/common/content_constants.h" | 85 #include "content/public/common/content_constants.h" |
87 #include "content/public/common/gpu_info.h" | 86 #include "content/public/common/gpu_info.h" |
88 #include "content/public/test/test_browser_thread.h" | 87 #include "content/public/test/test_browser_thread.h" |
| 88 #include "extensions/common/constants.h" |
| 89 #include "extensions/common/extension_resource.h" |
89 #include "extensions/common/url_pattern.h" | 90 #include "extensions/common/url_pattern.h" |
90 #include "googleurl/src/gurl.h" | 91 #include "googleurl/src/gurl.h" |
91 #include "grit/browser_resources.h" | 92 #include "grit/browser_resources.h" |
92 #include "net/cookies/canonical_cookie.h" | 93 #include "net/cookies/canonical_cookie.h" |
93 #include "net/cookies/cookie_monster.h" | 94 #include "net/cookies/cookie_monster.h" |
94 #include "net/cookies/cookie_options.h" | 95 #include "net/cookies/cookie_options.h" |
95 #include "net/url_request/url_request_context.h" | 96 #include "net/url_request/url_request_context.h" |
96 #include "net/url_request/url_request_context_getter.h" | 97 #include "net/url_request/url_request_context_getter.h" |
97 #include "sync/api/string_ordinal.h" | 98 #include "sync/api/string_ordinal.h" |
98 #include "sync/api/sync_error_factory.h" | 99 #include "sync/api/sync_error_factory.h" |
(...skipping 16 matching lines...) Expand all Loading... |
115 using content::BrowserThread; | 116 using content::BrowserThread; |
116 using content::DOMStorageContext; | 117 using content::DOMStorageContext; |
117 using content::IndexedDBContext; | 118 using content::IndexedDBContext; |
118 using content::PluginService; | 119 using content::PluginService; |
119 using extensions::APIPermission; | 120 using extensions::APIPermission; |
120 using extensions::APIPermissionSet; | 121 using extensions::APIPermissionSet; |
121 using extensions::CrxInstaller; | 122 using extensions::CrxInstaller; |
122 using extensions::Extension; | 123 using extensions::Extension; |
123 using extensions::ExtensionCreator; | 124 using extensions::ExtensionCreator; |
124 using extensions::ExtensionPrefs; | 125 using extensions::ExtensionPrefs; |
| 126 using extensions::ExtensionResource; |
125 using extensions::ExtensionSystem; | 127 using extensions::ExtensionSystem; |
126 using extensions::FeatureSwitch; | 128 using extensions::FeatureSwitch; |
127 using extensions::Manifest; | 129 using extensions::Manifest; |
128 using extensions::PermissionSet; | 130 using extensions::PermissionSet; |
129 using extensions::URLPatternSet; | 131 using extensions::URLPatternSet; |
130 | 132 |
131 namespace keys = extension_manifest_keys; | 133 namespace keys = extension_manifest_keys; |
132 | 134 |
133 namespace { | 135 namespace { |
134 | 136 |
(...skipping 1787 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1922 // not a valid extension. | 1924 // not a valid extension. |
1923 base::ScopedTempDir temp_dir2; | 1925 base::ScopedTempDir temp_dir2; |
1924 ASSERT_TRUE(temp_dir2.CreateUniqueTempDir()); | 1926 ASSERT_TRUE(temp_dir2.CreateUniqueTempDir()); |
1925 creator.reset(new ExtensionCreator()); | 1927 creator.reset(new ExtensionCreator()); |
1926 ASSERT_FALSE(creator->Run(temp_dir2.path(), crx_path, privkey_path, | 1928 ASSERT_FALSE(creator->Run(temp_dir2.path(), crx_path, privkey_path, |
1927 base::FilePath(), ExtensionCreator::kOverwriteCRX)); | 1929 base::FilePath(), ExtensionCreator::kOverwriteCRX)); |
1928 | 1930 |
1929 // Try packing with an invalid manifest. | 1931 // Try packing with an invalid manifest. |
1930 std::string invalid_manifest_content = "I am not a manifest."; | 1932 std::string invalid_manifest_content = "I am not a manifest."; |
1931 ASSERT_TRUE(file_util::WriteFile( | 1933 ASSERT_TRUE(file_util::WriteFile( |
1932 temp_dir2.path().Append(Extension::kManifestFilename), | 1934 temp_dir2.path().Append(extensions::kManifestFilename), |
1933 invalid_manifest_content.c_str(), invalid_manifest_content.size())); | 1935 invalid_manifest_content.c_str(), invalid_manifest_content.size())); |
1934 creator.reset(new ExtensionCreator()); | 1936 creator.reset(new ExtensionCreator()); |
1935 ASSERT_FALSE(creator->Run(temp_dir2.path(), crx_path, privkey_path, | 1937 ASSERT_FALSE(creator->Run(temp_dir2.path(), crx_path, privkey_path, |
1936 base::FilePath(), ExtensionCreator::kOverwriteCRX)); | 1938 base::FilePath(), ExtensionCreator::kOverwriteCRX)); |
1937 } | 1939 } |
1938 | 1940 |
1939 // Test Packaging and installing an extension whose name contains punctuation. | 1941 // Test Packaging and installing an extension whose name contains punctuation. |
1940 TEST_F(ExtensionServiceTest, PackPunctuatedExtension) { | 1942 TEST_F(ExtensionServiceTest, PackPunctuatedExtension) { |
1941 InitializeEmptyExtensionService(); | 1943 InitializeEmptyExtensionService(); |
1942 base::FilePath input_directory = data_dir_ | 1944 base::FilePath input_directory = data_dir_ |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2140 // Tests that we can change the ID of an unpacked extension by adding a key | 2142 // Tests that we can change the ID of an unpacked extension by adding a key |
2141 // to its manifest. | 2143 // to its manifest. |
2142 TEST_F(ExtensionServiceTest, UnpackedExtensionCanChangeID) { | 2144 TEST_F(ExtensionServiceTest, UnpackedExtensionCanChangeID) { |
2143 InitializeEmptyExtensionService(); | 2145 InitializeEmptyExtensionService(); |
2144 | 2146 |
2145 base::ScopedTempDir temp; | 2147 base::ScopedTempDir temp; |
2146 ASSERT_TRUE(temp.CreateUniqueTempDir()); | 2148 ASSERT_TRUE(temp.CreateUniqueTempDir()); |
2147 | 2149 |
2148 base::FilePath extension_path = temp.path(); | 2150 base::FilePath extension_path = temp.path(); |
2149 base::FilePath manifest_path = | 2151 base::FilePath manifest_path = |
2150 extension_path.Append(Extension::kManifestFilename); | 2152 extension_path.Append(extensions::kManifestFilename); |
2151 base::FilePath manifest_no_key = data_dir_. | 2153 base::FilePath manifest_no_key = data_dir_. |
2152 AppendASCII("unpacked"). | 2154 AppendASCII("unpacked"). |
2153 AppendASCII("manifest_no_key.json"); | 2155 AppendASCII("manifest_no_key.json"); |
2154 | 2156 |
2155 base::FilePath manifest_with_key = data_dir_. | 2157 base::FilePath manifest_with_key = data_dir_. |
2156 AppendASCII("unpacked"). | 2158 AppendASCII("unpacked"). |
2157 AppendASCII("manifest_with_key.json"); | 2159 AppendASCII("manifest_with_key.json"); |
2158 | 2160 |
2159 ASSERT_TRUE(file_util::PathExists(manifest_no_key)); | 2161 ASSERT_TRUE(file_util::PathExists(manifest_no_key)); |
2160 ASSERT_TRUE(file_util::PathExists(manifest_with_key)); | 2162 ASSERT_TRUE(file_util::PathExists(manifest_with_key)); |
(...skipping 30 matching lines...) Expand all Loading... |
2191 // Paths to test data files. | 2193 // Paths to test data files. |
2192 base::FilePath source_manifest = source_data_dir.AppendASCII("manifest.json"); | 2194 base::FilePath source_manifest = source_data_dir.AppendASCII("manifest.json"); |
2193 ASSERT_TRUE(file_util::PathExists(source_manifest)); | 2195 ASSERT_TRUE(file_util::PathExists(source_manifest)); |
2194 base::FilePath source_icon = source_data_dir.AppendASCII("icon.png"); | 2196 base::FilePath source_icon = source_data_dir.AppendASCII("icon.png"); |
2195 ASSERT_TRUE(file_util::PathExists(source_icon)); | 2197 ASSERT_TRUE(file_util::PathExists(source_icon)); |
2196 | 2198 |
2197 // Set up the temporary extension directory. | 2199 // Set up the temporary extension directory. |
2198 base::ScopedTempDir temp; | 2200 base::ScopedTempDir temp; |
2199 ASSERT_TRUE(temp.CreateUniqueTempDir()); | 2201 ASSERT_TRUE(temp.CreateUniqueTempDir()); |
2200 base::FilePath extension_path = temp.path(); | 2202 base::FilePath extension_path = temp.path(); |
2201 base::FilePath manifest = extension_path.Append(Extension::kManifestFilename); | 2203 base::FilePath manifest = extension_path.Append( |
| 2204 extensions::kManifestFilename); |
2202 base::FilePath icon_symlink = extension_path.AppendASCII("icon.png"); | 2205 base::FilePath icon_symlink = extension_path.AppendASCII("icon.png"); |
2203 file_util::CopyFile(source_manifest, manifest); | 2206 file_util::CopyFile(source_manifest, manifest); |
2204 file_util::CreateSymbolicLink(source_icon, icon_symlink); | 2207 file_util::CreateSymbolicLink(source_icon, icon_symlink); |
2205 | 2208 |
2206 // Load extension. | 2209 // Load extension. |
2207 InitializeEmptyExtensionService(); | 2210 InitializeEmptyExtensionService(); |
2208 extensions::UnpackedInstaller::Create(service_)->Load(extension_path); | 2211 extensions::UnpackedInstaller::Create(service_)->Load(extension_path); |
2209 loop_.RunUntilIdle(); | 2212 loop_.RunUntilIdle(); |
2210 | 2213 |
2211 EXPECT_TRUE(GetErrors().empty()); | 2214 EXPECT_TRUE(GetErrors().empty()); |
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2630 TEST_F(ExtensionServiceTest, LoadExtensionsCanDowngrade) { | 2633 TEST_F(ExtensionServiceTest, LoadExtensionsCanDowngrade) { |
2631 InitializeEmptyExtensionService(); | 2634 InitializeEmptyExtensionService(); |
2632 | 2635 |
2633 base::ScopedTempDir temp; | 2636 base::ScopedTempDir temp; |
2634 ASSERT_TRUE(temp.CreateUniqueTempDir()); | 2637 ASSERT_TRUE(temp.CreateUniqueTempDir()); |
2635 | 2638 |
2636 // We'll write the extension manifest dynamically to a temporary path | 2639 // We'll write the extension manifest dynamically to a temporary path |
2637 // to make it easier to change the version number. | 2640 // to make it easier to change the version number. |
2638 base::FilePath extension_path = temp.path(); | 2641 base::FilePath extension_path = temp.path(); |
2639 base::FilePath manifest_path = | 2642 base::FilePath manifest_path = |
2640 extension_path.Append(Extension::kManifestFilename); | 2643 extension_path.Append(extensions::kManifestFilename); |
2641 ASSERT_FALSE(file_util::PathExists(manifest_path)); | 2644 ASSERT_FALSE(file_util::PathExists(manifest_path)); |
2642 | 2645 |
2643 // Start with version 2.0. | 2646 // Start with version 2.0. |
2644 DictionaryValue manifest; | 2647 DictionaryValue manifest; |
2645 manifest.SetString("version", "2.0"); | 2648 manifest.SetString("version", "2.0"); |
2646 manifest.SetString("name", "LOAD Downgrade Test"); | 2649 manifest.SetString("name", "LOAD Downgrade Test"); |
2647 manifest.SetInteger("manifest_version", 2); | 2650 manifest.SetInteger("manifest_version", 2); |
2648 | 2651 |
2649 JSONFileValueSerializer serializer(manifest_path); | 2652 JSONFileValueSerializer serializer(manifest_path); |
2650 ASSERT_TRUE(serializer.Serialize(manifest)); | 2653 ASSERT_TRUE(serializer.Serialize(manifest)); |
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3198 } | 3201 } |
3199 | 3202 |
3200 // Install a component extension. | 3203 // Install a component extension. |
3201 base::FilePath path = data_dir_ | 3204 base::FilePath path = data_dir_ |
3202 .AppendASCII("good") | 3205 .AppendASCII("good") |
3203 .AppendASCII("Extensions") | 3206 .AppendASCII("Extensions") |
3204 .AppendASCII(good0) | 3207 .AppendASCII(good0) |
3205 .AppendASCII("1.0.0.0"); | 3208 .AppendASCII("1.0.0.0"); |
3206 std::string manifest; | 3209 std::string manifest; |
3207 ASSERT_TRUE(file_util::ReadFileToString( | 3210 ASSERT_TRUE(file_util::ReadFileToString( |
3208 path.Append(Extension::kManifestFilename), &manifest)); | 3211 path.Append(extensions::kManifestFilename), &manifest)); |
3209 service_->component_loader()->Add(manifest, path); | 3212 service_->component_loader()->Add(manifest, path); |
3210 service_->Init(); | 3213 service_->Init(); |
3211 | 3214 |
3212 // Extension should be installed despite blacklist. | 3215 // Extension should be installed despite blacklist. |
3213 ASSERT_EQ(1u, service_->extensions()->size()); | 3216 ASSERT_EQ(1u, service_->extensions()->size()); |
3214 EXPECT_TRUE(service_->GetExtensionById(good0, false)); | 3217 EXPECT_TRUE(service_->GetExtensionById(good0, false)); |
3215 | 3218 |
3216 // Poke external providers and make sure the extension is still present. | 3219 // Poke external providers and make sure the extension is still present. |
3217 service_->CheckForExternalUpdates(); | 3220 service_->CheckForExternalUpdates(); |
3218 ASSERT_EQ(1u, service_->extensions()->size()); | 3221 ASSERT_EQ(1u, service_->extensions()->size()); |
(...skipping 1515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4734 set_extensions_enabled(false); | 4737 set_extensions_enabled(false); |
4735 | 4738 |
4736 base::FilePath path = data_dir_ | 4739 base::FilePath path = data_dir_ |
4737 .AppendASCII("good") | 4740 .AppendASCII("good") |
4738 .AppendASCII("Extensions") | 4741 .AppendASCII("Extensions") |
4739 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") | 4742 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") |
4740 .AppendASCII("1.0.0.0"); | 4743 .AppendASCII("1.0.0.0"); |
4741 | 4744 |
4742 std::string manifest; | 4745 std::string manifest; |
4743 ASSERT_TRUE(file_util::ReadFileToString( | 4746 ASSERT_TRUE(file_util::ReadFileToString( |
4744 path.Append(Extension::kManifestFilename), &manifest)); | 4747 path.Append(extensions::kManifestFilename), &manifest)); |
4745 | 4748 |
4746 service_->component_loader()->Add(manifest, path); | 4749 service_->component_loader()->Add(manifest, path); |
4747 service_->Init(); | 4750 service_->Init(); |
4748 | 4751 |
4749 // Note that we do not pump messages -- the extension should be loaded | 4752 // Note that we do not pump messages -- the extension should be loaded |
4750 // immediately. | 4753 // immediately. |
4751 | 4754 |
4752 EXPECT_EQ(0u, GetErrors().size()); | 4755 EXPECT_EQ(0u, GetErrors().size()); |
4753 ASSERT_EQ(1u, loaded_.size()); | 4756 ASSERT_EQ(1u, loaded_.size()); |
4754 EXPECT_EQ(Manifest::COMPONENT, loaded_[0]->location()); | 4757 EXPECT_EQ(Manifest::COMPONENT, loaded_[0]->location()); |
(...skipping 1138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5893 EXPECT_FALSE(extensions::HasExternalInstallError(service_)); | 5896 EXPECT_FALSE(extensions::HasExternalInstallError(service_)); |
5894 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx)); | 5897 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx)); |
5895 EXPECT_TRUE(service_->IsExtensionEnabled(page_action)); | 5898 EXPECT_TRUE(service_->IsExtensionEnabled(page_action)); |
5896 | 5899 |
5897 ExtensionPrefs* prefs = service_->extension_prefs(); | 5900 ExtensionPrefs* prefs = service_->extension_prefs(); |
5898 EXPECT_NE(0, prefs->GetDisableReasons(good_crx) & | 5901 EXPECT_NE(0, prefs->GetDisableReasons(good_crx) & |
5899 Extension::DISABLE_SIDELOAD_WIPEOUT); | 5902 Extension::DISABLE_SIDELOAD_WIPEOUT); |
5900 EXPECT_EQ(0, prefs->GetDisableReasons(page_action) & | 5903 EXPECT_EQ(0, prefs->GetDisableReasons(page_action) & |
5901 Extension::DISABLE_SIDELOAD_WIPEOUT); | 5904 Extension::DISABLE_SIDELOAD_WIPEOUT); |
5902 } | 5905 } |
OLD | NEW |