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/embedder/test_embedder.h" 6 7 #include "base/logging.h" 8 #include "base/macros.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "mojo/embedder/embedder.h" 11 #include "mojo/embedder/simple_platform_support.h" 12 #include "mojo/system/core.h" 13 #include "mojo/system/entrypoints.h" 14 #include "mojo/system/handle_table.h" 15 16 namespace mojo { 17 18 namespace system { 19 namespace internal { 20 21 bool ShutdownCheckNoLeaks(Core* core_impl) { 22 // No point in taking the lock. 23 const HandleTable::HandleToEntryMap& handle_to_entry_map = 24 core_impl->handle_table_.handle_to_entry_map_; 25 26 if (handle_to_entry_map.empty()) 27 return true; 28 29 for (HandleTable::HandleToEntryMap::const_iterator it = 30 handle_to_entry_map.begin(); 31 it != handle_to_entry_map.end(); 32 ++it) { 33 LOG(ERROR) << "Mojo embedder shutdown: Leaking handle " << (*it).first; 34 } 35 return false; 36 } 37 38 } // namespace internal 39 } // namespace system 40 41 namespace embedder { 42 namespace test { 43 44 void InitWithSimplePlatformSupport() { 45 Init(scoped_ptr<PlatformSupport>(new SimplePlatformSupport())); 46 } 47 48 bool Shutdown() { 49 system::Core* core = system::entrypoints::GetCore(); 50 CHECK(core); 51 system::entrypoints::SetCore(nullptr); 52 53 bool rv = system::internal::ShutdownCheckNoLeaks(core); 54 delete core; 55 return rv; 56 } 57 58 } // namespace test 59 } // namespace embedder 60 61 } // namespace mojo 62