profile_impl.h revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This class gathers state related to a single user profile. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef CHROME_BROWSER_PROFILES_PROFILE_IMPL_H_ 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_PROFILES_PROFILE_IMPL_H_ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <string> 11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/files/file_path.h" 13ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "base/gtest_prod_util.h" 14ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "base/memory/ref_counted.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_change_registrar.h" 177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/timer/timer.h" 18ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chrome/browser/profiles/profile.h" 19ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chrome/browser/profiles/profile_impl_io_data.h" 20ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "components/domain_reliability/clear_mode.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/content_browser_client.h" 22ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "content/public/browser/host_zoom_map.h" 23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class NetPrefObserver; 25ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass PrefService; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrefServiceSyncable; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ShortcutsBackend; 28ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass SSLConfigServiceManager; 29ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass TrackedPreferenceValidationDelegate; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 31ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#if defined(OS_CHROMEOS) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class KioskTest; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LocaleChangeGuard; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ManagedUserTestBase; 36ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass Preferences; 37ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 38ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#endif 39ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 40ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace base { 41ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass SequencedTaskRunner; 42ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 43ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 45ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass ExtensionSystem; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace policy { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CloudPolicyManager; 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass ProfilePolicyConnector; 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass SchemaRegistryService; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace user_prefs { 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class refRegistrySyncable; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// The default profile implementation. 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ProfileImpl : public Profile { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Value written to prefs when the exit type is EXIT_NORMAL. Public for tests. 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char* const kPrefExitTypeNormal; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ProfileImpl(); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // content::BrowserContext implementation: 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual base::FilePath GetPath() const OVERRIDE; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual content::DownloadManagerDelegate* 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDownloadManagerDelegate() OVERRIDE; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetRequestContextForRenderProcess( 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int renderer_child_id) OVERRIDE; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetMediaRequestContext() OVERRIDE; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetMediaRequestContextForRenderProcess( 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int renderer_child_id) OVERRIDE; 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual net::URLRequestContextGetter* 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMediaRequestContextForStoragePartition( 80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::FilePath& partition_path, 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool in_memory) OVERRIDE; 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual content::ResourceContext* GetResourceContext() OVERRIDE; 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual content::BrowserPluginGuestManager* GetGuestManager() OVERRIDE; 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual quota::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE; 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual content::PushMessagingService* GetPushMessagingService() OVERRIDE; 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Profile implementation: 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual scoped_refptr<base::SequencedTaskRunner> GetIOTaskRunner() OVERRIDE; 89ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Note that this implementation returns the Google-services username, if any, 90ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // not the Chrome user's display name. 91ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual std::string GetProfileName() OVERRIDE; 92ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual ProfileType GetProfileType() const OVERRIDE; 93ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual bool IsOffTheRecord() const OVERRIDE; 94ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual Profile* GetOffTheRecordProfile() OVERRIDE; 95ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual void DestroyOffTheRecordProfile() OVERRIDE; 96ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual bool HasOffTheRecordProfile() OVERRIDE; 97ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual Profile* GetOriginalProfile() OVERRIDE; 98ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual bool IsSupervised() OVERRIDE; 99ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual history::TopSites* GetTopSites() OVERRIDE; 100ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual history::TopSites* GetTopSitesWithoutCreating() OVERRIDE; 101ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual ExtensionService* GetExtensionService() OVERRIDE; 102ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual ExtensionSpecialStoragePolicy* 103ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch GetExtensionSpecialStoragePolicy() OVERRIDE; 104ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual PrefService* GetPrefs() OVERRIDE; 105ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual PrefService* GetOffTheRecordPrefs() OVERRIDE; 106ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual net::URLRequestContextGetter* 107ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch GetRequestContextForExtensions() OVERRIDE; 108ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual net::SSLConfigService* GetSSLConfigService() OVERRIDE; 109ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual HostContentSettingsMap* GetHostContentSettingsMap() OVERRIDE; 110ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual bool IsSameProfile(Profile* profile) OVERRIDE; 111ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual base::Time GetStartTime() const OVERRIDE; 112ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual net::URLRequestContextGetter* CreateRequestContext( 113ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch content::ProtocolHandlerMap* protocol_handlers, 114ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE; 115ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual net::URLRequestContextGetter* CreateRequestContextForStoragePartition( 116ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const base::FilePath& partition_path, 117ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool in_memory, 118ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch content::ProtocolHandlerMap* protocol_handlers, 119ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE; 120ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual base::FilePath last_selected_directory() OVERRIDE; 121ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual void set_last_selected_directory(const base::FilePath& path) OVERRIDE; 122ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual chrome_browser_net::Predictor* GetNetworkPredictor() OVERRIDE; 123ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual DevToolsNetworkController* GetDevToolsNetworkController() OVERRIDE; 124ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual void ClearNetworkingHistorySince( 125ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::Time time, 126ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const base::Closure& completion) OVERRIDE; 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ClearDomainReliabilityMonitor( 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) domain_reliability::DomainReliabilityClearMode mode, 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Closure& completion) OVERRIDE; 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual GURL GetHomePage() OVERRIDE; 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool WasCreatedByVersionOrLater(const std::string& version) OVERRIDE; 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetExitType(ExitType exit_type) OVERRIDE; 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ExitType GetLastSessionExitType() OVERRIDE; 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ChangeAppLocale(const std::string& locale, 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AppLocaleChangedVia) OVERRIDE; 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnLogin() OVERRIDE; 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void InitChromeOSPreferences() OVERRIDE; 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // defined(OS_CHROMEOS) 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual PrefProxyConfigTracker* GetProxyConfigTracker() OVERRIDE; 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend class chromeos::KioskTest; 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend class chromeos::ManagedUserTestBase; 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend class Profile; 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend class BetterSessionRestoreCrashTest; 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(StartupBrowserCreatorTest, 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ProfilesLaunchedAfterCrash); 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(ProfileBrowserTest, ProfileReadmeCreated); 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(ProfileBrowserTest, 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ProfileDeletedBeforeReadmeCreated); 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Delay, in milliseconds, before README file is created for a new profile. 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // This is non-const for testing purposes. 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static int create_readme_delay_ms; 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ProfileImpl(const base::FilePath& path, 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Delegate* delegate, 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CreateMode create_mode, 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::SequencedTaskRunner* sequenced_task_runner); 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 166a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Does final initialization. Should be called after prefs were loaded. 167a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void DoFinalInit(); 168a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 169a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void InitHostZoomMap(); 170effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnDefaultZoomLevelChanged(); 172a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnZoomLevelChanged( 173a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const content::HostZoomMap::ZoomLevelChange& change); 174a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 175a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Does final prefs initialization and calls Init(). 176a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnPrefsLoaded(bool success); 177ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(ENABLE_SESSION_SERVICE) 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void StopCreateSessionServiceTimer(); 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void EnsureSessionServiceCreated(); 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void EnsureRequestContextCreated() { 186ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch GetRequestContext(); 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Updates the ProfileInfoCache with data from this profile. 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateProfileUserNameCache(); 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateProfileSupervisedUserIdCache(); 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateProfileNameCache(); 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateProfileAvatarCache(); 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateProfileIsEphemeralCache(); 195010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 196010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void GetCacheParameters(bool is_media_context, 197010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::FilePath* cache_path, 198010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) int* max_size); 199010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 200010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) PrefProxyConfigTracker* CreateProxyConfigTracker(); 201010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<content::HostZoomMap::Subscription> zoom_subscription_; 203010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) PrefChangeRegistrar pref_change_registrar_; 204010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 205010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::FilePath path_; 206010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::FilePath base_cache_path_; 207010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 208010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // !!! BIG HONKING WARNING !!! 209010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // The order of the members below is important. Do not change it unless 210010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // you know what you're doing. Also, if adding a new member here make sure 211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // that the declaration occurs AFTER things it depends on as destruction 212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // happens in reverse order of declaration. 213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // TODO(mnissler, joaodasilva): The |profile_policy_connector_| provides the 215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // PolicyService that the |prefs_| depend on, and must outlive |prefs_|. 216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// This can be removed once |prefs_| becomes a KeyedService too. 217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// |profile_policy_connector_| in turn depends on |cloud_policy_manager_|, 218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// which depends on |schema_registry_service_|. 219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#if defined(ENABLE_CONFIGURATION_POLICY) 220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<policy::SchemaRegistryService> schema_registry_service_; 221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<policy::CloudPolicyManager> cloud_policy_manager_; 222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif 223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<policy::ProfilePolicyConnector> profile_policy_connector_; 224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Keep |pref_validation_delegate_| above |prefs_| so that the former outlives 226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // the latter. 227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<TrackedPreferenceValidationDelegate> pref_validation_delegate_; 228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Keep |prefs_| on top for destruction order because |extension_prefs_|, 230ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // |net_pref_observer_|, |io_data_| and others store pointers to |prefs_| and 231ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // shall be destructed first. 232ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch scoped_refptr<user_prefs::PrefRegistrySyncable> pref_registry_; 2336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<PrefServiceSyncable> prefs_; 234ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch scoped_ptr<PrefServiceSyncable> otr_prefs_; 235ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ProfileImplIOData::Handle io_data_; 236ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch scoped_refptr<ExtensionSpecialStoragePolicy> 237ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch extension_special_storage_policy_; 238ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch scoped_ptr<NetPrefObserver> net_pref_observer_; 239ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch scoped_ptr<SSLConfigServiceManager> ssl_config_service_manager_; 2406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_refptr<HostContentSettingsMap> host_content_settings_map_; 241ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch scoped_refptr<ShortcutsBackend> shortcuts_backend_; 242ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 243ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Exit type the last time the profile was opened. This is set only once from 2446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // prefs. 2456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ExitType last_session_exit_type_; 246ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 247ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#if defined(ENABLE_SESSION_SERVICE) 248ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::OneShotTimer<ProfileImpl> create_session_service_timer_; 249f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif 250f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 251f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<Profile> off_the_record_profile_; 252f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // See GetStartTime for details. 2546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::Time start_time_; 2556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_refptr<history::TopSites> top_sites_; // For history and thumbnails. 257ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 258ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#if defined(OS_CHROMEOS) 259ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch scoped_ptr<chromeos::Preferences> chromeos_preferences_; 260ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 261ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch scoped_ptr<chromeos::LocaleChangeGuard> locale_change_guard_; 262ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 263ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool is_login_profile_; 264ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#endif 265ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 266f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<PrefProxyConfigTracker> pref_proxy_config_tracker_; 267f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 268ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // STOP!!!! DO NOT ADD ANY MORE ITEMS HERE!!!! 269ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 270ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Instead, make your Service/Manager/whatever object you're hanging off the 2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Profile use our new BrowserContextKeyedServiceFactory system instead. 2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // You can find the design document here: 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // https://sites.google.com/a/chromium.org/dev/developers/design-documents/profile-architecture 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 276 // and you can read the raw headers here: 277 // 278 // components/keyed_service/content/browser_context_dependency_manager.* 279 // components/keyed_service/core/keyed_service.h 280 // components/keyed_service/content/browser_context_keyed_service_factory.* 281 282 Profile::Delegate* delegate_; 283 284 chrome_browser_net::Predictor* predictor_; 285 286 DISALLOW_COPY_AND_ASSIGN(ProfileImpl); 287}; 288 289#endif // CHROME_BROWSER_PROFILES_PROFILE_IMPL_H_ 290