#define COMPONENTS_SIGNIN_CORE_BROWSER_SIGNIN_CLIENT_H_
#include "base/callback.h"
+#include "base/callback_list.h"
+#include "base/time/time.h"
#include "components/keyed_service/core/keyed_service.h"
#include "components/signin/core/browser/webdata/token_web_data.h"
typedef base::Callback<void(const net::CanonicalCookie* cookie)>
CookieChangedCallback;
+ typedef base::CallbackList<void(const net::CanonicalCookie* cookie)>
+ CookieChangedCallbackList;
+
virtual ~SigninClient() {}
// Gets the preferences associated with the client.
// Returns whether it is possible to revoke credentials.
virtual bool CanRevokeCredentials() = 0;
+ // Returns device id that is scoped to single signin. This device id will be
+ // regenerated if user signs out and signs back in.
+ // When refresh token is requested for this user it will be annotated with
+ // this device id.
+ virtual std::string GetSigninScopedDeviceId() = 0;
+
+ // Clears signin scoped device id. This happens when user signs out or about
+ // to sign in.
+ virtual void ClearSigninScopedDeviceId() = 0;
+
// Returns the URL request context information associated with the client.
virtual net::URLRequestContextGetter* GetURLRequestContext() = 0;
// Signin component is being used.
virtual std::string GetProductVersion() = 0;
- // Sets the callback that should be called when a cookie changes. The
- // callback will be called only if it is not empty.
+ // Adds or removes a callback that should be called when a cookie changes.
// TODO(blundell): Eliminate this interface in favor of having core signin
// code observe cookie changes once //chrome/browser/net has been
// componentized.
- virtual void SetCookieChangedCallback(
- const CookieChangedCallback& callback) = 0;
+ virtual scoped_ptr<CookieChangedCallbackList::Subscription>
+ AddCookieChangedCallback(const CookieChangedCallback& callback) = 0;
// Called when Google signin has succeeded.
virtual void GoogleSigninSucceeded(const std::string& username,
virtual bool IsSigninProcess(int host_id) const = 0;
virtual bool HasSigninProcess() const = 0;
+ virtual bool IsFirstRun() const = 0;
+ virtual base::Time GetInstallDate() = 0;
#if defined(OS_IOS)
// TODO(msarda): http://crbug.com/358544 Remove this iOS specific code from