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 "base/at_exit.h" |
5 #include "base/memory/ref_counted.h" | 6 #include "base/memory/ref_counted.h" |
6 #include "chrome/browser/download/download_crx_util.h" | 7 #include "chrome/browser/download/download_crx_util.h" |
7 #include "chrome/browser/extensions/browser_action_test_util.h" | 8 #include "chrome/browser/extensions/browser_action_test_util.h" |
8 #include "chrome/browser/extensions/crx_installer.h" | 9 #include "chrome/browser/extensions/crx_installer.h" |
9 #include "chrome/browser/extensions/extension_browsertest.h" | 10 #include "chrome/browser/extensions/extension_browsertest.h" |
10 #include "chrome/browser/extensions/extension_install_prompt.h" | 11 #include "chrome/browser/extensions/extension_install_prompt.h" |
11 #include "chrome/browser/extensions/extension_service.h" | 12 #include "chrome/browser/extensions/extension_service.h" |
12 #include "chrome/browser/extensions/fake_safe_browsing_database_manager.h" | 13 #include "chrome/browser/extensions/fake_safe_browsing_database_manager.h" |
13 #include "chrome/browser/profiles/profile.h" | 14 #include "chrome/browser/profiles/profile.h" |
14 #include "chrome/browser/ui/browser.h" | 15 #include "chrome/browser/ui/browser.h" |
15 #include "chrome/browser/ui/browser_window.h" | 16 #include "chrome/browser/ui/browser_window.h" |
16 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 17 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
17 #include "chrome/test/base/ui_test_utils.h" | 18 #include "chrome/test/base/ui_test_utils.h" |
| 19 #include "content/public/browser/browser_thread.h" |
18 #include "content/public/browser/download_manager.h" | 20 #include "content/public/browser/download_manager.h" |
19 #include "content/public/browser/render_view_host.h" | 21 #include "content/public/browser/render_view_host.h" |
20 #include "content/public/test/browser_test_utils.h" | 22 #include "content/public/test/browser_test_utils.h" |
21 #include "content/public/test/download_test_observer.h" | 23 #include "content/public/test/download_test_observer.h" |
22 #include "extensions/browser/extension_system.h" | 24 #include "extensions/browser/extension_system.h" |
23 #include "extensions/common/extension.h" | 25 #include "extensions/common/extension.h" |
24 #include "extensions/common/feature_switch.h" | 26 #include "extensions/common/feature_switch.h" |
25 #include "extensions/common/file_util.h" | 27 #include "extensions/common/file_util.h" |
26 #include "extensions/common/permissions/permission_set.h" | 28 #include "extensions/common/permissions/permission_set.h" |
27 #include "extensions/common/switches.h" | 29 #include "extensions/common/switches.h" |
28 #include "grit/generated_resources.h" | 30 #include "grit/generated_resources.h" |
29 #include "ui/base/l10n/l10n_util.h" | 31 #include "ui/base/l10n/l10n_util.h" |
30 | 32 |
31 #if defined(OS_CHROMEOS) | 33 #if defined(OS_CHROMEOS) |
32 #include "chrome/browser/chromeos/login/users/fake_user_manager.h" | 34 #include "chrome/browser/chromeos/login/users/fake_user_manager.h" |
33 #include "chrome/browser/chromeos/login/users/user_manager.h" | 35 #include "chrome/browser/chromeos/login/users/user_manager.h" |
| 36 #include "chrome/browser/extensions/extension_assets_manager_chromeos.h" |
| 37 #include "chromeos/chromeos_switches.h" |
34 #endif | 38 #endif |
35 | 39 |
36 class SkBitmap; | 40 class SkBitmap; |
37 | 41 |
38 namespace extensions { | 42 namespace extensions { |
39 | 43 |
40 namespace { | 44 namespace { |
41 | 45 |
42 class MockInstallPrompt; | 46 class MockInstallPrompt; |
43 | 47 |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 // lifetime of |user_manager|. | 491 // lifetime of |user_manager|. |
488 chromeos::FakeUserManager* fake_user_manager = | 492 chromeos::FakeUserManager* fake_user_manager = |
489 new chromeos::FakeUserManager(); | 493 new chromeos::FakeUserManager(); |
490 fake_user_manager->AddKioskAppUser("example@example.com"); | 494 fake_user_manager->AddKioskAppUser("example@example.com"); |
491 fake_user_manager->LoginUser("example@example.com"); | 495 fake_user_manager->LoginUser("example@example.com"); |
492 chromeos::ScopedUserManagerEnabler scoped_user_manager(fake_user_manager); | 496 chromeos::ScopedUserManagerEnabler scoped_user_manager(fake_user_manager); |
493 EXPECT_TRUE(InstallExtension(crx_path, 1)); | 497 EXPECT_TRUE(InstallExtension(crx_path, 1)); |
494 #endif | 498 #endif |
495 } | 499 } |
496 | 500 |
| 501 #if defined(OS_CHROMEOS) |
| 502 IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, InstallToSharedLocation) { |
| 503 base::ShadowingAtExitManager at_exit_manager; |
| 504 CommandLine::ForCurrentProcess()->AppendSwitch( |
| 505 chromeos::switches::kEnableExtensionAssetsSharing); |
| 506 base::ScopedTempDir cache_dir; |
| 507 ASSERT_TRUE(cache_dir.CreateUniqueTempDir()); |
| 508 ExtensionAssetsManagerChromeOS::SetSharedInstallDirForTesting( |
| 509 cache_dir.path()); |
| 510 |
| 511 base::FilePath crx_path = test_data_dir_.AppendASCII("crx_installer/v1.crx"); |
| 512 const extensions::Extension* extension = InstallExtension( |
| 513 crx_path, 1, extensions::Manifest::EXTERNAL_PREF); |
| 514 base::FilePath extension_path = extension->path(); |
| 515 EXPECT_TRUE(cache_dir.path().IsParent(extension_path)); |
| 516 EXPECT_TRUE(base::PathExists(extension_path)); |
| 517 |
| 518 std::string extension_id = extension->id(); |
| 519 UninstallExtension(extension_id); |
| 520 ExtensionService* service = extensions::ExtensionSystem::Get( |
| 521 browser()->profile())->extension_service(); |
| 522 EXPECT_FALSE(service->GetExtensionById(extension_id, false)); |
| 523 |
| 524 // In the worst case you need to repeat this up to 3 times to make sure that |
| 525 // all pending tasks we sent from UI thread to task runner and back to UI. |
| 526 for (int i = 0; i < 3; i++) { |
| 527 // Wait for background task completion that sends replay to UI thread. |
| 528 content::BrowserThread::GetBlockingPool()->FlushForTesting(); |
| 529 // Wait for UI thread task completion. |
| 530 base::RunLoop().RunUntilIdle(); |
| 531 } |
| 532 |
| 533 EXPECT_FALSE(base::PathExists(extension_path)); |
| 534 } |
| 535 #endif |
| 536 |
497 } // namespace extensions | 537 } // namespace extensions |
OLD | NEW |