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 // TODO(rickcam): Bug 73183: Add unit tests for image loading | 5 // TODO(rickcam): Bug 73183: Add unit tests for image loading |
6 | 6 |
7 #include <cstdlib> | 7 #include <cstdlib> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "chrome/browser/background/background_application_list_model.h" | 10 #include "chrome/browser/background/background_application_list_model.h" |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 void RemoveBackgroundPermission(ExtensionService* service, | 125 void RemoveBackgroundPermission(ExtensionService* service, |
126 Extension* extension) { | 126 Extension* extension) { |
127 if (!BackgroundApplicationListModel::IsBackgroundApp(*extension, | 127 if (!BackgroundApplicationListModel::IsBackgroundApp(*extension, |
128 service->profile())) { | 128 service->profile())) { |
129 return; | 129 return; |
130 } | 130 } |
131 extensions::PermissionsUpdater(service->profile()) | 131 extensions::PermissionsUpdater(service->profile()) |
132 .RemovePermissionsUnsafe( | 132 .RemovePermissionsUnsafe( |
133 extension, extension->permissions_data()->active_permissions()); | 133 extension, extension->permissions_data()->active_permissions()); |
134 } | 134 } |
135 | |
136 void AddEphemeralApp(const Extension* extension, ExtensionService* service) { | |
137 extensions::ExtensionPrefs* prefs = | |
138 extensions::ExtensionPrefs::Get(service->profile()); | |
139 ASSERT_TRUE(prefs); | |
140 prefs->OnExtensionInstalled(extension, | |
141 extensions::Extension::ENABLED, | |
142 syncer::StringOrdinal(), | |
143 extensions::kInstallFlagIsEphemeral, | |
144 std::string()); | |
145 | |
146 service->AddExtension(extension); | |
147 } | |
148 | |
149 } // namespace | 135 } // namespace |
150 | 136 |
151 // Crashes on Mac tryslaves. | 137 // Crashes on Mac tryslaves. |
152 // http://crbug.com/165458 | 138 // http://crbug.com/165458 |
153 #if defined(OS_MACOSX) || defined(OS_LINUX) | 139 #if defined(OS_MACOSX) || defined(OS_LINUX) |
154 #define MAYBE_ExplicitTest DISABLED_ExplicitTest | 140 #define MAYBE_ExplicitTest DISABLED_ExplicitTest |
155 #else | 141 #else |
156 #define MAYBE_ExplicitTest ExplicitTest | 142 #define MAYBE_ExplicitTest ExplicitTest |
157 #endif | 143 #endif |
158 // With minimal test logic, verifies behavior over an explicit set of | 144 // With minimal test logic, verifies behavior over an explicit set of |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 ASSERT_EQ(1U, registry()->enabled_extensions().size()); | 207 ASSERT_EQ(1U, registry()->enabled_extensions().size()); |
222 ASSERT_EQ(0U, model->size()); | 208 ASSERT_EQ(0U, model->size()); |
223 ASSERT_FALSE(IsBackgroundApp(*ext3.get())); | 209 ASSERT_FALSE(IsBackgroundApp(*ext3.get())); |
224 service()->UninstallExtension(ext3->id(), | 210 service()->UninstallExtension(ext3->id(), |
225 extensions::UNINSTALL_REASON_FOR_TESTING, | 211 extensions::UNINSTALL_REASON_FOR_TESTING, |
226 base::Bind(&base::DoNothing), NULL); | 212 base::Bind(&base::DoNothing), NULL); |
227 ASSERT_EQ(0U, registry()->enabled_extensions().size()); | 213 ASSERT_EQ(0U, registry()->enabled_extensions().size()); |
228 ASSERT_EQ(0U, model->size()); | 214 ASSERT_EQ(0U, model->size()); |
229 } | 215 } |
230 | 216 |
231 // Verifies that an ephemeral app cannot trigger background mode. | |
232 TEST_F(BackgroundApplicationListModelTest, EphemeralAppTest) { | |
233 InitializeAndLoadEmptyExtensionService(); | |
234 ASSERT_TRUE(service()->is_ready()); | |
235 ASSERT_TRUE(registry()->enabled_extensions().is_empty()); | |
236 scoped_ptr<BackgroundApplicationListModel> model( | |
237 new BackgroundApplicationListModel(profile_.get())); | |
238 ASSERT_EQ(0U, model->size()); | |
239 | |
240 scoped_refptr<Extension> background = CreateExtension("background", true); | |
241 | |
242 // An ephemeral app with the background permission should not trigger | |
243 // background mode. | |
244 AddEphemeralApp(background.get(), service()); | |
245 ASSERT_FALSE(IsBackgroundApp(*background.get())); | |
246 ASSERT_EQ(1U, registry()->enabled_extensions().size()); | |
247 ASSERT_EQ(0U, model->size()); | |
248 | |
249 // If the ephemeral app becomes promoted to an installed app, it can now | |
250 // trigger background mode. | |
251 service()->PromoteEphemeralApp(background.get(), false /*from sync*/); | |
252 ASSERT_TRUE(IsBackgroundApp(*background.get())); | |
253 ASSERT_EQ(1U, registry()->enabled_extensions().size()); | |
254 ASSERT_EQ(1U, model->size()); | |
255 } | |
256 | |
257 // With minimal test logic, verifies behavior with dynamic permissions. | 217 // With minimal test logic, verifies behavior with dynamic permissions. |
258 TEST_F(BackgroundApplicationListModelTest, AddRemovePermissionsTest) { | 218 TEST_F(BackgroundApplicationListModelTest, AddRemovePermissionsTest) { |
259 InitializeAndLoadEmptyExtensionService(); | 219 InitializeAndLoadEmptyExtensionService(); |
260 ASSERT_TRUE(service()->is_ready()); | 220 ASSERT_TRUE(service()->is_ready()); |
261 ASSERT_TRUE(registry()->enabled_extensions().is_empty()); | 221 ASSERT_TRUE(registry()->enabled_extensions().is_empty()); |
262 scoped_ptr<BackgroundApplicationListModel> model( | 222 scoped_ptr<BackgroundApplicationListModel> model( |
263 new BackgroundApplicationListModel(profile_.get())); | 223 new BackgroundApplicationListModel(profile_.get())); |
264 ASSERT_EQ(0U, model->size()); | 224 ASSERT_EQ(0U, model->size()); |
265 | 225 |
266 scoped_refptr<Extension> ext = CreateExtension("extension", false); | 226 scoped_refptr<Extension> ext = CreateExtension("extension", false); |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 case 2: | 395 case 2: |
436 TogglePermission(service(), &extensions, model.get(), &expected, | 396 TogglePermission(service(), &extensions, model.get(), &expected, |
437 &count); | 397 &count); |
438 break; | 398 break; |
439 default: | 399 default: |
440 NOTREACHED(); | 400 NOTREACHED(); |
441 break; | 401 break; |
442 } | 402 } |
443 } | 403 } |
444 } | 404 } |
OLD | NEW |