普通文本  |  47行  |  1.05 KB

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