Commit 52f9f177 authored by Kushagra Sinha's avatar Kushagra Sinha Committed by Commit Bot

Lacros: Implement stub AccountManagerFacadeLacros::IsInitialized

Bug: 1117478
Change-Id: I018277df50d1b786d5b72ab397e274d224ad4960
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2461115
Commit-Queue: Kush Sinha <sinhak@chromium.org>
Reviewed-by: default avatarJames Cook <jamescook@chromium.org>
Cr-Commit-Position: refs/heads/master@{#815606}
parent 5d77f720
......@@ -4,11 +4,66 @@
#include "chrome/browser/lacros/account_manager_facade_lacros.h"
AccountManagerFacadeLacros::AccountManagerFacadeLacros() = default;
#include <memory>
#include <utility>
#include "base/bind.h"
#include "chromeos/lacros/lacros_chrome_service_impl.h"
namespace {
// Interface versions in //chromeos/crosapi/mojom/account_manager.mojom:
// MinVersion of crosapi::mojom::AccountManager::AddObserver
constexpr uint32_t kMinVersionWithObserver = 1;
} // namespace
AccountManagerFacadeLacros::AccountManagerFacadeLacros()
: lacros_chrome_service_impl_(chromeos::LacrosChromeServiceImpl::Get()) {
if (!lacros_chrome_service_impl_->IsAccountManagerAvailable())
return;
lacros_chrome_service_impl_->account_manager_remote().QueryVersion(
base::BindOnce(&AccountManagerFacadeLacros::OnVersionCheck,
weak_factory_.GetWeakPtr()));
}
AccountManagerFacadeLacros::~AccountManagerFacadeLacros() = default;
bool AccountManagerFacadeLacros::IsInitialized() {
// TODO(sinhak): Implement stub.
return false;
return is_initialized_;
}
void AccountManagerFacadeLacros::OnVersionCheck(uint32_t version) {
if (version < kMinVersionWithObserver)
return;
lacros_chrome_service_impl_->account_manager_remote()->AddObserver(
base::BindOnce(&AccountManagerFacadeLacros::OnReceiverReceived,
weak_factory_.GetWeakPtr()));
}
void AccountManagerFacadeLacros::OnReceiverReceived(
mojo::PendingReceiver<AccountManagerObserver> receiver) {
receiver_ =
std::make_unique<mojo::Receiver<crosapi::mojom::AccountManagerObserver>>(
this, std::move(receiver));
// At this point (|receiver_| exists), we are subscribed to Account Manager.
lacros_chrome_service_impl_->account_manager_remote()->IsInitialized(
base::BindOnce(&AccountManagerFacadeLacros::OnInitialized,
weak_factory_.GetWeakPtr()));
}
void AccountManagerFacadeLacros::OnInitialized(bool is_initialized) {
if (is_initialized)
is_initialized_ = true;
// else: We will receive a notification in |OnTokenUpserted|.
}
void AccountManagerFacadeLacros::OnTokenUpserted(
crosapi::mojom::AccountPtr account) {
is_initialized_ = true;
}
void AccountManagerFacadeLacros::OnAccountRemoved(
crosapi::mojom::AccountPtr account) {}
......@@ -5,11 +5,22 @@
#ifndef CHROME_BROWSER_LACROS_ACCOUNT_MANAGER_FACADE_LACROS_H_
#define CHROME_BROWSER_LACROS_ACCOUNT_MANAGER_FACADE_LACROS_H_
#include <memory>
#include "base/memory/weak_ptr.h"
#include "chromeos/components/account_manager/account_manager_facade.h"
#include "chromeos/crosapi/mojom/account_manager.mojom.h"
#include "mojo/public/cpp/bindings/receiver.h"
namespace chromeos {
class LacrosChromeServiceImpl;
} // namespace chromeos
// Lacros specific implementation of |AccountManagerFacade| that talks to
// |chromeos::AccountManager|, residing in ash-chrome, over Mojo.
class AccountManagerFacadeLacros : public AccountManagerFacade {
class AccountManagerFacadeLacros
: public AccountManagerFacade,
public crosapi::mojom::AccountManagerObserver {
public:
AccountManagerFacadeLacros();
AccountManagerFacadeLacros(const AccountManagerFacadeLacros&) = delete;
......@@ -19,6 +30,23 @@ class AccountManagerFacadeLacros : public AccountManagerFacade {
// AccountManagerFacade overrides:
bool IsInitialized() override;
// crosapi::mojom::AccountManagerObserver overrides:
void OnTokenUpserted(crosapi::mojom::AccountPtr account) override;
void OnAccountRemoved(crosapi::mojom::AccountPtr account) override;
private:
void OnVersionCheck(uint32_t version);
void OnReceiverReceived(
mojo::PendingReceiver<AccountManagerObserver> receiver);
void OnInitialized(bool is_initialized);
bool is_initialized_ = false;
chromeos::LacrosChromeServiceImpl* const lacros_chrome_service_impl_;
std::unique_ptr<mojo::Receiver<crosapi::mojom::AccountManagerObserver>>
receiver_;
base::WeakPtrFactory<AccountManagerFacadeLacros> weak_factory_{this};
};
#endif // CHROME_BROWSER_LACROS_ACCOUNT_MANAGER_FACADE_LACROS_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment