diff --git a/internal/platform/implementation/BUILD b/internal/platform/implementation/BUILD index efce46f6..9a091110 100644 --- a/internal/platform/implementation/BUILD +++ b/internal/platform/implementation/BUILD @@ -52,6 +52,7 @@ cc_library( ":signin_attempt", "@com_google_absl//absl/functional:any_invocable", "@com_google_absl//absl/status", + "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings:string_view", ], ) diff --git a/internal/platform/implementation/account_manager.h b/internal/platform/implementation/account_manager.h index bdfed01c..3ab62731 100644 --- a/internal/platform/implementation/account_manager.h +++ b/internal/platform/implementation/account_manager.h @@ -22,6 +22,7 @@ #include "absl/functional/any_invocable.h" #include "absl/status/status.h" +#include "absl/status/statusor.h" #include "absl/strings/string_view.h" #include "internal/platform/implementation/account_info.h" #include "internal/platform/implementation/signin_attempt.h" @@ -64,14 +65,11 @@ class AccountManager { absl::AnyInvocable logout_callback) = 0; // Gets access token for the active account. - // |success_callback| is called when an access token is fetched successfully. - // |failure_callback| is called when fetching an access token failed. + // |callback| is called with the access token or error status. // - // Returns false if account_id is empty or callback is null. + // Returns false if callback is null. virtual bool GetAccessToken( - absl::string_view account_id, - absl::AnyInvocable success_callback, - absl::AnyInvocable failure_callback) = 0; + absl::AnyInvocable)> callback) = 0; // Returns a pair containing the client id and client secret used in the most // recent Login request. diff --git a/internal/test/BUILD b/internal/test/BUILD index 8db25b33..1f81b377 100644 --- a/internal/test/BUILD +++ b/internal/test/BUILD @@ -30,6 +30,7 @@ cc_library( "//internal/platform/implementation:signin_attempt", "@com_google_absl//absl/functional:any_invocable", "@com_google_absl//absl/status", + "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings:string_view", "@com_google_googletest//:gtest_for_library_testonly", ], diff --git a/internal/test/fake_account_manager.cc b/internal/test/fake_account_manager.cc index fe309b8c..c6e919f8 100644 --- a/internal/test/fake_account_manager.cc +++ b/internal/test/fake_account_manager.cc @@ -21,6 +21,7 @@ #include "absl/functional/any_invocable.h" #include "absl/status/status.h" +#include "absl/status/statusor.h" #include "absl/strings/string_view.h" #include "internal/platform/implementation/account_manager.h" #include "internal/platform/implementation/signin_attempt.h" @@ -52,14 +53,15 @@ void FakeAccountManager::Logout( } bool FakeAccountManager::GetAccessToken( - absl::string_view account_id, - absl::AnyInvocable success_callback, - absl::AnyInvocable failure_callback) { - if (!account_.has_value()) { - failure_callback(absl::UnavailableError("No current user.")); + absl::AnyInvocable)> callback) { + if (!callback) { return false; } - success_callback(account_id); + if (!account_.has_value()) { + callback(absl::UnavailableError("No current user.")); + return true; + } + callback("FAKE_ACCESS_TOKEN"); return true; } diff --git a/internal/test/fake_account_manager.h b/internal/test/fake_account_manager.h index a77ab9d2..346663cf 100644 --- a/internal/test/fake_account_manager.h +++ b/internal/test/fake_account_manager.h @@ -22,6 +22,7 @@ #include "absl/functional/any_invocable.h" #include "absl/status/status.h" +#include "absl/status/statusor.h" #include "absl/strings/string_view.h" #include "internal/base/observer_list.h" #include "internal/platform/implementation/account_manager.h" @@ -44,9 +45,7 @@ class FakeAccountManager : public AccountManager { void Logout(absl::AnyInvocable logout_callback) override; bool GetAccessToken( - absl::string_view account_id, - absl::AnyInvocable success_callback, - absl::AnyInvocable failure_callback) override; + absl::AnyInvocable)> callback) override; std::pair GetOAuthClientCredential() override; void AddObserver(Observer* observer) override; void RemoveObserver(Observer* observer) override; diff --git a/internal/test/mock_account_manager.h b/internal/test/mock_account_manager.h index 0cbd72fb..778aa7aa 100644 --- a/internal/test/mock_account_manager.h +++ b/internal/test/mock_account_manager.h @@ -23,6 +23,7 @@ #include "gmock/gmock.h" #include "absl/functional/any_invocable.h" #include "absl/status/status.h" +#include "absl/status/statusor.h" #include "absl/strings/string_view.h" #include "internal/platform/implementation/account_manager.h" #include "internal/platform/implementation/signin_attempt.h" @@ -39,9 +40,7 @@ class MockAccountManager : public AccountManager { (absl::AnyInvocable logout_callback), (override)); MOCK_METHOD(bool, GetAccessToken, - (absl::string_view account_id, - absl::AnyInvocable success_callback, - absl::AnyInvocable failure_callback), + (absl::AnyInvocable)> callback), (override)); MOCK_METHOD((std::pair), GetOAuthClientCredential, (), (override));