OLD | NEW |
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_utils.h" | 5 #include "chrome/browser/chromeos/login/login_utils.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 OAuth2LoginManager::SessionRestoreState state) OVERRIDE; | 148 OAuth2LoginManager::SessionRestoreState state) OVERRIDE; |
149 virtual void OnNewRefreshTokenAvaiable(Profile* user_profile) OVERRIDE; | 149 virtual void OnNewRefreshTokenAvaiable(Profile* user_profile) OVERRIDE; |
150 | 150 |
151 // net::NetworkChangeNotifier::ConnectionTypeObserver overrides. | 151 // net::NetworkChangeNotifier::ConnectionTypeObserver overrides. |
152 virtual void OnConnectionTypeChanged( | 152 virtual void OnConnectionTypeChanged( |
153 net::NetworkChangeNotifier::ConnectionType type) OVERRIDE; | 153 net::NetworkChangeNotifier::ConnectionType type) OVERRIDE; |
154 | 154 |
155 private: | 155 private: |
156 typedef std::set<std::string> SessionRestoreStateSet; | 156 typedef std::set<std::string> SessionRestoreStateSet; |
157 | 157 |
| 158 // Removes obsolete about://flags entries from user profile preferences. |
| 159 void RemoveObsoleteFlags(PrefService* prefs); |
| 160 |
158 // DoBrowserLaunch is split into two parts. | 161 // DoBrowserLaunch is split into two parts. |
159 // This one is called after anynchronous locale switch. | 162 // This one is called after anynchronous locale switch. |
160 void DoBrowserLaunchOnLocaleLoadedImpl(Profile* profile, | 163 void DoBrowserLaunchOnLocaleLoadedImpl(Profile* profile, |
161 LoginDisplayHost* login_host); | 164 LoginDisplayHost* login_host); |
162 | 165 |
163 // Callback for locale_util::SwitchLanguage(). | 166 // Callback for locale_util::SwitchLanguage(). |
164 static void DoBrowserLaunchOnLocaleLoaded( | 167 static void DoBrowserLaunchOnLocaleLoaded( |
165 scoped_ptr<DoBrowserLaunchOnLocaleLoadedData> context, | 168 scoped_ptr<DoBrowserLaunchOnLocaleLoadedData> context, |
166 const std::string& locale, | 169 const std::string& locale, |
167 const std::string& loaded_locale, | 170 const std::string& loaded_locale, |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 // static | 293 // static |
291 void LoginUtilsImpl::DoBrowserLaunchOnLocaleLoaded( | 294 void LoginUtilsImpl::DoBrowserLaunchOnLocaleLoaded( |
292 scoped_ptr<DoBrowserLaunchOnLocaleLoadedData> context, | 295 scoped_ptr<DoBrowserLaunchOnLocaleLoadedData> context, |
293 const std::string& /* locale */, | 296 const std::string& /* locale */, |
294 const std::string& /* loaded_locale */, | 297 const std::string& /* loaded_locale */, |
295 const bool /* success */) { | 298 const bool /* success */) { |
296 context->login_utils_impl->DoBrowserLaunchOnLocaleLoadedImpl( | 299 context->login_utils_impl->DoBrowserLaunchOnLocaleLoadedImpl( |
297 context->profile, context->display_host); | 300 context->profile, context->display_host); |
298 } | 301 } |
299 | 302 |
| 303 void LoginUtilsImpl::RemoveObsoleteFlags(PrefService* prefs) { |
| 304 about_flags::PrefServiceFlagsStorage flags_storage(prefs); |
| 305 std::set<std::string> flags = flags_storage.GetFlags(); |
| 306 bool removed_any = false; |
| 307 // Entries from about://flags that we need to remove since they are obsolete. |
| 308 const char* const kObsoleteSwitchesToRemove[] = { |
| 309 ::switches::kMultiProfilesObsolete, |
| 310 }; |
| 311 for (size_t i = 0; i < arraysize(kObsoleteSwitchesToRemove); ++i) { |
| 312 std::set<std::string>::iterator iter = |
| 313 flags.find(kObsoleteSwitchesToRemove[i]); |
| 314 if (iter != flags.end()) { |
| 315 flags.erase(iter); |
| 316 removed_any = true; |
| 317 } |
| 318 } |
| 319 if (removed_any) |
| 320 flags_storage.SetFlags(flags); |
| 321 } |
| 322 |
300 // Called from DoBrowserLaunch() or from | 323 // Called from DoBrowserLaunch() or from |
301 // DoBrowserLaunchOnLocaleLoaded() depending on | 324 // DoBrowserLaunchOnLocaleLoaded() depending on |
302 // if locale switch was needed. | 325 // if locale switch was needed. |
303 void LoginUtilsImpl::DoBrowserLaunchOnLocaleLoadedImpl( | 326 void LoginUtilsImpl::DoBrowserLaunchOnLocaleLoadedImpl( |
304 Profile* profile, | 327 Profile* profile, |
305 LoginDisplayHost* login_host) { | 328 LoginDisplayHost* login_host) { |
306 if (!UserManager::Get()->GetCurrentUserFlow()->ShouldLaunchBrowser()) { | 329 if (!UserManager::Get()->GetCurrentUserFlow()->ShouldLaunchBrowser()) { |
307 UserManager::Get()->GetCurrentUserFlow()->LaunchExtraSteps(profile); | 330 UserManager::Get()->GetCurrentUserFlow()->LaunchExtraSteps(profile); |
308 return; | 331 return; |
309 } | 332 } |
310 | 333 |
311 CommandLine user_flags(CommandLine::NO_PROGRAM); | 334 CommandLine user_flags(CommandLine::NO_PROGRAM); |
| 335 RemoveObsoleteFlags(profile->GetPrefs()); |
312 about_flags::PrefServiceFlagsStorage flags_storage_(profile->GetPrefs()); | 336 about_flags::PrefServiceFlagsStorage flags_storage_(profile->GetPrefs()); |
313 about_flags::ConvertFlagsToSwitches(&flags_storage_, &user_flags, | 337 about_flags::ConvertFlagsToSwitches(&flags_storage_, &user_flags, |
314 about_flags::kAddSentinels); | 338 about_flags::kAddSentinels); |
315 // Only restart if needed and if not going into managed mode. | 339 // Only restart if needed and if not going into managed mode. |
316 // Don't restart browser if it is not first profile in session. | 340 // Don't restart browser if it is not first profile in session. |
317 if (UserManager::Get()->GetLoggedInUsers().size() == 1 && | 341 if (UserManager::Get()->GetLoggedInUsers().size() == 1 && |
318 !UserManager::Get()->IsLoggedInAsLocallyManagedUser() && | 342 !UserManager::Get()->IsLoggedInAsLocallyManagedUser() && |
319 !about_flags::AreSwitchesIdenticalToCurrentCommandLine( | 343 !about_flags::AreSwitchesIdenticalToCurrentCommandLine( |
320 user_flags, *CommandLine::ForCurrentProcess())) { | 344 user_flags, *CommandLine::ForCurrentProcess())) { |
321 CommandLine::StringVector flags; | 345 CommandLine::StringVector flags; |
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
950 CrosSettings* cros_settings = CrosSettings::Get(); | 974 CrosSettings* cros_settings = CrosSettings::Get(); |
951 bool allow_new_user = false; | 975 bool allow_new_user = false; |
952 cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user); | 976 cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user); |
953 if (allow_new_user) | 977 if (allow_new_user) |
954 return true; | 978 return true; |
955 return cros_settings->FindEmailInList( | 979 return cros_settings->FindEmailInList( |
956 kAccountsPrefUsers, username, wildcard_match); | 980 kAccountsPrefUsers, username, wildcard_match); |
957 } | 981 } |
958 | 982 |
959 } // namespace chromeos | 983 } // namespace chromeos |
OLD | NEW |