Home | History | Annotate | Download | only in autofill
      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 
     42 namespace base {
     43 class Time;
     44 }
     45 
     46 namespace history {
     47 class TopSites;
     48 }
     49 
     50 namespace fileapi {
     51 class FileSystemContext;
     52 }
     53 
     54 namespace net {
     55 class TransportSecurityState;
     56 class SSLConfigService;
     57 }
     58 
     59 namespace policy {
     60 class ProfilePolicyContext;
     61 }
     62 
     63 namespace prerender {
     64 class PrerenderManager;
     65 }
     66 
     67 namespace webkit_database {
     68 class DatabaseTracker;
     69 }
     70 
     71 class AutocompleteClassifier;
     72 class BackgroundContentsService;
     73 class BookmarkModel;
     74 class BrowserSignin;
     75 class BrowserThemeProvider;
     76 class ChromeURLRequestContextGetter;
     77 class DesktopNotificationService;
     78 class DownloadManager;
     79 class Extension;
     80 class ExtensionDevToolsManager;
     81 class ExtensionIOEventRouter;
     82 class ExtensionProcessManager;
     83 class ExtensionMessageService;
     84 class ExtensionsService;
     85 class FaviconService;
     86 class FindBarState;
     87 class GeolocationContentSettingsMap;
     88 class GeolocationPermissionContext;
     89 class HistoryService;
     90 class HostContentSettingsMap;
     91 class HostZoomMap;
     92 class NavigationController;
     93 class NTPResourceCache;
     94 class PasswordStore;
     95 class PersonalDataManager;
     96 class PinnedTabService;
     97 class PrefProxyConfigTracker;
     98 class PromoCounter;
     99 class ProfileSyncService;
    100 class ProfileSyncFactory;
    101 class SessionService;
    102 class SpellCheckHost;
    103 class SSLConfigServiceManager;
    104 class SSLHostState;
    105 class TransportSecurityPersister;
    106 class SQLitePersistentCookieStore;
    107 class TabRestoreService;
    108 class TemplateURLFetcher;
    109 class TemplateURLModel;
    110 class ThemeProvider;
    111 class TokenService;
    112 class URLRequestContextGetter;
    113 class UserScriptMaster;
    114 class UserStyleSheetWatcher;
    115 class VisitedLinkMaster;
    116 class VisitedLinkEventListener;
    117 class WebDataService;
    118 class WebKitContext;
    119 class WebResourceService;
    120 class CloudPrintProxyService;
    121 
    122 typedef intptr_t ProfileId;
    123 
    124 // The android profile implementation.
    125 class 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