| // 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 |