1// Copyright (c) 2012 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 GOOGLE_APIS_DRIVE_AUTH_SERVICE_INTERFACE_H_ 6#define GOOGLE_APIS_DRIVE_AUTH_SERVICE_INTERFACE_H_ 7 8#include <string> 9 10#include "base/callback_forward.h" 11#include "google_apis/drive/gdata_errorcode.h" 12 13namespace google_apis { 14 15class AuthServiceObserver; 16 17// Called when fetching of access token is complete. 18typedef base::Callback<void(GDataErrorCode error, 19 const std::string& access_token)> 20 AuthStatusCallback; 21 22// This defines an interface for the authentication service which is required 23// by authenticated requests (AuthenticatedRequestInterface). 24// All functions must be called on UI thread. 25class AuthServiceInterface { 26 public: 27 virtual ~AuthServiceInterface() {} 28 29 // Adds and removes the observer. 30 virtual void AddObserver(AuthServiceObserver* observer) = 0; 31 virtual void RemoveObserver(AuthServiceObserver* observer) = 0; 32 33 // Starts fetching OAuth2 access token from the refresh token. 34 // |callback| must not be null. 35 virtual void StartAuthentication(const AuthStatusCallback& callback) = 0; 36 37 // True if an OAuth2 access token is retrieved and believed to be fresh. 38 // The access token is used to access the Drive server. 39 virtual bool HasAccessToken() const = 0; 40 41 // True if an OAuth2 refresh token is present. Its absence means that user 42 // is not properly authenticated. 43 // The refresh token is used to get the access token. 44 virtual bool HasRefreshToken() const = 0; 45 46 // Returns OAuth2 access token. 47 virtual const std::string& access_token() const = 0; 48 49 // Clears OAuth2 access token. 50 virtual void ClearAccessToken() = 0; 51 52 // Clears OAuth2 refresh token. 53 virtual void ClearRefreshToken() = 0; 54}; 55 56} // namespace google_apis 57 58#endif // GOOGLE_APIS_DRIVE_AUTH_SERVICE_INTERFACE_H_ 59