diff options
Diffstat (limited to 'chrome/browser/profile_impl.h')
-rw-r--r-- | chrome/browser/profile_impl.h | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/chrome/browser/profile_impl.h b/chrome/browser/profile_impl.h new file mode 100644 index 0000000..e3de444 --- /dev/null +++ b/chrome/browser/profile_impl.h @@ -0,0 +1,229 @@ +// 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_IMPL_H_ +#define CHROME_BROWSER_PROFILE_IMPL_H_ +#pragma once + +#include <set> +#include <string> + +#include "chrome/browser/profile.h" +#include "chrome/browser/spellcheck_host_observer.h" +#include "chrome/common/notification_registrar.h" + +#if defined(OS_CHROMEOS) +#include "chrome/browser/chromeos/preferences.h" +#endif + +// The default profile implementation. +class ProfileImpl : public Profile, + public SpellCheckHostObserver, + public NotificationObserver { + public: + virtual ~ProfileImpl(); + + // Profile implementation. + virtual ProfileId GetRuntimeId(); + virtual FilePath GetPath(); + virtual bool IsOffTheRecord(); + virtual Profile* GetOffTheRecordProfile(); + virtual void DestroyOffTheRecordProfile(); + virtual bool HasOffTheRecordProfile(); + virtual Profile* GetOriginalProfile(); + virtual webkit_database::DatabaseTracker* GetDatabaseTracker(); + virtual history::TopSites* GetTopSites(); + virtual VisitedLinkMaster* GetVisitedLinkMaster(); + virtual UserScriptMaster* GetUserScriptMaster(); + virtual SSLHostState* GetSSLHostState(); + virtual net::TransportSecurityState* GetTransportSecurityState(); + virtual ExtensionsService* GetExtensionsService(); + virtual ExtensionDevToolsManager* GetExtensionDevToolsManager(); + virtual ExtensionProcessManager* GetExtensionProcessManager(); + virtual ExtensionMessageService* GetExtensionMessageService(); + virtual FaviconService* GetFaviconService(ServiceAccessType sat); + virtual HistoryService* GetHistoryService(ServiceAccessType sat); + virtual HistoryService* GetHistoryServiceWithoutCreating(); + virtual AutocompleteClassifier* GetAutocompleteClassifier(); + virtual WebDataService* GetWebDataService(ServiceAccessType sat); + virtual WebDataService* GetWebDataServiceWithoutCreating(); + virtual PasswordStore* GetPasswordStore(ServiceAccessType sat); + virtual PrefService* GetPrefs(); + virtual TemplateURLModel* GetTemplateURLModel(); + virtual TemplateURLFetcher* GetTemplateURLFetcher(); + virtual DownloadManager* GetDownloadManager(); + virtual PersonalDataManager* GetPersonalDataManager(); + virtual void InitThemes(); + virtual void SetTheme(Extension* extension); + virtual void SetNativeTheme(); + virtual void ClearTheme(); + virtual Extension* GetTheme(); + virtual BrowserThemeProvider* GetThemeProvider(); + virtual bool HasCreatedDownloadManager() const; + virtual URLRequestContextGetter* GetRequestContext(); + virtual URLRequestContextGetter* GetRequestContextForMedia(); + virtual URLRequestContextGetter* GetRequestContextForExtensions(); + virtual void RegisterExtensionWithRequestContexts(Extension* extension); + virtual void UnregisterExtensionWithRequestContexts(Extension* extension); + virtual net::SSLConfigService* GetSSLConfigService(); + virtual HostContentSettingsMap* GetHostContentSettingsMap(); + virtual HostZoomMap* GetHostZoomMap(); + virtual GeolocationContentSettingsMap* GetGeolocationContentSettingsMap(); + virtual GeolocationPermissionContext* GetGeolocationPermissionContext(); + virtual UserStyleSheetWatcher* GetUserStyleSheetWatcher(); + virtual FindBarState* GetFindBarState(); + virtual SessionService* GetSessionService(); + virtual void ShutdownSessionService(); + virtual bool HasSessionService() const; + virtual bool DidLastSessionExitCleanly(); + virtual BookmarkModel* GetBookmarkModel(); + virtual bool IsSameProfile(Profile* profile); + virtual base::Time GetStartTime() const; + virtual TabRestoreService* GetTabRestoreService(); + virtual void ResetTabRestoreService(); + virtual SpellCheckHost* GetSpellCheckHost(); + virtual void ReinitializeSpellCheckHost(bool force); + virtual WebKitContext* GetWebKitContext(); + virtual DesktopNotificationService* GetDesktopNotificationService(); + virtual BackgroundContentsService* GetBackgroundContentsService(); + virtual void MarkAsCleanShutdown(); + virtual void InitExtensions(); + virtual NTPResourceCache* GetNTPResourceCache(); + virtual FilePath last_selected_directory(); + virtual void set_last_selected_directory(const FilePath& path); + virtual ProfileSyncService* GetProfileSyncService(); + virtual TokenService* GetTokenService(); + void InitSyncService(); + virtual CloudPrintProxyService* GetCloudPrintProxyService(); + void InitCloudPrintProxyService(); + + // NotificationObserver implementation. + virtual void Observe(NotificationType type, + const NotificationSource& source, + const NotificationDetails& details); + + // SpellCheckHostObserver implementation. + virtual void SpellCheckHostInitialized(); + + private: + friend class Profile; + + explicit ProfileImpl(const FilePath& path); + + void CreateWebDataService(); + FilePath GetPrefFilePath(); + + void CreatePasswordStore(); + + void StopCreateSessionServiceTimer(); + + void EnsureRequestContextCreated() { + GetRequestContext(); + } + + void EnsureSessionServiceCreated() { + GetSessionService(); + } + + NotificationRegistrar registrar_; + + FilePath path_; + FilePath base_cache_path_; + scoped_ptr<VisitedLinkEventListener> visited_link_event_listener_; + scoped_ptr<VisitedLinkMaster> visited_link_master_; + scoped_refptr<ExtensionsService> extensions_service_; + scoped_refptr<UserScriptMaster> user_script_master_; + scoped_refptr<ExtensionDevToolsManager> extension_devtools_manager_; + scoped_ptr<ExtensionProcessManager> extension_process_manager_; + scoped_refptr<ExtensionMessageService> extension_message_service_; + scoped_ptr<SSLHostState> ssl_host_state_; + scoped_refptr<net::TransportSecurityState> + transport_security_state_; + scoped_refptr<TransportSecurityPersister> + transport_security_persister_; + scoped_ptr<PrefService> prefs_; + scoped_ptr<TemplateURLFetcher> template_url_fetcher_; + scoped_ptr<TemplateURLModel> template_url_model_; + scoped_ptr<BookmarkModel> bookmark_bar_model_; + scoped_refptr<WebResourceService> web_resource_service_; + scoped_ptr<NTPResourceCache> ntp_resource_cache_; + + scoped_ptr<TokenService> token_service_; + scoped_ptr<ProfileSyncFactory> profile_sync_factory_; + scoped_ptr<ProfileSyncService> sync_service_; + scoped_ptr<CloudPrintProxyService> cloud_print_proxy_service_; + + scoped_refptr<ChromeURLRequestContextGetter> request_context_; + + scoped_refptr<ChromeURLRequestContextGetter> media_request_context_; + + scoped_refptr<ChromeURLRequestContextGetter> extensions_request_context_; + + scoped_ptr<SSLConfigServiceManager> ssl_config_service_manager_; + + scoped_refptr<HostContentSettingsMap> host_content_settings_map_; + scoped_refptr<HostZoomMap> host_zoom_map_; + scoped_refptr<GeolocationContentSettingsMap> + geolocation_content_settings_map_; + scoped_refptr<GeolocationPermissionContext> + geolocation_permission_context_; + scoped_refptr<UserStyleSheetWatcher> user_style_sheet_watcher_; + scoped_ptr<FindBarState> find_bar_state_; + scoped_refptr<DownloadManager> download_manager_; + scoped_refptr<HistoryService> history_service_; + scoped_refptr<FaviconService> favicon_service_; + scoped_ptr<AutocompleteClassifier> autocomplete_classifier_; + scoped_refptr<WebDataService> web_data_service_; + scoped_refptr<PasswordStore> password_store_; + scoped_refptr<SessionService> session_service_; + scoped_ptr<BrowserThemeProvider> theme_provider_; + scoped_refptr<WebKitContext> webkit_context_; + scoped_ptr<DesktopNotificationService> desktop_notification_service_; + scoped_ptr<BackgroundContentsService> background_contents_service_; + scoped_refptr<PersonalDataManager> personal_data_manager_; + scoped_ptr<PinnedTabService> pinned_tab_service_; + bool history_service_created_; + bool favicon_service_created_; + bool created_web_data_service_; + bool created_password_store_; + bool created_download_manager_; + bool created_theme_provider_; + // Whether or not the last session exited cleanly. This is set only once. + bool last_session_exited_cleanly_; + + base::OneShotTimer<ProfileImpl> create_session_service_timer_; + + scoped_ptr<Profile> off_the_record_profile_; + + // See GetStartTime for details. + base::Time start_time_; + + scoped_refptr<TabRestoreService> tab_restore_service_; + + scoped_refptr<SpellCheckHost> spellcheck_host_; + + // Indicates whether |spellcheck_host_| has told us initialization is + // finished. + bool spellcheck_host_ready_; + + // Set to true when ShutdownSessionService is invoked. If true + // GetSessionService won't recreate the SessionService. + bool shutdown_session_service_; + + // The main database tracker for this profile. + // Should be used only on the file thread. + scoped_refptr<webkit_database::DatabaseTracker> db_tracker_; + + scoped_refptr<history::TopSites> top_sites_; // For history and thumbnails. + +#if defined(OS_CHROMEOS) + chromeos::Preferences chromeos_preferences_; +#endif + + DISALLOW_COPY_AND_ASSIGN(ProfileImpl); +}; + +#endif // CHROME_BROWSER_PROFILE_IMPL_H_ |