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 #include "chrome/browser/extensions/extension_browsertest.h" | 6 #include "chrome/browser/extensions/extension_browsertest.h" |
7 #include "chrome/browser/extensions/extension_service.h" | 7 #include "chrome/browser/extensions/extension_service.h" |
8 #include "chrome/browser/extensions/extension_util.h" | 8 #include "chrome/browser/extensions/extension_util.h" |
9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
10 #include "chrome/browser/ui/browser_commands.h" | 10 #include "chrome/browser/ui/browser_commands.h" |
11 #include "content/public/browser/notification_service.h" | 11 #include "content/public/browser/notification_service.h" |
12 #include "content/public/test/test_utils.h" | 12 #include "content/public/test/test_utils.h" |
| 13 #include "extensions/browser/extension_registry.h" |
13 #include "extensions/browser/extension_system.h" | 14 #include "extensions/browser/extension_system.h" |
14 #include "extensions/browser/notification_types.h" | 15 #include "extensions/browser/notification_types.h" |
15 | 16 |
16 namespace extensions { | 17 namespace extensions { |
17 | 18 |
18 class ExtensionFunctionalTest : public ExtensionBrowserTest { | 19 class ExtensionFunctionalTest : public ExtensionBrowserTest { |
19 public: | 20 public: |
20 void InstallExtensionSilently(ExtensionService* service, | 21 void InstallExtensionSilently(ExtensionService* service, |
21 const char* filename) { | 22 const char* filename) { |
22 service->set_show_extensions_prompts(false); | 23 service->set_show_extensions_prompts(false); |
23 size_t num_before = service->extensions()->size(); | 24 ExtensionRegistry* registry = ExtensionRegistry::Get(profile()); |
| 25 size_t num_before = registry->enabled_extensions().size(); |
24 | 26 |
25 base::FilePath path = test_data_dir_.AppendASCII(filename); | 27 base::FilePath path = test_data_dir_.AppendASCII(filename); |
26 | 28 |
27 content::WindowedNotificationObserver extension_loaded_observer( | 29 content::WindowedNotificationObserver extension_loaded_observer( |
28 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, | 30 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, |
29 content::NotificationService::AllSources()); | 31 content::NotificationService::AllSources()); |
30 | 32 |
31 scoped_refptr<extensions::CrxInstaller> installer( | 33 scoped_refptr<extensions::CrxInstaller> installer( |
32 extensions::CrxInstaller::CreateSilent(service)); | 34 extensions::CrxInstaller::CreateSilent(service)); |
33 installer->set_is_gallery_install(false); | 35 installer->set_is_gallery_install(false); |
34 installer->set_allow_silent_install(true); | 36 installer->set_allow_silent_install(true); |
35 installer->set_install_source(Manifest::INTERNAL); | 37 installer->set_install_source(Manifest::INTERNAL); |
36 installer->set_off_store_install_allow_reason( | 38 installer->set_off_store_install_allow_reason( |
37 extensions::CrxInstaller::OffStoreInstallAllowedInTest); | 39 extensions::CrxInstaller::OffStoreInstallAllowedInTest); |
38 | 40 |
39 observer_->Watch( | 41 observer_->Watch( |
40 extensions::NOTIFICATION_CRX_INSTALLER_DONE, | 42 extensions::NOTIFICATION_CRX_INSTALLER_DONE, |
41 content::Source<extensions::CrxInstaller>(installer.get())); | 43 content::Source<extensions::CrxInstaller>(installer.get())); |
42 | 44 |
43 installer->InstallCrx(path); | 45 installer->InstallCrx(path); |
44 observer_->Wait(); | 46 observer_->Wait(); |
45 | 47 |
46 size_t num_after = service->extensions()->size(); | 48 size_t num_after = registry->enabled_extensions().size(); |
47 EXPECT_EQ(num_before + 1, num_after); | 49 EXPECT_EQ(num_before + 1, num_after); |
48 | 50 |
49 extension_loaded_observer.Wait(); | 51 extension_loaded_observer.Wait(); |
50 const Extension* extension = service->GetExtensionById( | 52 const Extension* extension = |
51 last_loaded_extension_id(), false); | 53 registry->enabled_extensions().GetByID(last_loaded_extension_id()); |
52 EXPECT_TRUE(extension != NULL); | 54 EXPECT_TRUE(extension); |
53 } | |
54 | |
55 ExtensionService* GetExtensionService() { | |
56 return ExtensionSystem::Get(profile())->extension_service(); | |
57 } | 55 } |
58 }; | 56 }; |
59 | 57 |
60 IN_PROC_BROWSER_TEST_F(ExtensionFunctionalTest, | 58 IN_PROC_BROWSER_TEST_F(ExtensionFunctionalTest, |
61 PRE_TestAdblockExtensionCrash) { | 59 PRE_TestAdblockExtensionCrash) { |
62 InstallExtensionSilently(GetExtensionService(), "adblock.crx"); | 60 InstallExtensionSilently(extension_service(), "adblock.crx"); |
63 } | 61 } |
64 | 62 |
65 // Timing out on XP and Vista: http://crbug.com/387866 | 63 // Timing out on XP and Vista: http://crbug.com/387866 |
66 #if defined(OS_WIN) | 64 #if defined(OS_WIN) |
67 #define MAYBE_TestAdblockExtensionCrash DISABLED_TestAdblockExtensionCrash | 65 #define MAYBE_TestAdblockExtensionCrash DISABLED_TestAdblockExtensionCrash |
68 #else | 66 #else |
69 #define MAYBE_TestAdblockExtensionCrash TestAdblockExtensionCrash | 67 #define MAYBE_TestAdblockExtensionCrash TestAdblockExtensionCrash |
70 #endif | 68 #endif |
71 IN_PROC_BROWSER_TEST_F(ExtensionFunctionalTest, | 69 IN_PROC_BROWSER_TEST_F(ExtensionFunctionalTest, |
72 MAYBE_TestAdblockExtensionCrash) { | 70 MAYBE_TestAdblockExtensionCrash) { |
73 ExtensionService* service = GetExtensionService(); | 71 ExtensionService* service = extension_service(); |
74 // Verify that the extension is enabled and allowed in incognito | 72 // Verify that the extension is enabled and allowed in incognito |
75 // is disabled. | 73 // is disabled. |
76 EXPECT_TRUE(service->IsExtensionEnabled(last_loaded_extension_id())); | 74 EXPECT_TRUE(service->IsExtensionEnabled(last_loaded_extension_id())); |
77 EXPECT_FALSE(util::IsIncognitoEnabled(last_loaded_extension_id(), profile())); | 75 EXPECT_FALSE(util::IsIncognitoEnabled(last_loaded_extension_id(), profile())); |
78 } | 76 } |
79 | 77 |
80 // Failing on XP: http://crbug.com/389545 | 78 // Failing on XP: http://crbug.com/389545 |
81 #if defined(OS_WIN) | 79 #if defined(OS_WIN) |
82 #define MAYBE_TestSetExtensionsState DISABLED_TestSetExtensionsState | 80 #define MAYBE_TestSetExtensionsState DISABLED_TestSetExtensionsState |
83 #else | 81 #else |
84 #define MAYBE_TestSetExtensionsState TestSetExtensionsState | 82 #define MAYBE_TestSetExtensionsState TestSetExtensionsState |
85 #endif | 83 #endif |
86 IN_PROC_BROWSER_TEST_F(ExtensionFunctionalTest, MAYBE_TestSetExtensionsState) { | 84 IN_PROC_BROWSER_TEST_F(ExtensionFunctionalTest, MAYBE_TestSetExtensionsState) { |
87 InstallExtensionSilently(GetExtensionService(), "google_talk.crx"); | 85 InstallExtensionSilently(extension_service(), "google_talk.crx"); |
88 | 86 |
89 // Disable the extension and verify. | 87 // Disable the extension and verify. |
90 util::SetIsIncognitoEnabled(last_loaded_extension_id(), profile(), false); | 88 util::SetIsIncognitoEnabled(last_loaded_extension_id(), profile(), false); |
91 ExtensionService* service = GetExtensionService(); | 89 ExtensionService* service = extension_service(); |
92 service->DisableExtension(last_loaded_extension_id(), | 90 service->DisableExtension(last_loaded_extension_id(), |
93 Extension::DISABLE_USER_ACTION); | 91 Extension::DISABLE_USER_ACTION); |
94 EXPECT_FALSE(service->IsExtensionEnabled(last_loaded_extension_id())); | 92 EXPECT_FALSE(service->IsExtensionEnabled(last_loaded_extension_id())); |
95 | 93 |
96 // Enable the extension and verify. | 94 // Enable the extension and verify. |
97 util::SetIsIncognitoEnabled(last_loaded_extension_id(), profile(), false); | 95 util::SetIsIncognitoEnabled(last_loaded_extension_id(), profile(), false); |
98 service->EnableExtension(last_loaded_extension_id()); | 96 service->EnableExtension(last_loaded_extension_id()); |
99 EXPECT_TRUE(service->IsExtensionEnabled(last_loaded_extension_id())); | 97 EXPECT_TRUE(service->IsExtensionEnabled(last_loaded_extension_id())); |
100 | 98 |
101 // Allow extension in incognito mode and verify. | 99 // Allow extension in incognito mode and verify. |
102 service->EnableExtension(last_loaded_extension_id()); | 100 service->EnableExtension(last_loaded_extension_id()); |
103 util::SetIsIncognitoEnabled(last_loaded_extension_id(), profile(), true); | 101 util::SetIsIncognitoEnabled(last_loaded_extension_id(), profile(), true); |
104 EXPECT_TRUE(util::IsIncognitoEnabled(last_loaded_extension_id(), profile())); | 102 EXPECT_TRUE(util::IsIncognitoEnabled(last_loaded_extension_id(), profile())); |
105 | 103 |
106 // Disallow extension in incognito mode and verify. | 104 // Disallow extension in incognito mode and verify. |
107 service->EnableExtension(last_loaded_extension_id()); | 105 service->EnableExtension(last_loaded_extension_id()); |
108 util::SetIsIncognitoEnabled(last_loaded_extension_id(), profile(), false); | 106 util::SetIsIncognitoEnabled(last_loaded_extension_id(), profile(), false); |
109 EXPECT_FALSE(util::IsIncognitoEnabled(last_loaded_extension_id(), profile())); | 107 EXPECT_FALSE(util::IsIncognitoEnabled(last_loaded_extension_id(), profile())); |
110 } | 108 } |
111 } // namespace extensions | 109 } // namespace extensions |
OLD | NEW |