profiles_state.cc revision 8bcbed890bc3ce4d7a057a8f32cab53fa534672e
19ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
29ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
39ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// found in the LICENSE file.
49ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
59ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/profiles/profiles_state.h"
69ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/command_line.h"
89ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/files/file_path.h"
99ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/prefs/pref_registry_simple.h"
108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "chrome/browser/browser_process.h"
118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "chrome/browser/profiles/profile.h"
128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "chrome/browser/profiles/profile_info_cache.h"
138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h"
148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "chrome/browser/ui/browser.h"
159ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/common/chrome_constants.h"
169ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/common/chrome_switches.h"
179ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/common/pref_names.h"
188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "grit/generated_resources.h"
198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h"
209ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#if defined(OS_CHROMEOS)
2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chrome/browser/chromeos/login/user_manager.h"
2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif
2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
259ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochnamespace profiles {
269ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
279ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochbool IsMultipleProfilesEnabled() {
289ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#if defined(OS_ANDROID)
299ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  return false;
309ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#endif
319ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#if defined(OS_CHROMEOS)
3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  return chromeos::UserManager::IsMultipleProfilesAllowed();
339ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#endif
349ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
359ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  return true;
369ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
379ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
389ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochbool IsNewProfileManagementEnabled() {
399ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  return CommandLine::ForCurrentProcess()->HasSwitch(
409ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch      switches::kNewProfileManagement);
419ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
429ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)base::FilePath GetDefaultProfileDir(const base::FilePath& user_data_dir) {
449ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  base::FilePath default_profile_dir(user_data_dir);
459ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  default_profile_dir =
469ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch      default_profile_dir.AppendASCII(chrome::kInitialProfile);
479ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  return default_profile_dir;
489ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
499ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
509ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochbase::FilePath GetProfilePrefsPath(
519ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    const base::FilePath &profile_dir) {
529ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  base::FilePath default_prefs_path(profile_dir);
539ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  default_prefs_path = default_prefs_path.Append(chrome::kPreferencesFilename);
549ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  return default_prefs_path;
559ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
569ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
579ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochvoid RegisterPrefs(PrefRegistrySimple* registry) {
589ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  registry->RegisterStringPref(prefs::kProfileLastUsed, std::string());
599ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  registry->RegisterIntegerPref(prefs::kProfilesNumCreated, 1);
609ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  registry->RegisterListPref(prefs::kProfilesLastActive);
619ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
629ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)string16 GetActiveProfileDisplayName(Browser* browser) {
648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  string16 profile_name;
658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  Profile* profile = browser->profile();
668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  if (profile->IsGuestSession()) {
688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    profile_name = l10n_util::GetStringUTF16(IDS_GUEST_PROFILE_NAME);
698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  } else {
708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    ProfileInfoCache& cache =
718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)        g_browser_process->profile_manager()->GetProfileInfoCache();
728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    size_t index = cache.GetIndexOfProfileWithPath(profile->GetPath());
738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    if (index != std::string::npos)
748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      profile_name = cache.GetNameOfProfileAtIndex(index);
758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  }
768bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  return profile_name;
778bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}
788bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
799ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}  // namespace profiles
80