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

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

Issue 7659009: Apply VPD customization even if startup customization manifest is missing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments resolved Created 9 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
« no previous file with comments | « chrome/browser/chromeos/customization_document.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/base_login_display_host.h" 5 #include "chrome/browser/chromeos/login/base_login_display_host.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/threading/thread_restrictions.h" 10 #include "base/threading/thread_restrictions.h"
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 } // namespace chromeos 207 } // namespace chromeos
208 208
209 // browser::ShowLoginWizard implementation ------------------------------------- 209 // browser::ShowLoginWizard implementation -------------------------------------
210 210
211 namespace browser { 211 namespace browser {
212 212
213 // Declared in browser_dialogs.h so that others don't need to depend on our .h. 213 // Declared in browser_dialogs.h so that others don't need to depend on our .h.
214 // TODO(nkostylev): Split this into a smaller functions. 214 // TODO(nkostylev): Split this into a smaller functions.
215 void ShowLoginWizard(const std::string& first_screen_name, 215 void ShowLoginWizard(const std::string& first_screen_name,
216 const gfx::Size& size) { 216 const gfx::Size& size) {
217 VLOG(1) << "Showing login screen: " << first_screen_name; 217 VLOG(1) << "Showing OOBE screen: " << first_screen_name;
218 218
219 // The login screen will enable alternate keyboard layouts, but we don't want 219 // The login screen will enable alternate keyboard layouts, but we don't want
220 // to start the IME process unless one is selected. 220 // to start the IME process unless one is selected.
221 chromeos::input_method::InputMethodManager::GetInstance()-> 221 chromeos::input_method::InputMethodManager::GetInstance()->
222 SetDeferImeStartup(true); 222 SetDeferImeStartup(true);
223 // Tell the window manager that the user isn't logged in. 223 // Tell the window manager that the user isn't logged in.
224 chromeos::WmIpc::instance()->SetLoggedInProperty(false); 224 chromeos::WmIpc::instance()->SetLoggedInProperty(false);
225 225
226 // Set up keyboards. For example, when |locale| is "en-US", enable US qwerty 226 // Set up keyboards. For example, when |locale| is "en-US", enable US qwerty
227 // and US dvorak keyboard layouts. 227 // and US dvorak keyboard layouts.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 g_browser_process->SetApplicationLocale(loaded_locale); 275 g_browser_process->SetApplicationLocale(loaded_locale);
276 } 276 }
277 display_host->StartSignInScreen(); 277 display_host->StartSignInScreen();
278 return; 278 return;
279 } 279 }
280 280
281 // Load startup manifest. 281 // Load startup manifest.
282 const chromeos::StartupCustomizationDocument* startup_manifest = 282 const chromeos::StartupCustomizationDocument* startup_manifest =
283 chromeos::StartupCustomizationDocument::GetInstance(); 283 chromeos::StartupCustomizationDocument::GetInstance();
284 284
285 // Switch to initial locale if specified by customization
286 // and has not been set yet. We cannot call
287 // chromeos::LanguageSwitchMenu::SwitchLanguage here before
288 // EmitLoginPromptReady.
289 PrefService* prefs = g_browser_process->local_state();
290 const std::string current_locale =
291 prefs->GetString(prefs::kApplicationLocale);
292 VLOG(1) << "Current locale: " << current_locale;
285 std::string locale; 293 std::string locale;
286 if (startup_manifest->IsReady()) { 294 if (current_locale.empty()) {
287 // Switch to initial locale if specified by customization 295 locale = startup_manifest->initial_locale();
288 // and has not been set yet. We cannot call 296 std::string layout = startup_manifest->keyboard_layout();
289 // chromeos::LanguageSwitchMenu::SwitchLanguage here before 297 VLOG(1) << "Initial locale: " << locale
290 // EmitLoginPromptReady. 298 << "keyboard layout " << layout;
291 PrefService* prefs = g_browser_process->local_state(); 299 if (!locale.empty()) {
292 const std::string current_locale = 300 // Save initial locale from VPD/customization manifest as current
293 prefs->GetString(prefs::kApplicationLocale); 301 // Chrome locale. Otherwise it will be lost if Chrome restarts.
294 VLOG(1) << "Current locale: " << current_locale; 302 // Don't need to schedule pref save because setting initial local
295 if (current_locale.empty()) { 303 // will enforce preference saving.
296 locale = startup_manifest->initial_locale(); 304 prefs->SetString(prefs::kApplicationLocale, locale);
297 std::string layout = startup_manifest->keyboard_layout(); 305 chromeos::WizardController::SetInitialLocale(locale);
298 VLOG(1) << "Initial locale: " << locale 306 // Determine keyboard layout from OEM customization (if provided) or
299 << "keyboard layout " << layout; 307 // initial locale and save it in preferences.
300 if (!locale.empty()) { 308 DetermineAndSaveHardwareKeyboard(locale, layout);
301 // Save initial locale from VPD/customization manifest as current 309 // Then, enable the hardware keyboard.
302 // Chrome locale. Otherwise it will be lost if Chrome restarts. 310 chromeos::input_method::EnableInputMethods(
303 // Don't need to schedule pref save because setting initial local 311 locale,
304 // will enforce preference saving. 312 chromeos::input_method::kKeyboardLayoutsOnly,
305 prefs->SetString(prefs::kApplicationLocale, locale); 313 chromeos::input_method::GetHardwareInputMethodId());
306 chromeos::WizardController::SetInitialLocale(locale); 314 // Reloading resource bundle causes us to do blocking IO on UI thread.
307 // Determine keyboard layout from OEM customization (if provided) or 315 // Temporarily allow it until we fix http://crosbug.com/11102
308 // initial locale and save it in preferences. 316 base::ThreadRestrictions::ScopedAllowIO allow_io;
309 DetermineAndSaveHardwareKeyboard(locale, layout); 317 const std::string loaded_locale =
310 // Then, enable the hardware keyboard. 318 ResourceBundle::ReloadSharedInstance(locale);
311 chromeos::input_method::EnableInputMethods( 319 CHECK(!loaded_locale.empty()) << "Locale could not be found for "
312 locale, 320 << locale;
313 chromeos::input_method::kKeyboardLayoutsOnly, 321 // Set the application locale here so that the language switch
314 chromeos::input_method::GetHardwareInputMethodId()); 322 // menu works properly with the newly loaded locale.
315 // Reloading resource bundle causes us to do blocking IO on UI thread. 323 g_browser_process->SetApplicationLocale(loaded_locale);
316 // Temporarily allow it until we fix http://crosbug.com/11102
317 base::ThreadRestrictions::ScopedAllowIO allow_io;
318 const std::string loaded_locale =
319 ResourceBundle::ReloadSharedInstance(locale);
320 CHECK(!loaded_locale.empty()) << "Locale could not be found for "
321 << locale;
322 // Set the application locale here so that the language switch
323 // menu works properly with the newly loaded locale.
324 g_browser_process->SetApplicationLocale(loaded_locale);
325 }
326 } 324 }
327 } 325 }
328 326
329 display_host->StartWizard(first_screen_name, GURL()); 327 display_host->StartWizard(first_screen_name, GURL());
330 328
331 chromeos::LoginUtils::Get()->PrewarmAuthentication(); 329 chromeos::LoginUtils::Get()->PrewarmAuthentication();
332 if (chromeos::CrosLibrary::Get()->EnsureLoaded()) 330 if (chromeos::CrosLibrary::Get()->EnsureLoaded())
333 chromeos::CrosLibrary::Get()->GetLoginLibrary()->EmitLoginPromptReady(); 331 chromeos::CrosLibrary::Get()->GetLoginLibrary()->EmitLoginPromptReady();
334 332
335 if (startup_manifest->IsReady()) { 333 // Set initial timezone if specified by customization.
336 // Set initial timezone if specified by customization. 334 const std::string timezone_name = startup_manifest->initial_timezone();
337 const std::string timezone_name = startup_manifest->initial_timezone(); 335 VLOG(1) << "Initial time zone: " << timezone_name;
338 VLOG(1) << "Initial time zone: " << timezone_name; 336 // Apply locale customizations only once to preserve whatever locale
339 // Apply locale customizations only once so preserve whatever locale 337 // user has changed to during OOBE.
340 // user has changed to during OOBE. 338 if (!timezone_name.empty()) {
341 if (!timezone_name.empty()) { 339 icu::TimeZone* timezone = icu::TimeZone::createTimeZone(
342 icu::TimeZone* timezone = icu::TimeZone::createTimeZone( 340 icu::UnicodeString::fromUTF8(timezone_name));
343 icu::UnicodeString::fromUTF8(timezone_name)); 341 CHECK(timezone) << "Timezone could not be set for " << timezone_name;
344 CHECK(timezone) << "Timezone could not be set for " << timezone_name; 342 chromeos::system::TimezoneSettings::GetInstance()->SetTimezone(*timezone);
345 chromeos::system::TimezoneSettings::GetInstance()->SetTimezone(*timezone);
346 }
347 } 343 }
348 } 344 }
349 345
350 } // namespace browser 346 } // namespace browser
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/customization_document.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698