OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |