46 lines
1 KiB
C++
46 lines
1 KiB
C++
// 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
|