diff options
Diffstat (limited to 'mojo/edk/embedder/test_embedder.cc')
-rw-r--r-- | mojo/edk/embedder/test_embedder.cc | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/mojo/edk/embedder/test_embedder.cc b/mojo/edk/embedder/test_embedder.cc new file mode 100644 index 0000000000..9658010586 --- /dev/null +++ b/mojo/edk/embedder/test_embedder.cc @@ -0,0 +1,46 @@ +// 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 |