OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "apps/shell_window.h" | 5 #include "apps/app_window.h" |
6 #include "apps/shell_window_registry.h" | 6 #include "apps/app_window_registry.h" |
7 #include "apps/ui/native_app_window.h" | 7 #include "apps/ui/native_app_window.h" |
8 #include "ash/desktop_background/desktop_background_controller.h" | 8 #include "ash/desktop_background/desktop_background_controller.h" |
9 #include "ash/desktop_background/desktop_background_controller_observer.h" | 9 #include "ash/desktop_background/desktop_background_controller_observer.h" |
10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
11 #include "base/path_service.h" | 11 #include "base/path_service.h" |
12 #include "chrome/browser/browser_process.h" | 12 #include "chrome/browser/browser_process.h" |
13 #include "chrome/browser/chrome_notification_types.h" | 13 #include "chrome/browser/chrome_notification_types.h" |
14 #include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h" | 14 #include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h" |
15 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" | 15 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" |
16 #include "chrome/browser/chromeos/login/app_launch_controller.h" | 16 #include "chrome/browser/chromeos/login/app_launch_controller.h" |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 content::WebContents* web_contents_; | 205 content::WebContents* web_contents_; |
206 const std::string js_; | 206 const std::string js_; |
207 scoped_refptr<content::MessageLoopRunner> runner_; | 207 scoped_refptr<content::MessageLoopRunner> runner_; |
208 | 208 |
209 DISALLOW_COPY_AND_ASSIGN(JsConditionWaiter); | 209 DISALLOW_COPY_AND_ASSIGN(JsConditionWaiter); |
210 }; | 210 }; |
211 | 211 |
212 } // namespace | 212 } // namespace |
213 | 213 |
214 // Helper class that monitors app windows to wait for a window to appear. | 214 // Helper class that monitors app windows to wait for a window to appear. |
215 class ShellWindowObserver : public apps::ShellWindowRegistry::Observer { | 215 class AppWindowObserver : public apps::AppWindowRegistry::Observer { |
216 public: | 216 public: |
217 ShellWindowObserver(apps::ShellWindowRegistry* registry, | 217 AppWindowObserver(apps::AppWindowRegistry* registry, |
218 const std::string& app_id) | 218 const std::string& app_id) |
219 : registry_(registry), app_id_(app_id), window_(NULL), running_(false) { | 219 : registry_(registry), app_id_(app_id), window_(NULL), running_(false) { |
220 registry_->AddObserver(this); | 220 registry_->AddObserver(this); |
221 } | 221 } |
222 virtual ~ShellWindowObserver() { | 222 virtual ~AppWindowObserver() { registry_->RemoveObserver(this); } |
223 registry_->RemoveObserver(this); | |
224 } | |
225 | 223 |
226 apps::ShellWindow* Wait() { | 224 apps::AppWindow* Wait() { |
227 running_ = true; | 225 running_ = true; |
228 message_loop_runner_ = new content::MessageLoopRunner; | 226 message_loop_runner_ = new content::MessageLoopRunner; |
229 message_loop_runner_->Run(); | 227 message_loop_runner_->Run(); |
230 EXPECT_TRUE(window_); | 228 EXPECT_TRUE(window_); |
231 return window_; | 229 return window_; |
232 } | 230 } |
233 | 231 |
234 // ShellWindowRegistry::Observer | 232 // AppWindowRegistry::Observer |
235 virtual void OnShellWindowAdded(apps::ShellWindow* shell_window) OVERRIDE { | 233 virtual void OnAppWindowAdded(apps::AppWindow* app_window) OVERRIDE { |
236 if (!running_) | 234 if (!running_) |
237 return; | 235 return; |
238 | 236 |
239 if (shell_window->extension_id() == app_id_) { | 237 if (app_window->extension_id() == app_id_) { |
240 window_ = shell_window; | 238 window_ = app_window; |
241 message_loop_runner_->Quit(); | 239 message_loop_runner_->Quit(); |
242 running_ = false; | 240 running_ = false; |
243 } | 241 } |
244 } | 242 } |
245 virtual void OnShellWindowIconChanged( | 243 virtual void OnAppWindowIconChanged(apps::AppWindow* app_window) OVERRIDE {} |
246 apps::ShellWindow* shell_window) OVERRIDE {} | 244 virtual void OnAppWindowRemoved(apps::AppWindow* app_window) OVERRIDE {} |
247 virtual void OnShellWindowRemoved(apps::ShellWindow* shell_window) OVERRIDE {} | |
248 | 245 |
249 private: | 246 private: |
250 apps::ShellWindowRegistry* registry_; | 247 apps::AppWindowRegistry* registry_; |
251 std::string app_id_; | 248 std::string app_id_; |
252 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; | 249 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; |
253 apps::ShellWindow* window_; | 250 apps::AppWindow* window_; |
254 bool running_; | 251 bool running_; |
255 | 252 |
256 DISALLOW_COPY_AND_ASSIGN(ShellWindowObserver); | 253 DISALLOW_COPY_AND_ASSIGN(AppWindowObserver); |
257 }; | 254 }; |
258 | 255 |
259 class KioskTest : public OobeBaseTest { | 256 class KioskTest : public OobeBaseTest { |
260 public: | 257 public: |
261 KioskTest() { | 258 KioskTest() { |
262 set_exit_when_last_browser_closes(false); | 259 set_exit_when_last_browser_closes(false); |
263 } | 260 } |
264 | 261 |
265 virtual ~KioskTest() {} | 262 virtual ~KioskTest() {} |
266 | 263 |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 EXPECT_EQ(chromeos::KioskAppLaunchError::NONE, | 382 EXPECT_EQ(chromeos::KioskAppLaunchError::NONE, |
386 chromeos::KioskAppLaunchError::Get()); | 383 chromeos::KioskAppLaunchError::Get()); |
387 | 384 |
388 // Check if the kiosk webapp is really installed for the default profile. | 385 // Check if the kiosk webapp is really installed for the default profile. |
389 const extensions::Extension* app = | 386 const extensions::Extension* app = |
390 extensions::ExtensionSystem::Get(app_profile)-> | 387 extensions::ExtensionSystem::Get(app_profile)-> |
391 extension_service()->GetInstalledExtension(test_app_id_); | 388 extension_service()->GetInstalledExtension(test_app_id_); |
392 EXPECT_TRUE(app); | 389 EXPECT_TRUE(app); |
393 | 390 |
394 // App should appear with its window. | 391 // App should appear with its window. |
395 apps::ShellWindowRegistry* shell_window_registry = | 392 apps::AppWindowRegistry* app_window_registry = |
396 apps::ShellWindowRegistry::Get(app_profile); | 393 apps::AppWindowRegistry::Get(app_profile); |
397 apps::ShellWindow* window = | 394 apps::AppWindow* window = |
398 ShellWindowObserver(shell_window_registry, test_app_id_).Wait(); | 395 AppWindowObserver(app_window_registry, test_app_id_).Wait(); |
399 EXPECT_TRUE(window); | 396 EXPECT_TRUE(window); |
400 | 397 |
401 // Login screen should be gone or fading out. | 398 // Login screen should be gone or fading out. |
402 chromeos::LoginDisplayHost* login_display_host = | 399 chromeos::LoginDisplayHost* login_display_host = |
403 chromeos::LoginDisplayHostImpl::default_host(); | 400 chromeos::LoginDisplayHostImpl::default_host(); |
404 EXPECT_TRUE( | 401 EXPECT_TRUE( |
405 login_display_host == NULL || | 402 login_display_host == NULL || |
406 login_display_host->GetNativeWindow()->layer()->GetTargetOpacity() == | 403 login_display_host->GetNativeWindow()->layer()->GetTargetOpacity() == |
407 0.0f); | 404 0.0f); |
408 | 405 |
409 // Wait until the app terminates if it is still running. | 406 // Wait until the app terminates if it is still running. |
410 if (!shell_window_registry->GetShellWindowsForApp(test_app_id_).empty()) | 407 if (!app_window_registry->GetAppWindowsForApp(test_app_id_).empty()) |
411 content::RunMessageLoop(); | 408 content::RunMessageLoop(); |
412 | 409 |
413 // Check that the app had been informed that it is running in a kiosk | 410 // Check that the app had been informed that it is running in a kiosk |
414 // session. | 411 // session. |
415 EXPECT_TRUE(launch_data_check_listener.was_satisfied()); | 412 EXPECT_TRUE(launch_data_check_listener.was_satisfied()); |
416 } | 413 } |
417 | 414 |
418 void WaitForAppLaunchNetworkTimeout() { | 415 void WaitForAppLaunchNetworkTimeout() { |
419 if (GetAppLaunchController()->network_wait_timedout()) | 416 if (GetAppLaunchController()->network_wait_timedout()) |
420 return; | 417 return; |
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
994 // Wait for the Kiosk App to launch. | 991 // Wait for the Kiosk App to launch. |
995 content::WindowedNotificationObserver( | 992 content::WindowedNotificationObserver( |
996 chrome::NOTIFICATION_KIOSK_APP_LAUNCHED, | 993 chrome::NOTIFICATION_KIOSK_APP_LAUNCHED, |
997 content::NotificationService::AllSources()).Wait(); | 994 content::NotificationService::AllSources()).Wait(); |
998 | 995 |
999 // Check installer status. | 996 // Check installer status. |
1000 EXPECT_EQ(chromeos::KioskAppLaunchError::NONE, | 997 EXPECT_EQ(chromeos::KioskAppLaunchError::NONE, |
1001 chromeos::KioskAppLaunchError::Get()); | 998 chromeos::KioskAppLaunchError::Get()); |
1002 | 999 |
1003 // Wait for the window to appear. | 1000 // Wait for the window to appear. |
1004 apps::ShellWindow* window = ShellWindowObserver( | 1001 apps::AppWindow* window = |
1005 apps::ShellWindowRegistry::Get(ProfileManager::GetPrimaryUserProfile()), | 1002 AppWindowObserver( |
1006 kTestEnterpriseKioskApp).Wait(); | 1003 apps::AppWindowRegistry::Get(ProfileManager::GetPrimaryUserProfile()), |
| 1004 kTestEnterpriseKioskApp).Wait(); |
1007 ASSERT_TRUE(window); | 1005 ASSERT_TRUE(window); |
1008 | 1006 |
1009 // Check whether the app can retrieve an OAuth2 access token. | 1007 // Check whether the app can retrieve an OAuth2 access token. |
1010 std::string result; | 1008 std::string result; |
1011 EXPECT_TRUE(content::ExecuteScriptAndExtractString( | 1009 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
1012 window->web_contents(), | 1010 window->web_contents(), |
1013 "chrome.identity.getAuthToken({ 'interactive': false }, function(token) {" | 1011 "chrome.identity.getAuthToken({ 'interactive': false }, function(token) {" |
1014 " window.domAutomationController.setAutomationId(0);" | 1012 " window.domAutomationController.setAutomationId(0);" |
1015 " window.domAutomationController.send(token);" | 1013 " window.domAutomationController.send(token);" |
1016 "});", | 1014 "});", |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1093 content::WindowedNotificationObserver( | 1091 content::WindowedNotificationObserver( |
1094 chrome::NOTIFICATION_KIOSK_AUTOLAUNCH_WARNING_VISIBLE, | 1092 chrome::NOTIFICATION_KIOSK_AUTOLAUNCH_WARNING_VISIBLE, |
1095 content::NotificationService::AllSources()).Wait(); | 1093 content::NotificationService::AllSources()).Wait(); |
1096 | 1094 |
1097 // Wait for the wallpaper to load. | 1095 // Wait for the wallpaper to load. |
1098 WaitForWallpaper(); | 1096 WaitForWallpaper(); |
1099 EXPECT_TRUE(wallpaper_loaded()); | 1097 EXPECT_TRUE(wallpaper_loaded()); |
1100 } | 1098 } |
1101 | 1099 |
1102 } // namespace chromeos | 1100 } // namespace chromeos |
OLD | NEW |