Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: chrome/browser/background/background_application_list_model_unittest.cc

Issue 10298002: No longer start BG mode until a BackgroundContents is loaded (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Prospective fix for cros test failures. Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 27 matching lines...) Expand all
38 class BackgroundApplicationListModelTest : public ExtensionServiceTestBase { 38 class BackgroundApplicationListModelTest : public ExtensionServiceTestBase {
39 public: 39 public:
40 BackgroundApplicationListModelTest() {} 40 BackgroundApplicationListModelTest() {}
41 virtual ~BackgroundApplicationListModelTest() {} 41 virtual ~BackgroundApplicationListModelTest() {}
42 42
43 protected: 43 protected:
44 void InitializeAndLoadEmptyExtensionService() { 44 void InitializeAndLoadEmptyExtensionService() {
45 InitializeEmptyExtensionService(); 45 InitializeEmptyExtensionService();
46 service_->OnLoadedInstalledExtensions(); /* Sends EXTENSIONS_READY */ 46 service_->OnLoadedInstalledExtensions(); /* Sends EXTENSIONS_READY */
47 } 47 }
48
49 bool IsBackgroundApp(const Extension& app) {
50 return BackgroundApplicationListModel::IsBackgroundApp(app,
51 profile_.get());
52 }
48 }; 53 };
49 54
50 // Returns a barebones test Extension object with the specified |name|. The 55 // Returns a barebones test Extension object with the specified |name|. The
51 // returned extension will include background permission iff 56 // returned extension will include background permission iff
52 // |background_permission| is true. 57 // |background_permission| is true.
53 static scoped_refptr<Extension> CreateExtension(const std::string& name, 58 static scoped_refptr<Extension> CreateExtension(const std::string& name,
54 bool background_permission) { 59 bool background_permission) {
55 DictionaryValue manifest; 60 DictionaryValue manifest;
56 manifest.SetString(extension_manifest_keys::kVersion, "1.0.0.0"); 61 manifest.SetString(extension_manifest_keys::kVersion, "1.0.0.0");
57 manifest.SetString(extension_manifest_keys::kName, name); 62 manifest.SetString(extension_manifest_keys::kName, name);
(...skipping 19 matching lines...) Expand all
77 std::string GenerateUniqueExtensionName() { 82 std::string GenerateUniqueExtensionName() {
78 static int uniqueness = 0; 83 static int uniqueness = 0;
79 std::ostringstream output; 84 std::ostringstream output;
80 output << "Unique Named Extension " << uniqueness; 85 output << "Unique Named Extension " << uniqueness;
81 ++uniqueness; 86 ++uniqueness;
82 return output.str(); 87 return output.str();
83 } 88 }
84 89
85 void AddBackgroundPermission(ExtensionService* service, 90 void AddBackgroundPermission(ExtensionService* service,
86 Extension* extension) { 91 Extension* extension) {
87 if (BackgroundApplicationListModel::IsBackgroundApp(*extension)) return; 92 if (BackgroundApplicationListModel::IsBackgroundApp(*extension,
93 service->profile())) {
94 return;
95 }
88 96
89 static scoped_refptr<Extension> temporary = 97 static scoped_refptr<Extension> temporary =
90 CreateExtension(GenerateUniqueExtensionName(), true); 98 CreateExtension(GenerateUniqueExtensionName(), true);
91 scoped_refptr<const ExtensionPermissionSet> permissions = 99 scoped_refptr<const ExtensionPermissionSet> permissions =
92 temporary->GetActivePermissions(); 100 temporary->GetActivePermissions();
93 extensions::PermissionsUpdater(service->profile()).AddPermissions( 101 extensions::PermissionsUpdater(service->profile()).AddPermissions(
94 extension, permissions.get()); 102 extension, permissions.get());
95 } 103 }
96 104
97 void RemoveBackgroundPermission(ExtensionService* service, 105 void RemoveBackgroundPermission(ExtensionService* service,
98 Extension* extension) { 106 Extension* extension) {
99 if (!BackgroundApplicationListModel::IsBackgroundApp(*extension)) return; 107 if (!BackgroundApplicationListModel::IsBackgroundApp(*extension,
108 service->profile())) {
109 return;
110 }
100 extensions::PermissionsUpdater(service->profile()).RemovePermissions( 111 extensions::PermissionsUpdater(service->profile()).RemovePermissions(
101 extension, extension->GetActivePermissions()); 112 extension, extension->GetActivePermissions());
102 } 113 }
103 } // namespace 114 } // namespace
104 115
105 // With minimal test logic, verifies behavior over an explicit set of 116 // With minimal test logic, verifies behavior over an explicit set of
106 // extensions, of which some are Background Apps and others are not. 117 // extensions, of which some are Background Apps and others are not.
107 TEST_F(BackgroundApplicationListModelTest, ExplicitTest) { 118 TEST_F(BackgroundApplicationListModelTest, ExplicitTest) {
108 InitializeAndLoadEmptyExtensionService(); 119 InitializeAndLoadEmptyExtensionService();
109 ExtensionService* service = profile_->GetExtensionService(); 120 ExtensionService* service = profile_->GetExtensionService();
110 ASSERT_TRUE(service); 121 ASSERT_TRUE(service);
111 ASSERT_TRUE(service->is_ready()); 122 ASSERT_TRUE(service->is_ready());
112 ASSERT_TRUE(service->extensions()); 123 ASSERT_TRUE(service->extensions());
113 ASSERT_TRUE(service->extensions()->is_empty()); 124 ASSERT_TRUE(service->extensions()->is_empty());
114 scoped_ptr<BackgroundApplicationListModel> model( 125 scoped_ptr<BackgroundApplicationListModel> model(
115 new BackgroundApplicationListModel(profile_.get())); 126 new BackgroundApplicationListModel(profile_.get()));
116 ASSERT_EQ(0U, model->size()); 127 ASSERT_EQ(0U, model->size());
117 128
118 scoped_refptr<Extension> ext1 = CreateExtension("alpha", false); 129 scoped_refptr<Extension> ext1 = CreateExtension("alpha", false);
119 scoped_refptr<Extension> ext2 = CreateExtension("bravo", false); 130 scoped_refptr<Extension> ext2 = CreateExtension("bravo", false);
120 scoped_refptr<Extension> ext3 = CreateExtension("charlie", false); 131 scoped_refptr<Extension> ext3 = CreateExtension("charlie", false);
121 scoped_refptr<Extension> bgapp1 = CreateExtension("delta", true); 132 scoped_refptr<Extension> bgapp1 = CreateExtension("delta", true);
122 scoped_refptr<Extension> bgapp2 = CreateExtension("echo", true); 133 scoped_refptr<Extension> bgapp2 = CreateExtension("echo", true);
123 ASSERT_TRUE(service->extensions() != NULL); 134 ASSERT_TRUE(service->extensions() != NULL);
124 ASSERT_EQ(0U, service->extensions()->size()); 135 ASSERT_EQ(0U, service->extensions()->size());
125 ASSERT_EQ(0U, model->size()); 136 ASSERT_EQ(0U, model->size());
126 137
127 // Add alternating Extensions and Background Apps 138 // Add alternating Extensions and Background Apps
128 ASSERT_FALSE(BackgroundApplicationListModel::IsBackgroundApp(*ext1)); 139 ASSERT_FALSE(IsBackgroundApp(*ext1));
129 service->AddExtension(ext1); 140 service->AddExtension(ext1);
130 ASSERT_EQ(1U, service->extensions()->size()); 141 ASSERT_EQ(1U, service->extensions()->size());
131 ASSERT_EQ(0U, model->size()); 142 ASSERT_EQ(0U, model->size());
132 ASSERT_TRUE(BackgroundApplicationListModel::IsBackgroundApp(*bgapp1)); 143 ASSERT_TRUE(IsBackgroundApp(*bgapp1));
133 service->AddExtension(bgapp1); 144 service->AddExtension(bgapp1);
134 ASSERT_EQ(2U, service->extensions()->size()); 145 ASSERT_EQ(2U, service->extensions()->size());
135 ASSERT_EQ(1U, model->size()); 146 ASSERT_EQ(1U, model->size());
136 ASSERT_FALSE(BackgroundApplicationListModel::IsBackgroundApp(*ext2)); 147 ASSERT_FALSE(IsBackgroundApp(*ext2));
137 service->AddExtension(ext2); 148 service->AddExtension(ext2);
138 ASSERT_EQ(3U, service->extensions()->size()); 149 ASSERT_EQ(3U, service->extensions()->size());
139 ASSERT_EQ(1U, model->size()); 150 ASSERT_EQ(1U, model->size());
140 ASSERT_TRUE(BackgroundApplicationListModel::IsBackgroundApp(*bgapp2)); 151 ASSERT_TRUE(IsBackgroundApp(*bgapp2));
141 service->AddExtension(bgapp2); 152 service->AddExtension(bgapp2);
142 ASSERT_EQ(4U, service->extensions()->size()); 153 ASSERT_EQ(4U, service->extensions()->size());
143 ASSERT_EQ(2U, model->size()); 154 ASSERT_EQ(2U, model->size());
144 ASSERT_FALSE(BackgroundApplicationListModel::IsBackgroundApp(*ext3)); 155 ASSERT_FALSE(IsBackgroundApp(*ext3));
145 service->AddExtension(ext3); 156 service->AddExtension(ext3);
146 ASSERT_EQ(5U, service->extensions()->size()); 157 ASSERT_EQ(5U, service->extensions()->size());
147 ASSERT_EQ(2U, model->size()); 158 ASSERT_EQ(2U, model->size());
148 159
149 // Remove in FIFO order. 160 // Remove in FIFO order.
150 ASSERT_FALSE(BackgroundApplicationListModel::IsBackgroundApp(*ext1)); 161 ASSERT_FALSE(IsBackgroundApp(*ext1));
151 service->UninstallExtension(ext1->id(), false, NULL); 162 service->UninstallExtension(ext1->id(), false, NULL);
152 ASSERT_EQ(4U, service->extensions()->size()); 163 ASSERT_EQ(4U, service->extensions()->size());
153 ASSERT_EQ(2U, model->size()); 164 ASSERT_EQ(2U, model->size());
154 ASSERT_TRUE(BackgroundApplicationListModel::IsBackgroundApp(*bgapp1)); 165 ASSERT_TRUE(IsBackgroundApp(*bgapp1));
155 service->UninstallExtension(bgapp1->id(), false, NULL); 166 service->UninstallExtension(bgapp1->id(), false, NULL);
156 ASSERT_EQ(3U, service->extensions()->size()); 167 ASSERT_EQ(3U, service->extensions()->size());
157 ASSERT_EQ(1U, model->size()); 168 ASSERT_EQ(1U, model->size());
158 ASSERT_FALSE(BackgroundApplicationListModel::IsBackgroundApp(*ext2)); 169 ASSERT_FALSE(IsBackgroundApp(*ext2));
159 service->UninstallExtension(ext2->id(), false, NULL); 170 service->UninstallExtension(ext2->id(), false, NULL);
160 ASSERT_EQ(2U, service->extensions()->size()); 171 ASSERT_EQ(2U, service->extensions()->size());
161 ASSERT_EQ(1U, model->size()); 172 ASSERT_EQ(1U, model->size());
162 ASSERT_TRUE(BackgroundApplicationListModel::IsBackgroundApp(*bgapp2)); 173 ASSERT_TRUE(IsBackgroundApp(*bgapp2));
163 service->UninstallExtension(bgapp2->id(), false, NULL); 174 service->UninstallExtension(bgapp2->id(), false, NULL);
164 ASSERT_EQ(1U, service->extensions()->size()); 175 ASSERT_EQ(1U, service->extensions()->size());
165 ASSERT_EQ(0U, model->size()); 176 ASSERT_EQ(0U, model->size());
166 ASSERT_FALSE(BackgroundApplicationListModel::IsBackgroundApp(*ext3)); 177 ASSERT_FALSE(IsBackgroundApp(*ext3));
167 service->UninstallExtension(ext3->id(), false, NULL); 178 service->UninstallExtension(ext3->id(), false, NULL);
168 ASSERT_EQ(0U, service->extensions()->size()); 179 ASSERT_EQ(0U, service->extensions()->size());
169 ASSERT_EQ(0U, model->size()); 180 ASSERT_EQ(0U, model->size());
170 } 181 }
171 182
172 // With minimal test logic, verifies behavior with dynamic permissions. 183 // With minimal test logic, verifies behavior with dynamic permissions.
173 TEST_F(BackgroundApplicationListModelTest, AddRemovePermissionsTest) { 184 TEST_F(BackgroundApplicationListModelTest, AddRemovePermissionsTest) {
174 InitializeAndLoadEmptyExtensionService(); 185 InitializeAndLoadEmptyExtensionService();
175 ExtensionService* service = profile_->GetExtensionService(); 186 ExtensionService* service = profile_->GetExtensionService();
176 ASSERT_TRUE(service); 187 ASSERT_TRUE(service);
177 ASSERT_TRUE(service->is_ready()); 188 ASSERT_TRUE(service->is_ready());
178 ASSERT_TRUE(service->extensions()); 189 ASSERT_TRUE(service->extensions());
179 ASSERT_TRUE(service->extensions()->is_empty()); 190 ASSERT_TRUE(service->extensions()->is_empty());
180 scoped_ptr<BackgroundApplicationListModel> model( 191 scoped_ptr<BackgroundApplicationListModel> model(
181 new BackgroundApplicationListModel(profile_.get())); 192 new BackgroundApplicationListModel(profile_.get()));
182 ASSERT_EQ(0U, model->size()); 193 ASSERT_EQ(0U, model->size());
183 194
184 scoped_refptr<Extension> ext = CreateExtension("extension", false); 195 scoped_refptr<Extension> ext = CreateExtension("extension", false);
185 scoped_refptr<Extension> bgapp = CreateExtension("application", true); 196 scoped_refptr<Extension> bgapp = CreateExtension("application", true);
186 ASSERT_TRUE(service->extensions() != NULL); 197 ASSERT_TRUE(service->extensions() != NULL);
187 ASSERT_EQ(0U, service->extensions()->size()); 198 ASSERT_EQ(0U, service->extensions()->size());
188 ASSERT_EQ(0U, model->size()); 199 ASSERT_EQ(0U, model->size());
189 200
190 // Add one (non-background) extension and one background application 201 // Add one (non-background) extension and one background application
191 ASSERT_FALSE(BackgroundApplicationListModel::IsBackgroundApp(*ext)); 202 ASSERT_FALSE(IsBackgroundApp(*ext));
192 service->AddExtension(ext); 203 service->AddExtension(ext);
193 ASSERT_EQ(1U, service->extensions()->size()); 204 ASSERT_EQ(1U, service->extensions()->size());
194 ASSERT_EQ(0U, model->size()); 205 ASSERT_EQ(0U, model->size());
195 ASSERT_TRUE(BackgroundApplicationListModel::IsBackgroundApp(*bgapp)); 206 ASSERT_TRUE(IsBackgroundApp(*bgapp));
196 service->AddExtension(bgapp); 207 service->AddExtension(bgapp);
197 ASSERT_EQ(2U, service->extensions()->size()); 208 ASSERT_EQ(2U, service->extensions()->size());
198 ASSERT_EQ(1U, model->size()); 209 ASSERT_EQ(1U, model->size());
199 210
200 // Change permissions back and forth 211 // Change permissions back and forth
201 AddBackgroundPermission(service, ext.get()); 212 AddBackgroundPermission(service, ext.get());
202 ASSERT_EQ(2U, service->extensions()->size()); 213 ASSERT_EQ(2U, service->extensions()->size());
203 ASSERT_EQ(2U, model->size()); 214 ASSERT_EQ(2U, model->size());
204 RemoveBackgroundPermission(service, bgapp.get()); 215 RemoveBackgroundPermission(service, bgapp.get());
205 ASSERT_EQ(2U, service->extensions()->size()); 216 ASSERT_EQ(2U, service->extensions()->size());
(...skipping 14 matching lines...) Expand all
220 BackgroundApplicationListModel* model, 231 BackgroundApplicationListModel* model,
221 size_t* expected, 232 size_t* expected,
222 size_t* count) { 233 size_t* count) {
223 bool create_background = false; 234 bool create_background = false;
224 if (rand() % 2) { 235 if (rand() % 2) {
225 create_background = true; 236 create_background = true;
226 ++*expected; 237 ++*expected;
227 } 238 }
228 scoped_refptr<Extension> extension = 239 scoped_refptr<Extension> extension =
229 CreateExtension(GenerateUniqueExtensionName(), create_background); 240 CreateExtension(GenerateUniqueExtensionName(), create_background);
230 ASSERT_EQ(BackgroundApplicationListModel::IsBackgroundApp(*extension), 241 ASSERT_EQ(BackgroundApplicationListModel::IsBackgroundApp(*extension,
242 service->profile()),
231 create_background); 243 create_background);
232 extensions->insert(extension); 244 extensions->insert(extension);
233 ++*count; 245 ++*count;
234 ASSERT_EQ(*count, extensions->size()); 246 ASSERT_EQ(*count, extensions->size());
235 service->AddExtension(extension); 247 service->AddExtension(extension);
236 ASSERT_EQ(*count, service->extensions()->size()); 248 ASSERT_EQ(*count, service->extensions()->size());
237 ASSERT_EQ(*expected, model->size()); 249 ASSERT_EQ(*expected, model->size());
238 } 250 }
239 251
240 void RemoveExtension(ExtensionService* service, 252 void RemoveExtension(ExtensionService* service,
(...skipping 10 matching lines...) Expand all
251 ASSERT_EQ(0U, model->size()); 263 ASSERT_EQ(0U, model->size());
252 } else { 264 } else {
253 // Randomly select which extension to remove 265 // Randomly select which extension to remove
254 if (extensions->size() > 1) { 266 if (extensions->size() > 1) {
255 int offset = rand() % (extensions->size() - 1); 267 int offset = rand() % (extensions->size() - 1);
256 for (int index = 0; index < offset; ++index) 268 for (int index = 0; index < offset; ++index)
257 ++cursor; 269 ++cursor;
258 } 270 }
259 scoped_refptr<Extension> extension = cursor->get(); 271 scoped_refptr<Extension> extension = cursor->get();
260 std::string id = extension->id(); 272 std::string id = extension->id();
261 if (BackgroundApplicationListModel::IsBackgroundApp(*extension)) 273 if (BackgroundApplicationListModel::IsBackgroundApp(*extension,
274 service->profile())) {
262 --*expected; 275 --*expected;
276 }
263 extensions->erase(cursor); 277 extensions->erase(cursor);
264 --*count; 278 --*count;
265 ASSERT_EQ(*count, extensions->size()); 279 ASSERT_EQ(*count, extensions->size());
266 service->UninstallExtension(extension->id(), false, NULL); 280 service->UninstallExtension(extension->id(), false, NULL);
267 ASSERT_EQ(*count, service->extensions()->size()); 281 ASSERT_EQ(*count, service->extensions()->size());
268 ASSERT_EQ(*expected, model->size()); 282 ASSERT_EQ(*expected, model->size());
269 } 283 }
270 } 284 }
271 285
272 void TogglePermission(ExtensionService* service, 286 void TogglePermission(ExtensionService* service,
(...skipping 10 matching lines...) Expand all
283 ASSERT_EQ(0U, model->size()); 297 ASSERT_EQ(0U, model->size());
284 } else { 298 } else {
285 // Randomly select which extension to toggle. 299 // Randomly select which extension to toggle.
286 if (extensions->size() > 1) { 300 if (extensions->size() > 1) {
287 int offset = rand() % (extensions->size() - 1); 301 int offset = rand() % (extensions->size() - 1);
288 for (int index = 0; index < offset; ++index) 302 for (int index = 0; index < offset; ++index)
289 ++cursor; 303 ++cursor;
290 } 304 }
291 scoped_refptr<Extension> extension = cursor->get(); 305 scoped_refptr<Extension> extension = cursor->get();
292 std::string id = extension->id(); 306 std::string id = extension->id();
293 if (BackgroundApplicationListModel::IsBackgroundApp(*extension)) { 307 if (BackgroundApplicationListModel::IsBackgroundApp(*extension,
308 service->profile())) {
294 --*expected; 309 --*expected;
295 ASSERT_EQ(*count, extensions->size()); 310 ASSERT_EQ(*count, extensions->size());
296 RemoveBackgroundPermission(service, extension); 311 RemoveBackgroundPermission(service, extension);
297 ASSERT_EQ(*count, service->extensions()->size()); 312 ASSERT_EQ(*count, service->extensions()->size());
298 ASSERT_EQ(*expected, model->size()); 313 ASSERT_EQ(*expected, model->size());
299 } else { 314 } else {
300 ++*expected; 315 ++*expected;
301 ASSERT_EQ(*count, extensions->size()); 316 ASSERT_EQ(*count, extensions->size());
302 AddBackgroundPermission(service, extension); 317 AddBackgroundPermission(service, extension);
303 ASSERT_EQ(*count, service->extensions()->size()); 318 ASSERT_EQ(*count, service->extensions()->size());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 break; 350 break;
336 case 2: 351 case 2:
337 TogglePermission(service, &extensions, model.get(), &expected, &count); 352 TogglePermission(service, &extensions, model.get(), &expected, &count);
338 break; 353 break;
339 default: 354 default:
340 NOTREACHED(); 355 NOTREACHED();
341 break; 356 break;
342 } 357 }
343 } 358 }
344 } 359 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698