| Index: components/arc/arc_bridge_service.cc
|
| diff --git a/components/arc/arc_bridge_service.cc b/components/arc/arc_bridge_service.cc
|
| index 4f59b16dd674c4206d21af656213b968a88706e9..c469fbf4c1099d16fda078d1f8173b0462d18ffc 100644
|
| --- a/components/arc/arc_bridge_service.cc
|
| +++ b/components/arc/arc_bridge_service.cc
|
| @@ -88,6 +88,8 @@ void ArcBridgeService::AddObserver(Observer* observer) {
|
| observer->OnVideoInstanceReady();
|
| if (window_manager_instance())
|
| observer->OnWindowManagerInstanceReady();
|
| + if (obb_mounter_instance())
|
| + observer->OnObbMounterInstanceReady();
|
| }
|
|
|
| void ArcBridgeService::RemoveObserver(Observer* observer) {
|
| @@ -494,6 +496,32 @@ void ArcBridgeService::CloseWindowManagerChannel() {
|
| FOR_EACH_OBSERVER(Observer, observer_list(), OnWindowManagerInstanceClosed());
|
| }
|
|
|
| +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::SetState(State state) {
|
| DCHECK(CalledOnValidThread());
|
| // DCHECK on enum classes not supported.
|
| @@ -533,6 +561,7 @@ void ArcBridgeService::CloseAllChannels() {
|
| CloseProcessChannel();
|
| CloseVideoChannel();
|
| CloseWindowManagerChannel();
|
| + CloseObbMounterChannel();
|
| }
|
|
|
| } // namespace arc
|
|
|