Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / base / memory / discardable_memory_win.cc
index 6ae9483..9b4e940 100644 (file)
@@ -6,24 +6,26 @@
 
 #include "base/logging.h"
 #include "base/memory/discardable_memory_emulated.h"
+#include "base/memory/discardable_memory_shmem.h"
 
 namespace base {
 
 // static
-void DiscardableMemory::RegisterMemoryPressureListeners() {
-  internal::DiscardableMemoryEmulated::RegisterMemoryPressureListeners();
+void DiscardableMemory::ReleaseFreeMemory() {
+  internal::DiscardableMemoryShmem::ReleaseFreeMemory();
 }
 
 // static
-void DiscardableMemory::UnregisterMemoryPressureListeners() {
-  internal::DiscardableMemoryEmulated::UnregisterMemoryPressureListeners();
+bool DiscardableMemory::ReduceMemoryUsage() {
+  return internal::DiscardableMemoryEmulated::ReduceMemoryUsage();
 }
 
 // static
 void DiscardableMemory::GetSupportedTypes(
     std::vector<DiscardableMemoryType>* types) {
   const DiscardableMemoryType supported_types[] = {
-    DISCARDABLE_MEMORY_TYPE_EMULATED
+    DISCARDABLE_MEMORY_TYPE_EMULATED,
+    DISCARDABLE_MEMORY_TYPE_SHMEM
   };
   types->assign(supported_types, supported_types + arraysize(supported_types));
 }
@@ -32,32 +34,37 @@ void DiscardableMemory::GetSupportedTypes(
 scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType(
     DiscardableMemoryType type, size_t size) {
   switch (type) {
-    case DISCARDABLE_MEMORY_TYPE_NONE:
-    case DISCARDABLE_MEMORY_TYPE_ANDROID:
-    case DISCARDABLE_MEMORY_TYPE_MAC:
-      return scoped_ptr<DiscardableMemory>();
     case DISCARDABLE_MEMORY_TYPE_EMULATED: {
       scoped_ptr<internal::DiscardableMemoryEmulated> memory(
           new internal::DiscardableMemoryEmulated(size));
       if (!memory->Initialize())
-        return scoped_ptr<DiscardableMemory>();
+        return nullptr;
+
+      return memory.Pass();
+    }
+    case DISCARDABLE_MEMORY_TYPE_SHMEM: {
+      scoped_ptr<internal::DiscardableMemoryShmem> memory(
+          new internal::DiscardableMemoryShmem(size));
+      if (!memory->Initialize())
+        return nullptr;
 
-      return memory.PassAs<DiscardableMemory>();
+      return memory.Pass();
     }
+    case DISCARDABLE_MEMORY_TYPE_NONE:
+    case DISCARDABLE_MEMORY_TYPE_ASHMEM:
+    case DISCARDABLE_MEMORY_TYPE_MACH:
+      NOTREACHED();
+      return nullptr;
   }
 
   NOTREACHED();
-  return scoped_ptr<DiscardableMemory>();
-}
-
-// static
-bool DiscardableMemory::PurgeForTestingSupported() {
-  return true;
+  return nullptr;
 }
 
 // static
 void DiscardableMemory::PurgeForTesting() {
   internal::DiscardableMemoryEmulated::PurgeForTesting();
+  internal::DiscardableMemoryShmem::PurgeForTesting();
 }
 
 }  // namespace base