blob: ce05d539d2c9984f7cf99e45ed9aeec7488740f2 [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef REMOTING_BASE_PASSTHROUGH_OAUTH_TOKEN_GETTER_H_
#define REMOTING_BASE_PASSTHROUGH_OAUTH_TOKEN_GETTER_H_
#include "base/memory/weak_ptr.h"
#include "base/sequence_checker.h"
#include "remoting/base/oauth_token_getter.h"
namespace remoting {
// An OAuthTokenGetter implementation that simply passes |username| and
// |access_token| when CallWithToken() is called.
class PassthroughOAuthTokenGetter : public OAuthTokenGetter {
public:
// Creates a PassthroughOAuthTokenGetter with empty username and access token.
// Caller needs to set them with set_username() and set_access_token().
PassthroughOAuthTokenGetter();
explicit PassthroughOAuthTokenGetter(const OAuthTokenInfo& token_info);
~PassthroughOAuthTokenGetter() override;
// OAuthTokenGetter overrides.
void CallWithToken(OAuthTokenGetter::TokenCallback on_access_token) override;
void InvalidateCache() override;
base::WeakPtr<OAuthTokenGetter> GetWeakPtr() override;
void set_username(const std::string& username) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
token_info_.set_user_email(username);
}
void set_access_token(const std::string& access_token) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
token_info_.set_access_token(access_token);
}
private:
SEQUENCE_CHECKER(sequence_checker_);
OAuthTokenInfo token_info_;
base::WeakPtrFactory<PassthroughOAuthTokenGetter> weak_factory_{this};
};
} // namespace remoting
#endif // REMOTING_BASE_PASSTHROUGH_OAUTH_TOKEN_GETTER_H_