12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#ifndef GOOGLE_APIS_DRIVE_AUTH_SERVICE_INTERFACE_H_ 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define GOOGLE_APIS_DRIVE_AUTH_SERVICE_INTERFACE_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/callback_forward.h" 11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "google_apis/drive/gdata_errorcode.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace google_apis { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AuthServiceObserver; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Called when fetching of access token is complete. 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef base::Callback<void(GDataErrorCode error, 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& access_token)> 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AuthStatusCallback; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This defines an interface for the authentication service which is required 23868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// by authenticated requests (AuthenticatedRequestInterface). 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// All functions must be called on UI thread. 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AuthServiceInterface { 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 279ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch virtual ~AuthServiceInterface() {} 289ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // Adds and removes the observer. 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void AddObserver(AuthServiceObserver* observer) = 0; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void RemoveObserver(AuthServiceObserver* observer) = 0; 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Starts fetching OAuth2 access token from the refresh token. 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |callback| must not be null. 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void StartAuthentication(const AuthStatusCallback& callback) = 0; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // True if an OAuth2 access token is retrieved and believed to be fresh. 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The access token is used to access the Drive server. 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool HasAccessToken() const = 0; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // True if an OAuth2 refresh token is present. Its absence means that user 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // is not properly authenticated. 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The refresh token is used to get the access token. 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool HasRefreshToken() const = 0; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns OAuth2 access token. 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual const std::string& access_token() const = 0; 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Clears OAuth2 access token. 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ClearAccessToken() = 0; 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Clears OAuth2 refresh token. 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ClearRefreshToken() = 0; 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace google_apis 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 58a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // GOOGLE_APIS_DRIVE_AUTH_SERVICE_INTERFACE_H_ 59