// Copyright 2014 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 "mojo/edk/embedder/test_embedder.h" #include <memory> #include "base/logging.h" #include "mojo/edk/embedder/embedder.h" #include "mojo/edk/embedder/embedder_internal.h" #include "mojo/edk/system/core.h" #include "mojo/edk/system/handle_table.h" namespace mojo { namespace edk { namespace internal { bool ShutdownCheckNoLeaks(Core* core) { std::vector<MojoHandle> leaked_handles; core->GetActiveHandlesForTest(&leaked_handles); if (leaked_handles.empty()) return true; for (auto handle : leaked_handles) LOG(ERROR) << "Mojo embedder shutdown: Leaking handle " << handle; return false; } } // namespace internal namespace test { bool Shutdown() { CHECK(internal::g_core); bool rv = internal::ShutdownCheckNoLeaks(internal::g_core); delete internal::g_core; internal::g_core = nullptr; return rv; } } // namespace test } // namespace edk } // namespace mojo