blob: f0df4993ca89b89434f570e9fa8e3adc7fe9738a [file] [log] [blame]
// Copyright 2017 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_CLIENT_JNI_JNI_OAUTH_TOKEN_GETTER_H_
#define REMOTING_CLIENT_JNI_JNI_OAUTH_TOKEN_GETTER_H_
#include "base/memory/weak_ptr.h"
#include "base/threading/thread_checker.h"
#include "remoting/base/oauth_token_getter.h"
namespace remoting {
// The OAuthTokenGetter implementation on Android using JNI. Please also read
// documentations in JniOAuthTokenGetter.java.
// This class must be used and destroyed on the same thread after it is created.
class JniOAuthTokenGetter : public OAuthTokenGetter {
public:
// This is for generating the Java enum counterpart. Please keep this in sync
// with OAuthTokenGetter::Status.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chromoting.jni
// GENERATED_JAVA_CLASS_NAME_OVERRIDE: OAuthTokenStatus
enum JniStatus {
JNI_STATUS_SUCCESS,
JNI_STATUS_NETWORK_ERROR,
JNI_STATUS_AUTH_ERROR,
};
JniOAuthTokenGetter();
JniOAuthTokenGetter(const JniOAuthTokenGetter&) = delete;
JniOAuthTokenGetter& operator=(const JniOAuthTokenGetter&) = delete;
~JniOAuthTokenGetter() override;
// OAuthTokenGetter overrides.
void CallWithToken(TokenCallback on_access_token) override;
void InvalidateCache() override;
base::WeakPtr<JniOAuthTokenGetter> GetWeakPtr();
private:
THREAD_CHECKER(thread_checker_);
base::WeakPtr<JniOAuthTokenGetter> weak_ptr_;
base::WeakPtrFactory<JniOAuthTokenGetter> weak_factory_{this};
};
} // namespace remoting
#endif // REMOTING_CLIENT_JNI_JNI_OAUTH_TOKEN_GETTER_H_