Home | History | Annotate | Download | only in browser
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef COMPONENTS_SIGNIN_CORE_BROWSER_SIGNIN_CLIENT_H_
      6 #define COMPONENTS_SIGNIN_CORE_BROWSER_SIGNIN_CLIENT_H_
      7 
      8 #include "base/callback.h"
      9 #include "base/callback_list.h"
     10 #include "base/time/time.h"
     11 #include "components/keyed_service/core/keyed_service.h"
     12 #include "components/signin/core/browser/webdata/token_web_data.h"
     13 
     14 class PrefService;
     15 class SigninManagerBase;
     16 class TokenWebData;
     17 
     18 namespace net {
     19 class CanonicalCookie;
     20 class URLRequestContextGetter;
     21 }
     22 
     23 #if defined(OS_IOS)
     24 namespace ios {
     25 // TODO(msarda): http://crbug.com/358544 Remove this iOS specific code from the
     26 // core SigninClient.
     27 class ProfileOAuth2TokenServiceIOSProvider;
     28 }
     29 #endif
     30 
     31 // An interface that needs to be supplied to the Signin component by its
     32 // embedder.
     33 class SigninClient : public KeyedService {
     34  public:
     35   typedef base::Callback<void(const net::CanonicalCookie* cookie)>
     36       CookieChangedCallback;
     37 
     38   typedef base::CallbackList<void(const net::CanonicalCookie* cookie)>
     39       CookieChangedCallbackList;
     40 
     41   virtual ~SigninClient() {}
     42 
     43   // Gets the preferences associated with the client.
     44   virtual PrefService* GetPrefs() = 0;
     45 
     46   // Gets the TokenWebData instance associated with the client.
     47   virtual scoped_refptr<TokenWebData> GetDatabase() = 0;
     48 
     49   // Returns whether it is possible to revoke credentials.
     50   virtual bool CanRevokeCredentials() = 0;
     51 
     52   // Returns device id that is scoped to single signin. This device id will be
     53   // regenerated if user signs out and signs back in.
     54   // When refresh token is requested for this user it will be annotated with
     55   // this device id.
     56   virtual std::string GetSigninScopedDeviceId() = 0;
     57 
     58   // Clears signin scoped device id. This happens when user signs out or about
     59   // to sign in.
     60   virtual void ClearSigninScopedDeviceId() = 0;
     61 
     62   // Returns the URL request context information associated with the client.
     63   virtual net::URLRequestContextGetter* GetURLRequestContext() = 0;
     64 
     65   // Returns whether the user's credentials should be merged into the cookie
     66   // jar on signin completion.
     67   virtual bool ShouldMergeSigninCredentialsIntoCookieJar() = 0;
     68 
     69   // Returns a string containing the version info of the product in which the
     70   // Signin component is being used.
     71   virtual std::string GetProductVersion() = 0;
     72 
     73   // Adds or removes a callback that should be called when a cookie changes.
     74   // TODO(blundell): Eliminate this interface in favor of having core signin
     75   // code observe cookie changes once //chrome/browser/net has been
     76   // componentized.
     77   virtual scoped_ptr<CookieChangedCallbackList::Subscription>
     78       AddCookieChangedCallback(const CookieChangedCallback& callback) = 0;
     79 
     80   // Called when Google signin has succeeded.
     81   virtual void GoogleSigninSucceeded(const std::string& account_id,
     82                                      const std::string& username,
     83                                      const std::string& password) {}
     84 
     85   virtual void SetSigninProcess(int host_id) = 0;
     86   virtual void ClearSigninProcess() = 0;
     87   virtual bool IsSigninProcess(int host_id) const = 0;
     88   virtual bool HasSigninProcess() const = 0;
     89 
     90   virtual bool IsFirstRun() const = 0;
     91   virtual base::Time GetInstallDate() = 0;
     92 
     93 #if defined(OS_IOS)
     94   // TODO(msarda): http://crbug.com/358544 Remove this iOS specific code from
     95   // the core SigninClient.
     96   virtual ios::ProfileOAuth2TokenServiceIOSProvider* GetIOSProvider() = 0;
     97 #endif
     98 };
     99 
    100 #endif  // COMPONENTS_SIGNIN_CORE_BROWSER_SIGNIN_CLIENT_H_
    101