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/crx_installer.h" | 5 #include "chrome/browser/extensions/crx_installer.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
11 #include "base/at_exit.h" | 11 #include "base/at_exit.h" |
12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
13 #include "base/macros.h" | 13 #include "base/macros.h" |
14 #include "base/memory/ptr_util.h" | 14 #include "base/memory/ptr_util.h" |
15 #include "base/memory/ref_counted.h" | 15 #include "base/memory/ref_counted.h" |
16 #include "base/strings/utf_string_conversions.h" | 16 #include "base/strings/utf_string_conversions.h" |
| 17 #include "base/threading/thread_restrictions.h" |
17 #include "build/build_config.h" | 18 #include "build/build_config.h" |
18 #include "chrome/browser/download/download_crx_util.h" | 19 #include "chrome/browser/download/download_crx_util.h" |
19 #include "chrome/browser/extensions/browser_action_test_util.h" | 20 #include "chrome/browser/extensions/browser_action_test_util.h" |
20 #include "chrome/browser/extensions/extension_browsertest.h" | 21 #include "chrome/browser/extensions/extension_browsertest.h" |
21 #include "chrome/browser/extensions/extension_install_prompt.h" | 22 #include "chrome/browser/extensions/extension_install_prompt.h" |
22 #include "chrome/browser/extensions/extension_install_prompt_show_params.h" | 23 #include "chrome/browser/extensions/extension_install_prompt_show_params.h" |
23 #include "chrome/browser/extensions/extension_service.h" | 24 #include "chrome/browser/extensions/extension_service.h" |
24 #include "chrome/browser/extensions/extension_tab_util.h" | 25 #include "chrome/browser/extensions/extension_tab_util.h" |
25 #include "chrome/browser/extensions/extension_util.h" | 26 #include "chrome/browser/extensions/extension_util.h" |
26 #include "chrome/browser/extensions/fake_safe_browsing_database_manager.h" | 27 #include "chrome/browser/extensions/fake_safe_browsing_database_manager.h" |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 } // namespace | 208 } // namespace |
208 | 209 |
209 class ExtensionCrxInstallerTest : public ExtensionBrowserTest { | 210 class ExtensionCrxInstallerTest : public ExtensionBrowserTest { |
210 protected: | 211 protected: |
211 std::unique_ptr<WebstoreInstaller::Approval> GetApproval( | 212 std::unique_ptr<WebstoreInstaller::Approval> GetApproval( |
212 const char* manifest_dir, | 213 const char* manifest_dir, |
213 const std::string& id, | 214 const std::string& id, |
214 bool strict_manifest_checks) { | 215 bool strict_manifest_checks) { |
215 std::unique_ptr<WebstoreInstaller::Approval> result; | 216 std::unique_ptr<WebstoreInstaller::Approval> result; |
216 | 217 |
| 218 base::ThreadRestrictions::ScopedAllowIO allow_io; |
217 base::FilePath ext_path = test_data_dir_.AppendASCII(manifest_dir); | 219 base::FilePath ext_path = test_data_dir_.AppendASCII(manifest_dir); |
218 std::string error; | 220 std::string error; |
219 std::unique_ptr<base::DictionaryValue> parsed_manifest( | 221 std::unique_ptr<base::DictionaryValue> parsed_manifest( |
220 file_util::LoadManifest(ext_path, &error)); | 222 file_util::LoadManifest(ext_path, &error)); |
221 if (!parsed_manifest.get() || !error.empty()) | 223 if (!parsed_manifest.get() || !error.empty()) |
222 return result; | 224 return result; |
223 | 225 |
224 return WebstoreInstaller::Approval::CreateWithNoInstallPrompt( | 226 return WebstoreInstaller::Approval::CreateWithNoInstallPrompt( |
225 browser()->profile(), id, std::move(parsed_manifest), | 227 browser()->profile(), id, std::move(parsed_manifest), |
226 strict_manifest_checks); | 228 strict_manifest_checks); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
331 | 333 |
332 IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTestWithExperimentalApis, | 334 IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTestWithExperimentalApis, |
333 PlatformAppCrx) { | 335 PlatformAppCrx) { |
334 EXPECT_TRUE(InstallExtension( | 336 EXPECT_TRUE(InstallExtension( |
335 test_data_dir_.AppendASCII("minimal_platform_app.crx"), 1)); | 337 test_data_dir_.AppendASCII("minimal_platform_app.crx"), 1)); |
336 } | 338 } |
337 | 339 |
338 IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, BlockedFileTypes) { | 340 IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, BlockedFileTypes) { |
339 const Extension* extension = | 341 const Extension* extension = |
340 InstallExtension(test_data_dir_.AppendASCII("blocked_file_types.crx"), 1); | 342 InstallExtension(test_data_dir_.AppendASCII("blocked_file_types.crx"), 1); |
| 343 base::ThreadRestrictions::ScopedAllowIO allow_io; |
341 EXPECT_TRUE(base::PathExists(extension->path().AppendASCII("test.html"))); | 344 EXPECT_TRUE(base::PathExists(extension->path().AppendASCII("test.html"))); |
342 EXPECT_TRUE(base::PathExists(extension->path().AppendASCII("test.nexe"))); | 345 EXPECT_TRUE(base::PathExists(extension->path().AppendASCII("test.nexe"))); |
343 EXPECT_FALSE(base::PathExists(extension->path().AppendASCII("test1.EXE"))); | 346 EXPECT_FALSE(base::PathExists(extension->path().AppendASCII("test1.EXE"))); |
344 EXPECT_FALSE(base::PathExists(extension->path().AppendASCII("test2.exe"))); | 347 EXPECT_FALSE(base::PathExists(extension->path().AppendASCII("test2.exe"))); |
345 } | 348 } |
346 | 349 |
347 IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, AllowedThemeFileTypes) { | 350 IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, AllowedThemeFileTypes) { |
348 const Extension* extension = InstallExtension( | 351 const Extension* extension = InstallExtension( |
349 test_data_dir_.AppendASCII("theme_with_extension.crx"), 1); | 352 test_data_dir_.AppendASCII("theme_with_extension.crx"), 1); |
350 ASSERT_TRUE(extension); | 353 ASSERT_TRUE(extension); |
351 const base::FilePath& path = extension->path(); | 354 const base::FilePath& path = extension->path(); |
| 355 base::ThreadRestrictions::ScopedAllowIO allow_io; |
352 EXPECT_TRUE( | 356 EXPECT_TRUE( |
353 base::PathExists(path.AppendASCII("images/theme_frame_camo.PNG"))); | 357 base::PathExists(path.AppendASCII("images/theme_frame_camo.PNG"))); |
354 EXPECT_TRUE( | 358 EXPECT_TRUE( |
355 base::PathExists(path.AppendASCII("images/theme_ntp_background.png"))); | 359 base::PathExists(path.AppendASCII("images/theme_ntp_background.png"))); |
356 EXPECT_TRUE(base::PathExists( | 360 EXPECT_TRUE(base::PathExists( |
357 path.AppendASCII("images/theme_ntp_background_norepeat.png"))); | 361 path.AppendASCII("images/theme_ntp_background_norepeat.png"))); |
358 EXPECT_TRUE( | 362 EXPECT_TRUE( |
359 base::PathExists(path.AppendASCII("images/theme_toolbar_camo.png"))); | 363 base::PathExists(path.AppendASCII("images/theme_toolbar_camo.png"))); |
360 EXPECT_TRUE(base::PathExists(path.AppendASCII("images/redirect_target.GIF"))); | 364 EXPECT_TRUE(base::PathExists(path.AppendASCII("images/redirect_target.GIF"))); |
361 EXPECT_TRUE(base::PathExists(path.AppendASCII("test.image.bmp"))); | 365 EXPECT_TRUE(base::PathExists(path.AppendASCII("test.image.bmp"))); |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 base::ScopedTempDir cache_dir; | 596 base::ScopedTempDir cache_dir; |
593 ASSERT_TRUE(cache_dir.CreateUniqueTempDir()); | 597 ASSERT_TRUE(cache_dir.CreateUniqueTempDir()); |
594 ExtensionAssetsManagerChromeOS::SetSharedInstallDirForTesting( | 598 ExtensionAssetsManagerChromeOS::SetSharedInstallDirForTesting( |
595 cache_dir.GetPath()); | 599 cache_dir.GetPath()); |
596 | 600 |
597 base::FilePath crx_path = test_data_dir_.AppendASCII("crx_installer/v1.crx"); | 601 base::FilePath crx_path = test_data_dir_.AppendASCII("crx_installer/v1.crx"); |
598 const extensions::Extension* extension = InstallExtension( | 602 const extensions::Extension* extension = InstallExtension( |
599 crx_path, 1, extensions::Manifest::EXTERNAL_PREF); | 603 crx_path, 1, extensions::Manifest::EXTERNAL_PREF); |
600 base::FilePath extension_path = extension->path(); | 604 base::FilePath extension_path = extension->path(); |
601 EXPECT_TRUE(cache_dir.GetPath().IsParent(extension_path)); | 605 EXPECT_TRUE(cache_dir.GetPath().IsParent(extension_path)); |
| 606 base::ThreadRestrictions::ScopedAllowIO allow_io; |
602 EXPECT_TRUE(base::PathExists(extension_path)); | 607 EXPECT_TRUE(base::PathExists(extension_path)); |
603 | 608 |
604 std::string extension_id = extension->id(); | 609 std::string extension_id = extension->id(); |
605 UninstallExtension(extension_id); | 610 UninstallExtension(extension_id); |
606 ExtensionRegistry* registry = ExtensionRegistry::Get( | 611 ExtensionRegistry* registry = ExtensionRegistry::Get( |
607 browser()->profile()); | 612 browser()->profile()); |
608 EXPECT_FALSE(registry->enabled_extensions().GetByID(extension_id)); | 613 EXPECT_FALSE(registry->enabled_extensions().GetByID(extension_id)); |
609 | 614 |
610 content::RunAllBlockingPoolTasksUntilIdle(); | 615 content::RunAllBlockingPoolTasksUntilIdle(); |
611 | 616 |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
711 EXPECT_TRUE(WaitForCrxInstallerDone()); | 716 EXPECT_TRUE(WaitForCrxInstallerDone()); |
712 const Extension* extension = installer->extension(); | 717 const Extension* extension = installer->extension(); |
713 ASSERT_TRUE(extension); | 718 ASSERT_TRUE(extension); |
714 ASSERT_EQ(extension_id, extension->id()); | 719 ASSERT_EQ(extension_id, extension->id()); |
715 EXPECT_TRUE(ExtensionPrefs::Get(profile())->AllowFileAccess(extension_id)); | 720 EXPECT_TRUE(ExtensionPrefs::Get(profile())->AllowFileAccess(extension_id)); |
716 EXPECT_TRUE(extension->creation_flags() & Extension::ALLOW_FILE_ACCESS); | 721 EXPECT_TRUE(extension->creation_flags() & Extension::ALLOW_FILE_ACCESS); |
717 } | 722 } |
718 } | 723 } |
719 | 724 |
720 } // namespace extensions | 725 } // namespace extensions |
OLD | NEW |