// Copyright 2013 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 "base/memory/discardable_memory.h" #include "base/logging.h" #include "base/memory/discardable_memory_emulated.h" #include "base/memory/discardable_memory_malloc.h" namespace base { // static void DiscardableMemory::RegisterMemoryPressureListeners() { internal::DiscardableMemoryEmulated::RegisterMemoryPressureListeners(); } // static void DiscardableMemory::UnregisterMemoryPressureListeners() { internal::DiscardableMemoryEmulated::UnregisterMemoryPressureListeners(); } // static void DiscardableMemory::GetSupportedTypes( std::vector* types) { const DiscardableMemoryType supported_types[] = { DISCARDABLE_MEMORY_TYPE_EMULATED, DISCARDABLE_MEMORY_TYPE_MALLOC }; types->assign(supported_types, supported_types + arraysize(supported_types)); } // static scoped_ptr DiscardableMemory::CreateLockedMemoryWithType( DiscardableMemoryType type, size_t size) { switch (type) { case DISCARDABLE_MEMORY_TYPE_NONE: case DISCARDABLE_MEMORY_TYPE_ASHMEM: case DISCARDABLE_MEMORY_TYPE_MAC: return scoped_ptr(); case DISCARDABLE_MEMORY_TYPE_EMULATED: { scoped_ptr memory( new internal::DiscardableMemoryEmulated(size)); if (!memory->Initialize()) return scoped_ptr(); return memory.PassAs(); } case DISCARDABLE_MEMORY_TYPE_MALLOC: { scoped_ptr memory( new internal::DiscardableMemoryMalloc(size)); if (!memory->Initialize()) return scoped_ptr(); return memory.PassAs(); } } NOTREACHED(); return scoped_ptr(); } // static void DiscardableMemory::PurgeForTesting() { internal::DiscardableMemoryEmulated::PurgeForTesting(); } } // namespace base