1/* 2 * Copyright 2010, The Android Open Source Project 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * * Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * * Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26// This class gathers state related to a single user profile. 27// On Android, we only use this for AutoFill so methods are mostly 28// just stubs. 29 30#ifndef ANDROID_AUTOFILL_PROFILE_H_ 31#define ANDROID_AUTOFILL_PROFILE_H_ 32 33#include "android/autofill/android_url_request_context_getter.h" 34#include "base/basictypes.h" 35#include "base/file_path.h" 36#include "base/memory/ref_counted.h" 37#include "base/scoped_ptr.h" 38#include "base/timer.h" 39#include "chrome/browser/prefs/pref_service.h" 40#include "chrome/browser/profiles/profile.h" 41 42namespace base { 43class Time; 44} 45 46namespace history { 47class TopSites; 48} 49 50namespace fileapi { 51class FileSystemContext; 52} 53 54namespace net { 55class TransportSecurityState; 56class SSLConfigService; 57} 58 59namespace policy { 60class ProfilePolicyContext; 61} 62 63namespace prerender { 64class PrerenderManager; 65} 66 67namespace webkit_database { 68class DatabaseTracker; 69} 70 71class AutocompleteClassifier; 72class BackgroundContentsService; 73class BookmarkModel; 74class BrowserSignin; 75class BrowserThemeProvider; 76class ChromeURLRequestContextGetter; 77class DesktopNotificationService; 78class DownloadManager; 79class Extension; 80class ExtensionDevToolsManager; 81class ExtensionIOEventRouter; 82class ExtensionProcessManager; 83class ExtensionMessageService; 84class ExtensionsService; 85class FaviconService; 86class FindBarState; 87class GeolocationContentSettingsMap; 88class GeolocationPermissionContext; 89class HistoryService; 90class HostContentSettingsMap; 91class HostZoomMap; 92class NavigationController; 93class NTPResourceCache; 94class PasswordStore; 95class PersonalDataManager; 96class PinnedTabService; 97class PrefProxyConfigTracker; 98class PromoCounter; 99class ProfileSyncService; 100class ProfileSyncFactory; 101class SessionService; 102class SpellCheckHost; 103class SSLConfigServiceManager; 104class SSLHostState; 105class TransportSecurityPersister; 106class SQLitePersistentCookieStore; 107class TabRestoreService; 108class TemplateURLFetcher; 109class TemplateURLModel; 110class ThemeProvider; 111class TokenService; 112class URLRequestContextGetter; 113class UserScriptMaster; 114class UserStyleSheetWatcher; 115class VisitedLinkMaster; 116class VisitedLinkEventListener; 117class WebDataService; 118class WebKitContext; 119class WebResourceService; 120class CloudPrintProxyService; 121 122typedef intptr_t ProfileId; 123 124// The android profile implementation. 125class ProfileImplAndroid : public Profile { 126 public: 127 virtual ~ProfileImplAndroid(); 128 129 void SetRequestContext(net::URLRequestContextGetter* context) { url_request_context_getter_ = context; } 130 131 // Profile implementation. 132 virtual Profile* GetOriginalProfile(); 133 virtual PersonalDataManager* GetPersonalDataManager(); 134 virtual PrefService* GetPrefs(); 135 virtual FilePath GetPath() { return path_; } 136 virtual net::URLRequestContextGetter* GetRequestContext(); 137 138 // Functions from Profile that we don't need on Android for AutoFill. 139 virtual ProfileId GetRuntimeId() { NOTREACHED(); return 0; } 140 virtual bool IsOffTheRecord() { NOTREACHED(); return false; } 141 virtual Profile* GetOffTheRecordProfile() { NOTREACHED(); return NULL; } 142 virtual void DestroyOffTheRecordProfile() { NOTREACHED(); } 143 virtual bool HasOffTheRecordProfile() { NOTREACHED(); return false; } 144 virtual ChromeAppCacheService* GetAppCacheService() { NOTREACHED(); return NULL; } 145 virtual webkit_database::DatabaseTracker* GetDatabaseTracker() { NOTREACHED(); return NULL; } 146 virtual history::TopSites* GetTopSites() { NOTREACHED(); return NULL; } 147 virtual VisitedLinkMaster* GetVisitedLinkMaster() { NOTREACHED(); return NULL; } 148 virtual UserScriptMaster* GetUserScriptMaster() { NOTREACHED(); return NULL; } 149 virtual SSLHostState* GetSSLHostState() { NOTREACHED(); return NULL; } 150 virtual net::TransportSecurityState* GetTransportSecurityState() { NOTREACHED(); return NULL; } 151 virtual ExtensionsService* GetExtensionsService() { NOTREACHED(); return NULL; } 152 virtual ExtensionDevToolsManager* GetExtensionDevToolsManager() { NOTREACHED(); return NULL; } 153 virtual ExtensionProcessManager* GetExtensionProcessManager() { NOTREACHED(); return NULL; } 154 virtual ExtensionMessageService* GetExtensionMessageService() { NOTREACHED(); return NULL; } 155 virtual ExtensionEventRouter* GetExtensionEventRouter() { NOTREACHED(); return NULL; } 156 virtual ExtensionIOEventRouter* GetExtensionIOEventRouter() { NOTREACHED(); return NULL; }; 157 virtual ExtensionService* GetExtensionService() { NOTREACHED(); return NULL; } 158 virtual ExtensionSpecialStoragePolicy* GetExtensionSpecialStoragePolicy() { NOTREACHED(); return NULL; } 159 virtual FaviconService* GetFaviconService(ServiceAccessType sat) { NOTREACHED(); return NULL; } 160 virtual HistoryService* GetHistoryService(ServiceAccessType sat) { NOTREACHED(); return NULL; } 161 virtual HistoryService* GetHistoryServiceWithoutCreating() { NOTREACHED(); return NULL; } 162 virtual AutocompleteClassifier* GetAutocompleteClassifier() { NOTREACHED(); return NULL; } 163 virtual WebDataService* GetWebDataService(ServiceAccessType sat) { NOTREACHED(); return NULL; } 164 virtual WebDataService* GetWebDataServiceWithoutCreating() { NOTREACHED(); return NULL; } 165 virtual PasswordStore* GetPasswordStore(ServiceAccessType sat) { NOTREACHED(); return NULL; } 166 virtual ProtocolHandlerRegistry* GetProtocolHandlerRegistry() { NOTREACHED(); return NULL; } 167 virtual PrefService* GetOffTheRecordPrefs() { NOTREACHED(); return NULL; } 168 virtual policy::ProfilePolicyConnector* GetPolicyConnector() { NOTREACHED(); return NULL; } 169 virtual TemplateURLModel* GetTemplateURLModel() { NOTREACHED(); return NULL; } 170 virtual TemplateURLFetcher* GetTemplateURLFetcher() { NOTREACHED(); return NULL; } 171 virtual DownloadManager* GetDownloadManager() { NOTREACHED(); return NULL; } 172 virtual fileapi::FileSystemContext* GetFileSystemContext() { NOTREACHED(); return NULL; } 173 virtual void InitPromoResources() { NOTREACHED(); } 174 virtual void InitRegisteredProtocolHandlers() { NOTREACHED(); } 175 virtual void InitThemes() { NOTREACHED(); } 176 virtual void SetTheme(const Extension* extension) { NOTREACHED(); } 177 virtual void SetNativeTheme() { NOTREACHED(); } 178 virtual void ClearTheme() { NOTREACHED(); } 179 virtual const Extension* GetTheme() { NOTREACHED(); return NULL; } 180 virtual BrowserThemeProvider* GetThemeProvider() { NOTREACHED(); return NULL; } 181 virtual bool HasCreatedDownloadManager() const { NOTREACHED(); return false; } 182 virtual net::URLRequestContextGetter* GetRequestContextForMedia() { NOTREACHED(); return NULL; } 183 virtual net::URLRequestContextGetter* GetRequestContextForExtensions() { NOTREACHED(); return NULL; } 184 virtual void RegisterExtensionWithRequestContexts(const Extension* extension) { NOTREACHED(); } 185 virtual void UnregisterExtensionWithRequestContexts(const Extension* extension) { NOTREACHED(); } 186 virtual net::SSLConfigService* GetSSLConfigService() { NOTREACHED(); return NULL; } 187 virtual HostContentSettingsMap* GetHostContentSettingsMap() { NOTREACHED(); return NULL; } 188 virtual HostZoomMap* GetHostZoomMap() { NOTREACHED(); return NULL; } 189 virtual GeolocationContentSettingsMap* GetGeolocationContentSettingsMap() { NOTREACHED(); return NULL; } 190 virtual GeolocationPermissionContext* GetGeolocationPermissionContext() { NOTREACHED(); return NULL; } 191 virtual UserStyleSheetWatcher* GetUserStyleSheetWatcher() { NOTREACHED(); return NULL; } 192 virtual FindBarState* GetFindBarState() { NOTREACHED(); return NULL; } 193 virtual SessionService* GetSessionService() { NOTREACHED(); return NULL; } 194 virtual void ShutdownSessionService() { NOTREACHED(); } 195 virtual bool HasSessionService() const { NOTREACHED(); return false; } 196 virtual bool DidLastSessionExitCleanly() { NOTREACHED(); return true; } 197 virtual BookmarkModel* GetBookmarkModel() { NOTREACHED(); return NULL; } 198 virtual bool IsSameProfile(Profile* profile) { NOTREACHED(); return false; } 199 virtual base::Time GetStartTime() const { NOTREACHED(); return base::Time(); } 200 virtual TabRestoreService* GetTabRestoreService() { NOTREACHED(); return NULL; } 201 virtual void ResetTabRestoreService() { NOTREACHED(); } 202 virtual SpellCheckHost* GetSpellCheckHost() { NOTREACHED(); return NULL; } 203 virtual void ReinitializeSpellCheckHost(bool force) { NOTREACHED(); } 204 virtual WebKitContext* GetWebKitContext() { NOTREACHED(); return NULL; } 205 virtual DesktopNotificationService* GetDesktopNotificationService() { NOTREACHED(); return NULL; } 206 virtual BackgroundContentsService* GetBackgroundContentsService() const { NOTREACHED(); return NULL; } 207 virtual StatusTray* GetStatusTray() { NOTREACHED(); return NULL; } 208 virtual void MarkAsCleanShutdown() { NOTREACHED(); } 209 virtual void InitExtensions(bool extensions_enabled) { NOTREACHED(); } 210 virtual void InitWebResources() { NOTREACHED(); } 211 virtual NTPResourceCache* GetNTPResourceCache() { NOTREACHED(); return NULL; } 212 virtual FilePath last_selected_directory() { NOTREACHED(); return FilePath(""); } 213 virtual void set_last_selected_directory(const FilePath& path) { NOTREACHED(); } 214 virtual ChromeBlobStorageContext* GetBlobStorageContext() { NOTREACHED(); return NULL; } 215 virtual ExtensionInfoMap* GetExtensionInfoMap() { NOTREACHED(); return NULL; } 216 virtual PromoCounter* GetInstantPromoCounter() { NOTREACHED(); return NULL; } 217 virtual ProfileSyncService* GetProfileSyncService() { NOTREACHED(); return NULL; } 218 virtual ProfileSyncService* GetProfileSyncService(const std::string&) { NOTREACHED(); return NULL; } 219 virtual TokenService* GetTokenService() { NOTREACHED(); return NULL; } 220 void InitSyncService() { NOTREACHED(); } 221 virtual CloudPrintProxyService* GetCloudPrintProxyService() { NOTREACHED(); return NULL; } 222 void InitCloudPrintProxyService() { NOTREACHED(); } 223 224 virtual history::TopSites* GetTopSitesWithoutCreating() { NOTREACHED(); return NULL; } 225 virtual BrowserSignin* GetBrowserSignin() { NOTREACHED(); return NULL; } 226 virtual bool HasProfileSyncService() const { NOTREACHED(); return false; } 227 228 virtual policy::ProfilePolicyContext* GetPolicyContext() { NOTREACHED(); return NULL; } 229 virtual ChromeURLDataManager* GetChromeURLDataManager() { NOTREACHED(); return NULL; } 230 virtual PrefProxyConfigTracker* GetProxyConfigTracker() { NOTREACHED(); return NULL; } 231 virtual prerender::PrerenderManager* GetPrerenderManager() { NOTREACHED(); return NULL; } 232 virtual net::URLRequestContextGetter* GetRequestContextForPossibleApp( 233 const Extension* installed_app) { NOTREACHED(); return NULL; } 234 virtual net::URLRequestContextGetter* GetRequestContextForIsolatedApp( 235 const std::string& app_id) { NOTREACHED(); return NULL; } 236 237 private: 238 friend class Profile; 239 240 explicit ProfileImplAndroid(const FilePath& path); 241 242 void CreateWebDataService() { NOTREACHED(); } 243 FilePath GetPrefFilePath() { return path_; } 244 245 void CreatePasswordStore() { NOTREACHED(); } 246 247 void StopCreateSessionServiceTimer() { NOTREACHED(); } 248 249 void EnsureRequestContextCreated() { 250 GetRequestContext(); 251 } 252 253 void EnsureSessionServiceCreated() { 254 GetSessionService(); 255 } 256 257 FilePath path_; 258 scoped_ptr<PrefService> preferences_; 259 scoped_refptr<PersonalDataManager> personal_data_; 260 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; 261 262 DISALLOW_COPY_AND_ASSIGN(ProfileImplAndroid); 263}; 264 265#endif // CHROME_BROWSER_PROFILE_H_ 266