1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "mojo/edk/embedder/test_embedder.h"
6 
7 #include <memory>
8 
9 #include "base/logging.h"
10 #include "mojo/edk/embedder/embedder.h"
11 #include "mojo/edk/embedder/embedder_internal.h"
12 #include "mojo/edk/system/core.h"
13 #include "mojo/edk/system/handle_table.h"
14 
15 namespace mojo {
16 
17 namespace edk {
18 namespace internal {
19 
ShutdownCheckNoLeaks(Core * core)20 bool ShutdownCheckNoLeaks(Core* core) {
21   std::vector<MojoHandle> leaked_handles;
22   core->GetActiveHandlesForTest(&leaked_handles);
23   if (leaked_handles.empty())
24     return true;
25   for (auto handle : leaked_handles)
26     LOG(ERROR) << "Mojo embedder shutdown: Leaking handle " << handle;
27   return false;
28 }
29 
30 }  // namespace internal
31 
32 namespace test {
33 
Shutdown()34 bool Shutdown() {
35   CHECK(internal::g_core);
36   bool rv = internal::ShutdownCheckNoLeaks(internal::g_core);
37   delete internal::g_core;
38   internal::g_core = nullptr;
39 
40   return rv;
41 }
42 
43 }  // namespace test
44 }  // namespace edk
45 
46 }  // namespace mojo
47