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

Side by Side Diff: chrome/browser/chromeos/login/login_display_host_impl.cc

Issue 22914008: Refactor kiosk app launch to be part of login screen UI flow. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Minor style fixes Created 7 years, 4 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 #include "chrome/browser/chromeos/login/login_display_host_impl.h" 5 #include "chrome/browser/chromeos/login/login_display_host_impl.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "ash/desktop_background/desktop_background_controller.h" 9 #include "ash/desktop_background/desktop_background_controller.h"
10 #include "ash/desktop_background/user_wallpaper_delegate.h" 10 #include "ash/desktop_background/user_wallpaper_delegate.h"
11 #include "ash/shell.h" 11 #include "ash/shell.h"
12 #include "ash/shell_window_ids.h" 12 #include "ash/shell_window_ids.h"
13 #include "ash/wm/window_properties.h" 13 #include "ash/wm/window_properties.h"
14 #include "base/bind.h" 14 #include "base/bind.h"
15 #include "base/command_line.h" 15 #include "base/command_line.h"
16 #include "base/debug/trace_event.h" 16 #include "base/debug/trace_event.h"
17 #include "base/logging.h" 17 #include "base/logging.h"
18 #include "base/prefs/pref_service.h" 18 #include "base/prefs/pref_service.h"
19 #include "base/strings/utf_string_conversions.h" 19 #include "base/strings/utf_string_conversions.h"
20 #include "base/threading/thread_restrictions.h" 20 #include "base/threading/thread_restrictions.h"
21 #include "base/time/time.h" 21 #include "base/time/time.h"
22 #include "base/values.h" 22 #include "base/values.h"
23 #include "chrome/browser/browser_process.h" 23 #include "chrome/browser/browser_process.h"
24 #include "chrome/browser/browser_shutdown.h" 24 #include "chrome/browser/browser_shutdown.h"
25 #include "chrome/browser/chrome_notification_types.h" 25 #include "chrome/browser/chrome_notification_types.h"
26 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
26 #include "chrome/browser/chromeos/customization_document.h" 27 #include "chrome/browser/chromeos/customization_document.h"
27 #include "chrome/browser/chromeos/input_method/input_method_util.h" 28 #include "chrome/browser/chromeos/input_method/input_method_util.h"
28 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h" 29 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h"
29 #include "chrome/browser/chromeos/language_preferences.h" 30 #include "chrome/browser/chromeos/language_preferences.h"
30 #include "chrome/browser/chromeos/login/existing_user_controller.h" 31 #include "chrome/browser/chromeos/login/existing_user_controller.h"
31 #include "chrome/browser/chromeos/login/helper.h" 32 #include "chrome/browser/chromeos/login/helper.h"
32 #include "chrome/browser/chromeos/login/language_switch_menu.h" 33 #include "chrome/browser/chromeos/login/language_switch_menu.h"
33 #include "chrome/browser/chromeos/login/login_utils.h" 34 #include "chrome/browser/chromeos/login/login_utils.h"
34 #include "chrome/browser/chromeos/login/login_wizard.h" 35 #include "chrome/browser/chromeos/login/login_wizard.h"
35 #include "chrome/browser/chromeos/login/oobe_display.h" 36 #include "chrome/browser/chromeos/login/oobe_display.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 79
79 // URL which corresponds to the login WebUI. 80 // URL which corresponds to the login WebUI.
80 const char kLoginURL[] = "chrome://oobe/login"; 81 const char kLoginURL[] = "chrome://oobe/login";
81 82
82 // URL which corresponds to the OOBE WebUI. 83 // URL which corresponds to the OOBE WebUI.
83 const char kOobeURL[] = "chrome://oobe/oobe"; 84 const char kOobeURL[] = "chrome://oobe/oobe";
84 85
85 // URL which corresponds to the user adding WebUI. 86 // URL which corresponds to the user adding WebUI.
86 const char kUserAddingURL[] = "chrome://oobe/user-adding"; 87 const char kUserAddingURL[] = "chrome://oobe/user-adding";
87 88
89 // URL which corresponds to the app launch splash WebUI.
90 const char kAppLaunchSplashURL[] = "chrome://oobe/login#app-launch-splash";
xiyuan 2013/08/19 17:40:29 Use '#' to define display in login screen seems ch
Tim Song 2013/08/19 20:05:07 Done. I added the app launch splash screen as a di
91
88 // Duration of sign-in transition animation. 92 // Duration of sign-in transition animation.
89 const int kLoginFadeoutTransitionDurationMs = 700; 93 const int kLoginFadeoutTransitionDurationMs = 700;
90 94
91 // Number of times we try to reload OOBE/login WebUI if it crashes. 95 // Number of times we try to reload OOBE/login WebUI if it crashes.
92 const int kCrashCountLimit = 5; 96 const int kCrashCountLimit = 5;
93 97
94 // Whether to enable tnitializing WebUI in hidden state (see 98 // Whether to enable tnitializing WebUI in hidden state (see
95 // |initialize_webui_hidden_|) by default. 99 // |initialize_webui_hidden_|) by default.
96 const bool kHiddenWebUIInitializationDefault = true; 100 const bool kHiddenWebUIInitializationDefault = true;
97 101
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 webui_login_display_->OnPreferencesChanged(); 506 webui_login_display_->OnPreferencesChanged();
503 } 507 }
504 508
505 void LoginDisplayHostImpl::PrewarmAuthentication() { 509 void LoginDisplayHostImpl::PrewarmAuthentication() {
506 auth_prewarmer_.reset(new AuthPrewarmer()); 510 auth_prewarmer_.reset(new AuthPrewarmer());
507 auth_prewarmer_->PrewarmAuthentication( 511 auth_prewarmer_->PrewarmAuthentication(
508 base::Bind(&LoginDisplayHostImpl::OnAuthPrewarmDone, 512 base::Bind(&LoginDisplayHostImpl::OnAuthPrewarmDone,
509 pointer_factory_.GetWeakPtr())); 513 pointer_factory_.GetWeakPtr()));
510 } 514 }
511 515
516 void LoginDisplayHostImpl::StartAppLaunch(const std::string& app_id) {
517 LOG(WARNING) << "Login WebUI >> start app launch.";
518 SetStatusAreaVisible(false);
519 if (!login_window_)
520 LoadURL(GURL(kAppLaunchSplashURL));
521
522 login_view_->set_should_emit_login_prompt_visible(false);
523
524 app_launch_controller_.reset(new AppLaunchController(
525 app_id, this, GetOobeUI()));
526
527 app_launch_controller_->StartAppLaunch();
528 }
529
512 //////////////////////////////////////////////////////////////////////////////// 530 ////////////////////////////////////////////////////////////////////////////////
513 // LoginDisplayHostImpl, public 531 // LoginDisplayHostImpl, public
514 532
515 WizardController* LoginDisplayHostImpl::CreateWizardController() { 533 WizardController* LoginDisplayHostImpl::CreateWizardController() {
516 // TODO(altimofeev): ensure that WebUI is ready. 534 // TODO(altimofeev): ensure that WebUI is ready.
517 OobeDisplay* oobe_display = GetOobeUI(); 535 OobeDisplay* oobe_display = GetOobeUI();
518 return new WizardController(this, oobe_display); 536 return new WizardController(this, oobe_display);
519 } 537 }
520 538
521 void LoginDisplayHostImpl::OnBrowserCreated() { 539 void LoginDisplayHostImpl::OnBrowserCreated() {
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
868 886
869 // Check whether we need to execute OOBE process. 887 // Check whether we need to execute OOBE process.
870 bool oobe_complete = chromeos::StartupUtils::IsOobeCompleted(); 888 bool oobe_complete = chromeos::StartupUtils::IsOobeCompleted();
871 if (!oobe_complete) { 889 if (!oobe_complete) {
872 LoginState::Get()->SetLoggedInState( 890 LoginState::Get()->SetLoggedInState(
873 LoginState::LOGGED_IN_OOBE, LoginState::LOGGED_IN_USER_NONE); 891 LoginState::LOGGED_IN_OOBE, LoginState::LOGGED_IN_USER_NONE);
874 } else { 892 } else {
875 LoginState::Get()->SetLoggedInState( 893 LoginState::Get()->SetLoggedInState(
876 LoginState::LOGGED_IN_NONE, LoginState::LOGGED_IN_USER_NONE); 894 LoginState::LOGGED_IN_NONE, LoginState::LOGGED_IN_USER_NONE);
877 } 895 }
896
897 LoginDisplayHost* display_host = new LoginDisplayHostImpl(screen_bounds);
898
899 bool show_app_launch_splash_screen = (first_screen_name ==
900 chromeos::WizardController::kAppLaunchSplashScreenName);
901
902 if (show_app_launch_splash_screen) {
903 const std::string& auto_launch_app_id =
904 chromeos::KioskAppManager::Get()->GetAutoLaunchApp();
905 display_host->StartAppLaunch(auto_launch_app_id);
906 return;
907 }
908
878 bool show_login_screen = 909 bool show_login_screen =
879 (first_screen_name.empty() && oobe_complete) || 910 (first_screen_name.empty() && oobe_complete) ||
880 first_screen_name == chromeos::WizardController::kLoginScreenName; 911 first_screen_name == chromeos::WizardController::kLoginScreenName;
881 912
882 chromeos::LoginDisplayHost* display_host =
883 new chromeos::LoginDisplayHostImpl(screen_bounds);
884
885 if (show_login_screen) { 913 if (show_login_screen) {
886 // R11 > R12 migration fix. See http://crosbug.com/p/4898. 914 // R11 > R12 migration fix. See http://crosbug.com/p/4898.
887 // If user has manually changed locale during R11 OOBE, locale will be set. 915 // If user has manually changed locale during R11 OOBE, locale will be set.
888 // On R12 > R12|R13 etc. this fix won't get activated since 916 // On R12 > R12|R13 etc. this fix won't get activated since
889 // OOBE process has set kApplicationLocale to non-default value. 917 // OOBE process has set kApplicationLocale to non-default value.
890 PrefService* prefs = g_browser_process->local_state(); 918 PrefService* prefs = g_browser_process->local_state();
891 if (!prefs->HasPrefPath(prefs::kApplicationLocale)) { 919 if (!prefs->HasPrefPath(prefs::kApplicationLocale)) {
892 std::string locale = chromeos::StartupUtils::GetInitialLocale(); 920 std::string locale = chromeos::StartupUtils::GetInitialLocale();
893 prefs->SetString(prefs::kApplicationLocale, locale); 921 prefs->SetString(prefs::kApplicationLocale, locale);
894 manager->EnableLayouts( 922 manager->EnableLayouts(
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 VLOG(1) << "Initial time zone: " << timezone_name; 988 VLOG(1) << "Initial time zone: " << timezone_name;
961 // Apply locale customizations only once to preserve whatever locale 989 // Apply locale customizations only once to preserve whatever locale
962 // user has changed to during OOBE. 990 // user has changed to during OOBE.
963 if (!timezone_name.empty()) { 991 if (!timezone_name.empty()) {
964 chromeos::system::TimezoneSettings::GetInstance()->SetTimezoneFromID( 992 chromeos::system::TimezoneSettings::GetInstance()->SetTimezoneFromID(
965 UTF8ToUTF16(timezone_name)); 993 UTF8ToUTF16(timezone_name));
966 } 994 }
967 } 995 }
968 996
969 } // namespace chromeos 997 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698