mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-16 15:36:12 -04:00
Support 3P oauth flow.
PiperOrigin-RevId: 663964316
This commit is contained in:
committed by
Copybara-Service
parent
f1a1c39177
commit
a81ce57879
@@ -55,7 +55,7 @@ class AccountManager {
|
||||
// Gets current active account. If no login user, return std::nullopt.
|
||||
virtual std::optional<Account> GetCurrentAccount() = 0;
|
||||
|
||||
// Initializes the login process for a Google account.
|
||||
// Initializes the login process for a Google account from 1P client.
|
||||
// |login_success_callback| is called when the login succeeded. Account
|
||||
// information is passed to callback.
|
||||
// |login_failure_callback| is called when the login fails.
|
||||
@@ -63,6 +63,17 @@ class AccountManager {
|
||||
absl::AnyInvocable<void(Account)> login_success_callback,
|
||||
absl::AnyInvocable<void(absl::Status)> login_failure_callback) = 0;
|
||||
|
||||
// Initializes the login process for a Google account from an oauth client.
|
||||
// |client_id| GCP client_id of the client
|
||||
// |client_secret| GCP client_secret of the client
|
||||
// |login_success_callback| is called when the login succeeded. Account
|
||||
// information is passed to callback.
|
||||
// |login_failure_callback| is called when the login fails.
|
||||
virtual void Login(
|
||||
absl::string_view client_id, absl::string_view client_secret,
|
||||
absl::AnyInvocable<void(Account)> login_success_callback,
|
||||
absl::AnyInvocable<void(absl::Status)> login_failure_callback) = 0;
|
||||
|
||||
// Logs out current active account. |logout_callback| is called when logout is
|
||||
// completed.
|
||||
virtual void Logout(
|
||||
|
||||
@@ -46,6 +46,22 @@ void FakeAccountManager::Login(
|
||||
login_failure_callback(absl::InternalError("No account."));
|
||||
}
|
||||
|
||||
void FakeAccountManager::Login(
|
||||
absl::string_view client_id, absl::string_view client_secret,
|
||||
absl::AnyInvocable<void(Account)> login_success_callback,
|
||||
absl::AnyInvocable<void(absl::Status)> login_failure_callback) {
|
||||
if (account_.has_value()) {
|
||||
UpdateCurrentUser(account_->id);
|
||||
NotifyLogin(account_->id);
|
||||
// Invoke callback after all operations have been performed since test cases
|
||||
// may rely on the callback for synchronization.
|
||||
login_success_callback(*account_);
|
||||
return;
|
||||
}
|
||||
|
||||
login_failure_callback(absl::InternalError("No account."));
|
||||
}
|
||||
|
||||
void FakeAccountManager::Logout(
|
||||
absl::AnyInvocable<void(absl::Status)> logout_callback) {
|
||||
if (is_logout_success_) {
|
||||
|
||||
@@ -39,6 +39,11 @@ class FakeAccountManager : public AccountManager {
|
||||
absl::AnyInvocable<void(Account)> login_success_callback,
|
||||
absl::AnyInvocable<void(absl::Status)> login_failure_callback) override;
|
||||
|
||||
void Login(
|
||||
absl::string_view client_id, absl::string_view client_secret,
|
||||
absl::AnyInvocable<void(Account)> login_success_callback,
|
||||
absl::AnyInvocable<void(absl::Status)> login_failure_callback) override;
|
||||
|
||||
void Logout(absl::AnyInvocable<void(absl::Status)> logout_callback) override;
|
||||
|
||||
bool GetAccessToken(
|
||||
|
||||
@@ -32,6 +32,11 @@ class MockAccountManager : public AccountManager {
|
||||
(absl::AnyInvocable<void(Account)> login_success_callback,
|
||||
absl::AnyInvocable<void(absl::Status)> login_failure_callback),
|
||||
(override));
|
||||
MOCK_METHOD(void, Login,
|
||||
(absl::string_view client_id, absl::string_view client_secret,
|
||||
absl::AnyInvocable<void(Account)> login_success_callback,
|
||||
absl::AnyInvocable<void(absl::Status)> login_failure_callback),
|
||||
(override));
|
||||
MOCK_METHOD(void, Logout,
|
||||
(absl::AnyInvocable<void(absl::Status)> logout_callback),
|
||||
(override));
|
||||
|
||||
Reference in New Issue
Block a user