| Index: components/arc/arc_bridge_service.cc
|
| diff --git a/components/arc/arc_bridge_service.cc b/components/arc/arc_bridge_service.cc
|
| index 00516d1b270218e76d9e469dae14cc26060f0005..e5dc41842ec067d146e51817446a4f7c0f925a3f 100644
|
| --- a/components/arc/arc_bridge_service.cc
|
| +++ b/components/arc/arc_bridge_service.cc
|
| @@ -72,6 +72,8 @@ void ArcBridgeService::AddObserver(Observer* observer) {
|
| observer->OnNetInstanceReady();
|
| if (notifications_instance())
|
| observer->OnNotificationsInstanceReady();
|
| + if (policy_instance())
|
| + observer->OnPolicyInstanceReady();
|
| if (power_instance())
|
| observer->OnPowerInstanceReady();
|
| if (process_instance())
|
| @@ -283,6 +285,30 @@ void ArcBridgeService::CloseNotificationsChannel() {
|
| FOR_EACH_OBSERVER(Observer, observer_list(), OnNotificationsInstanceClosed());
|
| }
|
|
|
| +void ArcBridgeService::OnPolicyInstanceReady(PolicyInstancePtr policy_ptr) {
|
| + DCHECK(CalledOnValidThread());
|
| + temporary_policy_ptr_ = std::move(policy_ptr);
|
| + temporary_policy_ptr_.QueryVersion(base::Bind(
|
| + &ArcBridgeService::OnPolicyVersionReady, weak_factory_.GetWeakPtr()));
|
| +}
|
| +
|
| +void ArcBridgeService::OnPolicyVersionReady(int32_t version) {
|
| + DCHECK(CalledOnValidThread());
|
| + policy_ptr_ = std::move(temporary_policy_ptr_);
|
| + policy_ptr_.set_connection_error_handler(base::Bind(
|
| + &ArcBridgeService::ClosePolicyChannel, weak_factory_.GetWeakPtr()));
|
| + FOR_EACH_OBSERVER(Observer, observer_list(), OnPolicyInstanceReady());
|
| +}
|
| +
|
| +void ArcBridgeService::ClosePolicyChannel() {
|
| + DCHECK(CalledOnValidThread());
|
| + if (!policy_ptr_)
|
| + return;
|
| +
|
| + policy_ptr_.reset();
|
| + FOR_EACH_OBSERVER(Observer, observer_list(), OnPolicyInstanceClosed());
|
| +}
|
| +
|
| void ArcBridgeService::OnPowerInstanceReady(PowerInstancePtr power_ptr) {
|
| DCHECK(CalledOnValidThread());
|
| temporary_power_ptr_ = std::move(power_ptr);
|
| @@ -385,6 +411,7 @@ void ArcBridgeService::CloseAllChannels() {
|
| CloseIntentHelperChannel();
|
| CloseNetChannel();
|
| CloseNotificationsChannel();
|
| + ClosePolicyChannel();
|
| ClosePowerChannel();
|
| CloseProcessChannel();
|
| CloseVideoChannel();
|
|
|