jni_oauth_token_getter.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright 2017 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. #ifndef REMOTING_CLIENT_JNI_JNI_OAUTH_TOKEN_GETTER_H_
  5. #define REMOTING_CLIENT_JNI_JNI_OAUTH_TOKEN_GETTER_H_
  6. #include "base/memory/weak_ptr.h"
  7. #include "base/threading/thread_checker.h"
  8. #include "remoting/base/oauth_token_getter.h"
  9. namespace remoting {
  10. // The OAuthTokenGetter implementation on Android using JNI. Please also read
  11. // documentations in JniOAuthTokenGetter.java.
  12. // This class must be used and destroyed on the same thread after it is created.
  13. class JniOAuthTokenGetter : public OAuthTokenGetter {
  14. public:
  15. // This is for generating the Java enum counterpart. Please keep this in sync
  16. // with OAuthTokenGetter::Status.
  17. // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chromoting.jni
  18. // GENERATED_JAVA_CLASS_NAME_OVERRIDE: OAuthTokenStatus
  19. enum JniStatus {
  20. JNI_STATUS_SUCCESS,
  21. JNI_STATUS_NETWORK_ERROR,
  22. JNI_STATUS_AUTH_ERROR,
  23. };
  24. JniOAuthTokenGetter();
  25. JniOAuthTokenGetter(const JniOAuthTokenGetter&) = delete;
  26. JniOAuthTokenGetter& operator=(const JniOAuthTokenGetter&) = delete;
  27. ~JniOAuthTokenGetter() override;
  28. // OAuthTokenGetter overrides.
  29. void CallWithToken(TokenCallback on_access_token) override;
  30. void InvalidateCache() override;
  31. base::WeakPtr<JniOAuthTokenGetter> GetWeakPtr();
  32. private:
  33. THREAD_CHECKER(thread_checker_);
  34. base::WeakPtr<JniOAuthTokenGetter> weak_ptr_;
  35. base::WeakPtrFactory<JniOAuthTokenGetter> weak_factory_{this};
  36. };
  37. } // namespace remoting
  38. #endif // REMOTING_CLIENT_JNI_JNI_OAUTH_TOKEN_GETTER_H_