106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
206741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// Use of this source code is governed by a BSD-style license that can be
306741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// found in the LICENSE file.
406741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
506741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch#ifndef CHROME_COMMON_NET_GAIA_GAIA_AUTH_CONSUMER_H_
606741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch#define CHROME_COMMON_NET_GAIA_GAIA_AUTH_CONSUMER_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
806741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
906741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch#include <string>
1006741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass GoogleServiceAuthError;
123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1306741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// An interface that defines the callbacks for objects that
144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// GaiaAuthFetcher can return data to.
1506741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdochclass GaiaAuthConsumer {
1606741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch public:
1706741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch  struct ClientLoginResult {
1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    ClientLoginResult();
1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    ClientLoginResult(const std::string& new_sid,
2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                      const std::string& new_lsid,
2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                      const std::string& new_token,
2272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                      const std::string& new_data);
2372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    ~ClientLoginResult();
2406741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
2572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    bool operator==(const ClientLoginResult &b) const;
2606741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
2706741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch    std::string sid;
2806741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch    std::string lsid;
2906741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch    std::string token;
3006741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch    // TODO(chron): Remove the data field later. Don't use it if possible.
3106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch    std::string data;  // Full contents of ClientLogin return.
32201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch    bool two_factor;  // set to true if there was a TWO_FACTOR "failure".
3306741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch  };
3406741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
3506741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch  virtual ~GaiaAuthConsumer() {}
3606741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
3706741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch  virtual void OnClientLoginSuccess(const ClientLoginResult& result) {}
383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  virtual void OnClientLoginFailure(const GoogleServiceAuthError& error) {}
3906741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
4006741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch  virtual void OnIssueAuthTokenSuccess(const std::string& service,
4106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch                                       const std::string& auth_token) {}
4206741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch  virtual void OnIssueAuthTokenFailure(const std::string& service,
433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                       const GoogleServiceAuthError& error) {}
443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  virtual void OnGetUserInfoSuccess(const std::string& key,
463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                    const std::string& value) {}
473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  virtual void OnGetUserInfoKeyNotFound(const std::string& key) {}
483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  virtual void OnGetUserInfoFailure(const GoogleServiceAuthError& error) {}
4906741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch};
5006741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
5106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch#endif  // CHROME_COMMON_NET_GAIA_GAIA_AUTH_CONSUMER_H_
52