// Copyright 2021 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/fuchsia/test_component_controller.h" #include "base/fuchsia/fuchsia_logging.h" #include "base/run_loop.h" namespace base { TestComponentController::TestComponentController() = default; TestComponentController::TestComponentController(TestComponentController&&) = default; TestComponentController& TestComponentController::operator=( TestComponentController&&) = default; TestComponentController::~TestComponentController() { KillAndRunUntilDisconnect(); } void TestComponentController::KillAndRunUntilDisconnect() { if (!ptr_) return; base::RunLoop loop; ptr_.set_error_handler([&loop](zx_status_t status) { loop.Quit(); ZX_CHECK(status == ZX_ERR_PEER_CLOSED, status); }); ptr_->Kill(); loop.Run(); CHECK(!ptr_); } } // namespace base