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) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_PROFILES_PROFILE_IMPL_H_ 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_PROFILES_PROFILE_IMPL_H_ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/gtest_prod_util.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_change_registrar.h" 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/timer/timer.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_impl_io_data.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/content_browser_client.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/host_zoom_map.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NetPrefObserver; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrefService; 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PrefServiceSyncable; 2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class ShortcutsBackend; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SSLConfigServiceManager; 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class TrackedPreferenceValidationDelegate; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class KioskTest; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LocaleChangeGuard; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Preferences; 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class SupervisedUserTestBase; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SequencedTaskRunner; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace data_reduction_proxy { 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class DataReductionProxyParams; 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class DataReductionProxyChromeSettings; 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace domain_reliability { 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass DomainReliabilityMonitor; 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions { 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ExtensionSystem; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace policy { 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class CloudPolicyManager; 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class ProfilePolicyConnector; 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class SchemaRegistryService; 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace user_prefs { 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class refRegistrySyncable; 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The default profile implementation. 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ProfileImpl : public Profile { 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Value written to prefs when the exit type is EXIT_NORMAL. Public for tests. 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char* const kPrefExitTypeNormal; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ProfileImpl(); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // content::BrowserContext implementation: 787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual base::FilePath GetPath() const OVERRIDE; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual content::DownloadManagerDelegate* 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDownloadManagerDelegate() OVERRIDE; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetRequestContextForRenderProcess( 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int renderer_child_id) OVERRIDE; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetMediaRequestContext() OVERRIDE; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetMediaRequestContextForRenderProcess( 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int renderer_child_id) OVERRIDE; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMediaRequestContextForStoragePartition( 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& partition_path, 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool in_memory) OVERRIDE; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual content::ResourceContext* GetResourceContext() OVERRIDE; 92cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual content::BrowserPluginGuestManager* GetGuestManager() OVERRIDE; 9303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual storage::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE; 94f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual content::PushMessagingService* GetPushMessagingService() OVERRIDE; 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual content::SSLHostStateDelegate* GetSSLHostStateDelegate() OVERRIDE; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Profile implementation: 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual scoped_refptr<base::SequencedTaskRunner> GetIOTaskRunner() OVERRIDE; 99868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Note that this implementation returns the Google-services username, if any, 100868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // not the Chrome user's display name. 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetProfileName() OVERRIDE; 102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual ProfileType GetProfileType() const OVERRIDE; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsOffTheRecord() const OVERRIDE; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual Profile* GetOffTheRecordProfile() OVERRIDE; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyOffTheRecordProfile() OVERRIDE; 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HasOffTheRecordProfile() OVERRIDE; 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual Profile* GetOriginalProfile() OVERRIDE; 108f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual bool IsSupervised() OVERRIDE; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual history::TopSites* GetTopSites() OVERRIDE; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual history::TopSites* GetTopSitesWithoutCreating() OVERRIDE; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ExtensionSpecialStoragePolicy* 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetExtensionSpecialStoragePolicy() OVERRIDE; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PrefService* GetPrefs() OVERRIDE; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PrefService* GetOffTheRecordPrefs() OVERRIDE; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetRequestContextForExtensions() OVERRIDE; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::SSLConfigService* GetSSLConfigService() OVERRIDE; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual HostContentSettingsMap* GetHostContentSettingsMap() OVERRIDE; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsSameProfile(Profile* profile) OVERRIDE; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual base::Time GetStartTime() const OVERRIDE; 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual net::URLRequestContextGetter* CreateRequestContext( 122a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 123cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE; 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual net::URLRequestContextGetter* CreateRequestContextForStoragePartition( 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& partition_path, 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool in_memory, 127a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 128cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE; 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual base::FilePath last_selected_directory() OVERRIDE; 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void set_last_selected_directory(const base::FilePath& path) OVERRIDE; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual chrome_browser_net::Predictor* GetNetworkPredictor() OVERRIDE; 13246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual DevToolsNetworkController* GetDevToolsNetworkController() OVERRIDE; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ClearNetworkingHistorySince( 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time time, 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Closure& completion) OVERRIDE; 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual GURL GetHomePage() OVERRIDE; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool WasCreatedByVersionOrLater(const std::string& version) OVERRIDE; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetExitType(ExitType exit_type) OVERRIDE; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ExitType GetLastSessionExitType() OVERRIDE; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ChangeAppLocale(const std::string& locale, 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AppLocaleChangedVia) OVERRIDE; 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnLogin() OVERRIDE; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InitChromeOSPreferences() OVERRIDE; 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(OS_CHROMEOS) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PrefProxyConfigTracker* GetProxyConfigTracker() OVERRIDE; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 151010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if defined(OS_CHROMEOS) 152010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) friend class chromeos::KioskTest; 1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) friend class chromeos::SupervisedUserTestBase; 154010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class Profile; 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend class BetterSessionRestoreCrashTest; 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(StartupBrowserCreatorTest, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfilesLaunchedAfterCrash); 159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch FRIEND_TEST_ALL_PREFIXES(ProfileBrowserTest, DISABLED_ProfileReadmeCreated); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(ProfileBrowserTest, 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileDeletedBeforeReadmeCreated); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Delay, in milliseconds, before README file is created for a new profile. 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is non-const for testing purposes. 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static int create_readme_delay_ms; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ProfileImpl(const base::FilePath& path, 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Delegate* delegate, 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateMode create_mode, 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::SequencedTaskRunner* sequenced_task_runner); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Does final initialization. Should be called after prefs were loaded. 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void DoFinalInit(); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void InitHostZoomMap(); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDefaultZoomLevelChanged(); 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnZoomLevelChanged( 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const content::HostZoomMap::ZoomLevelChange& change); 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Does final prefs initialization and calls Init(). 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnPrefsLoaded(bool success); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_SESSION_SERVICE) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void StopCreateSessionServiceTimer(); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void EnsureSessionServiceCreated(); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void EnsureRequestContextCreated() { 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetRequestContext(); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Updates the ProfileInfoCache with data from this profile. 1965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void UpdateProfileUserNameCache(); 197f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void UpdateProfileSupervisedUserIdCache(); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateProfileNameCache(); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateProfileAvatarCache(); 2008bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) void UpdateProfileIsEphemeralCache(); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GetCacheParameters(bool is_media_context, 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath* cache_path, 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int* max_size); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch PrefProxyConfigTracker* CreateProxyConfigTracker(); 2077dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<domain_reliability::DomainReliabilityMonitor> 2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CreateDomainReliabilityMonitor(PrefService* local_state); 210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_ptr<content::HostZoomMap::Subscription> zoom_subscription_; 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefChangeRegistrar pref_change_registrar_; 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path_; 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath base_cache_path_; 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // !!! BIG HONKING WARNING !!! 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The order of the members below is important. Do not change it unless 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // you know what you're doing. Also, if adding a new member here make sure 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // that the declaration occurs AFTER things it depends on as destruction 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // happens in reverse order of declaration. 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // TODO(mnissler, joaodasilva): The |profile_policy_connector_| provides the 224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // PolicyService that the |prefs_| depend on, and must outlive |prefs_|. 225a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// This can be removed once |prefs_| becomes a KeyedService too. 226a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// |profile_policy_connector_| in turn depends on |cloud_policy_manager_|, 227a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// which depends on |schema_registry_service_|. 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY) 229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<policy::SchemaRegistryService> schema_registry_service_; 230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<policy::CloudPolicyManager> cloud_policy_manager_; 231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif 232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<policy::ProfilePolicyConnector> profile_policy_connector_; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 234cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Keep |pref_validation_delegate_| above |prefs_| so that the former outlives 235cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // the latter. 236cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr<TrackedPreferenceValidationDelegate> pref_validation_delegate_; 237cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Keep |prefs_| on top for destruction order because |extension_prefs_|, 2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |net_pref_observer_|, |io_data_| and others store pointers to |prefs_| and 2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // shall be destructed first. 241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_refptr<user_prefs::PrefRegistrySyncable> pref_registry_; 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PrefServiceSyncable> prefs_; 2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PrefServiceSyncable> otr_prefs_; 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileImplIOData::Handle io_data_; 2455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(ENABLE_EXTENSIONS) 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ExtensionSpecialStoragePolicy> 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_special_storage_policy_; 2485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<NetPrefObserver> net_pref_observer_; 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<SSLConfigServiceManager> ssl_config_service_manager_; 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<HostContentSettingsMap> host_content_settings_map_; 25223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) scoped_refptr<ShortcutsBackend> shortcuts_backend_; 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Exit type the last time the profile was opened. This is set only once from 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // prefs. 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExitType last_session_exit_type_; 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_SESSION_SERVICE) 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::OneShotTimer<ProfileImpl> create_session_service_timer_; 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<Profile> off_the_record_profile_; 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // See GetStartTime for details. 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time start_time_; 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<history::TopSites> top_sites_; // For history and thumbnails. 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<chromeos::Preferences> chromeos_preferences_; 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<chromeos::LocaleChangeGuard> locale_change_guard_; 2734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool is_login_profile_; 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PrefProxyConfigTracker> pref_proxy_config_tracker_; 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // STOP!!!! DO NOT ADD ANY MORE ITEMS HERE!!!! 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Instead, make your Service/Manager/whatever object you're hanging off the 28290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Profile use our new BrowserContextKeyedServiceFactory system instead. 28390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // You can find the design document here: 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // https://sites.google.com/a/chromium.org/dev/developers/design-documents/profile-architecture 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // and you can read the raw headers here: 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 289a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // components/keyed_service/content/browser_context_dependency_manager.* 290a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // components/keyed_service/core/keyed_service.h 291a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // components/keyed_service/content/browser_context_keyed_service_factory.* 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile::Delegate* delegate_; 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_browser_net::Predictor* predictor_; 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ProfileImpl); 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_PROFILES_PROFILE_IMPL_H_ 301