6ae9483ca92a141a3eedf6974c9121a386e9b0c3
[platform/framework/web/crosswalk.git] / src / base / memory / discardable_memory_linux.cc
1 // Copyright 2013 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 "base/memory/discardable_memory.h"
6
7 #include "base/logging.h"
8 #include "base/memory/discardable_memory_emulated.h"
9
10 namespace base {
11
12 // static
13 void DiscardableMemory::RegisterMemoryPressureListeners() {
14   internal::DiscardableMemoryEmulated::RegisterMemoryPressureListeners();
15 }
16
17 // static
18 void DiscardableMemory::UnregisterMemoryPressureListeners() {
19   internal::DiscardableMemoryEmulated::UnregisterMemoryPressureListeners();
20 }
21
22 // static
23 void DiscardableMemory::GetSupportedTypes(
24     std::vector<DiscardableMemoryType>* types) {
25   const DiscardableMemoryType supported_types[] = {
26     DISCARDABLE_MEMORY_TYPE_EMULATED
27   };
28   types->assign(supported_types, supported_types + arraysize(supported_types));
29 }
30
31 // static
32 scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType(
33     DiscardableMemoryType type, size_t size) {
34   switch (type) {
35     case DISCARDABLE_MEMORY_TYPE_NONE:
36     case DISCARDABLE_MEMORY_TYPE_ANDROID:
37     case DISCARDABLE_MEMORY_TYPE_MAC:
38       return scoped_ptr<DiscardableMemory>();
39     case DISCARDABLE_MEMORY_TYPE_EMULATED: {
40       scoped_ptr<internal::DiscardableMemoryEmulated> memory(
41           new internal::DiscardableMemoryEmulated(size));
42       if (!memory->Initialize())
43         return scoped_ptr<DiscardableMemory>();
44
45       return memory.PassAs<DiscardableMemory>();
46     }
47   }
48
49   NOTREACHED();
50   return scoped_ptr<DiscardableMemory>();
51 }
52
53 // static
54 bool DiscardableMemory::PurgeForTestingSupported() {
55   return true;
56 }
57
58 // static
59 void DiscardableMemory::PurgeForTesting() {
60   internal::DiscardableMemoryEmulated::PurgeForTesting();
61 }
62
63 }  // namespace base