OLD | NEW |
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/login_utils.h" | 5 #include "chrome/browser/chromeos/login/login_utils.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 const GaiaAuthConsumer::ClientLoginResult& credentials); | 148 const GaiaAuthConsumer::ClientLoginResult& credentials); |
149 | 149 |
150 // Sets the current background view. | 150 // Sets the current background view. |
151 virtual void SetBackgroundView(chromeos::BackgroundView* background_view); | 151 virtual void SetBackgroundView(chromeos::BackgroundView* background_view); |
152 | 152 |
153 // Gets the current background view. | 153 // Gets the current background view. |
154 virtual chromeos::BackgroundView* GetBackgroundView(); | 154 virtual chromeos::BackgroundView* GetBackgroundView(); |
155 | 155 |
156 private: | 156 private: |
157 // Check user's profile for kApplicationLocale setting. | 157 // Check user's profile for kApplicationLocale setting. |
158 void RespectLocalePreference(PrefService* pref); | 158 void RespectLocalePreference(Profile* pref); |
159 | 159 |
160 // Indicates if DoBrowserLaunch will actually launch the browser or not. | 160 // Indicates if DoBrowserLaunch will actually launch the browser or not. |
161 bool browser_launch_enabled_; | 161 bool browser_launch_enabled_; |
162 | 162 |
163 // The current background view. | 163 // The current background view. |
164 chromeos::BackgroundView* background_view_; | 164 chromeos::BackgroundView* background_view_; |
165 | 165 |
166 DISALLOW_COPY_AND_ASSIGN(LoginUtilsImpl); | 166 DISALLOW_COPY_AND_ASSIGN(LoginUtilsImpl); |
167 }; | 167 }; |
168 | 168 |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 if (cryptohome->TpmIsEnabled() && !cryptohome->TpmIsBeingOwned()) { | 302 if (cryptohome->TpmIsEnabled() && !cryptohome->TpmIsBeingOwned()) { |
303 if (cryptohome->TpmIsOwned()) { | 303 if (cryptohome->TpmIsOwned()) { |
304 cryptohome->TpmClearStoredPassword(); | 304 cryptohome->TpmClearStoredPassword(); |
305 } else { | 305 } else { |
306 cryptohome->TpmCanAttemptOwnership(); | 306 cryptohome->TpmCanAttemptOwnership(); |
307 } | 307 } |
308 } | 308 } |
309 } | 309 } |
310 btl->AddLoginTimeMarker("TPMOwned", false); | 310 btl->AddLoginTimeMarker("TPMOwned", false); |
311 | 311 |
312 RespectLocalePreference(profile->GetPrefs()); | 312 RespectLocalePreference(profile); |
313 | 313 |
314 if (first_login) { | 314 if (first_login) { |
315 SetFirstLoginPrefs(profile->GetPrefs()); | 315 SetFirstLoginPrefs(profile->GetPrefs()); |
316 } | 316 } |
317 | 317 |
318 // Enable/disable plugins based on user preferences. | 318 // Enable/disable plugins based on user preferences. |
319 PluginUpdater::GetInstance()->DisablePluginGroupsFromPrefs(profile); | 319 PluginUpdater::GetInstance()->DisablePluginGroupsFromPrefs(profile); |
320 btl->AddLoginTimeMarker("PluginsStateUpdated", false); | 320 btl->AddLoginTimeMarker("PluginsStateUpdated", false); |
321 | 321 |
322 // We suck. This is a hack since we do not have the enterprise feature | 322 // We suck. This is a hack since we do not have the enterprise feature |
(...skipping 24 matching lines...) Expand all Loading... |
347 void LoginUtilsImpl::FetchTokens( | 347 void LoginUtilsImpl::FetchTokens( |
348 Profile* profile, | 348 Profile* profile, |
349 const GaiaAuthConsumer::ClientLoginResult& credentials) { | 349 const GaiaAuthConsumer::ClientLoginResult& credentials) { |
350 TokenService* token_service = profile->GetTokenService(); | 350 TokenService* token_service = profile->GetTokenService(); |
351 token_service->UpdateCredentials(credentials); | 351 token_service->UpdateCredentials(credentials); |
352 if (token_service->AreCredentialsValid()) { | 352 if (token_service->AreCredentialsValid()) { |
353 token_service->StartFetchingTokens(); | 353 token_service->StartFetchingTokens(); |
354 } | 354 } |
355 } | 355 } |
356 | 356 |
357 void LoginUtilsImpl::RespectLocalePreference(PrefService* prefs) { | 357 void LoginUtilsImpl::RespectLocalePreference(Profile* profile) { |
| 358 DCHECK(profile != NULL); |
| 359 PrefService* prefs = profile->GetPrefs(); |
358 DCHECK(prefs != NULL); | 360 DCHECK(prefs != NULL); |
359 std::string pref_locale_override = | |
360 prefs->GetString(prefs::kApplicationLocaleOverride); | |
361 if (!pref_locale_override.empty()) { | |
362 LanguageSwitchMenu::SwitchLanguage(pref_locale_override); | |
363 return; | |
364 } | |
365 | |
366 if (g_browser_process == NULL) | 361 if (g_browser_process == NULL) |
367 return; | 362 return; |
368 std::string cur_locale = g_browser_process->GetApplicationLocale(); | |
369 | 363 |
370 std::string pref_locale = prefs->GetString(prefs::kApplicationLocale); | 364 std::string pref_locale = prefs->GetString(prefs::kApplicationLocale); |
371 if (!pref_locale.empty()) { | 365 if (pref_locale.empty()) |
372 if (prefs->GetString(prefs::kApplicationLocaleAccepted) == pref_locale) { | 366 pref_locale = prefs->GetString(prefs::kApplicationLocaleBackup); |
373 // If locale is accepted then we do not want to show LocaleChange | 367 if (pref_locale.empty()) |
374 // notification. This notification is triggered by different values of | 368 pref_locale = g_browser_process->GetApplicationLocale(); |
375 // kApplicationLocaleBackup and kApplicationLocale preferences, | 369 DCHECK(!pref_locale.empty()); |
376 // so make them identical. | 370 profile->ChangeAppLocale(pref_locale, Profile::APP_LOCALE_CHANGED_VIA_LOGIN); |
377 prefs->SetString(prefs::kApplicationLocaleBackup, pref_locale); | 371 LanguageSwitchMenu::SwitchLanguage(pref_locale); |
378 } else { | |
379 std::string pref_locale_backup = | |
380 prefs->GetString(prefs::kApplicationLocaleBackup); | |
381 if (pref_locale_backup != cur_locale) { | |
382 if (pref_locale_backup == pref_locale || pref_locale_backup.empty()) { | |
383 prefs->SetString(prefs::kApplicationLocaleBackup, cur_locale); | |
384 } | |
385 } | |
386 } | |
387 LanguageSwitchMenu::SwitchLanguage(pref_locale); | |
388 return; | |
389 } | |
390 // Profile synchronization takes time and is not completed at that moment | |
391 // at first login. So we initialize locale preference in steps: | |
392 // (1) first save it to temporary backup; | |
393 // (2) on next login we assume that synchronization is already completed | |
394 // and we may finalize initialization. | |
395 std::string pref_locale_backup = | |
396 prefs->GetString(prefs::kApplicationLocaleBackup); | |
397 prefs->SetString(prefs::kApplicationLocaleBackup, cur_locale); | |
398 prefs->ScheduleSavePersistentPrefs(); | |
399 if (!pref_locale_backup.empty()) { | |
400 prefs->SetString(prefs::kApplicationLocale, pref_locale_backup); | |
401 prefs->ScheduleSavePersistentPrefs(); | |
402 LanguageSwitchMenu::SwitchLanguage(pref_locale_backup); | |
403 } | |
404 } | 372 } |
405 | 373 |
406 void LoginUtilsImpl::CompleteOffTheRecordLogin(const GURL& start_url) { | 374 void LoginUtilsImpl::CompleteOffTheRecordLogin(const GURL& start_url) { |
407 VLOG(1) << "Completing off the record login"; | 375 VLOG(1) << "Completing off the record login"; |
408 | 376 |
409 UserManager::Get()->OffTheRecordUserLoggedIn(); | 377 UserManager::Get()->OffTheRecordUserLoggedIn(); |
410 | 378 |
411 if (CrosLibrary::Get()->EnsureLoaded()) { | 379 if (CrosLibrary::Get()->EnsureLoaded()) { |
412 // For guest session we ask session manager to restart Chrome with --bwsi | 380 // For guest session we ask session manager to restart Chrome with --bwsi |
413 // flag. We keep only some of the arguments of this process. | 381 // flag. We keep only some of the arguments of this process. |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
586 BrowserInit browser_init; | 554 BrowserInit browser_init; |
587 int return_code; | 555 int return_code; |
588 browser_init.LaunchBrowser(*CommandLine::ForCurrentProcess(), | 556 browser_init.LaunchBrowser(*CommandLine::ForCurrentProcess(), |
589 profile, | 557 profile, |
590 FilePath(), | 558 FilePath(), |
591 true, | 559 true, |
592 &return_code); | 560 &return_code); |
593 } | 561 } |
594 | 562 |
595 } // namespace chromeos | 563 } // namespace chromeos |
OLD | NEW |