| Index: components/arc/arc_bridge_service.cc
|
| diff --git a/components/arc/arc_bridge_service.cc b/components/arc/arc_bridge_service.cc
|
| index 48145c885adb7e86b5a11326dab6200f022181cb..40a8573274ea552a52876863010ae489346db545 100644
|
| --- a/components/arc/arc_bridge_service.cc
|
| +++ b/components/arc/arc_bridge_service.cc
|
| @@ -78,6 +78,8 @@ void ArcBridgeService::AddObserver(Observer* observer) {
|
| observer->OnNetInstanceReady();
|
| if (notifications_instance())
|
| observer->OnNotificationsInstanceReady();
|
| + if (obb_mounter_instance())
|
| + observer->OnObbMounterInstanceReady();
|
| if (policy_instance())
|
| observer->OnPolicyInstanceReady();
|
| if (power_instance())
|
| @@ -372,6 +374,32 @@ void ArcBridgeService::CloseNotificationsChannel() {
|
| FOR_EACH_OBSERVER(Observer, observer_list(), OnNotificationsInstanceClosed());
|
| }
|
|
|
| +void ArcBridgeService::OnObbMounterInstanceReady(
|
| + mojom::ObbMounterInstancePtr obb_mounter_ptr) {
|
| + DCHECK(CalledOnValidThread());
|
| + temporary_obb_mounter_ptr_ = std::move(obb_mounter_ptr);
|
| + temporary_obb_mounter_ptr_.QueryVersion(base::Bind(
|
| + &ArcBridgeService::OnObbMounterVersionReady,
|
| + weak_factory_.GetWeakPtr()));
|
| +}
|
| +
|
| +void ArcBridgeService::OnObbMounterVersionReady(int32_t version) {
|
| + DCHECK(CalledOnValidThread());
|
| + obb_mounter_ptr_ = std::move(temporary_obb_mounter_ptr_);
|
| + obb_mounter_ptr_.set_connection_error_handler(base::Bind(
|
| + &ArcBridgeService::CloseObbMounterChannel,
|
| + weak_factory_.GetWeakPtr()));
|
| + FOR_EACH_OBSERVER(Observer, observer_list(), OnObbMounterInstanceReady());
|
| +}
|
| +
|
| +void ArcBridgeService::CloseObbMounterChannel() {
|
| + if (!obb_mounter_ptr_)
|
| + return;
|
| +
|
| + obb_mounter_ptr_.reset();
|
| + FOR_EACH_OBSERVER(Observer, observer_list(), OnObbMounterInstanceClosed());
|
| +}
|
| +
|
| void ArcBridgeService::OnPolicyInstanceReady(
|
| mojom::PolicyInstancePtr policy_ptr) {
|
| DCHECK(CalledOnValidThread());
|
| @@ -559,6 +587,7 @@ void ArcBridgeService::CloseAllChannels() {
|
| CloseMetricsChannel();
|
| CloseNetChannel();
|
| CloseNotificationsChannel();
|
| + CloseObbMounterChannel();
|
| ClosePolicyChannel();
|
| ClosePowerChannel();
|
| CloseProcessChannel();
|
|
|