| Index: components/arc/arc_bridge_service.cc
|
| diff --git a/components/arc/arc_bridge_service.cc b/components/arc/arc_bridge_service.cc
|
| index f2c990238fdd42b5ca582e04a5b679191445e2dc..51796de5020a4a8410701f9b1aecf527d3ff5480 100644
|
| --- a/components/arc/arc_bridge_service.cc
|
| +++ b/components/arc/arc_bridge_service.cc
|
| @@ -85,6 +85,8 @@ void ArcBridgeService::AddObserver(Observer* observer) {
|
| observer->OnPolicyInstanceReady();
|
| if (power_instance())
|
| observer->OnPowerInstanceReady();
|
| + if (print_instance())
|
| + observer->OnPrintInstanceReady();
|
| if (process_instance())
|
| observer->OnProcessInstanceReady();
|
| if (storage_manager_instance())
|
| @@ -478,6 +480,30 @@ void ArcBridgeService::ClosePowerChannel() {
|
| FOR_EACH_OBSERVER(Observer, observer_list(), OnPowerInstanceClosed());
|
| }
|
|
|
| +void ArcBridgeService::OnPrintInstanceReady(mojom::PrintInstancePtr print_ptr) {
|
| + DCHECK(CalledOnValidThread());
|
| + temporary_print_ptr_ = std::move(print_ptr);
|
| + temporary_print_ptr_.QueryVersion(base::Bind(
|
| + &ArcBridgeService::OnPrintVersionReady, weak_factory_.GetWeakPtr()));
|
| +}
|
| +
|
| +void ArcBridgeService::OnPrintVersionReady(uint32_t version) {
|
| + DCHECK(CalledOnValidThread());
|
| + print_ptr_ = std::move(temporary_print_ptr_);
|
| + print_ptr_.set_connection_error_handler(base::Bind(
|
| + &ArcBridgeService::ClosePrintChannel, weak_factory_.GetWeakPtr()));
|
| + FOR_EACH_OBSERVER(Observer, observer_list(), OnPrintInstanceReady());
|
| +}
|
| +
|
| +void ArcBridgeService::ClosePrintChannel() {
|
| + DCHECK(CalledOnValidThread());
|
| + if (!print_ptr_)
|
| + return;
|
| +
|
| + print_ptr_.reset();
|
| + FOR_EACH_OBSERVER(Observer, observer_list(), OnPrintInstanceClosed());
|
| +}
|
| +
|
| void ArcBridgeService::OnProcessInstanceReady(
|
| mojom::ProcessInstancePtr process_ptr) {
|
| DCHECK(CalledOnValidThread());
|
| @@ -624,6 +650,7 @@ void ArcBridgeService::CloseAllChannels() {
|
| CloseObbMounterChannel();
|
| ClosePolicyChannel();
|
| ClosePowerChannel();
|
| + ClosePrintChannel();
|
| CloseProcessChannel();
|
| CloseStorageManagerChannel();
|
| CloseVideoChannel();
|
|
|