Index: chrome/browser/profile.h |
=================================================================== |
--- chrome/browser/profile.h (revision 68044) |
+++ chrome/browser/profile.h (working copy) |
@@ -1,549 +0,0 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// This class gathers state related to a single user profile. |
- |
-#ifndef CHROME_BROWSER_PROFILE_H_ |
-#define CHROME_BROWSER_PROFILE_H_ |
-#pragma once |
- |
-#include "base/basictypes.h" |
-#include "base/logging.h" |
- |
-namespace base { |
-class Time; |
-} |
- |
-#if defined(OS_CHROMEOS) |
-namespace chromeos { |
-class EnterpriseExtensionObserver; |
-class ProxyConfigServiceImpl; |
-} |
-#endif |
- |
-namespace history { |
-class TopSites; |
-} |
- |
-namespace net { |
-class TransportSecurityState; |
-class SSLConfigService; |
-} |
- |
-namespace policy { |
-class ProfilePolicyContext; |
-} |
- |
-namespace webkit_database { |
-class DatabaseTracker; |
-} |
- |
-class AutocompleteClassifier; |
-class BackgroundContentsService; |
-class BackgroundModeManager; |
-class BookmarkModel; |
-class BrowserSignin; |
-class BrowserThemeProvider; |
-class ChromeAppCacheService; |
-class ChromeBlobStorageContext; |
-class ChromeURLRequestContextGetter; |
-class CloudPrintProxyService; |
-class DesktopNotificationService; |
-class DownloadManager; |
-class Extension; |
-class ExtensionDevToolsManager; |
-class ExtensionEventRouter; |
-class ExtensionMessageService; |
-class ExtensionProcessManager; |
-class ExtensionsService; |
-class FaviconService; |
-class FilePath; |
-class BrowserFileSystemContext; |
-class FindBarState; |
-class GeolocationContentSettingsMap; |
-class GeolocationPermissionContext; |
-class HistoryService; |
-class HostContentSettingsMap; |
-class HostZoomMap; |
-class NavigationController; |
-class NTPResourceCache; |
-class PasswordStore; |
-class PersonalDataManager; |
-class PinnedTabService; |
-class PrefService; |
-class ExtensionInfoMap; |
-class PrefProxyConfigTracker; |
-class PromoCounter; |
-class ProfileSyncService; |
-class ProfileSyncFactory; |
-class SessionService; |
-class SpellCheckHost; |
-class SSLConfigServiceManager; |
-class SSLHostState; |
-class StatusTray; |
-class TransportSecurityPersister; |
-class SQLitePersistentCookieStore; |
-class TabRestoreService; |
-class TemplateURLFetcher; |
-class TemplateURLModel; |
-class ThemeProvider; |
-class TokenService; |
-class URLRequestContextGetter; |
-class UserScriptMaster; |
-class UserStyleSheetWatcher; |
-class VisitedLinkMaster; |
-class VisitedLinkEventListener; |
-class WebDataService; |
-class WebKitContext; |
-class WebResourceService; |
- |
-typedef intptr_t ProfileId; |
- |
-class Profile { |
- public: |
- // Profile services are accessed with the following parameter. This parameter |
- // defines what the caller plans to do with the service. |
- // The caller is responsible for not performing any operation that would |
- // result in persistent implicit records while using an OffTheRecord profile. |
- // This flag allows the profile to perform an additional check. |
- // |
- // It also gives us an opportunity to perform further checks in the future. We |
- // could, for example, return an history service that only allow some specific |
- // methods. |
- enum ServiceAccessType { |
- // The caller plans to perform a read or write that takes place as a result |
- // of the user input. Use this flag when the operation you are doing can be |
- // performed while off the record. (ex: creating a bookmark) |
- // |
- // Since EXPLICIT_ACCESS means "as a result of a user action", this request |
- // always succeeds. |
- EXPLICIT_ACCESS, |
- |
- // The caller plans to call a method that will permanently change some data |
- // in the profile, as part of Chrome's implicit data logging. Use this flag |
- // when you are about to perform an operation which is incompatible with the |
- // off the record mode. |
- IMPLICIT_ACCESS |
- }; |
- |
- // Value that represents no profile Id. |
- static const ProfileId InvalidProfileId; |
- |
- Profile() : restored_last_session_(false), accessibility_pause_level_(0) {} |
- virtual ~Profile() {} |
- |
- // Profile prefs are registered as soon as the prefs are loaded for the first |
- // time. |
- static void RegisterUserPrefs(PrefService* prefs); |
- |
- // Create a new profile given a path. |
- static Profile* CreateProfile(const FilePath& path); |
- |
- // Returns the request context for the "default" profile. This may be called |
- // from any thread. This CAN return NULL if a first request context has not |
- // yet been created. If necessary, listen on the UI thread for |
- // NOTIFY_DEFAULT_REQUEST_CONTEXT_AVAILABLE. |
- static URLRequestContextGetter* GetDefaultRequestContext(); |
- |
- // Returns a unique Id that can be used to identify this profile at runtime. |
- // This Id is not persistent and will not survive a restart of the browser. |
- virtual ProfileId GetRuntimeId() = 0; |
- |
- // Returns the path of the directory where this profile's data is stored. |
- virtual FilePath GetPath() = 0; |
- |
- // Return whether this profile is off the record. Default is false. |
- virtual bool IsOffTheRecord() = 0; |
- |
- // Return the off the record version of this profile. The returned pointer |
- // is owned by the receiving profile. If the receiving profile is off the |
- // record, the same profile is returned. |
- virtual Profile* GetOffTheRecordProfile() = 0; |
- |
- // Destroys the off the record profile. |
- virtual void DestroyOffTheRecordProfile() = 0; |
- |
- // True if an off the record profile exists. |
- virtual bool HasOffTheRecordProfile() = 0; |
- |
- // Return the original "recording" profile. This method returns this if the |
- // profile is not off the record. |
- virtual Profile* GetOriginalProfile() = 0; |
- |
- // Returns a pointer to the ChromeAppCacheService instance for this profile. |
- virtual ChromeAppCacheService* GetAppCacheService() = 0; |
- |
- // Returns a pointer to the DatabaseTracker instance for this profile. |
- virtual webkit_database::DatabaseTracker* GetDatabaseTracker() = 0; |
- |
- // Returns a pointer to the TopSites (thumbnail manager) instance |
- // for this profile. |
- virtual history::TopSites* GetTopSites() = 0; |
- |
- // Variant of GetTopSites that doesn't force creation. |
- virtual history::TopSites* GetTopSitesWithoutCreating() = 0; |
- |
- // Retrieves a pointer to the VisitedLinkMaster associated with this |
- // profile. The VisitedLinkMaster is lazily created the first time |
- // that this method is called. |
- virtual VisitedLinkMaster* GetVisitedLinkMaster() = 0; |
- |
- // Retrieves a pointer to the ExtensionsService associated with this |
- // profile. The ExtensionsService is created at startup. |
- virtual ExtensionsService* GetExtensionsService() = 0; |
- |
- // Retrieves a pointer to the UserScriptMaster associated with this |
- // profile. The UserScriptMaster is lazily created the first time |
- // that this method is called. |
- virtual UserScriptMaster* GetUserScriptMaster() = 0; |
- |
- // Retrieves a pointer to the ExtensionDevToolsManager associated with this |
- // profile. The instance is created at startup. |
- virtual ExtensionDevToolsManager* GetExtensionDevToolsManager() = 0; |
- |
- // Retrieves a pointer to the ExtensionProcessManager associated with this |
- // profile. The instance is created at startup. |
- virtual ExtensionProcessManager* GetExtensionProcessManager() = 0; |
- |
- // Retrieves a pointer to the ExtensionMessageService associated with this |
- // profile. The instance is created at startup. |
- virtual ExtensionMessageService* GetExtensionMessageService() = 0; |
- |
- // Accessor. The instance is created at startup. |
- virtual ExtensionEventRouter* GetExtensionEventRouter() = 0; |
- |
- // Retrieves a pointer to the SSLHostState associated with this profile. |
- // The SSLHostState is lazily created the first time that this method is |
- // called. |
- virtual SSLHostState* GetSSLHostState() = 0; |
- |
- // Retrieves a pointer to the TransportSecurityState associated with |
- // this profile. The TransportSecurityState is lazily created the |
- // first time that this method is called. |
- virtual net::TransportSecurityState* |
- GetTransportSecurityState() = 0; |
- |
- // Retrieves a pointer to the FaviconService associated with this |
- // profile. The FaviconService is lazily created the first time |
- // that this method is called. |
- // |
- // Although FaviconService is refcounted, this will not addref, and callers |
- // do not need to do any reference counting as long as they keep the pointer |
- // only for the local scope (which they should do anyway since the browser |
- // process may decide to shut down). |
- // |
- // |access| defines what the caller plans to do with the service. See |
- // the ServiceAccessType definition above. |
- virtual FaviconService* GetFaviconService(ServiceAccessType access) = 0; |
- |
- // Retrieves a pointer to the HistoryService associated with this |
- // profile. The HistoryService is lazily created the first time |
- // that this method is called. |
- // |
- // Although HistoryService is refcounted, this will not addref, and callers |
- // do not need to do any reference counting as long as they keep the pointer |
- // only for the local scope (which they should do anyway since the browser |
- // process may decide to shut down). |
- // |
- // |access| defines what the caller plans to do with the service. See |
- // the ServiceAccessType definition above. |
- virtual HistoryService* GetHistoryService(ServiceAccessType access) = 0; |
- |
- // Similar to GetHistoryService(), but won't create the history service if it |
- // doesn't already exist. |
- virtual HistoryService* GetHistoryServiceWithoutCreating() = 0; |
- |
- // Retrieves a pointer to the AutocompleteClassifier associated with this |
- // profile. The AutocompleteClassifier is lazily created the first time that |
- // this method is called. |
- virtual AutocompleteClassifier* GetAutocompleteClassifier() = 0; |
- |
- // Returns the WebDataService for this profile. This is owned by |
- // the Profile. Callers that outlive the life of this profile need to be |
- // sure they refcount the returned value. |
- // |
- // |access| defines what the caller plans to do with the service. See |
- // the ServiceAccessType definition above. |
- virtual WebDataService* GetWebDataService(ServiceAccessType access) = 0; |
- |
- // Similar to GetWebDataService(), but won't create the web data service if it |
- // doesn't already exist. |
- virtual WebDataService* GetWebDataServiceWithoutCreating() = 0; |
- |
- // Returns the PasswordStore for this profile. This is owned by the Profile. |
- virtual PasswordStore* GetPasswordStore(ServiceAccessType access) = 0; |
- |
- // Retrieves a pointer to the PrefService that manages the preferences |
- // for this user profile. The PrefService is lazily created the first |
- // time that this method is called. |
- virtual PrefService* GetPrefs() = 0; |
- |
- // Returns the TemplateURLModel for this profile. This is owned by the |
- // the Profile. |
- virtual TemplateURLModel* GetTemplateURLModel() = 0; |
- |
- // Returns the TemplateURLFetcher for this profile. This is owned by the |
- // profile. |
- virtual TemplateURLFetcher* GetTemplateURLFetcher() = 0; |
- |
- // Returns the DownloadManager associated with this profile. |
- virtual DownloadManager* GetDownloadManager() = 0; |
- virtual bool HasCreatedDownloadManager() const = 0; |
- |
- // Returns the PersonalDataManager associated with this profile. |
- virtual PersonalDataManager* GetPersonalDataManager() = 0; |
- |
- // Returns the FileSystemContext associated to this profile. The context |
- // is lazily created the first time this method is called. This is owned |
- // by the profile. |
- virtual BrowserFileSystemContext* GetFileSystemContext() = 0; |
- |
- // Returns the BrowserSignin object assigned to this profile. |
- virtual BrowserSignin* GetBrowserSignin() = 0; |
- |
- // Init our themes system. |
- virtual void InitThemes() = 0; |
- |
- // Set the theme to the specified extension. |
- virtual void SetTheme(const Extension* extension) = 0; |
- |
- // Set the theme to the machine's native theme. |
- virtual void SetNativeTheme() = 0; |
- |
- // Clear the theme and reset it to default. |
- virtual void ClearTheme() = 0; |
- |
- // Gets the theme that was last set. Returns NULL if the theme is no longer |
- // installed, if there is no installed theme, or the theme was cleared. |
- virtual const Extension* GetTheme() = 0; |
- |
- // Returns or creates the ThemeProvider associated with this profile |
- virtual BrowserThemeProvider* GetThemeProvider() = 0; |
- |
- // Returns the request context information associated with this profile. Call |
- // this only on the UI thread, since it can send notifications that should |
- // happen on the UI thread. |
- virtual URLRequestContextGetter* GetRequestContext() = 0; |
- |
- // Returns the request context for media resources asociated with this |
- // profile. |
- virtual URLRequestContextGetter* GetRequestContextForMedia() = 0; |
- |
- // Returns the request context used for extension-related requests. This |
- // is only used for a separate cookie store currently. |
- virtual URLRequestContextGetter* GetRequestContextForExtensions() = 0; |
- |
- // Called by the ExtensionsService that lives in this profile. Gives the |
- // profile a chance to react to the load event before the EXTENSION_LOADED |
- // notification has fired. The purpose for handling this event first is to |
- // avoid race conditions by making sure URLRequestContexts learn about new |
- // extensions before anything else needs them to know. |
- virtual void RegisterExtensionWithRequestContexts( |
- const Extension* extension) {} |
- |
- // Called by the ExtensionsService that lives in this profile. Lets the |
- // profile clean up its RequestContexts once all the listeners to the |
- // EXTENSION_UNLOADED notification have finished running. |
- virtual void UnregisterExtensionWithRequestContexts( |
- const Extension* extension) {} |
- |
- // Returns the SSLConfigService for this profile. |
- virtual net::SSLConfigService* GetSSLConfigService() = 0; |
- |
- // Returns the Hostname <-> Content settings map for this profile. |
- virtual HostContentSettingsMap* GetHostContentSettingsMap() = 0; |
- |
- // Returns the Hostname <-> Zoom Level map for this profile. |
- virtual HostZoomMap* GetHostZoomMap() = 0; |
- |
- // Returns the geolocation settings map for this profile. |
- virtual GeolocationContentSettingsMap* GetGeolocationContentSettingsMap() = 0; |
- |
- // Returns the geolocation permission context for this profile. |
- virtual GeolocationPermissionContext* GetGeolocationPermissionContext() = 0; |
- |
- // Returns the user style sheet watcher. |
- virtual UserStyleSheetWatcher* GetUserStyleSheetWatcher() = 0; |
- |
- // Returns the find bar state for this profile. The find bar state is lazily |
- // created the first time that this method is called. |
- virtual FindBarState* GetFindBarState() = 0; |
- |
- // Returns the session service for this profile. This may return NULL. If |
- // this profile supports a session service (it isn't off the record), and |
- // the session service hasn't yet been created, this forces creation of |
- // the session service. |
- // |
- // This returns NULL in two situations: the profile is off the record, or the |
- // session service has been explicitly shutdown (browser is exiting). Callers |
- // should always check the return value for NULL. |
- virtual SessionService* GetSessionService() = 0; |
- |
- // If this profile has a session service, it is shut down. To properly record |
- // the current state this forces creation of the session service, then shuts |
- // it down. |
- virtual void ShutdownSessionService() = 0; |
- |
- // Returns true if this profile has a session service. |
- virtual bool HasSessionService() const = 0; |
- |
- // Returns true if this profile has a profile sync service. |
- virtual bool HasProfileSyncService() const = 0; |
- |
- // Returns true if the last time this profile was open it was exited cleanly. |
- virtual bool DidLastSessionExitCleanly() = 0; |
- |
- // Returns the BookmarkModel, creating if not yet created. |
- virtual BookmarkModel* GetBookmarkModel() = 0; |
- |
- // Returns the Gaia Token Service, creating if not yet created. |
- virtual TokenService* GetTokenService() = 0; |
- |
- // Returns the ProfileSyncService, creating if not yet created. |
- virtual ProfileSyncService* GetProfileSyncService() = 0; |
- |
- // Returns the ProfileSyncService, creating if not yet created, with |
- // the specified CrOS username. |
- virtual ProfileSyncService* GetProfileSyncService( |
- const std::string& cros_user) = 0; |
- |
- // Returns the CloudPrintProxyService, creating if not yet created. |
- virtual CloudPrintProxyService* GetCloudPrintProxyService() = 0; |
- |
- // Return whether 2 profiles are the same. 2 profiles are the same if they |
- // represent the same profile. This can happen if there is pointer equality |
- // or if one profile is the off the record version of another profile (or vice |
- // versa). |
- virtual bool IsSameProfile(Profile* profile) = 0; |
- |
- // Returns the time the profile was started. This is not the time the profile |
- // was created, rather it is the time the user started chrome and logged into |
- // this profile. For the single profile case, this corresponds to the time |
- // the user started chrome. |
- virtual base::Time GetStartTime() const = 0; |
- |
- // Returns the TabRestoreService. This returns NULL when off the record. |
- virtual TabRestoreService* GetTabRestoreService() = 0; |
- |
- virtual void ResetTabRestoreService() = 0; |
- |
- // May return NULL. |
- virtual SpellCheckHost* GetSpellCheckHost() = 0; |
- |
- // If |force| is false, and the spellchecker is already initialized (or is in |
- // the process of initializing), then do nothing. Otherwise clobber the |
- // current spellchecker and replace it with a new one. |
- virtual void ReinitializeSpellCheckHost(bool force) = 0; |
- |
- // Returns the WebKitContext assigned to this profile. |
- virtual WebKitContext* GetWebKitContext() = 0; |
- |
- // Returns the provider of desktop notifications for this profile. |
- virtual DesktopNotificationService* GetDesktopNotificationService() = 0; |
- |
- // Returns the service that manages BackgroundContents for this profile. |
- virtual BackgroundContentsService* GetBackgroundContentsService() const = 0; |
- |
- // Returns the StatusTray, which provides an API for displaying status icons |
- // in the system status tray. Returns NULL if status icons are not supported |
- // on this platform (or this is a unit test). |
- virtual StatusTray* GetStatusTray() = 0; |
- |
- // Marks the profile as cleanly shutdown. |
- // |
- // NOTE: this is invoked internally on a normal shutdown, but is public so |
- // that it can be invoked when the user logs out/powers down (WM_ENDSESSION). |
- virtual void MarkAsCleanShutdown() = 0; |
- |
- virtual void InitExtensions() = 0; |
- |
- // Start up service that gathers data from a web resource feed. |
- virtual void InitWebResources() = 0; |
- |
- // Returns the new tab page resource cache. |
- virtual NTPResourceCache* GetNTPResourceCache() = 0; |
- |
- // Returns the last directory that was chosen for uploading or opening a file. |
- virtual FilePath last_selected_directory() = 0; |
- virtual void set_last_selected_directory(const FilePath& path) = 0; |
- |
- // Returns a pointer to the ChromeBlobStorageContext instance for this |
- // profile. |
- virtual ChromeBlobStorageContext* GetBlobStorageContext() = 0; |
- |
- // Returns the IO-thread-accessible profile data for this profile. |
- virtual ExtensionInfoMap* GetExtensionInfoMap() = 0; |
- |
- // Returns the PromoCounter for Instant, or NULL if not applicable. |
- virtual PromoCounter* GetInstantPromoCounter() = 0; |
- |
- // Gets the policy context associated with this profile. |
- virtual policy::ProfilePolicyContext* GetPolicyContext() = 0; |
- |
-#if defined(OS_CHROMEOS) |
- // Returns ChromeOS's ProxyConfigServiceImpl, creating if not yet created. |
- virtual chromeos::ProxyConfigServiceImpl* |
- GetChromeOSProxyConfigServiceImpl() = 0; |
- |
- // Creates ChromeOS's EnterpriseExtensionListener. |
- virtual void SetupChromeOSEnterpriseExtensionObserver() = 0; |
- |
-#endif // defined(OS_CHROMEOS) |
- |
- // Returns the helper object that provides the proxy configuration service |
- // access to the the proxy configuration possibly defined by preferences. |
- virtual PrefProxyConfigTracker* GetProxyConfigTracker() = 0; |
- |
-#ifdef UNIT_TEST |
- // Use with caution. GetDefaultRequestContext may be called on any thread! |
- static void set_default_request_context(URLRequestContextGetter* c) { |
- default_request_context_ = c; |
- } |
-#endif |
- |
- // Did the user restore the last session? This is set by SessionRestore. |
- void set_restored_last_session(bool restored_last_session) { |
- restored_last_session_ = restored_last_session; |
- } |
- bool restored_last_session() const { |
- return restored_last_session_; |
- } |
- |
- // Stop sending accessibility events until ResumeAccessibilityEvents(). |
- // Calls to Pause nest; no events will be sent until the number of |
- // Resume calls matches the number of Pause calls received. |
- void PauseAccessibilityEvents() { |
- accessibility_pause_level_++; |
- } |
- |
- void ResumeAccessibilityEvents() { |
- DCHECK(accessibility_pause_level_ > 0); |
- accessibility_pause_level_--; |
- } |
- |
- bool ShouldSendAccessibilityEvents() { |
- return 0 == accessibility_pause_level_; |
- } |
- |
- // Checks whether sync is configurable by the user. Returns false if sync is |
- // disabled or controlled by configuration management. |
- bool IsSyncAccessible(); |
- |
- // Creates an OffTheRecordProfile which points to this Profile. |
- Profile* CreateOffTheRecordProfile(); |
- |
- protected: |
- static URLRequestContextGetter* default_request_context_; |
- |
- private: |
- bool restored_last_session_; |
- |
- // Accessibility events will only be propagated when the pause |
- // level is zero. PauseAccessibilityEvents and ResumeAccessibilityEvents |
- // increment and decrement the level, respectively, rather than set it to |
- // true or false, so that calls can be nested. |
- int accessibility_pause_level_; |
-}; |
- |
-#endif // CHROME_BROWSER_PROFILE_H_ |