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/chrome_browser_main.h" | 5 #include "chrome/browser/chrome_browser_main.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 } | 242 } |
243 } | 243 } |
244 #endif // !defined(OS_ANDROID) && !defined(OS_CHROMEOS) | 244 #endif // !defined(OS_ANDROID) && !defined(OS_CHROMEOS) |
245 | 245 |
246 // Returns the new local state object, guaranteed non-NULL. | 246 // Returns the new local state object, guaranteed non-NULL. |
247 // |local_state_task_runner| must be a shutdown-blocking task runner. | 247 // |local_state_task_runner| must be a shutdown-blocking task runner. |
248 PrefService* InitializeLocalState( | 248 PrefService* InitializeLocalState( |
249 base::SequencedTaskRunner* local_state_task_runner, | 249 base::SequencedTaskRunner* local_state_task_runner, |
250 const base::CommandLine& parsed_command_line) { | 250 const base::CommandLine& parsed_command_line) { |
251 TRACE_EVENT0("startup", "ChromeBrowserMainParts::InitializeLocalState") | 251 TRACE_EVENT0("startup", "ChromeBrowserMainParts::InitializeLocalState") |
252 base::FilePath local_state_path; | |
253 PathService::Get(chrome::FILE_LOCAL_STATE, &local_state_path); | |
254 bool local_state_file_exists = base::PathExists(local_state_path); | |
255 | 252 |
256 // Load local state. This includes the application locale so we know which | 253 // Load local state. This includes the application locale so we know which |
257 // locale dll to load. This also causes local state prefs to be registered. | 254 // locale dll to load. This also causes local state prefs to be registered. |
258 PrefService* local_state = g_browser_process->local_state(); | 255 PrefService* local_state = g_browser_process->local_state(); |
259 DCHECK(local_state); | 256 DCHECK(local_state); |
260 | 257 |
261 #if defined(OS_WIN) | 258 #if defined(OS_WIN) |
262 if (first_run::IsChromeFirstRun()) { | 259 if (first_run::IsChromeFirstRun()) { |
263 // During first run we read the google_update registry key to find what | 260 // During first run we read the google_update registry key to find what |
264 // language the user selected when downloading the installer. This | 261 // language the user selected when downloading the installer. This |
(...skipping 13 matching lines...) Expand all Loading... |
278 // Checking that the local state file for the current profile doesn't exist | 275 // Checking that the local state file for the current profile doesn't exist |
279 // is the most robust way to determine whether we need to inherit or not | 276 // is the most robust way to determine whether we need to inherit or not |
280 // since the parent profile command line flag can be present even when the | 277 // since the parent profile command line flag can be present even when the |
281 // current profile is not a new one, and in that case we do not want to | 278 // current profile is not a new one, and in that case we do not want to |
282 // inherit and reset the user's setting. | 279 // inherit and reset the user's setting. |
283 // | 280 // |
284 // TODO(mnissler): We should probably just instantiate a | 281 // TODO(mnissler): We should probably just instantiate a |
285 // JSONPrefStore here instead of an entire PrefService. Once this is | 282 // JSONPrefStore here instead of an entire PrefService. Once this is |
286 // addressed, the call to browser_prefs::RegisterLocalState can move | 283 // addressed, the call to browser_prefs::RegisterLocalState can move |
287 // to chrome_prefs::CreateLocalState. | 284 // to chrome_prefs::CreateLocalState. |
288 if (!local_state_file_exists && | 285 if (parsed_command_line.HasSwitch(switches::kParentProfile)) { |
289 parsed_command_line.HasSwitch(switches::kParentProfile)) { | 286 base::FilePath local_state_path; |
290 base::FilePath parent_profile = | 287 PathService::Get(chrome::FILE_LOCAL_STATE, &local_state_path); |
291 parsed_command_line.GetSwitchValuePath(switches::kParentProfile); | 288 bool local_state_file_exists = base::PathExists(local_state_path); |
292 scoped_refptr<PrefRegistrySimple> registry = new PrefRegistrySimple(); | 289 if (!local_state_file_exists) { |
293 scoped_ptr<PrefService> parent_local_state( | 290 base::FilePath parent_profile = |
294 chrome_prefs::CreateLocalState( | 291 parsed_command_line.GetSwitchValuePath(switches::kParentProfile); |
295 parent_profile, | 292 scoped_refptr<PrefRegistrySimple> registry = new PrefRegistrySimple(); |
296 local_state_task_runner, | 293 scoped_ptr<PrefService> parent_local_state( |
297 g_browser_process->policy_service(), | 294 chrome_prefs::CreateLocalState( |
298 registry, | 295 parent_profile, |
299 false)); | 296 local_state_task_runner, |
300 registry->RegisterStringPref(prefs::kApplicationLocale, std::string()); | 297 g_browser_process->policy_service(), |
301 // Right now, we only inherit the locale setting from the parent profile. | 298 registry, |
302 local_state->SetString( | 299 false)); |
303 prefs::kApplicationLocale, | 300 registry->RegisterStringPref(prefs::kApplicationLocale, std::string()); |
304 parent_local_state->GetString(prefs::kApplicationLocale)); | 301 // Right now, we only inherit the locale setting from the parent profile. |
| 302 local_state->SetString( |
| 303 prefs::kApplicationLocale, |
| 304 parent_local_state->GetString(prefs::kApplicationLocale)); |
| 305 } |
305 } | 306 } |
306 | 307 |
307 #if defined(OS_CHROMEOS) | 308 #if defined(OS_CHROMEOS) |
308 if (parsed_command_line.HasSwitch(chromeos::switches::kLoginManager)) { | 309 if (parsed_command_line.HasSwitch(chromeos::switches::kLoginManager)) { |
309 std::string owner_locale = local_state->GetString(prefs::kOwnerLocale); | 310 std::string owner_locale = local_state->GetString(prefs::kOwnerLocale); |
310 // Ensure that we start with owner's locale. | 311 // Ensure that we start with owner's locale. |
311 if (!owner_locale.empty() && | 312 if (!owner_locale.empty() && |
312 local_state->GetString(prefs::kApplicationLocale) != owner_locale && | 313 local_state->GetString(prefs::kApplicationLocale) != owner_locale && |
313 !local_state->IsManagedPreference(prefs::kApplicationLocale)) { | 314 !local_state->IsManagedPreference(prefs::kApplicationLocale)) { |
314 local_state->SetString(prefs::kApplicationLocale, owner_locale); | 315 local_state->SetString(prefs::kApplicationLocale, owner_locale); |
(...skipping 1393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1708 chromeos::CrosSettings::Shutdown(); | 1709 chromeos::CrosSettings::Shutdown(); |
1709 #endif | 1710 #endif |
1710 #endif | 1711 #endif |
1711 } | 1712 } |
1712 | 1713 |
1713 // Public members: | 1714 // Public members: |
1714 | 1715 |
1715 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { | 1716 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { |
1716 chrome_extra_parts_.push_back(parts); | 1717 chrome_extra_parts_.push_back(parts); |
1717 } | 1718 } |
OLD | NEW |