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