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

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

Issue 501093003: Consolidate AppControllDelegate to ExtensionsDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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/app_registry_impl.cc » ('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_content_control_delegate.h"
10 #include "athena/content/public/app_registry.h" 9 #include "athena/content/public/app_registry.h"
10 #include "athena/extensions/public/extensions_delegate.h"
11 #include "athena/test/athena_test_base.h" 11 #include "athena/test/athena_test_base.h"
12 #include "extensions/common/extension_set.h"
12 #include "ui/aura/window.h" 13 #include "ui/aura/window.h"
13 #include "ui/views/view.h" 14 #include "ui/views/view.h"
14 #include "ui/views/widget/widget.h" 15 #include "ui/views/widget/widget.h"
15 16
16 namespace content { 17 namespace content {
17 class BrowserContext; 18 class BrowserContext;
18 } 19 }
19 20
20 namespace athena { 21 namespace athena {
21 namespace test { 22 namespace test {
22 23
23 namespace { 24 namespace {
24 25
25 // An identifier for the running apps. 26 // An identifier for the running apps.
26 const char kDummyApp1[] = "aaaaaaa"; 27 const char kDummyApp1[] = "aaaaaaa";
27 const char kDummyApp2[] = "bbbbbbb"; 28 const char kDummyApp2[] = "bbbbbbb";
28 29
29 // A dummy test app activity which works without content / ShellAppWindow. 30 // A dummy test app activity which works without content / ShellAppWindow.
30 class TestAppActivity : public AppActivity { 31 class TestAppActivity : public AppActivity {
31 public: 32 public:
32 explicit TestAppActivity(const std::string& app_id) : 33 explicit TestAppActivity(const std::string& app_id)
33 AppActivity(), 34 : AppActivity(app_id),
34 app_id_(app_id), 35 view_(new views::View()),
35 view_(new views::View()), 36 current_state_(ACTIVITY_VISIBLE) {
36 current_state_(ACTIVITY_VISIBLE) {
37 app_activity_registry_ = 37 app_activity_registry_ =
38 AppRegistry::Get()->GetAppActivityRegistry(app_id, NULL); 38 AppRegistry::Get()->GetAppActivityRegistry(app_id, NULL);
39 app_activity_registry_->RegisterAppActivity(this); 39 app_activity_registry_->RegisterAppActivity(this);
40 } 40 }
41 virtual ~TestAppActivity() { 41 virtual ~TestAppActivity() {
42 app_activity_registry_->UnregisterAppActivity(this); 42 app_activity_registry_->UnregisterAppActivity(this);
43 } 43 }
44 44
45 AppActivityRegistry* app_activity_registry() { 45 AppActivityRegistry* app_activity_registry() {
46 return app_activity_registry_; 46 return app_activity_registry_;
(...skipping 13 matching lines...) Expand all
60 return true; 60 return true;
61 } 61 }
62 virtual ActivityMediaState GetMediaState() OVERRIDE { 62 virtual ActivityMediaState GetMediaState() OVERRIDE {
63 return Activity::ACTIVITY_MEDIA_STATE_NONE; 63 return Activity::ACTIVITY_MEDIA_STATE_NONE;
64 } 64 }
65 virtual aura::Window* GetWindow() OVERRIDE { 65 virtual aura::Window* GetWindow() OVERRIDE {
66 return view_->GetWidget()->GetNativeWindow(); 66 return view_->GetWidget()->GetNativeWindow();
67 } 67 }
68 68
69 // AppActivity: 69 // AppActivity:
70 virtual content::WebContents* GetWebContents() OVERRIDE { 70 virtual content::WebContents* GetWebContents() OVERRIDE { return NULL; }
71 return NULL;
72 }
73 71
74 // ActivityViewModel: 72 // ActivityViewModel:
75 virtual void Init() OVERRIDE {} 73 virtual void Init() OVERRIDE {}
76 virtual SkColor GetRepresentativeColor() const OVERRIDE { return 0; } 74 virtual SkColor GetRepresentativeColor() const OVERRIDE { return 0; }
77 virtual base::string16 GetTitle() const OVERRIDE { return title_; } 75 virtual base::string16 GetTitle() const OVERRIDE { return title_; }
78 virtual bool UsesFrame() const OVERRIDE { return true; } 76 virtual bool UsesFrame() const OVERRIDE { return true; }
79 virtual views::View* GetContentsView() OVERRIDE { return view_; } 77 virtual views::View* GetContentsView() OVERRIDE { return view_; }
80 virtual void CreateOverviewModeImage() OVERRIDE {} 78 virtual void CreateOverviewModeImage() OVERRIDE {}
81 79
82 private: 80 private:
83 // If known the registry which holds all activities for the associated app. 81 // If known the registry which holds all activities for the associated app.
84 AppActivityRegistry* app_activity_registry_; 82 AppActivityRegistry* app_activity_registry_;
85 83
86 // The application ID.
87 const std::string& app_id_;
88
89 // The title of the activity. 84 // The title of the activity.
90 base::string16 title_; 85 base::string16 title_;
91 86
92 // Our view. 87 // Our view.
93 views::View* view_; 88 views::View* view_;
94 89
95 // The current state for this activity. 90 // The current state for this activity.
96 ActivityState current_state_; 91 ActivityState current_state_;
97 92
98 DISALLOW_COPY_AND_ASSIGN(TestAppActivity); 93 DISALLOW_COPY_AND_ASSIGN(TestAppActivity);
99 }; 94 };
100 95
101 // An AppContentDelegateClass which we can query for call stats. 96 // An AppContentDelegateClass which we can query for call stats.
102 class TestAppContentControlDelegate : public AppContentControlDelegate { 97 class TestExtensionsDelegate : public ExtensionsDelegate {
103 public: 98 public:
104 TestAppContentControlDelegate() : unload_called_(0), 99 TestExtensionsDelegate() : unload_called_(0), restart_called_(0) {}
105 restart_called_(0) {} 100 virtual ~TestExtensionsDelegate() {}
106 virtual ~TestAppContentControlDelegate() {}
107 101
108 int unload_called() { return unload_called_; } 102 int unload_called() const { return unload_called_; }
109 int restart_called() { return restart_called_; } 103 int restart_called() const { return restart_called_; }
110 void SetExtensionID(const std::string& extension_id) { 104
111 extension_id_to_return_ = extension_id; 105 // ExtensionsDelegate:
106 virtual content::BrowserContext* GetBrowserContext() const OVERRIDE {
107 return NULL;
112 } 108 }
113 109 virtual const extensions::ExtensionSet& GetInstalledExtensions() OVERRIDE {
110 return extension_set_;
111 }
114 // Unload an application. Returns true when unloaded. 112 // Unload an application. Returns true when unloaded.
115 virtual bool UnloadApplication( 113 virtual bool UnloadApp(const std::string& app_id) OVERRIDE {
116 const std::string& app_id,
117 content::BrowserContext* browser_context) OVERRIDE {
118 unload_called_++; 114 unload_called_++;
119 // Since we did not close anything we let the framework clean up. 115 // Since we did not close anything we let the framework clean up.
120 return false; 116 return false;
121 } 117 }
122 // Restarts an application. Returns true when the restart was initiated. 118 // Restarts an application. Returns true when the restart was initiated.
123 virtual bool RestartApplication( 119 virtual bool LaunchApp(const std::string& app_id) OVERRIDE {
124 const std::string& app_id,
125 content::BrowserContext* browser_context) OVERRIDE {
126 restart_called_++; 120 restart_called_++;
127 return true; 121 return true;
128 } 122 }
129 // Returns the application ID (or an empty string) for a given web content.
130 virtual std::string GetApplicationID(
131 content::WebContents* web_contents) OVERRIDE {
132 return extension_id_to_return_;
133 }
134 123
135 private: 124 private:
136 int unload_called_; 125 int unload_called_;
137 int restart_called_; 126 int restart_called_;
138 std::string extension_id_to_return_;
139 127
140 DISALLOW_COPY_AND_ASSIGN(TestAppContentControlDelegate); 128 extensions::ExtensionSet extension_set_;
129
130 DISALLOW_COPY_AND_ASSIGN(TestExtensionsDelegate);
141 }; 131 };
142 132
143 } // namespace 133 } // namespace
144 134
145 // Our testing base. 135 // Our testing base.
146 class AppActivityTest : public AthenaTestBase { 136 class AppActivityTest : public AthenaTestBase {
147 public: 137 public:
148 AppActivityTest() : test_app_content_control_delegate_(NULL) {} 138 AppActivityTest() : test_extensions_delegate_(NULL) {}
149 virtual ~AppActivityTest() {} 139 virtual ~AppActivityTest() {}
150 140
151 // AthenaTestBase: 141 // AthenaTestBase:
152 virtual void SetUp() OVERRIDE { 142 virtual void SetUp() OVERRIDE {
153 AthenaTestBase::SetUp(); 143 AthenaTestBase::SetUp();
154 // Create and install our TestAppContentDelegate with instrumentation. 144 // Create and install our TestAppContentDelegate with instrumentation.
155 test_app_content_control_delegate_ = new TestAppContentControlDelegate(); 145 ExtensionsDelegate::Shutdown();
156 AppRegistry::Get()->SetDelegate(test_app_content_control_delegate_); 146 // The instance will be deleted by ExtensionsDelegate::Shutdown().
147 test_extensions_delegate_ = new TestExtensionsDelegate();
157 } 148 }
158 149
159 // A function to create an Activity. 150 // A function to create an Activity.
160 TestAppActivity* CreateAppActivity(const std::string& app_id) { 151 TestAppActivity* CreateAppActivity(const std::string& app_id) {
161 TestAppActivity* activity = new TestAppActivity(app_id); 152 TestAppActivity* activity = new TestAppActivity(app_id);
162 ActivityManager::Get()->AddActivity(activity); 153 ActivityManager::Get()->AddActivity(activity);
163 return activity; 154 return activity;
164 } 155 }
165 156
166 void CloseActivity(Activity* activity) { 157 void CloseActivity(Activity* activity) {
167 delete activity; 158 delete activity;
168 RunAllPendingInMessageLoop(); 159 RunAllPendingInMessageLoop();
169 } 160 }
170 161
171 // Get the position of the activity in the navigation history. 162 // Get the position of the activity in the navigation history.
172 int GetActivityPosition(Activity* activity) { 163 int GetActivityPosition(Activity* activity) {
173 aura::Window* window = activity->GetActivityViewModel()->GetContentsView() 164 aura::Window* window = activity->GetActivityViewModel()->GetContentsView()
174 ->GetWidget()->GetNativeWindow(); 165 ->GetWidget()->GetNativeWindow();
175 aura::Window::Windows windows = activity->GetWindow()->parent()->children(); 166 aura::Window::Windows windows = activity->GetWindow()->parent()->children();
176 for (size_t i = 0; i < windows.size(); i++) { 167 for (size_t i = 0; i < windows.size(); i++) {
177 if (windows[i] == window) 168 if (windows[i] == window)
178 return i; 169 return i;
179 } 170 }
180 return -1; 171 return -1;
181 } 172 }
182 173
183 protected: 174 protected:
184 TestAppContentControlDelegate* test_app_content_control_delegate() { 175 TestExtensionsDelegate* test_extensions_delegate() {
185 return test_app_content_control_delegate_; 176 return test_extensions_delegate_;
186 } 177 }
187 178
188 private: 179 private:
189 TestAppContentControlDelegate* test_app_content_control_delegate_; 180 TestExtensionsDelegate* test_extensions_delegate_;
190 181
191 DISALLOW_COPY_AND_ASSIGN(AppActivityTest); 182 DISALLOW_COPY_AND_ASSIGN(AppActivityTest);
192 }; 183 };
193 184
194 // Only creates one activity and destroys it. 185 // Only creates one activity and destroys it.
195 TEST_F(AppActivityTest, OneAppActivity) { 186 TEST_F(AppActivityTest, OneAppActivity) {
196 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 187 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
197 { 188 {
198 TestAppActivity* app_activity = CreateAppActivity(kDummyApp1); 189 TestAppActivity* app_activity = CreateAppActivity(kDummyApp1);
199 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 190 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
200 EXPECT_EQ(1, app_activity->app_activity_registry()->NumberOfActivities()); 191 EXPECT_EQ(1, app_activity->app_activity_registry()->NumberOfActivities());
201 EXPECT_EQ(AppRegistry::Get()->GetAppActivityRegistry(kDummyApp1, NULL), 192 EXPECT_EQ(AppRegistry::Get()->GetAppActivityRegistry(kDummyApp1, NULL),
202 app_activity->app_activity_registry()); 193 app_activity->app_activity_registry());
203 CloseActivity(app_activity); 194 CloseActivity(app_activity);
204 } 195 }
205 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 196 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
206 EXPECT_EQ(0, test_app_content_control_delegate()->unload_called()); 197 EXPECT_EQ(0, test_extensions_delegate()->unload_called());
207 EXPECT_EQ(0, test_app_content_control_delegate()->restart_called()); 198 EXPECT_EQ(0, test_extensions_delegate()->restart_called());
208 } 199 }
209 200
210 // Test running of two applications. 201 // Test running of two applications.
211 TEST_F(AppActivityTest, TwoAppsWithOneActivityEach) { 202 TEST_F(AppActivityTest, TwoAppsWithOneActivityEach) {
212 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 203 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
213 { 204 {
214 TestAppActivity* app_activity1 = CreateAppActivity(kDummyApp1); 205 TestAppActivity* app_activity1 = CreateAppActivity(kDummyApp1);
215 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 206 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
216 EXPECT_EQ(1, app_activity1->app_activity_registry()->NumberOfActivities()); 207 EXPECT_EQ(1, app_activity1->app_activity_registry()->NumberOfActivities());
217 TestAppActivity* app_activity2 = CreateAppActivity(kDummyApp2); 208 TestAppActivity* app_activity2 = CreateAppActivity(kDummyApp2);
218 EXPECT_EQ(2, AppRegistry::Get()->NumberOfApplications()); 209 EXPECT_EQ(2, AppRegistry::Get()->NumberOfApplications());
219 EXPECT_EQ(1, app_activity2->app_activity_registry()->NumberOfActivities()); 210 EXPECT_EQ(1, app_activity2->app_activity_registry()->NumberOfActivities());
220 EXPECT_EQ(1, app_activity1->app_activity_registry()->NumberOfActivities()); 211 EXPECT_EQ(1, app_activity1->app_activity_registry()->NumberOfActivities());
221 CloseActivity(app_activity1); 212 CloseActivity(app_activity1);
222 CloseActivity(app_activity2); 213 CloseActivity(app_activity2);
223 } 214 }
224 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 215 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
225 EXPECT_EQ(0, test_app_content_control_delegate()->unload_called()); 216 EXPECT_EQ(0, test_extensions_delegate()->unload_called());
226 EXPECT_EQ(0, test_app_content_control_delegate()->restart_called()); 217 EXPECT_EQ(0, test_extensions_delegate()->restart_called());
227 } 218 }
228 219
229 // Create and destroy two activities for the same application. 220 // Create and destroy two activities for the same application.
230 TEST_F(AppActivityTest, TwoAppActivities) { 221 TEST_F(AppActivityTest, TwoAppActivities) {
231 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 222 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
232 { 223 {
233 TestAppActivity* app_activity1 = CreateAppActivity(kDummyApp1); 224 TestAppActivity* app_activity1 = CreateAppActivity(kDummyApp1);
234 TestAppActivity* app_activity2 = CreateAppActivity(kDummyApp1); 225 TestAppActivity* app_activity2 = CreateAppActivity(kDummyApp1);
235 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 226 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
236 EXPECT_EQ(2, app_activity1->app_activity_registry()->NumberOfActivities()); 227 EXPECT_EQ(2, app_activity1->app_activity_registry()->NumberOfActivities());
(...skipping 11 matching lines...) Expand all
248 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 239 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
249 EXPECT_EQ(2, app_activity1->app_activity_registry()->NumberOfActivities()); 240 EXPECT_EQ(2, app_activity1->app_activity_registry()->NumberOfActivities());
250 EXPECT_EQ(app_activity1->app_activity_registry(), 241 EXPECT_EQ(app_activity1->app_activity_registry(),
251 app_activity2->app_activity_registry()); 242 app_activity2->app_activity_registry());
252 CloseActivity(app_activity2); 243 CloseActivity(app_activity2);
253 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 244 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
254 EXPECT_EQ(1, app_activity1->app_activity_registry()->NumberOfActivities()); 245 EXPECT_EQ(1, app_activity1->app_activity_registry()->NumberOfActivities());
255 CloseActivity(app_activity1); 246 CloseActivity(app_activity1);
256 } 247 }
257 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 248 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
258 EXPECT_EQ(0, test_app_content_control_delegate()->unload_called()); 249 EXPECT_EQ(0, test_extensions_delegate()->unload_called());
259 EXPECT_EQ(0, test_app_content_control_delegate()->restart_called()); 250 EXPECT_EQ(0, test_extensions_delegate()->restart_called());
260 } 251 }
261 252
262 // Test unload and the creation of the proxy, then "closing the activity". 253 // Test unload and the creation of the proxy, then "closing the activity".
263 TEST_F(AppActivityTest, TestUnloadFollowedByClose) { 254 TEST_F(AppActivityTest, TestUnloadFollowedByClose) {
264 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 255 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
265 256
266 TestAppActivity* app_activity = CreateAppActivity(kDummyApp1); 257 TestAppActivity* app_activity = CreateAppActivity(kDummyApp1);
267 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 258 EXPECT_EQ(1, AppRegistry::Get()->NumberOfApplications());
268 AppActivityRegistry* app_activity_registry = 259 AppActivityRegistry* app_activity_registry =
269 app_activity->app_activity_registry(); 260 app_activity->app_activity_registry();
270 EXPECT_EQ(1, app_activity_registry->NumberOfActivities()); 261 EXPECT_EQ(1, app_activity_registry->NumberOfActivities());
271 EXPECT_EQ(Activity::ACTIVITY_VISIBLE, app_activity->GetCurrentState()); 262 EXPECT_EQ(Activity::ACTIVITY_VISIBLE, app_activity->GetCurrentState());
272 263
273 // Calling Unload now should not do anything since at least one activity in 264 // Calling Unload now should not do anything since at least one activity in
274 // the registry is still visible. 265 // the registry is still visible.
275 app_activity_registry->Unload(); 266 app_activity_registry->Unload();
276 EXPECT_EQ(0, test_app_content_control_delegate()->unload_called()); 267 EXPECT_EQ(0, test_extensions_delegate()->unload_called());
277 268
278 // After setting our activity to unloaded however the application should get 269 // After setting our activity to unloaded however the application should get
279 // unloaded as requested. 270 // unloaded as requested.
280 app_activity->SetCurrentState(Activity::ACTIVITY_UNLOADED); 271 app_activity->SetCurrentState(Activity::ACTIVITY_UNLOADED);
281 app_activity_registry->Unload(); 272 app_activity_registry->Unload();
282 EXPECT_EQ(1, test_app_content_control_delegate()->unload_called()); 273 EXPECT_EQ(1, test_extensions_delegate()->unload_called());
283 274
284 // Check that our created application is gone, and instead a proxy got 275 // Check that our created application is gone, and instead a proxy got
285 // created. 276 // created.
286 ASSERT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 277 ASSERT_EQ(1, AppRegistry::Get()->NumberOfApplications());
287 ASSERT_EQ(app_activity_registry, 278 ASSERT_EQ(app_activity_registry,
288 AppRegistry::Get()->GetAppActivityRegistry(kDummyApp1, NULL)); 279 AppRegistry::Get()->GetAppActivityRegistry(kDummyApp1, NULL));
289 EXPECT_EQ(0, app_activity_registry->NumberOfActivities()); 280 EXPECT_EQ(0, app_activity_registry->NumberOfActivities());
290 Activity* activity_proxy = 281 Activity* activity_proxy =
291 app_activity_registry->unloaded_activity_proxy_for_test(); 282 app_activity_registry->unloaded_activity_proxy_for_test();
292 ASSERT_TRUE(activity_proxy); 283 ASSERT_TRUE(activity_proxy);
293 EXPECT_NE(app_activity, activity_proxy); 284 EXPECT_NE(app_activity, activity_proxy);
294 EXPECT_EQ(Activity::ACTIVITY_UNLOADED, activity_proxy->GetCurrentState()); 285 EXPECT_EQ(Activity::ACTIVITY_UNLOADED, activity_proxy->GetCurrentState());
295 286
296 // Close the proxy object and make sure that nothing bad happens. 287 // Close the proxy object and make sure that nothing bad happens.
297 CloseActivity(activity_proxy); 288 CloseActivity(activity_proxy);
298 289
299 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 290 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
300 EXPECT_EQ(1, test_app_content_control_delegate()->unload_called()); 291 EXPECT_EQ(1, test_extensions_delegate()->unload_called());
301 EXPECT_EQ(0, test_app_content_control_delegate()->restart_called()); 292 EXPECT_EQ(0, test_extensions_delegate()->restart_called());
302 } 293 }
303 294
304 // Test that when unloading an app while multiple apps / activities are present, 295 // Test that when unloading an app while multiple apps / activities are present,
305 // the proxy gets created in the correct location. 296 // the proxy gets created in the correct location.
306 TEST_F(AppActivityTest, TestUnloadProxyLocation) { 297 TEST_F(AppActivityTest, TestUnloadProxyLocation) {
307 // Set up some activities for some applications. 298 // Set up some activities for some applications.
308 TestAppActivity* app_activity1a = CreateAppActivity(kDummyApp1); 299 TestAppActivity* app_activity1a = CreateAppActivity(kDummyApp1);
309 TestAppActivity* app_activity2a = CreateAppActivity(kDummyApp2); 300 TestAppActivity* app_activity2a = CreateAppActivity(kDummyApp2);
310 TestAppActivity* app_activity2b = CreateAppActivity(kDummyApp2); 301 TestAppActivity* app_activity2b = CreateAppActivity(kDummyApp2);
311 TestAppActivity* app_activity1b = CreateAppActivity(kDummyApp1); 302 TestAppActivity* app_activity1b = CreateAppActivity(kDummyApp1);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 EXPECT_EQ(app_activity_registry, app_activity2->app_activity_registry()); 341 EXPECT_EQ(app_activity_registry, app_activity2->app_activity_registry());
351 EXPECT_EQ(app_activity_registry, app_activity3->app_activity_registry()); 342 EXPECT_EQ(app_activity_registry, app_activity3->app_activity_registry());
352 EXPECT_EQ(3, app_activity_registry->NumberOfActivities()); 343 EXPECT_EQ(3, app_activity_registry->NumberOfActivities());
353 EXPECT_EQ(Activity::ACTIVITY_VISIBLE, app_activity1->GetCurrentState()); 344 EXPECT_EQ(Activity::ACTIVITY_VISIBLE, app_activity1->GetCurrentState());
354 EXPECT_EQ(Activity::ACTIVITY_VISIBLE, app_activity2->GetCurrentState()); 345 EXPECT_EQ(Activity::ACTIVITY_VISIBLE, app_activity2->GetCurrentState());
355 EXPECT_EQ(Activity::ACTIVITY_VISIBLE, app_activity3->GetCurrentState()); 346 EXPECT_EQ(Activity::ACTIVITY_VISIBLE, app_activity3->GetCurrentState());
356 347
357 // After setting all activities to UNLOADED the application should unload. 348 // After setting all activities to UNLOADED the application should unload.
358 app_activity1->SetCurrentState(Activity::ACTIVITY_UNLOADED); 349 app_activity1->SetCurrentState(Activity::ACTIVITY_UNLOADED);
359 app_activity1->app_activity_registry()->Unload(); 350 app_activity1->app_activity_registry()->Unload();
360 EXPECT_EQ(0, test_app_content_control_delegate()->unload_called()); 351 EXPECT_EQ(0, test_extensions_delegate()->unload_called());
361 app_activity2->SetCurrentState(Activity::ACTIVITY_UNLOADED); 352 app_activity2->SetCurrentState(Activity::ACTIVITY_UNLOADED);
362 app_activity2->app_activity_registry()->Unload(); 353 app_activity2->app_activity_registry()->Unload();
363 EXPECT_EQ(0, test_app_content_control_delegate()->unload_called()); 354 EXPECT_EQ(0, test_extensions_delegate()->unload_called());
364 app_activity3->SetCurrentState(Activity::ACTIVITY_UNLOADED); 355 app_activity3->SetCurrentState(Activity::ACTIVITY_UNLOADED);
365 app_activity3->app_activity_registry()->Unload(); 356 app_activity3->app_activity_registry()->Unload();
366 EXPECT_EQ(1, test_app_content_control_delegate()->unload_called()); 357 EXPECT_EQ(1, test_extensions_delegate()->unload_called());
367 358
368 // Now there should only be the proxy activity left. 359 // Now there should only be the proxy activity left.
369 ASSERT_EQ(1, AppRegistry::Get()->NumberOfApplications()); 360 ASSERT_EQ(1, AppRegistry::Get()->NumberOfApplications());
370 ASSERT_EQ(app_activity_registry, 361 ASSERT_EQ(app_activity_registry,
371 AppRegistry::Get()->GetAppActivityRegistry(kDummyApp1, NULL)); 362 AppRegistry::Get()->GetAppActivityRegistry(kDummyApp1, NULL));
372 EXPECT_EQ(0, app_activity_registry->NumberOfActivities()); 363 EXPECT_EQ(0, app_activity_registry->NumberOfActivities());
373 Activity* activity_proxy = 364 Activity* activity_proxy =
374 app_activity_registry->unloaded_activity_proxy_for_test(); 365 app_activity_registry->unloaded_activity_proxy_for_test();
375 ASSERT_TRUE(activity_proxy); 366 ASSERT_TRUE(activity_proxy);
376 EXPECT_NE(app_activity1, activity_proxy); 367 EXPECT_NE(app_activity1, activity_proxy);
377 EXPECT_NE(app_activity2, activity_proxy); 368 EXPECT_NE(app_activity2, activity_proxy);
378 EXPECT_NE(app_activity3, activity_proxy); 369 EXPECT_NE(app_activity3, activity_proxy);
379 EXPECT_EQ(Activity::ACTIVITY_UNLOADED, activity_proxy->GetCurrentState()); 370 EXPECT_EQ(Activity::ACTIVITY_UNLOADED, activity_proxy->GetCurrentState());
380 371
381 // Close the proxy object and make sure that nothing bad happens. 372 // Close the proxy object and make sure that nothing bad happens.
382 CloseActivity(activity_proxy); 373 CloseActivity(activity_proxy);
383 374
384 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 375 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
385 EXPECT_EQ(1, test_app_content_control_delegate()->unload_called()); 376 EXPECT_EQ(1, test_extensions_delegate()->unload_called());
386 EXPECT_EQ(0, test_app_content_control_delegate()->restart_called()); 377 EXPECT_EQ(0, test_extensions_delegate()->restart_called());
387 } 378 }
388 379
389 // Test that activating the proxy will reload the application. 380 // Test that activating the proxy will reload the application.
390 TEST_F(AppActivityTest, TestUnloadWithReload) { 381 TEST_F(AppActivityTest, TestUnloadWithReload) {
391 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 382 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
392 383
393 TestAppActivity* app_activity = CreateAppActivity(kDummyApp1); 384 TestAppActivity* app_activity = CreateAppActivity(kDummyApp1);
394 AppActivityRegistry* app_activity_registry = 385 AppActivityRegistry* app_activity_registry =
395 app_activity->app_activity_registry(); 386 app_activity->app_activity_registry();
396 387
397 // Unload the activity. 388 // Unload the activity.
398 app_activity->SetCurrentState(Activity::ACTIVITY_UNLOADED); 389 app_activity->SetCurrentState(Activity::ACTIVITY_UNLOADED);
399 app_activity_registry->Unload(); 390 app_activity_registry->Unload();
400 EXPECT_EQ(1, test_app_content_control_delegate()->unload_called()); 391 EXPECT_EQ(1, test_extensions_delegate()->unload_called());
401 392
402 // Try to activate the activity again. This will force the application to 393 // Try to activate the activity again. This will force the application to
403 // reload. 394 // reload.
404 Activity* activity_proxy = 395 Activity* activity_proxy =
405 app_activity_registry->unloaded_activity_proxy_for_test(); 396 app_activity_registry->unloaded_activity_proxy_for_test();
406 activity_proxy->SetCurrentState(Activity::ACTIVITY_VISIBLE); 397 activity_proxy->SetCurrentState(Activity::ACTIVITY_VISIBLE);
407 EXPECT_EQ(1, test_app_content_control_delegate()->restart_called()); 398 EXPECT_EQ(1, test_extensions_delegate()->restart_called());
408 399
409 // However - the restart in this test framework does not really restart and 400 // However - the restart in this test framework does not really restart and
410 // all objects should be gone now. 401 // all objects should be gone now.
411 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications()); 402 EXPECT_EQ(0, AppRegistry::Get()->NumberOfApplications());
412 } 403 }
413 404
414 } // namespace test 405 } // namespace test
415 } // namespace athena 406 } // namespace athena
OLDNEW
« no previous file with comments | « athena/content/app_activity_registry.cc ('k') | athena/content/app_registry_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698