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

Side by Side Diff: athena/content/app_activity_unittest.cc

Issue 536013002: Decoupling visibility states from webcontent, adding visibility management in ResourceManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed Created 6 years, 3 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
« no previous file with comments | « athena/content/app_activity_registry.cc ('k') | athena/content/web_activity.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /// Copyright 2014 The Chromium Authors. All rights reserved. 1 /// Copyright 2014 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 "athena/activity/public/activity_factory.h" 5 #include "athena/activity/public/activity_factory.h"
6 #include "athena/activity/public/activity_manager.h" 6 #include "athena/activity/public/activity_manager.h"
7 #include "athena/content/app_activity.h" 7 #include "athena/content/app_activity.h"
8 #include "athena/content/app_activity_registry.h" 8 #include "athena/content/app_activity_registry.h"
9 #include "athena/content/public/app_registry.h" 9 #include "athena/content/public/app_registry.h"
10 #include "athena/extensions/public/extensions_delegate.h" 10 #include "athena/extensions/public/extensions_delegate.h"
11 #include "athena/resource_manager/public/resource_manager.h"
11 #include "athena/test/athena_test_base.h" 12 #include "athena/test/athena_test_base.h"
12 #include "extensions/common/extension_set.h" 13 #include "extensions/common/extension_set.h"
13 #include "ui/aura/window.h" 14 #include "ui/aura/window.h"
14 #include "ui/views/view.h" 15 #include "ui/views/view.h"
15 #include "ui/views/widget/widget.h" 16 #include "ui/views/widget/widget.h"
16 17
17 namespace content { 18 namespace content {
18 class BrowserContext; 19 class BrowserContext;
19 } 20 }
20 21
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 test_extensions_delegate_ = new TestExtensionsDelegate(); 148 test_extensions_delegate_ = new TestExtensionsDelegate();
148 } 149 }
149 150
150 // A function to create an Activity. 151 // A function to create an Activity.
151 TestAppActivity* CreateAppActivity(const std::string& app_id) { 152 TestAppActivity* CreateAppActivity(const std::string& app_id) {
152 TestAppActivity* activity = new TestAppActivity(app_id); 153 TestAppActivity* activity = new TestAppActivity(app_id);
153 ActivityManager::Get()->AddActivity(activity); 154 ActivityManager::Get()->AddActivity(activity);
154 return activity; 155 return activity;
155 } 156 }
156 157
157 void CloseActivity(Activity* activity) { 158 void DeleteActivity(Activity* activity) {
158 delete activity; 159 Activity::Delete(activity);
159 RunAllPendingInMessageLoop(); 160 RunAllPendingInMessageLoop();
160 } 161 }
161 162
162 // Get the position of the activity in the navigation history. 163 // Get the position of the activity in the navigation history.
163 int GetActivityPosition(Activity* activity) { 164 int GetActivityPosition(Activity* activity) {
164 aura::Window* window = activity->GetActivityViewModel()->GetContentsView() 165 aura::Window* window = activity->GetActivityViewModel()->GetContentsView()
165 ->GetWidget()->GetNativeWindow(); 166 ->GetWidget()->GetNativeWindow();
166 aura::Window::Windows windows = activity->GetWindow()->parent()->children(); 167 aura::Window::Windows windows = activity->GetWindow()->parent()->children();
167 for (size_t i = 0; i < windows.size(); i++) { 168 for (size_t i = 0; i < windows.size(); i++) {
168 if (windows[i] == window) 169 if (windows[i] == window)
169 return i; 170 return i;
170 } 171 }
171 return -1; 172 return -1;
172 } 173 }
173 174
175 // To avoid interference of the ResourceManager in these AppActivity
176 // framework tests, we disable the ResourceManager for some tests.
177 // Every use/interference of this function gets explained.
178 void DisableResourceManager() {
179 ResourceManager::Get()->Pause(true);
180 }
181
174 protected: 182 protected:
175 TestExtensionsDelegate* test_extensions_delegate() { 183 TestExtensionsDelegate* test_extensions_delegate() {
176 return test_extensions_delegate_; 184 return test_extensions_delegate_;
177 } 185 }
178 186
179 private: 187 private:
180 TestExtensionsDelegate* test_extensions_delegate_; 188 TestExtensionsDelegate* test_extensions_delegate_;
181 189
182 DISALLOW_COPY_AND_ASSIGN(AppActivityTest); 190 DISALLOW_COPY_AND_ASSIGN(AppActivityTest);
183 }; 191 };
184 192
185 // Only creates one activity and destroys it. 193 // Only creates one activity and destroys it.
186 TEST_F(AppActivityTest, OneAppActivity) { 194 TEST_F(AppActivityTest, OneAppActivity) {
187 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 195 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
188 { 196 {
189 TestAppActivity* app_activity = CreateAppActivity(kDummyApp1); 197 TestAppActivity* app_activity = CreateAppActivity(kDummyApp1);
190 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 198 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
191 EXPECT_EQ(1, app_activity->app_activity_registry()->NumberOfActivities()); 199 EXPECT_EQ(1, app_activity->app_activity_registry()->NumberOfActivities());
192 EXPECT_EQ(AppRegistry::Get()->GetAppActivityRegistry(kDummyApp1, NULL), 200 EXPECT_EQ(AppRegistry::Get()->GetAppActivityRegistry(kDummyApp1, NULL),
193 app_activity->app_activity_registry()); 201 app_activity->app_activity_registry());
194 CloseActivity(app_activity); 202 DeleteActivity(app_activity);
195 } 203 }
196 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 204 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
197 EXPECT_EQ(0, test_extensions_delegate()->unload_called()); 205 EXPECT_EQ(0, test_extensions_delegate()->unload_called());
198 EXPECT_EQ(0, test_extensions_delegate()->restart_called()); 206 EXPECT_EQ(0, test_extensions_delegate()->restart_called());
199 } 207 }
200 208
201 // Test running of two applications. 209 // Test running of two applications.
202 TEST_F(AppActivityTest, TwoAppsWithOneActivityEach) { 210 TEST_F(AppActivityTest, TwoAppsWithOneActivityEach) {
203 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 211 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
204 { 212 {
205 TestAppActivity* app_activity1 = CreateAppActivity(kDummyApp1); 213 TestAppActivity* app_activity1 = CreateAppActivity(kDummyApp1);
206 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 214 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
207 EXPECT_EQ(1, app_activity1->app_activity_registry()->NumberOfActivities()); 215 EXPECT_EQ(1, app_activity1->app_activity_registry()->NumberOfActivities());
208 TestAppActivity* app_activity2 = CreateAppActivity(kDummyApp2); 216 TestAppActivity* app_activity2 = CreateAppActivity(kDummyApp2);
209 EXPECT_EQ(2, AppRegistry::Get()->NumberOfApplications()); 217 EXPECT_EQ(2, AppRegistry::Get()->NumberOfApplications());
210 EXPECT_EQ(1, app_activity2->app_activity_registry()->NumberOfActivities()); 218 EXPECT_EQ(1, app_activity2->app_activity_registry()->NumberOfActivities());
211 EXPECT_EQ(1, app_activity1->app_activity_registry()->NumberOfActivities()); 219 EXPECT_EQ(1, app_activity1->app_activity_registry()->NumberOfActivities());
212 CloseActivity(app_activity1); 220 DeleteActivity(app_activity1);
213 CloseActivity(app_activity2); 221 DeleteActivity(app_activity2);
214 } 222 }
215 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 223 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
216 EXPECT_EQ(0, test_extensions_delegate()->unload_called()); 224 EXPECT_EQ(0, test_extensions_delegate()->unload_called());
217 EXPECT_EQ(0, test_extensions_delegate()->restart_called()); 225 EXPECT_EQ(0, test_extensions_delegate()->restart_called());
218 } 226 }
219 227
220 // Create and destroy two activities for the same application. 228 // Create and destroy two activities for the same application.
221 TEST_F(AppActivityTest, TwoAppActivities) { 229 TEST_F(AppActivityTest, TwoAppActivities) {
222 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 230 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
223 { 231 {
224 TestAppActivity* app_activity1 = CreateAppActivity(kDummyApp1); 232 TestAppActivity* app_activity1 = CreateAppActivity(kDummyApp1);
225 TestAppActivity* app_activity2 = CreateAppActivity(kDummyApp1); 233 TestAppActivity* app_activity2 = CreateAppActivity(kDummyApp1);
226 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 234 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
227 EXPECT_EQ(2, app_activity1->app_activity_registry()->NumberOfActivities()); 235 EXPECT_EQ(2, app_activity1->app_activity_registry()->NumberOfActivities());
228 EXPECT_EQ(app_activity1->app_activity_registry(), 236 EXPECT_EQ(app_activity1->app_activity_registry(),
229 app_activity2->app_activity_registry()); 237 app_activity2->app_activity_registry());
230 CloseActivity(app_activity1); 238 DeleteActivity(app_activity1);
231 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 239 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
232 EXPECT_EQ(1, app_activity2->app_activity_registry()->NumberOfActivities()); 240 EXPECT_EQ(1, app_activity2->app_activity_registry()->NumberOfActivities());
233 CloseActivity(app_activity2); 241 DeleteActivity(app_activity2);
234 } 242 }
235 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 243 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
236 { 244 {
237 TestAppActivity* app_activity1 = CreateAppActivity(kDummyApp1); 245 TestAppActivity* app_activity1 = CreateAppActivity(kDummyApp1);
238 TestAppActivity* app_activity2 = CreateAppActivity(kDummyApp1); 246 TestAppActivity* app_activity2 = CreateAppActivity(kDummyApp1);
239 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 247 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
240 EXPECT_EQ(2, app_activity1->app_activity_registry()->NumberOfActivities()); 248 EXPECT_EQ(2, app_activity1->app_activity_registry()->NumberOfActivities());
241 EXPECT_EQ(app_activity1->app_activity_registry(), 249 EXPECT_EQ(app_activity1->app_activity_registry(),
242 app_activity2->app_activity_registry()); 250 app_activity2->app_activity_registry());
243 CloseActivity(app_activity2); 251 DeleteActivity(app_activity2);
244 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 252 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
245 EXPECT_EQ(1, app_activity1->app_activity_registry()->NumberOfActivities()); 253 EXPECT_EQ(1, app_activity1->app_activity_registry()->NumberOfActivities());
246 CloseActivity(app_activity1); 254 DeleteActivity(app_activity1);
247 } 255 }
248 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 256 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
249 EXPECT_EQ(0, test_extensions_delegate()->unload_called()); 257 EXPECT_EQ(0, test_extensions_delegate()->unload_called());
250 EXPECT_EQ(0, test_extensions_delegate()->restart_called()); 258 EXPECT_EQ(0, test_extensions_delegate()->restart_called());
251 } 259 }
252 260
253 // Test unload and the creation of the proxy, then "closing the activity". 261 // Test unload and the creation of the proxy, then "closing the activity".
254 TEST_F(AppActivityTest, TestUnloadFollowedByClose) { 262 TEST_F(AppActivityTest, TestUnloadFollowedByClose) {
263 // We do not want the ResourceManager to interfere with this test. In this
264 // case it would (dependent on its current internal implementation)
265 // automatically re-load the unloaded activity if it is in an "active"
266 // position.
267 DisableResourceManager();
255 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 268 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
256 269
257 TestAppActivity* app_activity = CreateAppActivity(kDummyApp1); 270 TestAppActivity* app_activity = CreateAppActivity(kDummyApp1);
258 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 271 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
259 AppActivityRegistry* app_activity_registry = 272 AppActivityRegistry* app_activity_registry =
260 app_activity->app_activity_registry(); 273 app_activity->app_activity_registry();
261 EXPECT_EQ(1, app_activity_registry->NumberOfActivities()); 274 EXPECT_EQ(1, app_activity_registry->NumberOfActivities());
262 EXPECT_EQ(Activity::ACTIVITY_VISIBLE, app_activity->GetCurrentState()); 275 EXPECT_EQ(Activity::ACTIVITY_VISIBLE, app_activity->GetCurrentState());
263 276
264 // Calling Unload now should not do anything since at least one activity in 277 // Calling Unload now should not do anything since at least one activity in
265 // the registry is still visible. 278 // the registry is still visible.
266 app_activity_registry->Unload(); 279 app_activity_registry->Unload();
267 EXPECT_EQ(0, test_extensions_delegate()->unload_called()); 280 EXPECT_EQ(0, test_extensions_delegate()->unload_called());
268 281
269 // After setting our activity to unloaded however the application should get 282 // After setting our activity to unloaded however the application should get
270 // unloaded as requested. 283 // unloaded as requested.
271 app_activity->SetCurrentState(Activity::ACTIVITY_UNLOADED); 284 app_activity->SetCurrentState(Activity::ACTIVITY_UNLOADED);
272 app_activity_registry->Unload(); 285 app_activity_registry->Unload();
273 EXPECT_EQ(1, test_extensions_delegate()->unload_called()); 286 EXPECT_EQ(1, test_extensions_delegate()->unload_called());
274 287
275 // Check that our created application is gone, and instead a proxy got 288 // Check that our created application is gone, and instead a proxy got
276 // created. 289 // created.
277 ASSERT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 290 ASSERT_EQ(1, AppRegistry::Get()->NumberOfApplications());
278 ASSERT_EQ(app_activity_registry, 291 ASSERT_EQ(app_activity_registry,
279 AppRegistry::Get()->GetAppActivityRegistry(kDummyApp1, NULL)); 292 AppRegistry::Get()->GetAppActivityRegistry(kDummyApp1, NULL));
280 EXPECT_EQ(0, app_activity_registry->NumberOfActivities()); 293 EXPECT_EQ(0, app_activity_registry->NumberOfActivities());
281 Activity* activity_proxy = 294 Activity* activity_proxy = app_activity_registry->unloaded_activity_proxy();
282 app_activity_registry->unloaded_activity_proxy_for_test();
283 ASSERT_TRUE(activity_proxy); 295 ASSERT_TRUE(activity_proxy);
284 EXPECT_NE(app_activity, activity_proxy); 296 EXPECT_NE(app_activity, activity_proxy);
285 EXPECT_EQ(Activity::ACTIVITY_UNLOADED, activity_proxy->GetCurrentState()); 297 EXPECT_EQ(Activity::ACTIVITY_UNLOADED, activity_proxy->GetCurrentState());
298 EXPECT_EQ(0, test_extensions_delegate()->restart_called());
286 299
287 // Close the proxy object and make sure that nothing bad happens. 300 // Close the proxy object and make sure that nothing bad happens.
288 CloseActivity(activity_proxy); 301 DeleteActivity(activity_proxy);
289 302
290 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 303 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
291 EXPECT_EQ(1, test_extensions_delegate()->unload_called()); 304 EXPECT_EQ(1, test_extensions_delegate()->unload_called());
292 EXPECT_EQ(0, test_extensions_delegate()->restart_called()); 305 EXPECT_EQ(0, test_extensions_delegate()->restart_called());
293 } 306 }
294 307
295 // Test that when unloading an app while multiple apps / activities are present, 308 // Test that when unloading an app while multiple apps / activities are present,
296 // the proxy gets created in the correct location. 309 // the proxy gets created in the correct location.
297 TEST_F(AppActivityTest, TestUnloadProxyLocation) { 310 TEST_F(AppActivityTest, TestUnloadProxyLocation) {
298 // Set up some activities for some applications. 311 // Set up some activities for some applications.
299 TestAppActivity* app_activity1a = CreateAppActivity(kDummyApp1); 312 TestAppActivity* app_activity1a = CreateAppActivity(kDummyApp1);
300 TestAppActivity* app_activity2a = CreateAppActivity(kDummyApp2); 313 TestAppActivity* app_activity2a = CreateAppActivity(kDummyApp2);
301 TestAppActivity* app_activity2b = CreateAppActivity(kDummyApp2); 314 TestAppActivity* app_activity2b = CreateAppActivity(kDummyApp2);
302 TestAppActivity* app_activity1b = CreateAppActivity(kDummyApp1); 315 TestAppActivity* app_activity1b = CreateAppActivity(kDummyApp1);
303 EXPECT_EQ(3, GetActivityPosition(app_activity1b)); 316 EXPECT_EQ(3, GetActivityPosition(app_activity1b));
304 EXPECT_EQ(2, GetActivityPosition(app_activity2b)); 317 EXPECT_EQ(2, GetActivityPosition(app_activity2b));
305 EXPECT_EQ(1, GetActivityPosition(app_activity2a)); 318 EXPECT_EQ(1, GetActivityPosition(app_activity2a));
306 EXPECT_EQ(0, GetActivityPosition(app_activity1a)); 319 EXPECT_EQ(0, GetActivityPosition(app_activity1a));
307 320
308 // Unload an app and make sure that the proxy is in the newest activity slot. 321 // Unload an app and make sure that the proxy is in the newest activity slot.
309 AppActivityRegistry* app_activity_registry = 322 AppActivityRegistry* app_activity_registry =
310 app_activity2a->app_activity_registry(); 323 app_activity2a->app_activity_registry();
311 app_activity2a->SetCurrentState(Activity::ACTIVITY_UNLOADED); 324 app_activity2a->SetCurrentState(Activity::ACTIVITY_UNLOADED);
312 app_activity2b->SetCurrentState(Activity::ACTIVITY_UNLOADED); 325 app_activity2b->SetCurrentState(Activity::ACTIVITY_UNLOADED);
313 app_activity2a->app_activity_registry()->Unload(); 326 app_activity2a->app_activity_registry()->Unload();
314 EXPECT_EQ(0, app_activity_registry->NumberOfActivities()); 327 EXPECT_EQ(0, app_activity_registry->NumberOfActivities());
315 Activity* activity_proxy = 328 Activity* activity_proxy = app_activity_registry->unloaded_activity_proxy();
316 app_activity_registry->unloaded_activity_proxy_for_test();
317 RunAllPendingInMessageLoop(); 329 RunAllPendingInMessageLoop();
318 330
319 EXPECT_EQ(2, GetActivityPosition(app_activity1b)); 331 EXPECT_EQ(2, GetActivityPosition(app_activity1b));
320 EXPECT_EQ(1, GetActivityPosition(activity_proxy)); 332 EXPECT_EQ(1, GetActivityPosition(activity_proxy));
321 EXPECT_EQ(0, GetActivityPosition(app_activity1a)); 333 EXPECT_EQ(0, GetActivityPosition(app_activity1a));
334 EXPECT_EQ(0, test_extensions_delegate()->restart_called());
322 335
323 CloseActivity(activity_proxy); 336 DeleteActivity(activity_proxy);
324 CloseActivity(app_activity1b); 337 DeleteActivity(app_activity1b);
325 CloseActivity(app_activity1a); 338 DeleteActivity(app_activity1a);
326 } 339 }
327 340
328 // Test that an unload with multiple activities of the same app will only unload 341 // Test that an unload with multiple activities of the same app will only unload
329 // when all activities were marked for unloading. 342 // when all activities were marked for unloading.
330 TEST_F(AppActivityTest, TestMultipleActivityUnloadLock) { 343 TEST_F(AppActivityTest, TestMultipleActivityUnloadLock) {
331 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 344 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
332 345
333 TestAppActivity* app_activity1 = CreateAppActivity(kDummyApp1); 346 TestAppActivity* app_activity1 = CreateAppActivity(kDummyApp1);
334 TestAppActivity* app_activity2 = CreateAppActivity(kDummyApp1); 347 TestAppActivity* app_activity2 = CreateAppActivity(kDummyApp1);
335 TestAppActivity* app_activity3 = CreateAppActivity(kDummyApp1); 348 TestAppActivity* app_activity3 = CreateAppActivity(kDummyApp1);
(...skipping 18 matching lines...) Expand all
354 EXPECT_EQ(0, test_extensions_delegate()->unload_called()); 367 EXPECT_EQ(0, test_extensions_delegate()->unload_called());
355 app_activity3->SetCurrentState(Activity::ACTIVITY_UNLOADED); 368 app_activity3->SetCurrentState(Activity::ACTIVITY_UNLOADED);
356 app_activity3->app_activity_registry()->Unload(); 369 app_activity3->app_activity_registry()->Unload();
357 EXPECT_EQ(1, test_extensions_delegate()->unload_called()); 370 EXPECT_EQ(1, test_extensions_delegate()->unload_called());
358 371
359 // Now there should only be the proxy activity left. 372 // Now there should only be the proxy activity left.
360 ASSERT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 373 ASSERT_EQ(1, AppRegistry::Get()->NumberOfApplications());
361 ASSERT_EQ(app_activity_registry, 374 ASSERT_EQ(app_activity_registry,
362 AppRegistry::Get()->GetAppActivityRegistry(kDummyApp1, NULL)); 375 AppRegistry::Get()->GetAppActivityRegistry(kDummyApp1, NULL));
363 EXPECT_EQ(0, app_activity_registry->NumberOfActivities()); 376 EXPECT_EQ(0, app_activity_registry->NumberOfActivities());
364 Activity* activity_proxy = 377 Activity* activity_proxy = app_activity_registry->unloaded_activity_proxy();
365 app_activity_registry->unloaded_activity_proxy_for_test();
366 ASSERT_TRUE(activity_proxy); 378 ASSERT_TRUE(activity_proxy);
367 EXPECT_NE(app_activity1, activity_proxy); 379 EXPECT_NE(app_activity1, activity_proxy);
368 EXPECT_NE(app_activity2, activity_proxy); 380 EXPECT_NE(app_activity2, activity_proxy);
369 EXPECT_NE(app_activity3, activity_proxy); 381 EXPECT_NE(app_activity3, activity_proxy);
370 EXPECT_EQ(Activity::ACTIVITY_UNLOADED, activity_proxy->GetCurrentState()); 382 EXPECT_EQ(Activity::ACTIVITY_UNLOADED, activity_proxy->GetCurrentState());
371 383
372 // Close the proxy object and make sure that nothing bad happens. 384 // Close the proxy object and make sure that nothing bad happens.
373 CloseActivity(activity_proxy); 385 DeleteActivity(activity_proxy);
374 386
375 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 387 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
376 EXPECT_EQ(1, test_extensions_delegate()->unload_called()); 388 EXPECT_EQ(1, test_extensions_delegate()->unload_called());
377 EXPECT_EQ(0, test_extensions_delegate()->restart_called()); 389 EXPECT_EQ(0, test_extensions_delegate()->restart_called());
378 } 390 }
379 391
380 // Test that activating the proxy will reload the application. 392 // Test that activating the proxy will reload the application.
381 TEST_F(AppActivityTest, TestUnloadWithReload) { 393 TEST_F(AppActivityTest, TestUnloadWithReload) {
394 // We do not want the ResourceManager to interfere with this test. In this
395 // case it would (dependent on its current internal implementation)
396 // automatically re-load the unloaded activity if it is in an "active"
397 // position.
398 DisableResourceManager();
382 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 399 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
383 400
384 TestAppActivity* app_activity = CreateAppActivity(kDummyApp1); 401 TestAppActivity* app_activity = CreateAppActivity(kDummyApp1);
385 AppActivityRegistry* app_activity_registry = 402 AppActivityRegistry* app_activity_registry =
386 app_activity->app_activity_registry(); 403 app_activity->app_activity_registry();
387 404
388 // Unload the activity. 405 // Unload the activity.
389 app_activity->SetCurrentState(Activity::ACTIVITY_UNLOADED); 406 app_activity->SetCurrentState(Activity::ACTIVITY_UNLOADED);
390 app_activity_registry->Unload(); 407 app_activity_registry->Unload();
391 EXPECT_EQ(1, test_extensions_delegate()->unload_called()); 408 EXPECT_EQ(1, test_extensions_delegate()->unload_called());
392 409
393 // Try to activate the activity again. This will force the application to 410 // Try to activate the activity again. This will force the application to
394 // reload. 411 // reload.
395 Activity* activity_proxy = 412 Activity* activity_proxy = app_activity_registry->unloaded_activity_proxy();
396 app_activity_registry->unloaded_activity_proxy_for_test();
397 activity_proxy->SetCurrentState(Activity::ACTIVITY_VISIBLE); 413 activity_proxy->SetCurrentState(Activity::ACTIVITY_VISIBLE);
398 EXPECT_EQ(1, test_extensions_delegate()->restart_called()); 414 EXPECT_EQ(1, test_extensions_delegate()->restart_called());
399 415
400 // However - the restart in this test framework does not really restart and 416 // However - the restart in this test framework does not really restart and
401 // all objects should be gone now. 417 // all objects should be still there..
418 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
419 EXPECT_TRUE(app_activity_registry->unloaded_activity_proxy());
420 Activity::Delete(app_activity_registry->unloaded_activity_proxy());
402 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 421 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
403 } 422 }
404 423
405 } // namespace test 424 } // namespace test
406 } // namespace athena 425 } // namespace athena
OLDNEW
« no previous file with comments | « athena/content/app_activity_registry.cc ('k') | athena/content/web_activity.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698