Remove most of base/memory

Change-Id: I877807f4d8bfe8b162baa71f159f74340f562c23
Reviewed-on: https://gn-review.googlesource.com/1480
Commit-Queue: Scott Graham <scottmg@chromium.org>
Reviewed-by: Brett Wilson <brettw@chromium.org>
diff --git a/base/memory/OWNERS b/base/memory/OWNERS
deleted file mode 100644
index 9b7cbb1..0000000
--- a/base/memory/OWNERS
+++ /dev/null
@@ -1,4 +0,0 @@
-per-file *chromeos*=skuhne@chromium.org
-per-file *chromeos*=oshima@chromium.org
-per-file *shared_memory*=set noparent
-per-file *shared_memory*=file://ipc/SECURITY_OWNERS
diff --git a/base/memory/aligned_memory.cc b/base/memory/aligned_memory.cc
deleted file mode 100644
index 861ea50..0000000
--- a/base/memory/aligned_memory.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2012 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/aligned_memory.h"
-
-#include "base/logging.h"
-#include "build_config.h"
-
-#if defined(OS_ANDROID)
-#include <malloc.h>
-#endif
-
-namespace base {
-
-void* AlignedAlloc(size_t size, size_t alignment) {
-  DCHECK_GT(size, 0U);
-  DCHECK_EQ(alignment & (alignment - 1), 0U);
-  DCHECK_EQ(alignment % sizeof(void*), 0U);
-  void* ptr = nullptr;
-#if defined(COMPILER_MSVC)
-  ptr = _aligned_malloc(size, alignment);
-// Android technically supports posix_memalign(), but does not expose it in
-// the current version of the library headers used by Chrome.  Luckily,
-// memalign() on Android returns pointers which can safely be used with
-// free(), so we can use it instead.  Issue filed to document this:
-// http://code.google.com/p/android/issues/detail?id=35391
-#elif defined(OS_ANDROID)
-  ptr = memalign(alignment, size);
-#else
-  if (posix_memalign(&ptr, alignment, size))
-    ptr = nullptr;
-#endif
-  // Since aligned allocations may fail for non-memory related reasons, force a
-  // crash if we encounter a failed allocation; maintaining consistent behavior
-  // with a normal allocation failure in Chrome.
-  if (!ptr) {
-    DLOG(ERROR) << "If you crashed here, your aligned allocation is incorrect: "
-                << "size=" << size << ", alignment=" << alignment;
-    CHECK(false);
-  }
-  // Sanity check alignment just to be safe.
-  DCHECK_EQ(reinterpret_cast<uintptr_t>(ptr) & (alignment - 1), 0U);
-  return ptr;
-}
-
-}  // namespace base
diff --git a/base/memory/aligned_memory.h b/base/memory/aligned_memory.h
deleted file mode 100644
index e0dd7f5..0000000
--- a/base/memory/aligned_memory.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2012 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.
-
-#ifndef BASE_MEMORY_ALIGNED_MEMORY_H_
-#define BASE_MEMORY_ALIGNED_MEMORY_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <type_traits>
-
-#include "base/base_export.h"
-#include "base/compiler_specific.h"
-#include "build_config.h"
-
-#if defined(COMPILER_MSVC)
-#include <malloc.h>
-#else
-#include <stdlib.h>
-#endif
-
-// A runtime sized aligned allocation can be created:
-//
-//   float* my_array = static_cast<float*>(AlignedAlloc(size, alignment));
-//
-//   // ... later, to release the memory:
-//   AlignedFree(my_array);
-//
-// Or using unique_ptr:
-//
-//   std::unique_ptr<float, AlignedFreeDeleter> my_array(
-//       static_cast<float*>(AlignedAlloc(size, alignment)));
-
-namespace base {
-
-// This can be replaced with std::aligned_malloc when we have C++17.
-BASE_EXPORT void* AlignedAlloc(size_t size, size_t alignment);
-
-inline void AlignedFree(void* ptr) {
-#if defined(COMPILER_MSVC)
-  _aligned_free(ptr);
-#else
-  free(ptr);
-#endif
-}
-
-// Deleter for use with unique_ptr. E.g., use as
-//   std::unique_ptr<Foo, base::AlignedFreeDeleter> foo;
-struct AlignedFreeDeleter {
-  inline void operator()(void* ptr) const {
-    AlignedFree(ptr);
-  }
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_ALIGNED_MEMORY_H_
diff --git a/base/memory/discardable_memory.cc b/base/memory/discardable_memory.cc
deleted file mode 100644
index f0730aa..0000000
--- a/base/memory/discardable_memory.cc
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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 "base/memory/discardable_memory.h"
-
-namespace base {
-
-DiscardableMemory::DiscardableMemory() = default;
-
-DiscardableMemory::~DiscardableMemory() = default;
-
-}  // namespace base
diff --git a/base/memory/discardable_memory.h b/base/memory/discardable_memory.h
deleted file mode 100644
index 5c632d1..0000000
--- a/base/memory/discardable_memory.h
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (c) 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.
-
-#ifndef BASE_MEMORY_DISCARDABLE_MEMORY_H_
-#define BASE_MEMORY_DISCARDABLE_MEMORY_H_
-
-#include "base/base_export.h"
-#include "base/compiler_specific.h"
-
-namespace base {
-
-namespace trace_event {
-class MemoryAllocatorDump;
-class ProcessMemoryDump;
-}
-
-// Discardable memory is used to cache large objects without worrying about
-// blowing out memory, both on mobile devices where there is no swap, and
-// desktop devices where unused free memory should be used to help the user
-// experience. This is preferable to releasing memory in response to an OOM
-// signal because it is simpler and provides system-wide management of
-// purgable memory, though it has less flexibility as to which objects get
-// discarded.
-//
-// Discardable memory has two states: locked and unlocked. While the memory is
-// locked, it will not be discarded. Unlocking the memory allows the
-// discardable memory system and the OS to reclaim it if needed. Locks do not
-// nest.
-//
-// Notes:
-//   - The paging behavior of memory while it is locked is not specified. While
-//     mobile platforms will not swap it out, it may qualify for swapping
-//     on desktop platforms. It is not expected that this will matter, as the
-//     preferred pattern of usage for DiscardableMemory is to lock down the
-//     memory, use it as quickly as possible, and then unlock it.
-//   - Because of memory alignment, the amount of memory allocated can be
-//     larger than the requested memory size. It is not very efficient for
-//     small allocations.
-//   - A discardable memory instance is not thread safe. It is the
-//     responsibility of users of discardable memory to ensure there are no
-//     races.
-//
-class BASE_EXPORT DiscardableMemory {
- public:
-  DiscardableMemory();
-  virtual ~DiscardableMemory();
-
-  // Locks the memory so that it will not be purged by the system. Returns
-  // true on success. If the return value is false then this object should be
-  // discarded and a new one should be created.
-  virtual bool Lock() WARN_UNUSED_RESULT = 0;
-
-  // Unlocks the memory so that it can be purged by the system. Must be called
-  // after every successful lock call.
-  virtual void Unlock() = 0;
-
-  // Returns the memory address held by this object. The object must be locked
-  // before calling this.
-  virtual void* data() const = 0;
-
-  // Handy method to simplify calling data() with a reinterpret_cast.
-  template<typename T> T* data_as() const {
-    return reinterpret_cast<T*>(data());
-  }
-
-  // Used for dumping the statistics of discardable memory allocated in tracing.
-  // Returns a new MemoryAllocatorDump in the |pmd| with the size of the
-  // discardable memory. The MemoryAllocatorDump created is owned by |pmd|. See
-  // ProcessMemoryDump::CreateAllocatorDump.
-  virtual trace_event::MemoryAllocatorDump* CreateMemoryAllocatorDump(
-      const char* name,
-      trace_event::ProcessMemoryDump* pmd) const = 0;
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_DISCARDABLE_MEMORY_H_
diff --git a/base/memory/discardable_memory_allocator.cc b/base/memory/discardable_memory_allocator.cc
deleted file mode 100644
index 3dbb276..0000000
--- a/base/memory/discardable_memory_allocator.cc
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2015 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_allocator.h"
-
-#include "base/logging.h"
-
-namespace base {
-namespace {
-
-DiscardableMemoryAllocator* g_discardable_allocator = nullptr;
-
-}  // namespace
-
-// static
-void DiscardableMemoryAllocator::SetInstance(
-    DiscardableMemoryAllocator* allocator) {
-  DCHECK(!allocator || !g_discardable_allocator);
-  g_discardable_allocator = allocator;
-}
-
-// static
-DiscardableMemoryAllocator* DiscardableMemoryAllocator::GetInstance() {
-  DCHECK(g_discardable_allocator);
-  return g_discardable_allocator;
-}
-
-}  // namespace base
diff --git a/base/memory/discardable_memory_allocator.h b/base/memory/discardable_memory_allocator.h
deleted file mode 100644
index 8d74b16..0000000
--- a/base/memory/discardable_memory_allocator.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2015 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.
-
-#ifndef BASE_MEMORY_DISCARDABLE_MEMORY_ALLOCATOR_H_
-#define BASE_MEMORY_DISCARDABLE_MEMORY_ALLOCATOR_H_
-
-#include <stddef.h>
-
-#include <memory>
-
-#include "base/base_export.h"
-
-namespace base {
-class DiscardableMemory;
-
-class BASE_EXPORT DiscardableMemoryAllocator {
- public:
-  // Returns the allocator instance.
-  static DiscardableMemoryAllocator* GetInstance();
-
-  // Sets the allocator instance. Can only be called once, e.g. on startup.
-  // Ownership of |instance| remains with the caller.
-  static void SetInstance(DiscardableMemoryAllocator* allocator);
-
-  // Giant WARNING: Discardable[Shared]Memory is only implemented on Android. On
-  // non-Android platforms, it behaves exactly the same as SharedMemory.
-  // See LockPages() in discardable_shared_memory.cc.
-  virtual std::unique_ptr<DiscardableMemory> AllocateLockedDiscardableMemory(
-      size_t size) = 0;
-
- protected:
-  virtual ~DiscardableMemoryAllocator() = default;
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_DISCARDABLE_MEMORY_ALLOCATOR_H_
diff --git a/base/memory/discardable_shared_memory.cc b/base/memory/discardable_shared_memory.cc
deleted file mode 100644
index 8601e21..0000000
--- a/base/memory/discardable_shared_memory.cc
+++ /dev/null
@@ -1,514 +0,0 @@
-// 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 "base/memory/discardable_shared_memory.h"
-
-#include <stdint.h>
-
-#include <algorithm>
-
-#include "base/atomicops.h"
-#include "base/bits.h"
-#include "base/logging.h"
-#include "base/memory/shared_memory_tracker.h"
-#include "base/numerics/safe_math.h"
-#include "base/process/process_metrics.h"
-#include "base/trace_event/memory_allocator_dump.h"
-#include "base/trace_event/process_memory_dump.h"
-#include "build_config.h"
-
-#if defined(OS_POSIX) && !defined(OS_NACL)
-// For madvise() which is available on all POSIX compatible systems.
-#include <sys/mman.h>
-#endif
-
-#if defined(OS_ANDROID)
-#include "third_party/ashmem/ashmem.h"
-#endif
-
-#if defined(OS_WIN)
-#include <windows.h>
-#include "base/win/windows_version.h"
-#endif
-
-namespace base {
-namespace {
-
-// Use a machine-sized pointer as atomic type. It will use the Atomic32 or
-// Atomic64 routines, depending on the architecture.
-typedef intptr_t AtomicType;
-typedef uintptr_t UAtomicType;
-
-// Template specialization for timestamp serialization/deserialization. This
-// is used to serialize timestamps using Unix time on systems where AtomicType
-// does not have enough precision to contain a timestamp in the standard
-// serialized format.
-template <int>
-Time TimeFromWireFormat(int64_t value);
-template <int>
-int64_t TimeToWireFormat(Time time);
-
-// Serialize to Unix time when using 4-byte wire format.
-// Note: 19 January 2038, this will cease to work.
-template <>
-Time ALLOW_UNUSED_TYPE TimeFromWireFormat<4>(int64_t value) {
-  return value ? Time::UnixEpoch() + TimeDelta::FromSeconds(value) : Time();
-}
-template <>
-int64_t ALLOW_UNUSED_TYPE TimeToWireFormat<4>(Time time) {
-  return time > Time::UnixEpoch() ? (time - Time::UnixEpoch()).InSeconds() : 0;
-}
-
-// Standard serialization format when using 8-byte wire format.
-template <>
-Time ALLOW_UNUSED_TYPE TimeFromWireFormat<8>(int64_t value) {
-  return Time::FromInternalValue(value);
-}
-template <>
-int64_t ALLOW_UNUSED_TYPE TimeToWireFormat<8>(Time time) {
-  return time.ToInternalValue();
-}
-
-struct SharedState {
-  enum LockState { UNLOCKED = 0, LOCKED = 1 };
-
-  explicit SharedState(AtomicType ivalue) { value.i = ivalue; }
-  SharedState(LockState lock_state, Time timestamp) {
-    int64_t wire_timestamp = TimeToWireFormat<sizeof(AtomicType)>(timestamp);
-    DCHECK_GE(wire_timestamp, 0);
-    DCHECK_EQ(lock_state & ~1, 0);
-    value.u = (static_cast<UAtomicType>(wire_timestamp) << 1) | lock_state;
-  }
-
-  LockState GetLockState() const { return static_cast<LockState>(value.u & 1); }
-
-  Time GetTimestamp() const {
-    return TimeFromWireFormat<sizeof(AtomicType)>(value.u >> 1);
-  }
-
-  // Bit 1: Lock state. Bit is set when locked.
-  // Bit 2..sizeof(AtomicType)*8: Usage timestamp. NULL time when locked or
-  // purged.
-  union {
-    AtomicType i;
-    UAtomicType u;
-  } value;
-};
-
-// Shared state is stored at offset 0 in shared memory segments.
-SharedState* SharedStateFromSharedMemory(
-    const WritableSharedMemoryMapping& shared_memory) {
-  DCHECK(shared_memory.IsValid());
-  return static_cast<SharedState*>(shared_memory.memory());
-}
-
-// Round up |size| to a multiple of page size.
-size_t AlignToPageSize(size_t size) {
-  return bits::Align(size, base::GetPageSize());
-}
-
-}  // namespace
-
-DiscardableSharedMemory::DiscardableSharedMemory()
-    : mapped_size_(0), locked_page_count_(0) {
-}
-
-DiscardableSharedMemory::DiscardableSharedMemory(
-    UnsafeSharedMemoryRegion shared_memory_region)
-    : shared_memory_region_(std::move(shared_memory_region)),
-      mapped_size_(0),
-      locked_page_count_(0) {}
-
-DiscardableSharedMemory::~DiscardableSharedMemory() = default;
-
-bool DiscardableSharedMemory::CreateAndMap(size_t size) {
-  CheckedNumeric<size_t> checked_size = size;
-  checked_size += AlignToPageSize(sizeof(SharedState));
-  if (!checked_size.IsValid())
-    return false;
-
-  shared_memory_region_ =
-      UnsafeSharedMemoryRegion::Create(checked_size.ValueOrDie());
-
-  if (!shared_memory_region_.IsValid())
-    return false;
-
-  shared_memory_mapping_ = shared_memory_region_.Map();
-  if (!shared_memory_mapping_.IsValid())
-    return false;
-
-  mapped_size_ = shared_memory_mapping_.mapped_size() -
-                 AlignToPageSize(sizeof(SharedState));
-
-  locked_page_count_ = AlignToPageSize(mapped_size_) / base::GetPageSize();
-#if DCHECK_IS_ON()
-  for (size_t page = 0; page < locked_page_count_; ++page)
-    locked_pages_.insert(page);
-#endif
-
-  DCHECK(last_known_usage_.is_null());
-  SharedState new_state(SharedState::LOCKED, Time());
-  subtle::Release_Store(
-      &SharedStateFromSharedMemory(shared_memory_mapping_)->value.i,
-      new_state.value.i);
-  return true;
-}
-
-bool DiscardableSharedMemory::Map(size_t size) {
-  DCHECK(!shared_memory_mapping_.IsValid());
-  if (shared_memory_mapping_.IsValid())
-    return false;
-
-  shared_memory_mapping_ = shared_memory_region_.MapAt(
-      0, AlignToPageSize(sizeof(SharedState)) + size);
-  if (!shared_memory_mapping_.IsValid())
-    return false;
-
-  mapped_size_ = shared_memory_mapping_.mapped_size() -
-                 AlignToPageSize(sizeof(SharedState));
-
-  locked_page_count_ = AlignToPageSize(mapped_size_) / base::GetPageSize();
-#if DCHECK_IS_ON()
-  for (size_t page = 0; page < locked_page_count_; ++page)
-    locked_pages_.insert(page);
-#endif
-
-  return true;
-}
-
-bool DiscardableSharedMemory::Unmap() {
-  if (!shared_memory_mapping_.IsValid())
-    return false;
-
-  shared_memory_mapping_ = WritableSharedMemoryMapping();
-  locked_page_count_ = 0;
-#if DCHECK_IS_ON()
-  locked_pages_.clear();
-#endif
-  mapped_size_ = 0;
-  return true;
-}
-
-DiscardableSharedMemory::LockResult DiscardableSharedMemory::Lock(
-    size_t offset, size_t length) {
-  DCHECK_EQ(AlignToPageSize(offset), offset);
-  DCHECK_EQ(AlignToPageSize(length), length);
-
-  // Calls to this function must be synchronized properly.
-  DFAKE_SCOPED_LOCK(thread_collision_warner_);
-
-  DCHECK(shared_memory_mapping_.IsValid());
-
-  // We need to successfully acquire the platform independent lock before
-  // individual pages can be locked.
-  if (!locked_page_count_) {
-    // Return false when instance has been purged or not initialized properly
-    // by checking if |last_known_usage_| is NULL.
-    if (last_known_usage_.is_null())
-      return FAILED;
-
-    SharedState old_state(SharedState::UNLOCKED, last_known_usage_);
-    SharedState new_state(SharedState::LOCKED, Time());
-    SharedState result(subtle::Acquire_CompareAndSwap(
-        &SharedStateFromSharedMemory(shared_memory_mapping_)->value.i,
-        old_state.value.i, new_state.value.i));
-    if (result.value.u != old_state.value.u) {
-      // Update |last_known_usage_| in case the above CAS failed because of
-      // an incorrect timestamp.
-      last_known_usage_ = result.GetTimestamp();
-      return FAILED;
-    }
-  }
-
-  // Zero for length means "everything onward".
-  if (!length)
-    length = AlignToPageSize(mapped_size_) - offset;
-
-  size_t start = offset / base::GetPageSize();
-  size_t end = start + length / base::GetPageSize();
-  DCHECK_LE(start, end);
-  DCHECK_LE(end, AlignToPageSize(mapped_size_) / base::GetPageSize());
-
-  // Add pages to |locked_page_count_|.
-  // Note: Locking a page that is already locked is an error.
-  locked_page_count_ += end - start;
-#if DCHECK_IS_ON()
-  // Detect incorrect usage by keeping track of exactly what pages are locked.
-  for (auto page = start; page < end; ++page) {
-    auto result = locked_pages_.insert(page);
-    DCHECK(result.second);
-  }
-  DCHECK_EQ(locked_pages_.size(), locked_page_count_);
-#endif
-
-  // Always behave as if memory was purged when trying to lock a 0 byte segment.
-  if (!length)
-      return PURGED;
-
-#if defined(OS_ANDROID)
-  // Ensure that the platform won't discard the required pages.
-  return LockPages(shared_memory_region_,
-                   AlignToPageSize(sizeof(SharedState)) + offset, length);
-#elif defined(OS_MACOSX)
-  // On macOS, there is no mechanism to lock pages. However, we do need to call
-  // madvise(MADV_FREE_REUSE) in order to correctly update accounting for memory
-  // footprint via task_info().
-  //
-  // Note that calling madvise(MADV_FREE_REUSE) on regions that haven't had
-  // madvise(MADV_FREE_REUSABLE) called on them has no effect.
-  //
-  // Note that the corresponding call to MADV_FREE_REUSABLE is in Purge(), since
-  // that's where the memory is actually released, rather than Unlock(), which
-  // is a no-op on macOS.
-  //
-  // For more information, see
-  // https://bugs.chromium.org/p/chromium/issues/detail?id=823915.
-  if (madvise(reinterpret_cast<char*>(shared_memory_mapping_.memory()) +
-                  AlignToPageSize(sizeof(SharedState)),
-              AlignToPageSize(mapped_size_), MADV_FREE_REUSE))
-    ;
-  return DiscardableSharedMemory::SUCCESS;
-#else
-  return DiscardableSharedMemory::SUCCESS;
-#endif
-}
-
-void DiscardableSharedMemory::Unlock(size_t offset, size_t length) {
-  DCHECK_EQ(AlignToPageSize(offset), offset);
-  DCHECK_EQ(AlignToPageSize(length), length);
-
-  // Calls to this function must be synchronized properly.
-  DFAKE_SCOPED_LOCK(thread_collision_warner_);
-
-  // Passing zero for |length| means "everything onward". Note that |length| may
-  // still be zero after this calculation, e.g. if |mapped_size_| is zero.
-  if (!length)
-    length = AlignToPageSize(mapped_size_) - offset;
-
-  DCHECK(shared_memory_mapping_.IsValid());
-
-  // Allow the pages to be discarded by the platform, if supported.
-  UnlockPages(shared_memory_region_,
-              AlignToPageSize(sizeof(SharedState)) + offset, length);
-
-  size_t start = offset / base::GetPageSize();
-  size_t end = start + length / base::GetPageSize();
-  DCHECK_LE(start, end);
-  DCHECK_LE(end, AlignToPageSize(mapped_size_) / base::GetPageSize());
-
-  // Remove pages from |locked_page_count_|.
-  // Note: Unlocking a page that is not locked is an error.
-  DCHECK_GE(locked_page_count_, end - start);
-  locked_page_count_ -= end - start;
-#if DCHECK_IS_ON()
-  // Detect incorrect usage by keeping track of exactly what pages are locked.
-  for (auto page = start; page < end; ++page) {
-    auto erased_count = locked_pages_.erase(page);
-    DCHECK_EQ(1u, erased_count);
-  }
-  DCHECK_EQ(locked_pages_.size(), locked_page_count_);
-#endif
-
-  // Early out and avoid releasing the platform independent lock if some pages
-  // are still locked.
-  if (locked_page_count_)
-    return;
-
-  Time current_time = Now();
-  DCHECK(!current_time.is_null());
-
-  SharedState old_state(SharedState::LOCKED, Time());
-  SharedState new_state(SharedState::UNLOCKED, current_time);
-  // Note: timestamp cannot be NULL as that is a unique value used when
-  // locked or purged.
-  DCHECK(!new_state.GetTimestamp().is_null());
-  // Timestamp precision should at least be accurate to the second.
-  DCHECK_EQ((new_state.GetTimestamp() - Time::UnixEpoch()).InSeconds(),
-            (current_time - Time::UnixEpoch()).InSeconds());
-  SharedState result(subtle::Release_CompareAndSwap(
-      &SharedStateFromSharedMemory(shared_memory_mapping_)->value.i,
-      old_state.value.i, new_state.value.i));
-
-  DCHECK_EQ(old_state.value.u, result.value.u);
-
-  last_known_usage_ = current_time;
-}
-
-void* DiscardableSharedMemory::memory() const {
-  return reinterpret_cast<uint8_t*>(shared_memory_mapping_.memory()) +
-         AlignToPageSize(sizeof(SharedState));
-}
-
-bool DiscardableSharedMemory::Purge(Time current_time) {
-  // Calls to this function must be synchronized properly.
-  DFAKE_SCOPED_LOCK(thread_collision_warner_);
-  DCHECK(shared_memory_mapping_.IsValid());
-
-  SharedState old_state(SharedState::UNLOCKED, last_known_usage_);
-  SharedState new_state(SharedState::UNLOCKED, Time());
-  SharedState result(subtle::Acquire_CompareAndSwap(
-      &SharedStateFromSharedMemory(shared_memory_mapping_)->value.i,
-      old_state.value.i, new_state.value.i));
-
-  // Update |last_known_usage_| to |current_time| if the memory is locked. This
-  // allows the caller to determine if purging failed because last known usage
-  // was incorrect or memory was locked. In the second case, the caller should
-  // most likely wait for some amount of time before attempting to purge the
-  // the memory again.
-  if (result.value.u != old_state.value.u) {
-    last_known_usage_ = result.GetLockState() == SharedState::LOCKED
-                            ? current_time
-                            : result.GetTimestamp();
-    return false;
-  }
-
-// The next section will release as much resource as can be done
-// from the purging process, until the client process notices the
-// purge and releases its own references.
-// Note: this memory will not be accessed again.  The segment will be
-// freed asynchronously at a later time, so just do the best
-// immediately.
-#if defined(OS_POSIX) && !defined(OS_NACL)
-// Linux and Android provide MADV_REMOVE which is preferred as it has a
-// behavior that can be verified in tests. Other POSIX flavors (MacOSX, BSDs),
-// provide MADV_FREE which has the same result but memory is purged lazily.
-#if defined(OS_LINUX) || defined(OS_ANDROID)
-#define MADV_PURGE_ARGUMENT MADV_REMOVE
-#elif defined(OS_MACOSX)
-// MADV_FREE_REUSABLE is similar to MADV_FREE, but also marks the pages with the
-// reusable bit, which allows both Activity Monitor and memory-infra to
-// correctly track the pages.
-#define MADV_PURGE_ARGUMENT MADV_FREE_REUSABLE
-#else
-#define MADV_PURGE_ARGUMENT MADV_FREE
-#endif
-  // Advise the kernel to remove resources associated with purged pages.
-  // Subsequent accesses of memory pages will succeed, but might result in
-  // zero-fill-on-demand pages.
-  if (madvise(reinterpret_cast<char*>(shared_memory_mapping_.memory()) +
-                  AlignToPageSize(sizeof(SharedState)),
-              AlignToPageSize(mapped_size_), MADV_PURGE_ARGUMENT)) {
-    DPLOG(ERROR) << "madvise() failed";
-  }
-#elif defined(OS_WIN)
-  if (base::win::GetVersion() >= base::win::VERSION_WIN8_1) {
-    // Discard the purged pages, which releases the physical storage (resident
-    // memory, compressed or swapped), but leaves them reserved & committed.
-    // This does not free commit for use by other applications, but allows the
-    // system to avoid compressing/swapping these pages to free physical memory.
-    static const auto discard_virtual_memory =
-        reinterpret_cast<decltype(&::DiscardVirtualMemory)>(GetProcAddress(
-            GetModuleHandle(L"kernel32.dll"), "DiscardVirtualMemory"));
-    if (discard_virtual_memory) {
-      DWORD discard_result = discard_virtual_memory(
-          reinterpret_cast<char*>(shared_memory_mapping_.memory()) +
-              AlignToPageSize(sizeof(SharedState)),
-          AlignToPageSize(mapped_size_));
-      if (discard_result != ERROR_SUCCESS) {
-        DLOG(DCHECK) << "DiscardVirtualMemory() failed in Purge(): "
-                     << logging::SystemErrorCodeToString(discard_result);
-      }
-    }
-  }
-#endif
-
-  last_known_usage_ = Time();
-  return true;
-}
-
-bool DiscardableSharedMemory::IsMemoryResident() const {
-  DCHECK(shared_memory_mapping_.IsValid());
-
-  SharedState result(subtle::NoBarrier_Load(
-      &SharedStateFromSharedMemory(shared_memory_mapping_)->value.i));
-
-  return result.GetLockState() == SharedState::LOCKED ||
-         !result.GetTimestamp().is_null();
-}
-
-bool DiscardableSharedMemory::IsMemoryLocked() const {
-  DCHECK(shared_memory_mapping_.IsValid());
-
-  SharedState result(subtle::NoBarrier_Load(
-      &SharedStateFromSharedMemory(shared_memory_mapping_)->value.i));
-
-  return result.GetLockState() == SharedState::LOCKED;
-}
-
-void DiscardableSharedMemory::Close() {
-  shared_memory_region_ = UnsafeSharedMemoryRegion();
-}
-
-void DiscardableSharedMemory::CreateSharedMemoryOwnershipEdge(
-    trace_event::MemoryAllocatorDump* local_segment_dump,
-    trace_event::ProcessMemoryDump* pmd,
-    bool is_owned) const {
-  auto* shared_memory_dump = SharedMemoryTracker::GetOrCreateSharedMemoryDump(
-      shared_memory_mapping_, pmd);
-  // TODO(ssid): Clean this by a new api to inherit size of parent dump once the
-  // we send the full PMD and calculate sizes inside chrome, crbug.com/704203.
-  size_t resident_size = shared_memory_dump->GetSizeInternal();
-  local_segment_dump->AddScalar(trace_event::MemoryAllocatorDump::kNameSize,
-                                trace_event::MemoryAllocatorDump::kUnitsBytes,
-                                resident_size);
-
-  // By creating an edge with a higher |importance| (w.r.t non-owned dumps)
-  // the tracing UI will account the effective size of the segment to the
-  // client instead of manager.
-  // TODO(ssid): Define better constants in MemoryAllocatorDump for importance
-  // values, crbug.com/754793.
-  const int kImportance = is_owned ? 2 : 0;
-  auto shared_memory_guid = shared_memory_mapping_.guid();
-  local_segment_dump->AddString("id", "hash", shared_memory_guid.ToString());
-
-  // Owned discardable segments which are allocated by client process, could
-  // have been cleared by the discardable manager. So, the segment need not
-  // exist in memory and weak dumps are created to indicate the UI that the dump
-  // should exist only if the manager also created the global dump edge.
-  if (is_owned) {
-    pmd->CreateWeakSharedMemoryOwnershipEdge(local_segment_dump->guid(),
-                                             shared_memory_guid, kImportance);
-  } else {
-    pmd->CreateSharedMemoryOwnershipEdge(local_segment_dump->guid(),
-                                         shared_memory_guid, kImportance);
-  }
-}
-
-// static
-DiscardableSharedMemory::LockResult DiscardableSharedMemory::LockPages(
-    const UnsafeSharedMemoryRegion& region,
-    size_t offset,
-    size_t length) {
-#if defined(OS_ANDROID)
-  if (region.IsValid()) {
-    int pin_result =
-        ashmem_pin_region(region.GetPlatformHandle(), offset, length);
-    if (pin_result == ASHMEM_WAS_PURGED)
-      return PURGED;
-    if (pin_result < 0)
-      return FAILED;
-  }
-#endif
-  return SUCCESS;
-}
-
-// static
-void DiscardableSharedMemory::UnlockPages(
-    const UnsafeSharedMemoryRegion& region,
-    size_t offset,
-    size_t length) {
-#if defined(OS_ANDROID)
-  if (region.IsValid()) {
-    int unpin_result =
-        ashmem_unpin_region(region.GetPlatformHandle(), offset, length);
-    DCHECK_EQ(0, unpin_result);
-  }
-#endif
-}
-
-Time DiscardableSharedMemory::Now() const {
-  return Time::Now();
-}
-
-}  // namespace base
diff --git a/base/memory/discardable_shared_memory.h b/base/memory/discardable_shared_memory.h
deleted file mode 100644
index 55e99d9..0000000
--- a/base/memory/discardable_shared_memory.h
+++ /dev/null
@@ -1,187 +0,0 @@
-// 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.
-
-#ifndef BASE_MEMORY_DISCARDABLE_SHARED_MEMORY_H_
-#define BASE_MEMORY_DISCARDABLE_SHARED_MEMORY_H_
-
-#include <stddef.h>
-
-#include "base/base_export.h"
-#include "base/logging.h"
-#include "base/macros.h"
-#include "base/memory/shared_memory_mapping.h"
-#include "base/memory/unsafe_shared_memory_region.h"
-#include "base/threading/thread_collision_warner.h"
-#include "base/time/time.h"
-#include "build_config.h"
-
-#if DCHECK_IS_ON()
-#include <set>
-#endif
-
-// Linux (including Android) support the MADV_REMOVE argument with madvise()
-// which has the behavior of reliably causing zero-fill-on-demand pages to
-// be returned after a call. Here we define
-// DISCARDABLE_SHARED_MEMORY_ZERO_FILL_ON_DEMAND_PAGES_AFTER_PURGE on Linux
-// and Android to indicate that this type of behavior can be expected on
-// those platforms. Note that madvise() will still be used on other POSIX
-// platforms but doesn't provide the zero-fill-on-demand pages guarantee.
-#if defined(OS_LINUX) || defined(OS_ANDROID)
-#define DISCARDABLE_SHARED_MEMORY_ZERO_FILL_ON_DEMAND_PAGES_AFTER_PURGE
-#endif
-
-namespace base {
-
-namespace trace_event {
-class MemoryAllocatorDump;
-class ProcessMemoryDump;
-}  // namespace trace_event
-
-// Platform abstraction for discardable shared memory.
-//
-// This class is not thread-safe. Clients are responsible for synchronizing
-// access to an instance of this class.
-class BASE_EXPORT DiscardableSharedMemory {
- public:
-  enum LockResult { SUCCESS, PURGED, FAILED };
-
-  DiscardableSharedMemory();
-
-  // Create a new DiscardableSharedMemory object from an existing, open shared
-  // memory file. Memory must be locked.
-  explicit DiscardableSharedMemory(UnsafeSharedMemoryRegion region);
-
-  // Closes any open files.
-  virtual ~DiscardableSharedMemory();
-
-  // Creates and maps a locked DiscardableSharedMemory object with |size|.
-  // Returns true on success and false on failure.
-  bool CreateAndMap(size_t size);
-
-  // Maps the locked discardable memory into the caller's address space.
-  // Returns true on success, false otherwise.
-  bool Map(size_t size);
-
-  // Unmaps the discardable shared memory from the caller's address space.
-  // Unmapping won't unlock previously locked range.
-  // Returns true if successful; returns false on error or if the memory is
-  // not mapped.
-  bool Unmap();
-
-  // The actual size of the mapped memory (may be larger than requested).
-  size_t mapped_size() const { return mapped_size_; }
-
-  // Returns a duplicated shared memory region for this DiscardableSharedMemory
-  // object.
-  UnsafeSharedMemoryRegion DuplicateRegion() const {
-    return shared_memory_region_.Duplicate();
-  }
-
-  // Returns an ID for the shared memory region. This is ID of the mapped region
-  // consistent across all processes and is valid as long as the region is not
-  // unmapped.
-  const UnguessableToken& mapped_id() const {
-    return shared_memory_mapping_.guid();
-  }
-
-  // Locks a range of memory so that it will not be purged by the system.
-  // The range of memory must be unlocked. The result of trying to lock an
-  // already locked range is undefined. |offset| and |length| must both be
-  // a multiple of the page size as returned by GetPageSize().
-  // Passing 0 for |length| means "everything onward".
-  // Returns SUCCESS if range was successfully locked and the memory is still
-  // resident, PURGED if range was successfully locked but has been purged
-  // since last time it was locked and FAILED if range could not be locked.
-  // Locking can fail for two reasons; object might have been purged, our
-  // last known usage timestamp might be out of date. Last known usage time
-  // is updated to the actual last usage timestamp if memory is still resident
-  // or 0 if not.
-  LockResult Lock(size_t offset, size_t length);
-
-  // Unlock a previously successfully locked range of memory. The range of
-  // memory must be locked. The result of trying to unlock a not
-  // previously locked range is undefined.
-  // |offset| and |length| must both be a multiple of the page size as returned
-  // by GetPageSize().
-  // Passing 0 for |length| means "everything onward".
-  void Unlock(size_t offset, size_t length);
-
-  // Gets a pointer to the opened discardable memory space. Discardable memory
-  // must have been mapped via Map().
-  void* memory() const;
-
-  // Returns the last known usage time for DiscardableSharedMemory object. This
-  // may be earlier than the "true" usage time when memory has been used by a
-  // different process. Returns NULL time if purged.
-  Time last_known_usage() const { return last_known_usage_; }
-
-  // This returns true and sets |last_known_usage_| to 0 if
-  // DiscardableSharedMemory object was successfully purged. Purging can fail
-  // for two reasons; object might be locked or our last known usage timestamp
-  // might be out of date. Last known usage time is updated to |current_time|
-  // if locked or the actual last usage timestamp if unlocked. It is often
-  // necessary to call this function twice for the object to successfully be
-  // purged. First call, updates |last_known_usage_|. Second call, successfully
-  // purges the object using the updated |last_known_usage_|.
-  // Note: there is no guarantee that multiple calls to this function will
-  // successfully purge object. DiscardableSharedMemory object might be locked
-  // or another thread/process might be able to lock and unlock it in between
-  // each call.
-  bool Purge(Time current_time);
-
-  // Returns true if memory is still resident.
-  bool IsMemoryResident() const;
-
-  // Returns true if memory is locked.
-  bool IsMemoryLocked() const;
-
-  // Closes the open discardable memory segment.
-  // It is safe to call Close repeatedly.
-  void Close();
-
-  // For tracing: Creates ownership edge to the underlying shared memory dump
-  // which is cross process in the given |pmd|. |local_segment_dump| is the dump
-  // associated with the local discardable shared memory segment and |is_owned|
-  // is true when the current process owns the segment and the effective memory
-  // is assigned to the current process.
-  void CreateSharedMemoryOwnershipEdge(
-      trace_event::MemoryAllocatorDump* local_segment_dump,
-      trace_event::ProcessMemoryDump* pmd,
-      bool is_owned) const;
-
- private:
-  // LockPages/UnlockPages are platform-native discardable page management
-  // helper functions. Both expect |offset| to be specified relative to the
-  // base address at which |memory| is mapped, and that |offset| and |length|
-  // are page-aligned by the caller.
-  // Returns SUCCESS on platforms which do not support discardable pages.
-  static LockResult LockPages(const UnsafeSharedMemoryRegion& region,
-                              size_t offset,
-                              size_t length);
-  // UnlockPages() is a no-op on platforms not supporting discardable pages.
-  static void UnlockPages(const UnsafeSharedMemoryRegion& region,
-                          size_t offset,
-                          size_t length);
-
-  // Virtual for tests.
-  virtual Time Now() const;
-
-  UnsafeSharedMemoryRegion shared_memory_region_;
-  WritableSharedMemoryMapping shared_memory_mapping_;
-  size_t mapped_size_;
-  size_t locked_page_count_;
-#if DCHECK_IS_ON()
-  std::set<size_t> locked_pages_;
-#endif
-  // Implementation is not thread-safe but still usable if clients are
-  // synchronized somehow. Use a collision warner to detect incorrect usage.
-  DFAKE_MUTEX(thread_collision_warner_);
-  Time last_known_usage_;
-
-  DISALLOW_COPY_AND_ASSIGN(DiscardableSharedMemory);
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_DISCARDABLE_SHARED_MEMORY_H_
diff --git a/base/memory/linked_ptr.h b/base/memory/linked_ptr.h
deleted file mode 100644
index 6851286..0000000
--- a/base/memory/linked_ptr.h
+++ /dev/null
@@ -1,179 +0,0 @@
-// Copyright (c) 2011 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.
-//
-// A "smart" pointer type with reference tracking.  Every pointer to a
-// particular object is kept on a circular linked list.  When the last pointer
-// to an object is destroyed or reassigned, the object is deleted.
-//
-// Used properly, this deletes the object when the last reference goes away.
-// There are several caveats:
-// - Like all reference counting schemes, cycles lead to leaks.
-// - Each smart pointer is actually two pointers (8 bytes instead of 4).
-// - Every time a pointer is released, the entire list of pointers to that
-//   object is traversed.  This class is therefore NOT SUITABLE when there
-//   will often be more than two or three pointers to a particular object.
-// - References are only tracked as long as linked_ptr<> objects are copied.
-//   If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS
-//   will happen (double deletion).
-//
-// Note: If you use an incomplete type with linked_ptr<>, the class
-// *containing* linked_ptr<> must have a constructor and destructor (even
-// if they do nothing!).
-//
-// Thread Safety:
-//   A linked_ptr is NOT thread safe. Copying a linked_ptr object is
-//   effectively a read-write operation.
-//
-// Alternative: to linked_ptr is shared_ptr, which
-//  - is also two pointers in size (8 bytes for 32 bit addresses)
-//  - is thread safe for copying and deletion
-//  - supports weak_ptrs
-
-#ifndef BASE_MEMORY_LINKED_PTR_H_
-#define BASE_MEMORY_LINKED_PTR_H_
-
-#include "base/logging.h"  // for CHECK macros
-
-// This is used internally by all instances of linked_ptr<>.  It needs to be
-// a non-template class because different types of linked_ptr<> can refer to
-// the same object (linked_ptr<Superclass>(obj) vs linked_ptr<Subclass>(obj)).
-// So, it needs to be possible for different types of linked_ptr to participate
-// in the same circular linked list, so we need a single class type here.
-//
-// DO NOT USE THIS CLASS DIRECTLY YOURSELF.  Use linked_ptr<T>.
-class linked_ptr_internal {
- public:
-  // Create a new circle that includes only this instance.
-  void join_new() {
-    next_ = this;
-  }
-
-  // Join an existing circle.
-  void join(linked_ptr_internal const* ptr) {
-    next_ = ptr->next_;
-    ptr->next_ = this;
-  }
-
-  // Leave whatever circle we're part of.  Returns true iff we were the
-  // last member of the circle.  Once this is done, you can join() another.
-  bool depart() {
-    if (next_ == this) return true;
-    linked_ptr_internal const* p = next_;
-    while (p->next_ != this) p = p->next_;
-    p->next_ = next_;
-    return false;
-  }
-
- private:
-  mutable linked_ptr_internal const* next_;
-};
-
-// TODO(http://crbug.com/556939): DEPRECATED: Use unique_ptr instead (now that
-// we have support for moveable types inside STL containers).
-template <typename T>
-class linked_ptr {
- public:
-  typedef T element_type;
-
-  // Take over ownership of a raw pointer.  This should happen as soon as
-  // possible after the object is created.
-  explicit linked_ptr(T* ptr = NULL) { capture(ptr); }
-  ~linked_ptr() { depart(); }
-
-  // Copy an existing linked_ptr<>, adding ourselves to the list of references.
-  template <typename U> linked_ptr(linked_ptr<U> const& ptr) { copy(&ptr); }
-
-  linked_ptr(linked_ptr const& ptr) {
-    DCHECK_NE(&ptr, this);
-    copy(&ptr);
-  }
-
-  // Assignment releases the old value and acquires the new.
-  template <typename U> linked_ptr& operator=(linked_ptr<U> const& ptr) {
-    depart();
-    copy(&ptr);
-    return *this;
-  }
-
-  linked_ptr& operator=(linked_ptr const& ptr) {
-    if (&ptr != this) {
-      depart();
-      copy(&ptr);
-    }
-    return *this;
-  }
-
-  // Smart pointer members.
-  void reset(T* ptr = NULL) {
-    depart();
-    capture(ptr);
-  }
-  T* get() const { return value_; }
-  T* operator->() const { return value_; }
-  T& operator*() const { return *value_; }
-  // Release ownership of the pointed object and returns it.
-  // Sole ownership by this linked_ptr object is required.
-  T* release() {
-    bool last = link_.depart();
-    CHECK(last);
-    T* v = value_;
-    value_ = NULL;
-    return v;
-  }
-
-  bool operator==(const T* p) const { return value_ == p; }
-  bool operator!=(const T* p) const { return value_ != p; }
-  template <typename U>
-  bool operator==(linked_ptr<U> const& ptr) const {
-    return value_ == ptr.get();
-  }
-  template <typename U>
-  bool operator!=(linked_ptr<U> const& ptr) const {
-    return value_ != ptr.get();
-  }
-
- private:
-  template <typename U>
-  friend class linked_ptr;
-
-  T* value_;
-  linked_ptr_internal link_;
-
-  void depart() {
-    if (link_.depart()) delete value_;
-  }
-
-  void capture(T* ptr) {
-    value_ = ptr;
-    link_.join_new();
-  }
-
-  template <typename U> void copy(linked_ptr<U> const* ptr) {
-    value_ = ptr->get();
-    if (value_)
-      link_.join(&ptr->link_);
-    else
-      link_.join_new();
-  }
-};
-
-template<typename T> inline
-bool operator==(T* ptr, const linked_ptr<T>& x) {
-  return ptr == x.get();
-}
-
-template<typename T> inline
-bool operator!=(T* ptr, const linked_ptr<T>& x) {
-  return ptr != x.get();
-}
-
-// A function to convert T* into linked_ptr<T>
-// Doing e.g. make_linked_ptr(new FooBarBaz<type>(arg)) is a shorter notation
-// for linked_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg))
-template <typename T>
-linked_ptr<T> make_linked_ptr(T* ptr) {
-  return linked_ptr<T>(ptr);
-}
-
-#endif  // BASE_MEMORY_LINKED_PTR_H_
diff --git a/base/memory/memory_coordinator_client.cc b/base/memory/memory_coordinator_client.cc
deleted file mode 100644
index 7fa6232..0000000
--- a/base/memory/memory_coordinator_client.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2016 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/memory_coordinator_client.h"
-
-#include "base/logging.h"
-
-namespace base {
-
-const char* MemoryStateToString(MemoryState state) {
-  switch (state) {
-    case MemoryState::UNKNOWN:
-      return "unknown";
-    case MemoryState::NORMAL:
-      return "normal";
-    case MemoryState::THROTTLED:
-      return "throttled";
-    case MemoryState::SUSPENDED:
-      return "suspended";
-    default:
-      NOTREACHED();
-  }
-  return "";
-}
-
-}  // namespace base
diff --git a/base/memory/memory_coordinator_client.h b/base/memory/memory_coordinator_client.h
deleted file mode 100644
index 804f0a6..0000000
--- a/base/memory/memory_coordinator_client.h
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2016 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.
-
-#ifndef BASE_MEMORY_MEMORY_COORDINATOR_CLIENT_H_
-#define BASE_MEMORY_MEMORY_COORDINATOR_CLIENT_H_
-
-#include "base/base_export.h"
-
-namespace base {
-
-// OVERVIEW:
-//
-// MemoryCoordinatorClient is an interface which a component can implement to
-// adjust "future allocation" and "existing allocation". For "future allocation"
-// it provides a callback to observe memory state changes, and for "existing
-// allocation" it provides a callback to purge memory.
-//
-// Unlike MemoryPressureListener, memory state changes are stateful. State
-// transitions are throttled to avoid thrashing; the exact throttling period is
-// platform dependent, but will be at least 5-10 seconds. When a state change
-// notification is dispatched, clients are expected to update their allocation
-// policies (e.g. setting cache limit) that persist for the duration of the
-// memory state. Note that clients aren't expected to free up memory on memory
-// state changes. Clients should wait for a separate purge request to free up
-// memory. Purging requests will be throttled as well.
-
-// MemoryState is an indicator that processes can use to guide their memory
-// allocation policies. For example, a process that receives the throttled
-// state can use that as as signal to decrease memory cache limits.
-// NOTE: This enum is used to back an UMA histogram, and therefore should be
-// treated as append-only.
-enum class MemoryState : int {
-  // The state is unknown.
-  UNKNOWN = -1,
-  // No memory constraints.
-  NORMAL = 0,
-  // Running and interactive but memory allocation should be throttled.
-  // Clients should set lower budget for any memory that is used as an
-  // optimization but that is not necessary for the process to run.
-  // (e.g. caches)
-  THROTTLED = 1,
-  // Still resident in memory but core processing logic has been suspended.
-  // In most cases, OnPurgeMemory() will be called before entering this state.
-  SUSPENDED = 2,
-};
-
-const int kMemoryStateMax = static_cast<int>(MemoryState::SUSPENDED) + 1;
-
-// Returns a string representation of MemoryState.
-BASE_EXPORT const char* MemoryStateToString(MemoryState state);
-
-// This is an interface for components which can respond to memory status
-// changes. An initial state is NORMAL. See MemoryCoordinatorClientRegistry for
-// threading guarantees and ownership management.
-class BASE_EXPORT MemoryCoordinatorClient {
- public:
-  // Called when memory state has changed. Any transition can occur except for
-  // UNKNOWN. General guidelines are:
-  //  * NORMAL:    Restore the default settings for memory allocation/usage if
-  //               it has changed.
-  //  * THROTTLED: Use smaller limits for future memory allocations. You don't
-  //               need to take any action on existing allocations.
-  //  * SUSPENDED: Use much smaller limits for future memory allocations. You
-  //               don't need to take any action on existing allocations.
-  virtual void OnMemoryStateChange(MemoryState state) {}
-
-  // Called to purge memory.
-  // This callback should free up any memory that is used as an optimization, or
-  // any memory whose contents can be reproduced.
-  virtual void OnPurgeMemory() {}
-
- protected:
-  virtual ~MemoryCoordinatorClient() = default;
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_MEMORY_COORDINATOR_CLIENT_H_
diff --git a/base/memory/memory_coordinator_client_registry.cc b/base/memory/memory_coordinator_client_registry.cc
deleted file mode 100644
index 45b4a7f..0000000
--- a/base/memory/memory_coordinator_client_registry.cc
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2016 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/memory_coordinator_client_registry.h"
-
-namespace base {
-
-// static
-MemoryCoordinatorClientRegistry*
-MemoryCoordinatorClientRegistry::GetInstance() {
-  return Singleton<
-      MemoryCoordinatorClientRegistry,
-      LeakySingletonTraits<MemoryCoordinatorClientRegistry>>::get();
-}
-
-MemoryCoordinatorClientRegistry::MemoryCoordinatorClientRegistry()
-    : clients_(new ClientList) {}
-
-MemoryCoordinatorClientRegistry::~MemoryCoordinatorClientRegistry() = default;
-
-void MemoryCoordinatorClientRegistry::Register(
-    MemoryCoordinatorClient* client) {
-  clients_->AddObserver(client);
-}
-
-void MemoryCoordinatorClientRegistry::Unregister(
-    MemoryCoordinatorClient* client) {
-  clients_->RemoveObserver(client);
-}
-
-void MemoryCoordinatorClientRegistry::Notify(MemoryState state) {
-  clients_->Notify(FROM_HERE,
-                   &base::MemoryCoordinatorClient::OnMemoryStateChange, state);
-}
-
-void MemoryCoordinatorClientRegistry::PurgeMemory() {
-  clients_->Notify(FROM_HERE, &base::MemoryCoordinatorClient::OnPurgeMemory);
-}
-
-}  // namespace base
diff --git a/base/memory/memory_coordinator_client_registry.h b/base/memory/memory_coordinator_client_registry.h
deleted file mode 100644
index e2c81b7..0000000
--- a/base/memory/memory_coordinator_client_registry.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2016 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.
-
-#ifndef BASE_MEMORY_MEMORY_CLIENT_REGISTRY_H_
-#define BASE_MEMORY_MEMORY_CLIENT_REGISTRY_H_
-
-#include "base/base_export.h"
-#include "base/memory/memory_coordinator_client.h"
-#include "base/memory/singleton.h"
-#include "base/observer_list_threadsafe.h"
-
-namespace base {
-
-// MemoryCoordinatorClientRegistry is the registry of MemoryCoordinatorClients.
-// This class manages clients and provides a way to notify memory state changes
-// to clients, but this isn't responsible to determine how/when to change
-// memory states.
-//
-// Threading guarantees:
-// This class uses ObserverListThreadsafe internally, which means that
-//  * Registering/unregistering callbacks are thread-safe.
-//  * Callbacks are invoked on the same thread on which they are registered.
-// See base/observer_list_threadsafe.h for reference.
-//
-// Ownership management:
-// This class doesn't take the ownership of clients. Clients must be
-// unregistered before they are destroyed.
-class BASE_EXPORT MemoryCoordinatorClientRegistry {
- public:
-  static MemoryCoordinatorClientRegistry* GetInstance();
-
-  ~MemoryCoordinatorClientRegistry();
-
-  // Registers/unregisters a client. Does not take ownership of client.
-  void Register(MemoryCoordinatorClient* client);
-  void Unregister(MemoryCoordinatorClient* client);
-
-  // Notify clients of a memory state change.
-  void Notify(MemoryState state);
-
-  // Requests purging memory.
-  void PurgeMemory();
-
- private:
-  friend struct DefaultSingletonTraits<MemoryCoordinatorClientRegistry>;
-
-  MemoryCoordinatorClientRegistry();
-
-  using ClientList = ObserverListThreadSafe<MemoryCoordinatorClient>;
-  scoped_refptr<ClientList> clients_;
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_MEMORY_CLIENT_REGISTRY_H_
diff --git a/base/memory/memory_coordinator_proxy.cc b/base/memory/memory_coordinator_proxy.cc
deleted file mode 100644
index 4e22fe0..0000000
--- a/base/memory/memory_coordinator_proxy.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2016 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/memory_coordinator_proxy.h"
-
-namespace base {
-
-namespace {
-
-MemoryCoordinator* g_memory_coordinator = nullptr;
-
-}  // namespace
-
-MemoryCoordinatorProxy::MemoryCoordinatorProxy() = default;
-
-MemoryCoordinatorProxy::~MemoryCoordinatorProxy() = default;
-
-// static
-MemoryCoordinatorProxy* MemoryCoordinatorProxy::GetInstance() {
-  return Singleton<base::MemoryCoordinatorProxy>::get();
-}
-
-// static
-void MemoryCoordinatorProxy::SetMemoryCoordinator(
-    MemoryCoordinator* coordinator) {
-  DCHECK(!g_memory_coordinator || !coordinator);
-  g_memory_coordinator = coordinator;
-}
-
-MemoryState MemoryCoordinatorProxy::GetCurrentMemoryState() const {
-  if (!g_memory_coordinator)
-    return MemoryState::NORMAL;
-  return g_memory_coordinator->GetCurrentMemoryState();
-}
-
-}  // namespace base
diff --git a/base/memory/memory_coordinator_proxy.h b/base/memory/memory_coordinator_proxy.h
deleted file mode 100644
index b6e7b3f..0000000
--- a/base/memory/memory_coordinator_proxy.h
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2016 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.
-
-#ifndef BASE_MEMORY_MEMORY_COORDINATOR_PROXY_H_
-#define BASE_MEMORY_MEMORY_COORDINATOR_PROXY_H_
-
-#include "base/base_export.h"
-#include "base/callback.h"
-#include "base/memory/memory_coordinator_client.h"
-#include "base/memory/singleton.h"
-
-namespace base {
-
-// The MemoryCoordinator interface. See comments in MemoryCoordinatorProxy for
-// method descriptions.
-class BASE_EXPORT MemoryCoordinator {
- public:
-  virtual ~MemoryCoordinator() = default;
-
-  virtual MemoryState GetCurrentMemoryState() const = 0;
-};
-
-// The proxy of MemoryCoordinator to be accessed from components that are not
-// in content/browser e.g. net.
-class BASE_EXPORT MemoryCoordinatorProxy {
- public:
-  static MemoryCoordinatorProxy* GetInstance();
-
-  // Sets an implementation of MemoryCoordinator. MemoryCoordinatorProxy doesn't
-  // take the ownership of |coordinator|. It must outlive this proxy.
-  // This should be called before any components starts using this proxy.
-  static void SetMemoryCoordinator(MemoryCoordinator* coordinator);
-
-  // Returns the current memory state.
-  MemoryState GetCurrentMemoryState() const;
-
- private:
-  friend struct base::DefaultSingletonTraits<MemoryCoordinatorProxy>;
-
-  MemoryCoordinatorProxy();
-  virtual ~MemoryCoordinatorProxy();
-
-  DISALLOW_COPY_AND_ASSIGN(MemoryCoordinatorProxy);
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_MEMORY_COORDINATOR_PROXY_H_
diff --git a/base/memory/memory_pressure_listener.cc b/base/memory/memory_pressure_listener.cc
deleted file mode 100644
index 3768283..0000000
--- a/base/memory/memory_pressure_listener.cc
+++ /dev/null
@@ -1,128 +0,0 @@
-// 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/memory_pressure_listener.h"
-
-#include "base/observer_list_threadsafe.h"
-
-namespace base {
-
-namespace {
-
-// This class is thread safe and internally synchronized.
-class MemoryPressureObserver {
- public:
-  // There is at most one MemoryPressureObserver and it is never deleted.
-  ~MemoryPressureObserver() = delete;
-
-  void AddObserver(MemoryPressureListener* listener, bool sync) {
-    async_observers_->AddObserver(listener);
-    if (sync) {
-      AutoLock lock(sync_observers_lock_);
-      sync_observers_.AddObserver(listener);
-    }
-  }
-
-  void RemoveObserver(MemoryPressureListener* listener) {
-    async_observers_->RemoveObserver(listener);
-    AutoLock lock(sync_observers_lock_);
-    sync_observers_.RemoveObserver(listener);
-  }
-
-  void Notify(
-      MemoryPressureListener::MemoryPressureLevel memory_pressure_level) {
-    async_observers_->Notify(FROM_HERE, &MemoryPressureListener::Notify,
-                             memory_pressure_level);
-    AutoLock lock(sync_observers_lock_);
-    for (auto& observer : sync_observers_)
-      observer.SyncNotify(memory_pressure_level);
-  }
-
- private:
-  const scoped_refptr<ObserverListThreadSafe<MemoryPressureListener>>
-      async_observers_ = base::MakeRefCounted<
-          ObserverListThreadSafe<MemoryPressureListener>>();
-  ObserverList<MemoryPressureListener> sync_observers_;
-  Lock sync_observers_lock_;
-};
-
-// Gets the shared MemoryPressureObserver singleton instance.
-MemoryPressureObserver* GetMemoryPressureObserver() {
-  static auto* const observer = new MemoryPressureObserver();
-  return observer;
-}
-
-subtle::Atomic32 g_notifications_suppressed = 0;
-
-}  // namespace
-
-MemoryPressureListener::MemoryPressureListener(
-    const MemoryPressureListener::MemoryPressureCallback& callback)
-    : callback_(callback) {
-  GetMemoryPressureObserver()->AddObserver(this, false);
-}
-
-MemoryPressureListener::MemoryPressureListener(
-    const MemoryPressureListener::MemoryPressureCallback& callback,
-    const MemoryPressureListener::SyncMemoryPressureCallback&
-        sync_memory_pressure_callback)
-    : callback_(callback),
-      sync_memory_pressure_callback_(sync_memory_pressure_callback) {
-  GetMemoryPressureObserver()->AddObserver(this, true);
-}
-
-MemoryPressureListener::~MemoryPressureListener() {
-  GetMemoryPressureObserver()->RemoveObserver(this);
-}
-
-void MemoryPressureListener::Notify(MemoryPressureLevel memory_pressure_level) {
-  callback_.Run(memory_pressure_level);
-}
-
-void MemoryPressureListener::SyncNotify(
-    MemoryPressureLevel memory_pressure_level) {
-  if (!sync_memory_pressure_callback_.is_null()) {
-    sync_memory_pressure_callback_.Run(memory_pressure_level);
-  }
-}
-
-// static
-void MemoryPressureListener::NotifyMemoryPressure(
-    MemoryPressureLevel memory_pressure_level) {
-  DCHECK_NE(memory_pressure_level, MEMORY_PRESSURE_LEVEL_NONE);
-  TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("memory-infra"),
-                       "MemoryPressureListener::NotifyMemoryPressure",
-                       TRACE_EVENT_SCOPE_THREAD, "level",
-                       memory_pressure_level);
-  if (AreNotificationsSuppressed())
-    return;
-  DoNotifyMemoryPressure(memory_pressure_level);
-}
-
-// static
-bool MemoryPressureListener::AreNotificationsSuppressed() {
-  return subtle::Acquire_Load(&g_notifications_suppressed) == 1;
-}
-
-// static
-void MemoryPressureListener::SetNotificationsSuppressed(bool suppress) {
-  subtle::Release_Store(&g_notifications_suppressed, suppress ? 1 : 0);
-}
-
-// static
-void MemoryPressureListener::SimulatePressureNotification(
-    MemoryPressureLevel memory_pressure_level) {
-  // Notify all listeners even if regular pressure notifications are suppressed.
-  DoNotifyMemoryPressure(memory_pressure_level);
-}
-
-// static
-void MemoryPressureListener::DoNotifyMemoryPressure(
-    MemoryPressureLevel memory_pressure_level) {
-  DCHECK_NE(memory_pressure_level, MEMORY_PRESSURE_LEVEL_NONE);
-
-  GetMemoryPressureObserver()->Notify(memory_pressure_level);
-}
-
-}  // namespace base
diff --git a/base/memory/memory_pressure_listener.h b/base/memory/memory_pressure_listener.h
deleted file mode 100644
index 7e97010..0000000
--- a/base/memory/memory_pressure_listener.h
+++ /dev/null
@@ -1,102 +0,0 @@
-// 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.
-
-// MemoryPressure provides static APIs for handling memory pressure on
-// platforms that have such signals, such as Android and ChromeOS.
-// The app will try to discard buffers that aren't deemed essential (individual
-// modules will implement their own policy).
-
-#ifndef BASE_MEMORY_MEMORY_PRESSURE_LISTENER_H_
-#define BASE_MEMORY_MEMORY_PRESSURE_LISTENER_H_
-
-#include "base/base_export.h"
-#include "base/callback.h"
-#include "base/macros.h"
-
-namespace base {
-
-// To start listening, create a new instance, passing a callback to a
-// function that takes a MemoryPressureLevel parameter. To stop listening,
-// simply delete the listener object. The implementation guarantees
-// that the callback will always be called on the thread that created
-// the listener.
-// Note that even on the same thread, the callback is not guaranteed to be
-// called synchronously within the system memory pressure broadcast.
-// Please see notes in MemoryPressureLevel enum below: some levels are
-// absolutely critical, and if not enough memory is returned to the system,
-// it'll potentially kill the app, and then later the app will have to be
-// cold-started.
-//
-// Example:
-//
-//    void OnMemoryPressure(MemoryPressureLevel memory_pressure_level) {
-//       ...
-//    }
-//
-//    // Start listening.
-//    MemoryPressureListener* my_listener =
-//        new MemoryPressureListener(base::Bind(&OnMemoryPressure));
-//
-//    ...
-//
-//    // Stop listening.
-//    delete my_listener;
-//
-class BASE_EXPORT MemoryPressureListener {
- public:
-  // A Java counterpart will be generated for this enum.
-  // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.base
-  enum MemoryPressureLevel {
-    // No problems, there is enough memory to use. This event is not sent via
-    // callback, but the enum is used in other places to find out the current
-    // state of the system.
-    MEMORY_PRESSURE_LEVEL_NONE,
-
-    // Modules are advised to free buffers that are cheap to re-allocate and not
-    // immediately needed.
-    MEMORY_PRESSURE_LEVEL_MODERATE,
-
-    // At this level, modules are advised to free all possible memory.  The
-    // alternative is to be killed by the system, which means all memory will
-    // have to be re-created, plus the cost of a cold start.
-    MEMORY_PRESSURE_LEVEL_CRITICAL,
-  };
-
-  typedef Callback<void(MemoryPressureLevel)> MemoryPressureCallback;
-  typedef Callback<void(MemoryPressureLevel)> SyncMemoryPressureCallback;
-
-  explicit MemoryPressureListener(
-      const MemoryPressureCallback& memory_pressure_callback);
-  MemoryPressureListener(
-      const MemoryPressureCallback& memory_pressure_callback,
-      const SyncMemoryPressureCallback& sync_memory_pressure_callback);
-
-  ~MemoryPressureListener();
-
-  // Intended for use by the platform specific implementation.
-  static void NotifyMemoryPressure(MemoryPressureLevel memory_pressure_level);
-
-  // These methods should not be used anywhere else but in memory measurement
-  // code, where they are intended to maintain stable conditions across
-  // measurements.
-  static bool AreNotificationsSuppressed();
-  static void SetNotificationsSuppressed(bool suppressed);
-  static void SimulatePressureNotification(
-      MemoryPressureLevel memory_pressure_level);
-
-  void Notify(MemoryPressureLevel memory_pressure_level);
-  void SyncNotify(MemoryPressureLevel memory_pressure_level);
-
- private:
-  static void DoNotifyMemoryPressure(MemoryPressureLevel memory_pressure_level);
-
-  MemoryPressureCallback callback_;
-  SyncMemoryPressureCallback sync_memory_pressure_callback_;
-
-  DISALLOW_COPY_AND_ASSIGN(MemoryPressureListener);
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_MEMORY_PRESSURE_LISTENER_H_
diff --git a/base/memory/memory_pressure_monitor.cc b/base/memory/memory_pressure_monitor.cc
deleted file mode 100644
index ed350b8..0000000
--- a/base/memory/memory_pressure_monitor.cc
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2015 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/memory_pressure_monitor.h"
-
-#include "base/logging.h"
-#include "base/metrics/histogram_macros.h"
-
-namespace base {
-namespace {
-
-MemoryPressureMonitor* g_monitor = nullptr;
-
-// Enumeration of UMA memory pressure levels. This needs to be kept in sync with
-// histograms.xml and the memory pressure levels defined in
-// MemoryPressureListener.
-enum MemoryPressureLevelUMA {
-  UMA_MEMORY_PRESSURE_LEVEL_NONE = 0,
-  UMA_MEMORY_PRESSURE_LEVEL_MODERATE = 1,
-  UMA_MEMORY_PRESSURE_LEVEL_CRITICAL = 2,
-  // This must be the last value in the enum.
-  UMA_MEMORY_PRESSURE_LEVEL_COUNT,
-};
-
-// Converts a memory pressure level to an UMA enumeration value.
-MemoryPressureLevelUMA MemoryPressureLevelToUmaEnumValue(
-    base::MemoryPressureListener::MemoryPressureLevel level) {
-  switch (level) {
-    case MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE:
-      return UMA_MEMORY_PRESSURE_LEVEL_NONE;
-    case MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE:
-      return UMA_MEMORY_PRESSURE_LEVEL_MODERATE;
-    case MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL:
-      return UMA_MEMORY_PRESSURE_LEVEL_CRITICAL;
-  }
-  NOTREACHED();
-  return UMA_MEMORY_PRESSURE_LEVEL_NONE;
-}
-
-}  // namespace
-
-MemoryPressureMonitor::MemoryPressureMonitor() {
-  DCHECK(!g_monitor);
-  g_monitor = this;
-}
-
-MemoryPressureMonitor::~MemoryPressureMonitor() {
-  DCHECK(g_monitor);
-  g_monitor = nullptr;
-}
-
-// static
-MemoryPressureMonitor* MemoryPressureMonitor::Get() {
-  return g_monitor;
-}
-void MemoryPressureMonitor::RecordMemoryPressure(
-    base::MemoryPressureListener::MemoryPressureLevel level,
-    int ticks) {
-  // Use the more primitive STATIC_HISTOGRAM_POINTER_BLOCK macro because the
-  // simple UMA_HISTOGRAM macros don't expose 'AddCount' functionality.
-  STATIC_HISTOGRAM_POINTER_BLOCK(
-      "Memory.PressureLevel",
-      AddCount(MemoryPressureLevelToUmaEnumValue(level), ticks),
-      base::LinearHistogram::FactoryGet(
-          "Memory.PressureLevel", 1, UMA_MEMORY_PRESSURE_LEVEL_COUNT,
-          UMA_MEMORY_PRESSURE_LEVEL_COUNT + 1,
-          base::HistogramBase::kUmaTargetedHistogramFlag));
-}
-
-}  // namespace base
diff --git a/base/memory/memory_pressure_monitor.h b/base/memory/memory_pressure_monitor.h
deleted file mode 100644
index e48244b..0000000
--- a/base/memory/memory_pressure_monitor.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2015 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.
-
-#ifndef BASE_MEMORY_MEMORY_PRESSURE_MONITOR_H_
-#define BASE_MEMORY_MEMORY_PRESSURE_MONITOR_H_
-
-#include "base/base_export.h"
-#include "base/callback.h"
-#include "base/macros.h"
-#include "base/memory/memory_pressure_listener.h"
-
-namespace base {
-
-// TODO(chrisha): Make this a concrete class with per-OS implementations rather
-// than an abstract base class.
-
-// Declares the interface for a MemoryPressureMonitor. There are multiple
-// OS specific implementations of this class. An instance of the memory
-// pressure observer is created at the process level, tracks memory usage, and
-// pushes memory state change notifications to the static function
-// base::MemoryPressureListener::NotifyMemoryPressure. This is turn notifies
-// all MemoryPressureListener instances via a callback.
-class BASE_EXPORT MemoryPressureMonitor {
- public:
-  using MemoryPressureLevel = base::MemoryPressureListener::MemoryPressureLevel;
-  using DispatchCallback = base::Callback<void(MemoryPressureLevel level)>;
-
-  virtual ~MemoryPressureMonitor();
-
-  // Return the singleton MemoryPressureMonitor.
-  static MemoryPressureMonitor* Get();
-
-  // Record memory pressure UMA statistic. A tick is 5 seconds.
-  static void RecordMemoryPressure(MemoryPressureLevel level, int ticks);
-
-  // Returns the currently observed memory pressure.
-  virtual MemoryPressureLevel GetCurrentPressureLevel() = 0;
-
-  // Sets a notification callback. The default callback invokes
-  // base::MemoryPressureListener::NotifyMemoryPressure.
-  virtual void SetDispatchCallback(const DispatchCallback& callback) = 0;
-
- protected:
-  MemoryPressureMonitor();
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(MemoryPressureMonitor);
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_MEMORY_PRESSURE_MONITOR_H_
diff --git a/base/memory/memory_pressure_monitor_chromeos.cc b/base/memory/memory_pressure_monitor_chromeos.cc
deleted file mode 100644
index b4e4b94..0000000
--- a/base/memory/memory_pressure_monitor_chromeos.cc
+++ /dev/null
@@ -1,288 +0,0 @@
-// 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 "base/memory/memory_pressure_monitor_chromeos.h"
-
-#include <fcntl.h>
-#include <sys/select.h>
-
-#include "base/metrics/histogram_macros.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/process/process_metrics.h"
-#include "base/single_thread_task_runner.h"
-#include "base/sys_info.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "base/time/time.h"
-
-namespace base {
-namespace chromeos {
-
-namespace {
-
-// The time between memory pressure checks. While under critical pressure, this
-// is also the timer to repeat cleanup attempts.
-const int kMemoryPressureIntervalMs = 1000;
-
-// The time which should pass between two moderate memory pressure calls.
-const int kModerateMemoryPressureCooldownMs = 10000;
-
-// Number of event polls before the next moderate pressure event can be sent.
-const int kModerateMemoryPressureCooldown =
-    kModerateMemoryPressureCooldownMs / kMemoryPressureIntervalMs;
-
-// Threshold constants to emit pressure events.
-const int kNormalMemoryPressureModerateThresholdPercent = 60;
-const int kNormalMemoryPressureCriticalThresholdPercent = 95;
-const int kAggressiveMemoryPressureModerateThresholdPercent = 35;
-const int kAggressiveMemoryPressureCriticalThresholdPercent = 70;
-
-// The possible state for memory pressure level. The values should be in line
-// with values in MemoryPressureListener::MemoryPressureLevel and should be
-// updated if more memory pressure levels are introduced.
-enum MemoryPressureLevelUMA {
-  MEMORY_PRESSURE_LEVEL_NONE = 0,
-  MEMORY_PRESSURE_LEVEL_MODERATE,
-  MEMORY_PRESSURE_LEVEL_CRITICAL,
-  NUM_MEMORY_PRESSURE_LEVELS
-};
-
-// This is the file that will exist if low memory notification is available
-// on the device.  Whenever it becomes readable, it signals a low memory
-// condition.
-const char kLowMemFile[] = "/dev/chromeos-low-mem";
-
-// Converts a |MemoryPressureThreshold| value into a used memory percentage for
-// the moderate pressure event.
-int GetModerateMemoryThresholdInPercent(
-    MemoryPressureMonitor::MemoryPressureThresholds thresholds) {
-  return thresholds == MemoryPressureMonitor::
-                           THRESHOLD_AGGRESSIVE_CACHE_DISCARD ||
-         thresholds == MemoryPressureMonitor::THRESHOLD_AGGRESSIVE
-             ? kAggressiveMemoryPressureModerateThresholdPercent
-             : kNormalMemoryPressureModerateThresholdPercent;
-}
-
-// Converts a |MemoryPressureThreshold| value into a used memory percentage for
-// the critical pressure event.
-int GetCriticalMemoryThresholdInPercent(
-    MemoryPressureMonitor::MemoryPressureThresholds thresholds) {
-  return thresholds == MemoryPressureMonitor::
-                           THRESHOLD_AGGRESSIVE_TAB_DISCARD ||
-         thresholds == MemoryPressureMonitor::THRESHOLD_AGGRESSIVE
-             ? kAggressiveMemoryPressureCriticalThresholdPercent
-             : kNormalMemoryPressureCriticalThresholdPercent;
-}
-
-// Converts free percent of memory into a memory pressure value.
-MemoryPressureListener::MemoryPressureLevel GetMemoryPressureLevelFromFillLevel(
-    int actual_fill_level,
-    int moderate_threshold,
-    int critical_threshold) {
-  if (actual_fill_level < moderate_threshold)
-    return MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE;
-  return actual_fill_level < critical_threshold
-             ? MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE
-             : MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL;
-}
-
-// This function will be called less than once a second. It will check if
-// the kernel has detected a low memory situation.
-bool IsLowMemoryCondition(int file_descriptor) {
-  fd_set fds;
-  struct timeval tv;
-
-  FD_ZERO(&fds);
-  FD_SET(file_descriptor, &fds);
-
-  tv.tv_sec = 0;
-  tv.tv_usec = 0;
-
-  return HANDLE_EINTR(select(file_descriptor + 1, &fds, NULL, NULL, &tv)) > 0;
-}
-
-}  // namespace
-
-MemoryPressureMonitor::MemoryPressureMonitor(
-    MemoryPressureThresholds thresholds)
-    : current_memory_pressure_level_(
-          MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE),
-      moderate_pressure_repeat_count_(0),
-      seconds_since_reporting_(0),
-      moderate_pressure_threshold_percent_(
-          GetModerateMemoryThresholdInPercent(thresholds)),
-      critical_pressure_threshold_percent_(
-          GetCriticalMemoryThresholdInPercent(thresholds)),
-      low_mem_file_(HANDLE_EINTR(::open(kLowMemFile, O_RDONLY))),
-      dispatch_callback_(
-          base::Bind(&MemoryPressureListener::NotifyMemoryPressure)),
-      weak_ptr_factory_(this) {
-  StartObserving();
-  LOG_IF(ERROR,
-         base::SysInfo::IsRunningOnChromeOS() && !low_mem_file_.is_valid())
-      << "Cannot open kernel listener";
-}
-
-MemoryPressureMonitor::~MemoryPressureMonitor() {
-  StopObserving();
-}
-
-void MemoryPressureMonitor::ScheduleEarlyCheck() {
-  ThreadTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE, BindOnce(&MemoryPressureMonitor::CheckMemoryPressure,
-                          weak_ptr_factory_.GetWeakPtr()));
-}
-
-MemoryPressureListener::MemoryPressureLevel
-MemoryPressureMonitor::GetCurrentPressureLevel() {
-  return current_memory_pressure_level_;
-}
-
-// static
-MemoryPressureMonitor* MemoryPressureMonitor::Get() {
-  return static_cast<MemoryPressureMonitor*>(
-      base::MemoryPressureMonitor::Get());
-}
-
-void MemoryPressureMonitor::StartObserving() {
-  timer_.Start(FROM_HERE,
-               TimeDelta::FromMilliseconds(kMemoryPressureIntervalMs),
-               Bind(&MemoryPressureMonitor::
-                        CheckMemoryPressureAndRecordStatistics,
-                    weak_ptr_factory_.GetWeakPtr()));
-}
-
-void MemoryPressureMonitor::StopObserving() {
-  // If StartObserving failed, StopObserving will still get called.
-  timer_.Stop();
-}
-
-void MemoryPressureMonitor::CheckMemoryPressureAndRecordStatistics() {
-  CheckMemoryPressure();
-  if (seconds_since_reporting_++ == 5) {
-    seconds_since_reporting_ = 0;
-    RecordMemoryPressure(current_memory_pressure_level_, 1);
-  }
-  // Record UMA histogram statistics for the current memory pressure level.
-  // TODO(lgrey): Remove this once there's a usable history for the
-  // "Memory.PressureLevel" statistic
-  MemoryPressureLevelUMA memory_pressure_level_uma(MEMORY_PRESSURE_LEVEL_NONE);
-  switch (current_memory_pressure_level_) {
-    case MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE:
-      memory_pressure_level_uma = MEMORY_PRESSURE_LEVEL_NONE;
-      break;
-    case MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE:
-      memory_pressure_level_uma = MEMORY_PRESSURE_LEVEL_MODERATE;
-      break;
-    case MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL:
-      memory_pressure_level_uma = MEMORY_PRESSURE_LEVEL_CRITICAL;
-      break;
-  }
-
-  UMA_HISTOGRAM_ENUMERATION("ChromeOS.MemoryPressureLevel",
-                            memory_pressure_level_uma,
-                            NUM_MEMORY_PRESSURE_LEVELS);
-}
-
-void MemoryPressureMonitor::CheckMemoryPressure() {
-  MemoryPressureListener::MemoryPressureLevel old_pressure =
-      current_memory_pressure_level_;
-
-  // If we have the kernel low memory observer, we use it's flag instead of our
-  // own computation (for now). Note that in "simulation mode" it can be null.
-  // TODO(skuhne): We need to add code which makes sure that the kernel and this
-  // computation come to similar results and then remove this override again.
-  // TODO(skuhne): Add some testing framework here to see how close the kernel
-  // and the internal functions are.
-  if (low_mem_file_.is_valid() && IsLowMemoryCondition(low_mem_file_.get())) {
-    current_memory_pressure_level_ =
-        MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL;
-  } else {
-    current_memory_pressure_level_ = GetMemoryPressureLevelFromFillLevel(
-        GetUsedMemoryInPercent(),
-        moderate_pressure_threshold_percent_,
-        critical_pressure_threshold_percent_);
-
-    // When listening to the kernel, we ignore the reported memory pressure
-    // level from our own computation and reduce critical to moderate.
-    if (low_mem_file_.is_valid() &&
-        current_memory_pressure_level_ ==
-        MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL) {
-      current_memory_pressure_level_ =
-          MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE;
-    }
-  }
-
-  // In case there is no memory pressure we do not notify.
-  if (current_memory_pressure_level_ ==
-      MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE) {
-    return;
-  }
-  if (old_pressure == current_memory_pressure_level_) {
-    // If the memory pressure is still at the same level, we notify again for a
-    // critical level. In case of a moderate level repeat however, we only send
-    // a notification after a certain time has passed.
-    if (current_memory_pressure_level_ ==
-        MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE &&
-          ++moderate_pressure_repeat_count_ <
-              kModerateMemoryPressureCooldown) {
-      return;
-    }
-  } else if (current_memory_pressure_level_ ==
-               MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE &&
-             old_pressure ==
-               MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL) {
-    // When we reducing the pressure level from critical to moderate, we
-    // restart the timeout and do not send another notification.
-    moderate_pressure_repeat_count_ = 0;
-    return;
-  }
-  moderate_pressure_repeat_count_ = 0;
-  dispatch_callback_.Run(current_memory_pressure_level_);
-}
-
-// Gets the used ChromeOS memory in percent.
-int MemoryPressureMonitor::GetUsedMemoryInPercent() {
-  base::SystemMemoryInfoKB info;
-  if (!base::GetSystemMemoryInfo(&info)) {
-    VLOG(1) << "Cannot determine the free memory of the system.";
-    return 0;
-  }
-  // TODO(skuhne): Instead of adding the kernel memory pressure calculation
-  // logic here, we should have a kernel mechanism similar to the low memory
-  // notifier in ChromeOS which offers multiple pressure states.
-  // To track this, we have crbug.com/381196.
-
-  // The available memory consists of "real" and virtual (z)ram memory.
-  // Since swappable memory uses a non pre-deterministic compression and
-  // the compression creates its own "dynamic" in the system, it gets
-  // de-emphasized by the |kSwapWeight| factor.
-  const int kSwapWeight = 4;
-
-  // The total memory we have is the "real memory" plus the virtual (z)ram.
-  int total_memory = info.total + info.swap_total / kSwapWeight;
-
-  // The kernel internally uses 50MB.
-  const int kMinFileMemory = 50 * 1024;
-
-  // Most file memory can be easily reclaimed.
-  int file_memory = info.active_file + info.inactive_file;
-  // unless it is dirty or it's a minimal portion which is required.
-  file_memory -= info.dirty + kMinFileMemory;
-
-  // Available memory is the sum of free, swap and easy reclaimable memory.
-  int available_memory =
-      info.free + info.swap_free / kSwapWeight + file_memory;
-
-  DCHECK(available_memory < total_memory);
-  int percentage = ((total_memory - available_memory) * 100) / total_memory;
-  return percentage;
-}
-
-void MemoryPressureMonitor::SetDispatchCallback(
-    const DispatchCallback& callback) {
-  dispatch_callback_ = callback;
-}
-
-}  // namespace chromeos
-}  // namespace base
diff --git a/base/memory/memory_pressure_monitor_chromeos.h b/base/memory/memory_pressure_monitor_chromeos.h
deleted file mode 100644
index 563ba85..0000000
--- a/base/memory/memory_pressure_monitor_chromeos.h
+++ /dev/null
@@ -1,128 +0,0 @@
-// 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.
-
-#ifndef BASE_MEMORY_MEMORY_PRESSURE_MONITOR_CHROMEOS_H_
-#define BASE_MEMORY_MEMORY_PRESSURE_MONITOR_CHROMEOS_H_
-
-#include "base/base_export.h"
-#include "base/files/scoped_file.h"
-#include "base/macros.h"
-#include "base/memory/memory_pressure_listener.h"
-#include "base/memory/memory_pressure_monitor.h"
-#include "base/memory/weak_ptr.h"
-#include "base/timer/timer.h"
-
-namespace base {
-namespace chromeos {
-
-class TestMemoryPressureMonitor;
-
-////////////////////////////////////////////////////////////////////////////////
-// MemoryPressureMonitor
-//
-// A class to handle the observation of our free memory. It notifies the
-// MemoryPressureListener of memory fill level changes, so that it can take
-// action to reduce memory resources accordingly.
-//
-class BASE_EXPORT MemoryPressureMonitor : public base::MemoryPressureMonitor {
- public:
-  using GetUsedMemoryInPercentCallback = int (*)();
-
-  // There are two memory pressure events:
-  // MODERATE - which will mainly release caches.
-  // CRITICAL - which will discard tabs.
-  // The |MemoryPressureThresholds| enum selects the strategy of firing these
-  // events: A conservative strategy will keep as much content in memory as
-  // possible (causing the system to swap to zram) and an aggressive strategy
-  // will release memory earlier to avoid swapping.
-  enum MemoryPressureThresholds {
-    // Use the system default.
-    THRESHOLD_DEFAULT = 0,
-    // Try to keep as much content in memory as possible.
-    THRESHOLD_CONSERVATIVE = 1,
-    // Discard caches earlier, allowing to keep more tabs in memory.
-    THRESHOLD_AGGRESSIVE_CACHE_DISCARD = 2,
-    // Discard tabs earlier, allowing the system to get faster.
-    THRESHOLD_AGGRESSIVE_TAB_DISCARD = 3,
-    // Discard caches and tabs earlier to allow the system to be faster.
-    THRESHOLD_AGGRESSIVE = 4
-  };
-
-  explicit MemoryPressureMonitor(MemoryPressureThresholds thresholds);
-  ~MemoryPressureMonitor() override;
-
-  // Redo the memory pressure calculation soon and call again if a critical
-  // memory pressure prevails. Note that this call will trigger an asynchronous
-  // action which gives the system time to release memory back into the pool.
-  void ScheduleEarlyCheck();
-
-  // Get the current memory pressure level.
-  MemoryPressureListener::MemoryPressureLevel GetCurrentPressureLevel()
-      override;
-  void SetDispatchCallback(const DispatchCallback& callback) override;
-
-  // Returns a type-casted version of the current memory pressure monitor. A
-  // simple wrapper to base::MemoryPressureMonitor::Get.
-  static MemoryPressureMonitor* Get();
-
- private:
-  friend TestMemoryPressureMonitor;
-  // Starts observing the memory fill level.
-  // Calls to StartObserving should always be matched with calls to
-  // StopObserving.
-  void StartObserving();
-
-  // Stop observing the memory fill level.
-  // May be safely called if StartObserving has not been called.
-  void StopObserving();
-
-  // The function which gets periodically called to check any changes in the
-  // memory pressure. It will report pressure changes as well as continuous
-  // critical pressure levels.
-  void CheckMemoryPressure();
-
-  // The function periodically checks the memory pressure changes and records
-  // the UMA histogram statistics for the current memory pressure level.
-  void CheckMemoryPressureAndRecordStatistics();
-
-  // Get the memory pressure in percent (virtual for testing).
-  virtual int GetUsedMemoryInPercent();
-
-  // The current memory pressure.
-  base::MemoryPressureListener::MemoryPressureLevel
-      current_memory_pressure_level_;
-
-  // A periodic timer to check for resource pressure changes. This will get
-  // replaced by a kernel triggered event system (see crbug.com/381196).
-  base::RepeatingTimer timer_;
-
-  // To slow down the amount of moderate pressure event calls, this counter
-  // gets used to count the number of events since the last event occured.
-  int moderate_pressure_repeat_count_;
-
-  // The "Memory.PressureLevel" statistic is recorded every
-  // 5 seconds, but the timer to report "ChromeOS.MemoryPressureLevel"
-  // fires every second. This counter is used to allow reporting
-  // "Memory.PressureLevel" correctly without adding another
-  // timer.
-  int seconds_since_reporting_;
-
-  // The thresholds for moderate and critical pressure.
-  const int moderate_pressure_threshold_percent_;
-  const int critical_pressure_threshold_percent_;
-
-  // File descriptor used to detect low memory condition.
-  ScopedFD low_mem_file_;
-
-  DispatchCallback dispatch_callback_;
-
-  base::WeakPtrFactory<MemoryPressureMonitor> weak_ptr_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(MemoryPressureMonitor);
-};
-
-}  // namespace chromeos
-}  // namespace base
-
-#endif  // BASE_MEMORY_MEMORY_PRESSURE_MONITOR_CHROMEOS_H_
diff --git a/base/memory/memory_pressure_monitor_mac.cc b/base/memory/memory_pressure_monitor_mac.cc
deleted file mode 100644
index 678c276..0000000
--- a/base/memory/memory_pressure_monitor_mac.cc
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright 2015 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/memory_pressure_monitor_mac.h"
-
-#include <CoreFoundation/CoreFoundation.h>
-
-#include <dlfcn.h>
-#include <stddef.h>
-#include <sys/sysctl.h>
-
-#include <cmath>
-
-#include "base/bind.h"
-#include "base/logging.h"
-#include "base/mac/mac_util.h"
-
-// Redeclare for partial 10.9 availability.
-DISPATCH_EXPORT const struct dispatch_source_type_s
-    _dispatch_source_type_memorypressure;
-
-namespace {
-static const int kUMATickSize = 5;
-}  // namespace
-
-namespace base {
-namespace mac {
-
-MemoryPressureListener::MemoryPressureLevel
-MemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressureLevel(
-    int mac_memory_pressure_level) {
-  switch (mac_memory_pressure_level) {
-    case DISPATCH_MEMORYPRESSURE_NORMAL:
-      return MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE;
-    case DISPATCH_MEMORYPRESSURE_WARN:
-      return MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE;
-    case DISPATCH_MEMORYPRESSURE_CRITICAL:
-      return MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL;
-  }
-  return MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE;
-}
-
-void MemoryPressureMonitor::OnRunLoopExit(CFRunLoopObserverRef observer,
-                                          CFRunLoopActivity activity,
-                                          void* info) {
-  MemoryPressureMonitor* self = static_cast<MemoryPressureMonitor*>(info);
-  self->UpdatePressureLevelOnRunLoopExit();
-}
-
-MemoryPressureMonitor::MemoryPressureMonitor()
-    : memory_level_event_source_(dispatch_source_create(
-          DISPATCH_SOURCE_TYPE_MEMORYPRESSURE,
-          0,
-          DISPATCH_MEMORYPRESSURE_WARN | DISPATCH_MEMORYPRESSURE_CRITICAL |
-              DISPATCH_MEMORYPRESSURE_NORMAL,
-          dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0))),
-      dispatch_callback_(
-          base::Bind(&MemoryPressureListener::NotifyMemoryPressure)),
-      last_statistic_report_time_(CFAbsoluteTimeGetCurrent()),
-      last_pressure_level_(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE),
-      subtick_seconds_(0) {
-  // Attach an event handler to the memory pressure event source.
-  if (memory_level_event_source_.get()) {
-    dispatch_source_set_event_handler(memory_level_event_source_, ^{
-      OnMemoryPressureChanged(memory_level_event_source_.get(),
-                              dispatch_callback_);
-    });
-
-    // Start monitoring the event source.
-    dispatch_resume(memory_level_event_source_);
-  }
-
-  // Create a CFRunLoopObserver to check the memory pressure at the end of
-  // every pass through the event loop (modulo kUMATickSize).
-  CFRunLoopObserverContext observer_context = {0, this, NULL, NULL, NULL};
-
-  exit_observer_.reset(
-      CFRunLoopObserverCreate(kCFAllocatorDefault, kCFRunLoopExit, true, 0,
-                              OnRunLoopExit, &observer_context));
-
-  CFRunLoopRef run_loop = CFRunLoopGetCurrent();
-  CFRunLoopAddObserver(run_loop, exit_observer_, kCFRunLoopCommonModes);
-  CFRunLoopAddObserver(run_loop, exit_observer_,
-                       kMessageLoopExclusiveRunLoopMode);
-}
-
-MemoryPressureMonitor::~MemoryPressureMonitor() {
-  // Detach from the run loop.
-  CFRunLoopRef run_loop = CFRunLoopGetCurrent();
-  CFRunLoopRemoveObserver(run_loop, exit_observer_, kCFRunLoopCommonModes);
-  CFRunLoopRemoveObserver(run_loop, exit_observer_,
-                          kMessageLoopExclusiveRunLoopMode);
-
-  // Remove the memory pressure event source.
-  if (memory_level_event_source_.get()) {
-    dispatch_source_cancel(memory_level_event_source_);
-  }
-}
-
-int MemoryPressureMonitor::GetMacMemoryPressureLevel() {
-  // Get the raw memory pressure level from macOS.
-  int mac_memory_pressure_level;
-  size_t length = sizeof(int);
-  sysctlbyname("kern.memorystatus_vm_pressure_level",
-               &mac_memory_pressure_level, &length, nullptr, 0);
-
-  return mac_memory_pressure_level;
-}
-
-void MemoryPressureMonitor::UpdatePressureLevel() {
-  // Get the current macOS pressure level and convert to the corresponding
-  // Chrome pressure level.
-  int mac_memory_pressure_level = GetMacMemoryPressureLevel();
-  MemoryPressureListener::MemoryPressureLevel new_pressure_level =
-      MemoryPressureLevelForMacMemoryPressureLevel(mac_memory_pressure_level);
-
-  // Compute the number of "ticks" spent at |last_pressure_level_| (since the
-  // last report sent to UMA).
-  CFTimeInterval now = CFAbsoluteTimeGetCurrent();
-  CFTimeInterval time_since_last_report = now - last_statistic_report_time_;
-  last_statistic_report_time_ = now;
-
-  double accumulated_time = time_since_last_report + subtick_seconds_;
-  int ticks_to_report = static_cast<int>(accumulated_time / kUMATickSize);
-  // Save for later the seconds that didn't make it into a full tick.
-  subtick_seconds_ = std::fmod(accumulated_time, kUMATickSize);
-
-  // Round the tick count up on a pressure level change to ensure we capture it.
-  bool pressure_level_changed = (new_pressure_level != last_pressure_level_);
-  if (pressure_level_changed && ticks_to_report < 1) {
-    ticks_to_report = 1;
-    subtick_seconds_ = 0;
-  }
-
-  // Send elapsed ticks to UMA.
-  if (ticks_to_report >= 1) {
-    RecordMemoryPressure(last_pressure_level_, ticks_to_report);
-  }
-
-  // Save the now-current memory pressure level.
-  last_pressure_level_ = new_pressure_level;
-}
-
-void MemoryPressureMonitor::UpdatePressureLevelOnRunLoopExit() {
-  // Wait until it's time to check the pressure level.
-  CFTimeInterval now = CFAbsoluteTimeGetCurrent();
-  if (now >= next_run_loop_update_time_) {
-    UpdatePressureLevel();
-
-    // Update again in kUMATickSize seconds. We can update at any frequency,
-    // but because we're only checking memory pressure levels for UMA there's
-    // no need to update more frequently than we're keeping statistics on.
-    next_run_loop_update_time_ = now + kUMATickSize - subtick_seconds_;
-  }
-}
-
-// Static.
-int MemoryPressureMonitor::GetSecondsPerUMATick() {
-  return kUMATickSize;
-}
-
-MemoryPressureListener::MemoryPressureLevel
-MemoryPressureMonitor::GetCurrentPressureLevel() {
-  return last_pressure_level_;
-}
-
-void MemoryPressureMonitor::OnMemoryPressureChanged(
-    dispatch_source_s* event_source,
-    const MemoryPressureMonitor::DispatchCallback& dispatch_callback) {
-  // The OS has sent a notification that the memory pressure level has changed.
-  // Go through the normal memory pressure level checking mechanism so that
-  // last_pressure_level_ and UMA get updated to the current value.
-  UpdatePressureLevel();
-
-  // Run the callback that's waiting on memory pressure change notifications.
-  // The convention is to not send notifiations on memory pressure returning to
-  // normal.
-  if (last_pressure_level_ !=
-      MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE)
-    dispatch_callback.Run(last_pressure_level_);
-}
-
-void MemoryPressureMonitor::SetDispatchCallback(
-    const DispatchCallback& callback) {
-  dispatch_callback_ = callback;
-}
-
-}  // namespace mac
-}  // namespace base
diff --git a/base/memory/memory_pressure_monitor_mac.h b/base/memory/memory_pressure_monitor_mac.h
deleted file mode 100644
index b85b6c9..0000000
--- a/base/memory/memory_pressure_monitor_mac.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2015 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.
-
-#ifndef BASE_MEMORY_MEMORY_PRESSURE_MONITOR_MAC_H_
-#define BASE_MEMORY_MEMORY_PRESSURE_MONITOR_MAC_H_
-
-#include <CoreFoundation/CFDate.h>
-#include <dispatch/dispatch.h>
-
-#include "base/base_export.h"
-#include "base/mac/scoped_cftyperef.h"
-#include "base/mac/scoped_dispatch_object.h"
-#include "base/macros.h"
-#include "base/memory/memory_pressure_listener.h"
-#include "base/memory/memory_pressure_monitor.h"
-#include "base/message_loop/message_pump_mac.h"
-
-namespace base {
-namespace mac {
-
-class TestMemoryPressureMonitor;
-
-// Declares the interface for the Mac MemoryPressureMonitor, which reports
-// memory pressure events and status.
-class BASE_EXPORT MemoryPressureMonitor : public base::MemoryPressureMonitor {
- public:
-  MemoryPressureMonitor();
-  ~MemoryPressureMonitor() override;
-
-  // Returns the currently-observed memory pressure.
-  MemoryPressureLevel GetCurrentPressureLevel() override;
-
-  void SetDispatchCallback(const DispatchCallback& callback) override;
-
- private:
-  friend TestMemoryPressureMonitor;
-
-  static MemoryPressureLevel MemoryPressureLevelForMacMemoryPressureLevel(
-      int mac_memory_pressure_level);
-  static void OnRunLoopExit(CFRunLoopObserverRef observer,
-                            CFRunLoopActivity activity,
-                            void* info);
-  // Returns the raw memory pressure level from the macOS. Exposed for
-  // unit testing.
-  virtual int GetMacMemoryPressureLevel();
-
-  // Updates |last_pressure_level_| with the current memory pressure level.
-  void UpdatePressureLevel();
-
-  // Updates |last_pressure_level_| at the end of every run loop pass (modulo
-  // some number of seconds).
-  void UpdatePressureLevelOnRunLoopExit();
-
-  // Run |dispatch_callback| on memory pressure notifications from the OS.
-  void OnMemoryPressureChanged(dispatch_source_s* event_source,
-                               const DispatchCallback& dispatch_callback);
-
-  // Returns the number of seconds per UMA tick (for statistics recording).
-  // Exposed for testing.
-  static int GetSecondsPerUMATick();
-
-  // The dispatch source that generates memory pressure change notifications.
-  ScopedDispatchObject<dispatch_source_t> memory_level_event_source_;
-
-  // The callback to call upon receiving a memory pressure change notification.
-  DispatchCallback dispatch_callback_;
-
-  // Last UMA report time.
-  CFTimeInterval last_statistic_report_time_;
-
-  // Most-recent memory pressure level.
-  MemoryPressureLevel last_pressure_level_;
-
-  // Observer that tracks exits from the main run loop.
-  ScopedCFTypeRef<CFRunLoopObserverRef> exit_observer_;
-
-  // Next time to update the memory pressure level when exiting the run loop.
-  CFTimeInterval next_run_loop_update_time_;
-
-  // Seconds left over from the last UMA tick calculation (to be added to the
-  // next calculation).
-  CFTimeInterval subtick_seconds_;
-
-  DISALLOW_COPY_AND_ASSIGN(MemoryPressureMonitor);
-};
-
-}  // namespace mac
-}  // namespace base
-
-#endif  // BASE_MEMORY_MEMORY_PRESSURE_MONITOR_MAC_H_
diff --git a/base/memory/memory_pressure_monitor_win.cc b/base/memory/memory_pressure_monitor_win.cc
deleted file mode 100644
index 3effe2c..0000000
--- a/base/memory/memory_pressure_monitor_win.cc
+++ /dev/null
@@ -1,233 +0,0 @@
-// Copyright 2015 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/memory_pressure_monitor_win.h"
-
-#include <windows.h>
-
-#include "base/single_thread_task_runner.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "base/time/time.h"
-
-namespace base {
-namespace win {
-
-namespace {
-
-static const DWORDLONG kMBBytes = 1024 * 1024;
-
-}  // namespace
-
-// The following constants have been lifted from similar values in the ChromeOS
-// memory pressure monitor. The values were determined experimentally to ensure
-// sufficient responsiveness of the memory pressure subsystem, and minimal
-// overhead.
-const int MemoryPressureMonitor::kPollingIntervalMs = 5000;
-const int MemoryPressureMonitor::kModeratePressureCooldownMs = 10000;
-const int MemoryPressureMonitor::kModeratePressureCooldownCycles =
-    kModeratePressureCooldownMs / kPollingIntervalMs;
-
-// TODO(chrisha): Explore the following constants further with an experiment.
-
-// A system is considered 'high memory' if it has more than 1.5GB of system
-// memory available for use by the memory manager (not reserved for hardware
-// and drivers). This is a fuzzy version of the ~2GB discussed below.
-const int MemoryPressureMonitor::kLargeMemoryThresholdMb = 1536;
-
-// These are the default thresholds used for systems with < ~2GB of physical
-// memory. Such systems have been observed to always maintain ~100MB of
-// available memory, paging until that is the case. To try to avoid paging a
-// threshold slightly above this is chosen. The moderate threshold is slightly
-// less grounded in reality and chosen as 2.5x critical.
-const int MemoryPressureMonitor::kSmallMemoryDefaultModerateThresholdMb = 500;
-const int MemoryPressureMonitor::kSmallMemoryDefaultCriticalThresholdMb = 200;
-
-// These are the default thresholds used for systems with >= ~2GB of physical
-// memory. Such systems have been observed to always maintain ~300MB of
-// available memory, paging until that is the case.
-const int MemoryPressureMonitor::kLargeMemoryDefaultModerateThresholdMb = 1000;
-const int MemoryPressureMonitor::kLargeMemoryDefaultCriticalThresholdMb = 400;
-
-MemoryPressureMonitor::MemoryPressureMonitor()
-    : moderate_threshold_mb_(0),
-      critical_threshold_mb_(0),
-      current_memory_pressure_level_(
-          MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE),
-      moderate_pressure_repeat_count_(0),
-      dispatch_callback_(
-          base::Bind(&MemoryPressureListener::NotifyMemoryPressure)),
-      weak_ptr_factory_(this) {
-  InferThresholds();
-  StartObserving();
-}
-
-MemoryPressureMonitor::MemoryPressureMonitor(int moderate_threshold_mb,
-                                             int critical_threshold_mb)
-    : moderate_threshold_mb_(moderate_threshold_mb),
-      critical_threshold_mb_(critical_threshold_mb),
-      current_memory_pressure_level_(
-          MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE),
-      moderate_pressure_repeat_count_(0),
-      dispatch_callback_(
-          base::Bind(&MemoryPressureListener::NotifyMemoryPressure)),
-      weak_ptr_factory_(this) {
-  DCHECK_GE(moderate_threshold_mb_, critical_threshold_mb_);
-  DCHECK_LE(0, critical_threshold_mb_);
-  StartObserving();
-}
-
-MemoryPressureMonitor::~MemoryPressureMonitor() {
-  StopObserving();
-}
-
-void MemoryPressureMonitor::CheckMemoryPressureSoon() {
-  DCHECK(thread_checker_.CalledOnValidThread());
-
-  ThreadTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE, Bind(&MemoryPressureMonitor::CheckMemoryPressure,
-                      weak_ptr_factory_.GetWeakPtr()));
-}
-
-MemoryPressureListener::MemoryPressureLevel
-MemoryPressureMonitor::GetCurrentPressureLevel() {
-  return current_memory_pressure_level_;
-}
-
-void MemoryPressureMonitor::InferThresholds() {
-  // Default to a 'high' memory situation, which uses more conservative
-  // thresholds.
-  bool high_memory = true;
-  MEMORYSTATUSEX mem_status = {};
-  if (GetSystemMemoryStatus(&mem_status)) {
-    static const DWORDLONG kLargeMemoryThresholdBytes =
-        static_cast<DWORDLONG>(kLargeMemoryThresholdMb) * kMBBytes;
-    high_memory = mem_status.ullTotalPhys >= kLargeMemoryThresholdBytes;
-  }
-
-  if (high_memory) {
-    moderate_threshold_mb_ = kLargeMemoryDefaultModerateThresholdMb;
-    critical_threshold_mb_ = kLargeMemoryDefaultCriticalThresholdMb;
-  } else {
-    moderate_threshold_mb_ = kSmallMemoryDefaultModerateThresholdMb;
-    critical_threshold_mb_ = kSmallMemoryDefaultCriticalThresholdMb;
-  }
-}
-
-void MemoryPressureMonitor::StartObserving() {
-  DCHECK(thread_checker_.CalledOnValidThread());
-
-  timer_.Start(FROM_HERE,
-               TimeDelta::FromMilliseconds(kPollingIntervalMs),
-               Bind(&MemoryPressureMonitor::
-                        CheckMemoryPressureAndRecordStatistics,
-                    weak_ptr_factory_.GetWeakPtr()));
-}
-
-void MemoryPressureMonitor::StopObserving() {
-  DCHECK(thread_checker_.CalledOnValidThread());
-
-  // If StartObserving failed, StopObserving will still get called.
-  timer_.Stop();
-  weak_ptr_factory_.InvalidateWeakPtrs();
-}
-
-void MemoryPressureMonitor::CheckMemoryPressure() {
-  DCHECK(thread_checker_.CalledOnValidThread());
-
-  // Get the previous pressure level and update the current one.
-  MemoryPressureLevel old_pressure = current_memory_pressure_level_;
-  current_memory_pressure_level_ = CalculateCurrentPressureLevel();
-
-  // |notify| will be set to true if MemoryPressureListeners need to be
-  // notified of a memory pressure level state change.
-  bool notify = false;
-  switch (current_memory_pressure_level_) {
-    case MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE:
-      break;
-
-    case MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE:
-      if (old_pressure != current_memory_pressure_level_) {
-        // This is a new transition to moderate pressure so notify.
-        moderate_pressure_repeat_count_ = 0;
-        notify = true;
-      } else {
-        // Already in moderate pressure, only notify if sustained over the
-        // cooldown period.
-        if (++moderate_pressure_repeat_count_ ==
-                kModeratePressureCooldownCycles) {
-          moderate_pressure_repeat_count_ = 0;
-          notify = true;
-        }
-      }
-      break;
-
-    case MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL:
-      // Always notify of critical pressure levels.
-      notify = true;
-      break;
-  }
-
-  if (!notify)
-    return;
-
-  // Emit a notification of the current memory pressure level. This can only
-  // happen for moderate and critical pressure levels.
-  DCHECK_NE(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE,
-            current_memory_pressure_level_);
-  dispatch_callback_.Run(current_memory_pressure_level_);
-}
-
-void MemoryPressureMonitor::CheckMemoryPressureAndRecordStatistics() {
-  DCHECK(thread_checker_.CalledOnValidThread());
-
-  CheckMemoryPressure();
-
-  RecordMemoryPressure(current_memory_pressure_level_, 1);
-}
-
-MemoryPressureListener::MemoryPressureLevel
-MemoryPressureMonitor::CalculateCurrentPressureLevel() {
-  MEMORYSTATUSEX mem_status = {};
-  if (!GetSystemMemoryStatus(&mem_status))
-    return MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE;
-
-  // How much system memory is actively available for use right now, in MBs.
-  int phys_free = static_cast<int>(mem_status.ullAvailPhys / kMBBytes);
-
-  // TODO(chrisha): This should eventually care about address space pressure,
-  // but the browser process (where this is running) effectively never runs out
-  // of address space. Renderers occasionally do, but it does them no good to
-  // have the browser process monitor address space pressure. Long term,
-  // renderers should run their own address space pressure monitors and act
-  // accordingly, with the browser making cross-process decisions based on
-  // system memory pressure.
-
-  // Determine if the physical memory is under critical memory pressure.
-  if (phys_free <= critical_threshold_mb_)
-    return MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL;
-
-  // Determine if the physical memory is under moderate memory pressure.
-  if (phys_free <= moderate_threshold_mb_)
-    return MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE;
-
-  // No memory pressure was detected.
-  return MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE;
-}
-
-bool MemoryPressureMonitor::GetSystemMemoryStatus(
-    MEMORYSTATUSEX* mem_status) {
-  DCHECK(mem_status != nullptr);
-  mem_status->dwLength = sizeof(*mem_status);
-  if (!::GlobalMemoryStatusEx(mem_status))
-    return false;
-  return true;
-}
-
-void MemoryPressureMonitor::SetDispatchCallback(
-    const DispatchCallback& callback) {
-  dispatch_callback_ = callback;
-}
-
-}  // namespace win
-}  // namespace base
diff --git a/base/memory/memory_pressure_monitor_win.h b/base/memory/memory_pressure_monitor_win.h
deleted file mode 100644
index a65c191..0000000
--- a/base/memory/memory_pressure_monitor_win.h
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2015 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.
-
-#ifndef BASE_MEMORY_MEMORY_PRESSURE_MONITOR_WIN_H_
-#define BASE_MEMORY_MEMORY_PRESSURE_MONITOR_WIN_H_
-
-#include "base/base_export.h"
-#include "base/macros.h"
-#include "base/memory/memory_pressure_listener.h"
-#include "base/memory/memory_pressure_monitor.h"
-#include "base/memory/weak_ptr.h"
-#include "base/threading/thread_checker.h"
-#include "base/timer/timer.h"
-
-// To not pull in windows.h.
-typedef struct _MEMORYSTATUSEX MEMORYSTATUSEX;
-
-namespace base {
-namespace win {
-
-// Windows memory pressure monitor. Because there is no OS provided signal this
-// polls at a low frequency (once per second), and applies internal hysteresis.
-class BASE_EXPORT MemoryPressureMonitor : public base::MemoryPressureMonitor {
- public:
-  // Constants governing the polling and hysteresis behaviour of the observer.
-
-  // The polling interval, in milliseconds. While under critical pressure, this
-  // is also the timer to repeat cleanup attempts.
-  static const int kPollingIntervalMs;
-  // The time which should pass between 2 successive moderate memory pressure
-  // signals, in milliseconds.
-  static const int kModeratePressureCooldownMs;
-  // The number of cycles that should pass between 2 successive moderate memory
-  // pressure signals.
-  static const int kModeratePressureCooldownCycles;
-
-  // Constants governing the memory pressure level detection.
-
-  // The amount of total system memory beyond which a system is considered to be
-  // a large-memory system.
-  static const int kLargeMemoryThresholdMb;
-  // Default minimum free memory thresholds for small-memory systems, in MB.
-  static const int kSmallMemoryDefaultModerateThresholdMb;
-  static const int kSmallMemoryDefaultCriticalThresholdMb;
-  // Default minimum free memory thresholds for large-memory systems, in MB.
-  static const int kLargeMemoryDefaultModerateThresholdMb;
-  static const int kLargeMemoryDefaultCriticalThresholdMb;
-
-  // Default constructor. Will choose thresholds automatically basd on the
-  // actual amount of system memory.
-  MemoryPressureMonitor();
-
-  // Constructor with explicit memory thresholds. These represent the amount of
-  // free memory below which the applicable memory pressure state engages.
-  MemoryPressureMonitor(int moderate_threshold_mb, int critical_threshold_mb);
-
-  ~MemoryPressureMonitor() override;
-
-  // Schedules a memory pressure check to run soon. This must be called on the
-  // same thread where the monitor was instantiated.
-  void CheckMemoryPressureSoon();
-
-  // Get the current memory pressure level. This can be called from any thread.
-  MemoryPressureLevel GetCurrentPressureLevel() override;
-  void SetDispatchCallback(const DispatchCallback& callback) override;
-
-  // Returns the moderate pressure level free memory threshold, in MB.
-  int moderate_threshold_mb() const { return moderate_threshold_mb_; }
-
-  // Returns the critical pressure level free memory threshold, in MB.
-  int critical_threshold_mb() const { return critical_threshold_mb_; }
-
- protected:
-  // Internals are exposed for unittests.
-
-  // Automatically infers threshold values based on system memory. This invokes
-  // GetMemoryStatus so it can be mocked in unittests.
-  void InferThresholds();
-
-  // Starts observing the memory fill level. Calls to StartObserving should
-  // always be matched with calls to StopObserving.
-  void StartObserving();
-
-  // Stop observing the memory fill level. May be safely called if
-  // StartObserving has not been called. Must be called from the same thread on
-  // which the monitor was instantiated.
-  void StopObserving();
-
-  // Checks memory pressure, storing the current level, applying any hysteresis
-  // and emitting memory pressure level change signals as necessary. This
-  // function is called periodically while the monitor is observing memory
-  // pressure. This is split out from CheckMemoryPressureAndRecordStatistics so
-  // that it may be called by CheckMemoryPressureSoon and not invoke UMA
-  // logging. Must be called from the same thread on which the monitor was
-  // instantiated.
-  void CheckMemoryPressure();
-
-  // Wrapper to CheckMemoryPressure that also records the observed memory
-  // pressure level via an UMA enumeration. This is the function that is called
-  // periodically by the timer. Must be called from the same thread on which the
-  // monitor was instantiated.
-  void CheckMemoryPressureAndRecordStatistics();
-
-  // Calculates the current instantaneous memory pressure level. This does not
-  // use any hysteresis and simply returns the result at the current moment. Can
-  // be called on any thread.
-  MemoryPressureLevel CalculateCurrentPressureLevel();
-
-  // Gets system memory status. This is virtual as a unittesting hook. Returns
-  // true if the system call succeeds, false otherwise. Can be called on any
-  // thread.
-  virtual bool GetSystemMemoryStatus(MEMORYSTATUSEX* mem_status);
-
- private:
-  // Threshold amounts of available memory that trigger pressure levels. See
-  // memory_pressure_monitor.cc for a discussion of reasonable values for these.
-  int moderate_threshold_mb_;
-  int critical_threshold_mb_;
-
-  // A periodic timer to check for memory pressure changes.
-  base::RepeatingTimer timer_;
-
-  // The current memory pressure.
-  MemoryPressureLevel current_memory_pressure_level_;
-
-  // To slow down the amount of moderate pressure event calls, this gets used to
-  // count the number of events since the last event occured. This is used by
-  // |CheckMemoryPressure| to apply hysteresis on the raw results of
-  // |CalculateCurrentPressureLevel|.
-  int moderate_pressure_repeat_count_;
-
-  // Ensures that this object is used from a single thread.
-  base::ThreadChecker thread_checker_;
-
-  DispatchCallback dispatch_callback_;
-
-  // Weak pointer factory to ourself used for scheduling calls to
-  // CheckMemoryPressure/CheckMemoryPressureAndRecordStatistics via |timer_|.
-  base::WeakPtrFactory<MemoryPressureMonitor> weak_ptr_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(MemoryPressureMonitor);
-};
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_MEMORY_MEMORY_PRESSURE_MONITOR_WIN_H_
diff --git a/base/memory/platform_shared_memory_region.cc b/base/memory/platform_shared_memory_region.cc
deleted file mode 100644
index c145336..0000000
--- a/base/memory/platform_shared_memory_region.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2018 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/platform_shared_memory_region.h"
-
-#include "base/memory/shared_memory_mapping.h"
-
-namespace base {
-namespace subtle {
-
-// static
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::CreateWritable(
-    size_t size) {
-  return Create(Mode::kWritable, size);
-}
-
-// static
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::CreateUnsafe(
-    size_t size) {
-  return Create(Mode::kUnsafe, size);
-}
-
-PlatformSharedMemoryRegion::PlatformSharedMemoryRegion() = default;
-PlatformSharedMemoryRegion::PlatformSharedMemoryRegion(
-    PlatformSharedMemoryRegion&& other) = default;
-PlatformSharedMemoryRegion& PlatformSharedMemoryRegion::operator=(
-    PlatformSharedMemoryRegion&& other) = default;
-PlatformSharedMemoryRegion::~PlatformSharedMemoryRegion() = default;
-
-PlatformSharedMemoryRegion::ScopedPlatformHandle
-PlatformSharedMemoryRegion::PassPlatformHandle() {
-  return std::move(handle_);
-}
-
-}  // namespace subtle
-}  // namespace base
diff --git a/base/memory/platform_shared_memory_region.h b/base/memory/platform_shared_memory_region.h
deleted file mode 100644
index df4cc4d..0000000
--- a/base/memory/platform_shared_memory_region.h
+++ /dev/null
@@ -1,223 +0,0 @@
-// Copyright 2018 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.
-
-#ifndef BASE_MEMORY_PLATFORM_SHARED_MEMORY_REGION_H_
-#define BASE_MEMORY_PLATFORM_SHARED_MEMORY_REGION_H_
-
-#include <utility>
-
-#include "base/compiler_specific.h"
-#include "base/gtest_prod_util.h"
-#include "base/macros.h"
-#include "base/unguessable_token.h"
-#include "build_config.h"
-
-#if defined(OS_MACOSX) && !defined(OS_IOS)
-#include <mach/mach.h>
-#include "base/mac/scoped_mach_port.h"
-#elif defined(OS_FUCHSIA)
-#include "base/fuchsia/scoped_zx_handle.h"
-#elif defined(OS_WIN)
-#include "base/win/scoped_handle.h"
-#include "base/win/windows_types.h"
-#elif defined(OS_POSIX)
-#include <sys/types.h>
-#include "base/file_descriptor_posix.h"
-#include "base/files/scoped_file.h"
-#endif
-
-namespace base {
-namespace subtle {
-
-#if defined(OS_POSIX) && (!defined(OS_MACOSX) || defined(OS_IOS)) && \
-    !defined(OS_FUCHSIA) && !defined(OS_ANDROID)
-// Helper structs to keep two descriptors on POSIX. It's needed to support
-// ConvertToReadOnly().
-struct BASE_EXPORT FDPair {
-  int fd;
-  int readonly_fd;
-};
-
-struct BASE_EXPORT ScopedFDPair {
-  ScopedFDPair();
-  ScopedFDPair(ScopedFD in_fd, ScopedFD in_readonly_fd);
-  ScopedFDPair(ScopedFDPair&&);
-  ScopedFDPair& operator=(ScopedFDPair&&);
-  ~ScopedFDPair();
-
-  FDPair get() const;
-
-  ScopedFD fd;
-  ScopedFD readonly_fd;
-};
-#endif
-
-// Implementation class for shared memory regions.
-//
-// This class does the following:
-//
-// - Wraps and owns a shared memory region platform handle.
-// - Provides a way to allocate a new region of platform shared memory of given
-//   size.
-// - Provides a way to create mapping of the region in the current process'
-//   address space, under special access-control constraints (see Mode).
-// - Provides methods to help transferring the handle across process boundaries.
-// - Holds a 128-bit unique identifier used to uniquely identify the same
-//   kernel region resource across processes (used for memory tracking).
-// - Has a method to retrieve the region's size in bytes.
-//
-// IMPORTANT NOTE: Users should never use this directly, but
-// ReadOnlySharedMemoryRegion, WritableSharedMemoryRegion or
-// UnsafeSharedMemoryRegion since this is an implementation class.
-class BASE_EXPORT PlatformSharedMemoryRegion {
- public:
-  // Permission mode of the platform handle. Each mode corresponds to one of the
-  // typed shared memory classes:
-  //
-  // * ReadOnlySharedMemoryRegion: A region that can only create read-only
-  // mappings.
-  //
-  // * WritableSharedMemoryRegion: A region that can only create writable
-  // mappings. The region can be demoted to ReadOnlySharedMemoryRegion without
-  // the possibility of promoting back to writable.
-  //
-  // * UnsafeSharedMemoryRegion: A region that can only create writable
-  // mappings. The region cannot be demoted to ReadOnlySharedMemoryRegion.
-  enum class Mode {
-    kReadOnly,  // ReadOnlySharedMemoryRegion
-    kWritable,  // WritableSharedMemoryRegion
-    kUnsafe,    // UnsafeSharedMemoryRegion
-    kMaxValue = kUnsafe
-  };
-
-// Platform-specific shared memory type used by this class.
-#if defined(OS_MACOSX) && !defined(OS_IOS)
-  using PlatformHandle = mach_port_t;
-  using ScopedPlatformHandle = mac::ScopedMachSendRight;
-#elif defined(OS_FUCHSIA)
-  using PlatformHandle = zx_handle_t;
-  using ScopedPlatformHandle = ScopedZxHandle;
-#elif defined(OS_WIN)
-  using PlatformHandle = HANDLE;
-  using ScopedPlatformHandle = win::ScopedHandle;
-#elif defined(OS_ANDROID)
-  using PlatformHandle = int;
-  using ScopedPlatformHandle = ScopedFD;
-#else
-  using PlatformHandle = FDPair;
-  using ScopedPlatformHandle = ScopedFDPair;
-#endif
-
-  // The minimum alignment in bytes that any mapped address produced by Map()
-  // and MapAt() is guaranteed to have.
-  enum { kMapMinimumAlignment = 32 };
-
-  // Creates a new PlatformSharedMemoryRegion with corresponding mode and size.
-  // Creating in kReadOnly mode isn't supported because then there will be no
-  // way to modify memory content.
-  static PlatformSharedMemoryRegion CreateWritable(size_t size);
-  static PlatformSharedMemoryRegion CreateUnsafe(size_t size);
-
-  // Returns a new PlatformSharedMemoryRegion that takes ownership of the
-  // |handle|. All parameters must be taken from another valid
-  // PlatformSharedMemoryRegion instance, e.g. |size| must be equal to the
-  // actual region size as allocated by the kernel.
-  // Closes the |handle| and returns an invalid instance if passed parameters
-  // are invalid.
-  static PlatformSharedMemoryRegion Take(ScopedPlatformHandle handle,
-                                         Mode mode,
-                                         size_t size,
-                                         const UnguessableToken& guid);
-
-  // Default constructor initializes an invalid instance, i.e. an instance that
-  // doesn't wrap any valid platform handle.
-  PlatformSharedMemoryRegion();
-
-  // Move operations are allowed.
-  PlatformSharedMemoryRegion(PlatformSharedMemoryRegion&&);
-  PlatformSharedMemoryRegion& operator=(PlatformSharedMemoryRegion&&);
-
-  // Destructor closes the platform handle. Does nothing if the handle is
-  // invalid.
-  ~PlatformSharedMemoryRegion();
-
-  // Passes ownership of the platform handle to the caller. The current instance
-  // becomes invalid. It's the responsibility of the caller to close the handle.
-  ScopedPlatformHandle PassPlatformHandle() WARN_UNUSED_RESULT;
-
-  // Returns the platform handle. The current instance keeps ownership of this
-  // handle.
-  PlatformHandle GetPlatformHandle() const;
-
-  // Whether the platform handle is valid.
-  bool IsValid() const;
-
-  // Duplicates the platform handle and creates a new PlatformSharedMemoryRegion
-  // with the same |mode_|, |size_| and |guid_| that owns this handle. Returns
-  // invalid region on failure, the current instance remains valid.
-  // Can be called only in kReadOnly and kUnsafe modes, CHECK-fails if is
-  // called in kWritable mode.
-  PlatformSharedMemoryRegion Duplicate() const;
-
-  // Converts the region to read-only. Returns whether the operation succeeded.
-  // Makes the current instance invalid on failure. Can be called only in
-  // kWritable mode, all other modes will CHECK-fail. The object will have
-  // kReadOnly mode after this call on success.
-  bool ConvertToReadOnly();
-#if defined(OS_MACOSX) && !defined(OS_IOS)
-  // Same as above, but |mapped_addr| is used as a hint to avoid additional
-  // mapping of the memory object.
-  // |mapped_addr| must be mapped location of |memory_object_|. If the location
-  // is unknown, |mapped_addr| should be |nullptr|.
-  bool ConvertToReadOnly(void* mapped_addr);
-#endif  // defined(OS_MACOSX) && !defined(OS_IOS)
-
-  // Maps |size| bytes of the shared memory region starting with the given
-  // |offset| into the caller's address space. |offset| must be aligned to value
-  // of |SysInfo::VMAllocationGranularity()|. Fails if requested bytes are out
-  // of the region limits.
-  // Returns true and sets |memory| and |mapped_size| on success, returns false
-  // and leaves output parameters in unspecified state otherwise. The mapped
-  // address is guaranteed to have an alignment of at least
-  // |kMapMinimumAlignment|.
-  bool MapAt(off_t offset,
-             size_t size,
-             void** memory,
-             size_t* mapped_size) const;
-
-  const UnguessableToken& GetGUID() const { return guid_; }
-
-  size_t GetSize() const { return size_; }
-
-  Mode GetMode() const { return mode_; }
-
- private:
-  FRIEND_TEST_ALL_PREFIXES(PlatformSharedMemoryRegionTest,
-                           CreateReadOnlyRegionDeathTest);
-  FRIEND_TEST_ALL_PREFIXES(PlatformSharedMemoryRegionTest,
-                           CheckPlatformHandlePermissionsCorrespondToMode);
-  static PlatformSharedMemoryRegion Create(Mode mode, size_t size);
-
-  static bool CheckPlatformHandlePermissionsCorrespondToMode(
-      PlatformHandle handle,
-      Mode mode,
-      size_t size);
-
-  PlatformSharedMemoryRegion(ScopedPlatformHandle handle,
-                             Mode mode,
-                             size_t size,
-                             const UnguessableToken& guid);
-
-  ScopedPlatformHandle handle_;
-  Mode mode_ = Mode::kReadOnly;
-  size_t size_ = 0;
-  UnguessableToken guid_;
-
-  DISALLOW_COPY_AND_ASSIGN(PlatformSharedMemoryRegion);
-};
-
-}  // namespace subtle
-}  // namespace base
-
-#endif  // BASE_MEMORY_PLATFORM_SHARED_MEMORY_REGION_H_
diff --git a/base/memory/platform_shared_memory_region_fuchsia.cc b/base/memory/platform_shared_memory_region_fuchsia.cc
deleted file mode 100644
index 5a75845..0000000
--- a/base/memory/platform_shared_memory_region_fuchsia.cc
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright 2018 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/platform_shared_memory_region.h"
-
-#include <zircon/process.h>
-#include <zircon/rights.h>
-#include <zircon/syscalls.h>
-
-#include "base/bits.h"
-#include "base/fuchsia/fuchsia_logging.h"
-#include "base/numerics/checked_math.h"
-#include "base/process/process_metrics.h"
-
-namespace base {
-namespace subtle {
-
-static constexpr int kNoWriteOrExec =
-    ZX_DEFAULT_VMO_RIGHTS &
-    ~(ZX_RIGHT_WRITE | ZX_RIGHT_EXECUTE | ZX_RIGHT_SET_PROPERTY);
-
-// static
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Take(
-    ScopedZxHandle handle,
-    Mode mode,
-    size_t size,
-    const UnguessableToken& guid) {
-  if (!handle.is_valid())
-    return {};
-
-  if (size == 0)
-    return {};
-
-  if (size > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return {};
-
-  CHECK(
-      CheckPlatformHandlePermissionsCorrespondToMode(handle.get(), mode, size));
-
-  return PlatformSharedMemoryRegion(std::move(handle), mode, size, guid);
-}
-
-zx_handle_t PlatformSharedMemoryRegion::GetPlatformHandle() const {
-  return handle_.get();
-}
-
-bool PlatformSharedMemoryRegion::IsValid() const {
-  return handle_.is_valid();
-}
-
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Duplicate() const {
-  if (!IsValid())
-    return {};
-
-  CHECK_NE(mode_, Mode::kWritable)
-      << "Duplicating a writable shared memory region is prohibited";
-
-  ScopedZxHandle duped_handle;
-  zx_status_t status = zx_handle_duplicate(handle_.get(), ZX_RIGHT_SAME_RIGHTS,
-                                           duped_handle.receive());
-  if (status != ZX_OK) {
-    ZX_DLOG(ERROR, status) << "zx_handle_duplicate";
-    return {};
-  }
-
-  return PlatformSharedMemoryRegion(std::move(duped_handle), mode_, size_,
-                                    guid_);
-}
-
-bool PlatformSharedMemoryRegion::ConvertToReadOnly() {
-  if (!IsValid())
-    return false;
-
-  CHECK_EQ(mode_, Mode::kWritable)
-      << "Only writable shared memory region can be converted to read-only";
-
-  ScopedZxHandle old_handle(handle_.release());
-  ScopedZxHandle new_handle;
-  zx_status_t status =
-      zx_handle_replace(old_handle.get(), kNoWriteOrExec, new_handle.receive());
-  if (status != ZX_OK) {
-    ZX_DLOG(ERROR, status) << "zx_handle_replace";
-    return false;
-  }
-  ignore_result(old_handle.release());
-
-  handle_ = std::move(new_handle);
-  mode_ = Mode::kReadOnly;
-  return true;
-}
-
-bool PlatformSharedMemoryRegion::MapAt(off_t offset,
-                                       size_t size,
-                                       void** memory,
-                                       size_t* mapped_size) const {
-  if (!IsValid())
-    return false;
-
-  size_t end_byte;
-  if (!CheckAdd(offset, size).AssignIfValid(&end_byte) || end_byte > size_) {
-    return false;
-  }
-
-  bool write_allowed = mode_ != Mode::kReadOnly;
-  uintptr_t addr;
-  zx_status_t status = zx_vmar_map(
-      zx_vmar_root_self(), 0, handle_.get(), offset, size,
-      ZX_VM_FLAG_PERM_READ | (write_allowed ? ZX_VM_FLAG_PERM_WRITE : 0),
-      &addr);
-  if (status != ZX_OK) {
-    ZX_DLOG(ERROR, status) << "zx_vmar_map";
-    return false;
-  }
-
-  *memory = reinterpret_cast<void*>(addr);
-  *mapped_size = size;
-  DCHECK_EQ(0U,
-            reinterpret_cast<uintptr_t>(*memory) & (kMapMinimumAlignment - 1));
-  return true;
-}
-
-// static
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode,
-                                                              size_t size) {
-  if (size == 0)
-    return {};
-
-  size_t rounded_size = bits::Align(size, GetPageSize());
-  if (rounded_size > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return {};
-
-  CHECK_NE(mode, Mode::kReadOnly) << "Creating a region in read-only mode will "
-                                     "lead to this region being non-modifiable";
-
-  ScopedZxHandle vmo;
-  zx_status_t status = zx_vmo_create(rounded_size, 0, vmo.receive());
-  if (status != ZX_OK) {
-    ZX_DLOG(ERROR, status) << "zx_vmo_create";
-    return {};
-  }
-
-  const int kNoExecFlags = ZX_DEFAULT_VMO_RIGHTS & ~ZX_RIGHT_EXECUTE;
-  ScopedZxHandle old_vmo(std::move(vmo));
-  status = zx_handle_replace(old_vmo.get(), kNoExecFlags, vmo.receive());
-  if (status != ZX_OK) {
-    ZX_DLOG(ERROR, status) << "zx_handle_replace";
-    return {};
-  }
-  ignore_result(old_vmo.release());
-
-  return PlatformSharedMemoryRegion(std::move(vmo), mode, size,
-                                    UnguessableToken::Create());
-}
-
-// static
-bool PlatformSharedMemoryRegion::CheckPlatformHandlePermissionsCorrespondToMode(
-    PlatformHandle handle,
-    Mode mode,
-    size_t size) {
-  zx_info_handle_basic_t basic = {};
-  zx_status_t status = zx_object_get_info(handle, ZX_INFO_HANDLE_BASIC, &basic,
-                                          sizeof(basic), nullptr, nullptr);
-  if (status != ZX_OK) {
-    ZX_DLOG(ERROR, status) << "zx_object_get_info";
-    return false;
-  }
-
-  bool is_read_only = (basic.rights & kNoWriteOrExec) == basic.rights;
-  bool expected_read_only = mode == Mode::kReadOnly;
-
-  if (is_read_only != expected_read_only) {
-    DLOG(ERROR) << "VMO object has wrong access rights: it is"
-                << (is_read_only ? " " : " not ") << "read-only but it should"
-                << (expected_read_only ? " " : " not ") << "be";
-    return false;
-  }
-
-  return true;
-}
-
-PlatformSharedMemoryRegion::PlatformSharedMemoryRegion(
-    ScopedZxHandle handle,
-    Mode mode,
-    size_t size,
-    const UnguessableToken& guid)
-    : handle_(std::move(handle)), mode_(mode), size_(size), guid_(guid) {}
-
-}  // namespace subtle
-}  // namespace base
diff --git a/base/memory/platform_shared_memory_region_mac.cc b/base/memory/platform_shared_memory_region_mac.cc
deleted file mode 100644
index 9cbe92e..0000000
--- a/base/memory/platform_shared_memory_region_mac.cc
+++ /dev/null
@@ -1,222 +0,0 @@
-// Copyright 2018 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/platform_shared_memory_region.h"
-
-#include <mach/mach_vm.h>
-
-#include "base/mac/mach_logging.h"
-#include "base/mac/scoped_mach_vm.h"
-#include "base/numerics/checked_math.h"
-#include "build_config.h"
-
-#if defined(OS_IOS)
-#error "MacOS only - iOS uses platform_shared_memory_region_posix.cc"
-#endif
-
-namespace base {
-namespace subtle {
-
-// static
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Take(
-    mac::ScopedMachSendRight handle,
-    Mode mode,
-    size_t size,
-    const UnguessableToken& guid) {
-  if (!handle.is_valid())
-    return {};
-
-  if (size == 0)
-    return {};
-
-  if (size > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return {};
-
-  CHECK(
-      CheckPlatformHandlePermissionsCorrespondToMode(handle.get(), mode, size));
-
-  return PlatformSharedMemoryRegion(std::move(handle), mode, size, guid);
-}
-
-mach_port_t PlatformSharedMemoryRegion::GetPlatformHandle() const {
-  return handle_.get();
-}
-
-bool PlatformSharedMemoryRegion::IsValid() const {
-  return handle_.is_valid();
-}
-
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Duplicate() const {
-  if (!IsValid())
-    return {};
-
-  CHECK_NE(mode_, Mode::kWritable)
-      << "Duplicating a writable shared memory region is prohibited";
-
-  // Increment the ref count.
-  kern_return_t kr = mach_port_mod_refs(mach_task_self(), handle_.get(),
-                                        MACH_PORT_RIGHT_SEND, 1);
-  if (kr != KERN_SUCCESS) {
-    MACH_DLOG(ERROR, kr) << "mach_port_mod_refs";
-    return {};
-  }
-
-  return PlatformSharedMemoryRegion(mac::ScopedMachSendRight(handle_.get()),
-                                    mode_, size_, guid_);
-}
-
-bool PlatformSharedMemoryRegion::ConvertToReadOnly() {
-  return ConvertToReadOnly(nullptr);
-}
-
-bool PlatformSharedMemoryRegion::ConvertToReadOnly(void* mapped_addr) {
-  if (!IsValid())
-    return false;
-
-  CHECK_EQ(mode_, Mode::kWritable)
-      << "Only writable shared memory region can be converted to read-only";
-
-  mac::ScopedMachSendRight handle_copy(handle_.release());
-
-  void* temp_addr = mapped_addr;
-  mac::ScopedMachVM scoped_memory;
-  if (!temp_addr) {
-    // Intentionally lower current prot and max prot to |VM_PROT_READ|.
-    kern_return_t kr = mach_vm_map(
-        mach_task_self(), reinterpret_cast<mach_vm_address_t*>(&temp_addr),
-        size_, 0, VM_FLAGS_ANYWHERE, handle_copy.get(), 0, FALSE, VM_PROT_READ,
-        VM_PROT_READ, VM_INHERIT_NONE);
-    if (kr != KERN_SUCCESS) {
-      MACH_DLOG(ERROR, kr) << "mach_vm_map";
-      return false;
-    }
-    scoped_memory.reset(reinterpret_cast<vm_address_t>(temp_addr),
-                        mach_vm_round_page(size_));
-  }
-
-  // Make new memory object.
-  memory_object_size_t allocation_size = size_;
-  mac::ScopedMachSendRight named_right;
-  kern_return_t kr = mach_make_memory_entry_64(
-      mach_task_self(), &allocation_size,
-      reinterpret_cast<memory_object_offset_t>(temp_addr), VM_PROT_READ,
-      named_right.receive(), MACH_PORT_NULL);
-  if (kr != KERN_SUCCESS) {
-    MACH_DLOG(ERROR, kr) << "mach_make_memory_entry_64";
-    return false;
-  }
-  DCHECK_GE(allocation_size, size_);
-
-  handle_ = std::move(named_right);
-  mode_ = Mode::kReadOnly;
-  return true;
-}
-
-bool PlatformSharedMemoryRegion::MapAt(off_t offset,
-                                       size_t size,
-                                       void** memory,
-                                       size_t* mapped_size) const {
-  if (!IsValid())
-    return false;
-
-  size_t end_byte;
-  if (!CheckAdd(offset, size).AssignIfValid(&end_byte) || end_byte > size_) {
-    return false;
-  }
-
-  bool write_allowed = mode_ != Mode::kReadOnly;
-  vm_prot_t vm_prot_write = write_allowed ? VM_PROT_WRITE : 0;
-  kern_return_t kr = mach_vm_map(
-      mach_task_self(),
-      reinterpret_cast<mach_vm_address_t*>(memory),  // Output parameter
-      size,
-      0,  // Alignment mask
-      VM_FLAGS_ANYWHERE, handle_.get(), offset,
-      FALSE,                         // Copy
-      VM_PROT_READ | vm_prot_write,  // Current protection
-      VM_PROT_READ | vm_prot_write,  // Maximum protection
-      VM_INHERIT_NONE);
-  if (kr != KERN_SUCCESS) {
-    MACH_DLOG(ERROR, kr) << "mach_vm_map";
-    return false;
-  }
-
-  *mapped_size = size;
-  DCHECK_EQ(0U,
-            reinterpret_cast<uintptr_t>(*memory) & (kMapMinimumAlignment - 1));
-  return true;
-}
-
-// static
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode,
-                                                              size_t size) {
-  if (size == 0)
-    return {};
-
-  if (size > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return {};
-
-  CHECK_NE(mode, Mode::kReadOnly) << "Creating a region in read-only mode will "
-                                     "lead to this region being non-modifiable";
-
-  mach_vm_size_t vm_size = size;
-  mac::ScopedMachSendRight named_right;
-  kern_return_t kr = mach_make_memory_entry_64(
-      mach_task_self(), &vm_size,
-      0,  // Address.
-      MAP_MEM_NAMED_CREATE | VM_PROT_READ | VM_PROT_WRITE,
-      named_right.receive(),
-      MACH_PORT_NULL);  // Parent handle.
-  if (kr != KERN_SUCCESS) {
-    MACH_DLOG(ERROR, kr) << "mach_make_memory_entry_64";
-    return {};
-  }
-  DCHECK_GE(vm_size, size);
-
-  return PlatformSharedMemoryRegion(std::move(named_right), mode, size,
-                                    UnguessableToken::Create());
-}
-
-// static
-bool PlatformSharedMemoryRegion::CheckPlatformHandlePermissionsCorrespondToMode(
-    PlatformHandle handle,
-    Mode mode,
-    size_t size) {
-  mach_vm_address_t temp_addr = 0;
-  kern_return_t kr =
-      mach_vm_map(mach_task_self(), &temp_addr, size, 0, VM_FLAGS_ANYWHERE,
-                  handle, 0, FALSE, VM_PROT_READ | VM_PROT_WRITE,
-                  VM_PROT_READ | VM_PROT_WRITE, VM_INHERIT_NONE);
-  if (kr == KERN_SUCCESS) {
-    kern_return_t kr_deallocate =
-        mach_vm_deallocate(mach_task_self(), temp_addr, size);
-    MACH_DLOG_IF(ERROR, kr_deallocate != KERN_SUCCESS, kr_deallocate)
-        << "mach_vm_deallocate";
-  } else if (kr != KERN_INVALID_RIGHT) {
-    MACH_DLOG(ERROR, kr) << "mach_vm_map";
-    return false;
-  }
-
-  bool is_read_only = kr == KERN_INVALID_RIGHT;
-  bool expected_read_only = mode == Mode::kReadOnly;
-
-  if (is_read_only != expected_read_only) {
-    DLOG(ERROR) << "VM region has a wrong protection mask: it is"
-                << (is_read_only ? " " : " not ") << "read-only but it should"
-                << (expected_read_only ? " " : " not ") << "be";
-    return false;
-  }
-
-  return true;
-}
-
-PlatformSharedMemoryRegion::PlatformSharedMemoryRegion(
-    mac::ScopedMachSendRight handle,
-    Mode mode,
-    size_t size,
-    const UnguessableToken& guid)
-    : handle_(std::move(handle)), mode_(mode), size_(size), guid_(guid) {}
-
-}  // namespace subtle
-}  // namespace base
diff --git a/base/memory/platform_shared_memory_region_posix.cc b/base/memory/platform_shared_memory_region_posix.cc
deleted file mode 100644
index 422cec5..0000000
--- a/base/memory/platform_shared_memory_region_posix.cc
+++ /dev/null
@@ -1,291 +0,0 @@
-// Copyright 2018 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/platform_shared_memory_region.h"
-
-#include <fcntl.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-
-#include "base/files/file_util.h"
-#include "base/numerics/checked_math.h"
-#include "base/threading/thread_restrictions.h"
-#include "build_config.h"
-
-namespace base {
-namespace subtle {
-
-namespace {
-
-struct ScopedPathUnlinkerTraits {
-  static const FilePath* InvalidValue() { return nullptr; }
-
-  static void Free(const FilePath* path) {
-    if (unlink(path->value().c_str()))
-      PLOG(WARNING) << "unlink";
-  }
-};
-
-// Unlinks the FilePath when the object is destroyed.
-using ScopedPathUnlinker =
-    ScopedGeneric<const FilePath*, ScopedPathUnlinkerTraits>;
-
-bool CheckFDAccessMode(int fd, int expected_mode) {
-  int fd_status = fcntl(fd, F_GETFL);
-  if (fd_status == -1) {
-    DPLOG(ERROR) << "fcntl(" << fd << ", F_GETFL) failed";
-    return false;
-  }
-
-  int mode = fd_status & O_ACCMODE;
-  if (mode != expected_mode) {
-    DLOG(ERROR) << "Descriptor access mode (" << mode
-                << ") differs from expected (" << expected_mode << ")";
-    return false;
-  }
-
-  return true;
-}
-
-}  // namespace
-
-ScopedFDPair::ScopedFDPair() = default;
-
-ScopedFDPair::ScopedFDPair(ScopedFDPair&&) = default;
-
-ScopedFDPair& ScopedFDPair::operator=(ScopedFDPair&&) = default;
-
-ScopedFDPair::~ScopedFDPair() = default;
-
-ScopedFDPair::ScopedFDPair(ScopedFD in_fd, ScopedFD in_readonly_fd)
-    : fd(std::move(in_fd)), readonly_fd(std::move(in_readonly_fd)) {}
-
-FDPair ScopedFDPair::get() const {
-  return {fd.get(), readonly_fd.get()};
-}
-
-// static
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Take(
-    ScopedFDPair handle,
-    Mode mode,
-    size_t size,
-    const UnguessableToken& guid) {
-  if (!handle.fd.is_valid())
-    return {};
-
-  if (size == 0)
-    return {};
-
-  if (size > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return {};
-
-  CHECK(
-      CheckPlatformHandlePermissionsCorrespondToMode(handle.get(), mode, size));
-
-  switch (mode) {
-    case Mode::kReadOnly:
-    case Mode::kUnsafe:
-      if (handle.readonly_fd.is_valid()) {
-        handle.readonly_fd.reset();
-        DLOG(WARNING) << "Readonly handle shouldn't be valid for a "
-                         "non-writable memory region; closing";
-      }
-      break;
-    case Mode::kWritable:
-      if (!handle.readonly_fd.is_valid()) {
-        DLOG(ERROR)
-            << "Readonly handle must be valid for writable memory region";
-        return {};
-      }
-      break;
-    default:
-      DLOG(ERROR) << "Invalid permission mode: " << static_cast<int>(mode);
-      return {};
-  }
-
-  return PlatformSharedMemoryRegion(std::move(handle), mode, size, guid);
-}
-
-FDPair PlatformSharedMemoryRegion::GetPlatformHandle() const {
-  return handle_.get();
-}
-
-bool PlatformSharedMemoryRegion::IsValid() const {
-  return handle_.fd.is_valid() &&
-         (mode_ == Mode::kWritable ? handle_.readonly_fd.is_valid() : true);
-}
-
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Duplicate() const {
-  if (!IsValid())
-    return {};
-
-  CHECK_NE(mode_, Mode::kWritable)
-      << "Duplicating a writable shared memory region is prohibited";
-
-  ScopedFD duped_fd(HANDLE_EINTR(dup(handle_.fd.get())));
-  if (!duped_fd.is_valid()) {
-    DPLOG(ERROR) << "dup(" << handle_.fd.get() << ") failed";
-    return {};
-  }
-
-  return PlatformSharedMemoryRegion({std::move(duped_fd), ScopedFD()}, mode_,
-                                    size_, guid_);
-}
-
-bool PlatformSharedMemoryRegion::ConvertToReadOnly() {
-  if (!IsValid())
-    return false;
-
-  CHECK_EQ(mode_, Mode::kWritable)
-      << "Only writable shared memory region can be converted to read-only";
-
-  handle_.fd.reset(handle_.readonly_fd.release());
-  mode_ = Mode::kReadOnly;
-  return true;
-}
-
-bool PlatformSharedMemoryRegion::MapAt(off_t offset,
-                                       size_t size,
-                                       void** memory,
-                                       size_t* mapped_size) const {
-  if (!IsValid())
-    return false;
-
-  size_t end_byte;
-  if (!CheckAdd(offset, size).AssignIfValid(&end_byte) || end_byte > size_) {
-    return false;
-  }
-
-  bool write_allowed = mode_ != Mode::kReadOnly;
-  *memory = mmap(nullptr, size, PROT_READ | (write_allowed ? PROT_WRITE : 0),
-                 MAP_SHARED, handle_.fd.get(), offset);
-
-  bool mmap_succeeded = *memory && *memory != reinterpret_cast<void*>(-1);
-  if (!mmap_succeeded) {
-    DPLOG(ERROR) << "mmap " << handle_.fd.get() << " failed";
-    return false;
-  }
-
-  *mapped_size = size;
-  DCHECK_EQ(0U,
-            reinterpret_cast<uintptr_t>(*memory) & (kMapMinimumAlignment - 1));
-  return true;
-}
-
-// static
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode,
-                                                              size_t size) {
-#if defined(OS_NACL)
-  // Untrusted code can't create descriptors or handles.
-  return {};
-#else
-  if (size == 0)
-    return {};
-
-  if (size > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return {};
-
-  CHECK_NE(mode, Mode::kReadOnly) << "Creating a region in read-only mode will "
-                                     "lead to this region being non-modifiable";
-
-  // This function theoretically can block on the disk, but realistically
-  // the temporary files we create will just go into the buffer cache
-  // and be deleted before they ever make it out to disk.
-  ThreadRestrictions::ScopedAllowIO allow_io;
-
-  // We don't use shm_open() API in order to support the --disable-dev-shm-usage
-  // flag.
-  FilePath directory;
-  if (!GetShmemTempDir(false /* executable */, &directory))
-    return {};
-
-  ScopedFD fd;
-  FilePath path;
-  fd.reset(CreateAndOpenFdForTemporaryFileInDir(directory, &path));
-
-  if (!fd.is_valid()) {
-    PLOG(ERROR) << "Creating shared memory in " << path.value() << " failed";
-    FilePath dir = path.DirName();
-    if (access(dir.value().c_str(), W_OK | X_OK) < 0) {
-      PLOG(ERROR) << "Unable to access(W_OK|X_OK) " << dir.value();
-      if (dir.value() == "/dev/shm") {
-        LOG(FATAL) << "This is frequently caused by incorrect permissions on "
-                   << "/dev/shm.  Try 'sudo chmod 1777 /dev/shm' to fix.";
-      }
-    }
-    return {};
-  }
-
-  // Deleting the file prevents anyone else from mapping it in (making it
-  // private), and prevents the need for cleanup (once the last fd is
-  // closed, it is truly freed).
-  ScopedPathUnlinker path_unlinker(&path);
-
-  ScopedFD readonly_fd;
-  if (mode == Mode::kWritable) {
-    // Also open as readonly so that we can ConvertToReadOnly().
-    readonly_fd.reset(HANDLE_EINTR(open(path.value().c_str(), O_RDONLY)));
-    if (!readonly_fd.is_valid()) {
-      DPLOG(ERROR) << "open(\"" << path.value() << "\", O_RDONLY) failed";
-      return {};
-    }
-  }
-
-  // Get current size.
-  struct stat stat = {};
-  if (fstat(fd.get(), &stat) != 0)
-    return {};
-  const size_t current_size = stat.st_size;
-  if (current_size != size) {
-    if (HANDLE_EINTR(ftruncate(fd.get(), size)) != 0)
-      return {};
-  }
-
-  if (readonly_fd.is_valid()) {
-    struct stat readonly_stat = {};
-    if (fstat(readonly_fd.get(), &readonly_stat))
-      NOTREACHED();
-
-    if (stat.st_dev != readonly_stat.st_dev ||
-        stat.st_ino != readonly_stat.st_ino) {
-      LOG(ERROR) << "Writable and read-only inodes don't match; bailing";
-      return {};
-    }
-  }
-
-  return PlatformSharedMemoryRegion({std::move(fd), std::move(readonly_fd)},
-                                    mode, size, UnguessableToken::Create());
-#endif  // !defined(OS_NACL)
-}
-
-bool PlatformSharedMemoryRegion::CheckPlatformHandlePermissionsCorrespondToMode(
-    PlatformHandle handle,
-    Mode mode,
-    size_t size) {
-  if (!CheckFDAccessMode(handle.fd,
-                         mode == Mode::kReadOnly ? O_RDONLY : O_RDWR)) {
-    return false;
-  }
-
-  if (mode == Mode::kWritable)
-    return CheckFDAccessMode(handle.readonly_fd, O_RDONLY);
-
-  // The second descriptor must be invalid in kReadOnly and kUnsafe modes.
-  if (handle.readonly_fd != -1) {
-    DLOG(ERROR) << "The second descriptor must be invalid";
-    return false;
-  }
-
-  return true;
-}
-
-PlatformSharedMemoryRegion::PlatformSharedMemoryRegion(
-    ScopedFDPair handle,
-    Mode mode,
-    size_t size,
-    const UnguessableToken& guid)
-    : handle_(std::move(handle)), mode_(mode), size_(size), guid_(guid) {}
-
-}  // namespace subtle
-}  // namespace base
diff --git a/base/memory/platform_shared_memory_region_win.cc b/base/memory/platform_shared_memory_region_win.cc
deleted file mode 100644
index b6608da..0000000
--- a/base/memory/platform_shared_memory_region_win.cc
+++ /dev/null
@@ -1,345 +0,0 @@
-// Copyright 2018 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/platform_shared_memory_region.h"
-
-#include <aclapi.h>
-#include <stddef.h>
-#include <stdint.h>
-
-#include "base/allocator/partition_allocator/page_allocator.h"
-#include "base/bits.h"
-#include "base/metrics/histogram_functions.h"
-#include "base/metrics/histogram_macros.h"
-#include "base/numerics/checked_math.h"
-#include "base/process/process_handle.h"
-#include "base/rand_util.h"
-#include "base/strings/stringprintf.h"
-
-namespace base {
-namespace subtle {
-
-namespace {
-
-// Errors that can occur during Shared Memory construction.
-// These match tools/metrics/histograms/histograms.xml.
-// This enum is append-only.
-enum CreateError {
-  SUCCESS = 0,
-  SIZE_ZERO = 1,
-  SIZE_TOO_LARGE = 2,
-  INITIALIZE_ACL_FAILURE = 3,
-  INITIALIZE_SECURITY_DESC_FAILURE = 4,
-  SET_SECURITY_DESC_FAILURE = 5,
-  CREATE_FILE_MAPPING_FAILURE = 6,
-  REDUCE_PERMISSIONS_FAILURE = 7,
-  ALREADY_EXISTS = 8,
-  CREATE_ERROR_LAST = ALREADY_EXISTS
-};
-
-// Emits UMA metrics about encountered errors. Pass zero (0) for |winerror|
-// if there is no associated Windows error.
-void LogError(CreateError error, DWORD winerror) {
-  UMA_HISTOGRAM_ENUMERATION("SharedMemory.CreateError", error,
-                            CREATE_ERROR_LAST + 1);
-  static_assert(ERROR_SUCCESS == 0, "Windows error code changed!");
-  if (winerror != ERROR_SUCCESS)
-    UmaHistogramSparse("SharedMemory.CreateWinError", winerror);
-}
-
-typedef enum _SECTION_INFORMATION_CLASS {
-  SectionBasicInformation,
-} SECTION_INFORMATION_CLASS;
-
-typedef struct _SECTION_BASIC_INFORMATION {
-  PVOID BaseAddress;
-  ULONG Attributes;
-  LARGE_INTEGER Size;
-} SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
-
-typedef ULONG(__stdcall* NtQuerySectionType)(
-    HANDLE SectionHandle,
-    SECTION_INFORMATION_CLASS SectionInformationClass,
-    PVOID SectionInformation,
-    ULONG SectionInformationLength,
-    PULONG ResultLength);
-
-// Returns the length of the memory section starting at the supplied address.
-size_t GetMemorySectionSize(void* address) {
-  MEMORY_BASIC_INFORMATION memory_info;
-  if (!::VirtualQuery(address, &memory_info, sizeof(memory_info)))
-    return 0;
-  return memory_info.RegionSize -
-         (static_cast<char*>(address) -
-          static_cast<char*>(memory_info.AllocationBase));
-}
-
-// Checks if the section object is safe to map. At the moment this just means
-// it's not an image section.
-bool IsSectionSafeToMap(HANDLE handle) {
-  static NtQuerySectionType nt_query_section_func =
-      reinterpret_cast<NtQuerySectionType>(
-          ::GetProcAddress(::GetModuleHandle(L"ntdll.dll"), "NtQuerySection"));
-  DCHECK(nt_query_section_func);
-
-  // The handle must have SECTION_QUERY access for this to succeed.
-  SECTION_BASIC_INFORMATION basic_information = {};
-  ULONG status =
-      nt_query_section_func(handle, SectionBasicInformation, &basic_information,
-                            sizeof(basic_information), nullptr);
-  if (status)
-    return false;
-  return (basic_information.Attributes & SEC_IMAGE) != SEC_IMAGE;
-}
-
-// Returns a HANDLE on success and |nullptr| on failure.
-// This function is similar to CreateFileMapping, but removes the permissions
-// WRITE_DAC, WRITE_OWNER, READ_CONTROL, and DELETE.
-//
-// A newly created file mapping has two sets of permissions. It has access
-// control permissions (WRITE_DAC, WRITE_OWNER, READ_CONTROL, and DELETE) and
-// file permissions (FILE_MAP_READ, FILE_MAP_WRITE, etc.). The Chrome sandbox
-// prevents HANDLEs with the WRITE_DAC permission from being duplicated into
-// unprivileged processes.
-//
-// In order to remove the access control permissions, after being created the
-// handle is duplicated with only the file access permissions.
-HANDLE CreateFileMappingWithReducedPermissions(SECURITY_ATTRIBUTES* sa,
-                                               size_t rounded_size,
-                                               LPCWSTR name) {
-  HANDLE h = CreateFileMapping(INVALID_HANDLE_VALUE, sa, PAGE_READWRITE, 0,
-                               static_cast<DWORD>(rounded_size), name);
-  if (!h) {
-    LogError(CREATE_FILE_MAPPING_FAILURE, GetLastError());
-    return nullptr;
-  }
-
-  HANDLE h2;
-  ProcessHandle process = GetCurrentProcess();
-  BOOL success = ::DuplicateHandle(
-      process, h, process, &h2, FILE_MAP_READ | FILE_MAP_WRITE | SECTION_QUERY,
-      FALSE, 0);
-  BOOL rv = ::CloseHandle(h);
-  DCHECK(rv);
-
-  if (!success) {
-    LogError(REDUCE_PERMISSIONS_FAILURE, GetLastError());
-    return nullptr;
-  }
-
-  return h2;
-}
-
-}  // namespace
-
-// static
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Take(
-    win::ScopedHandle handle,
-    Mode mode,
-    size_t size,
-    const UnguessableToken& guid) {
-  if (!handle.IsValid())
-    return {};
-
-  if (size == 0)
-    return {};
-
-  if (size > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return {};
-
-  if (!IsSectionSafeToMap(handle.Get()))
-    return {};
-
-  CHECK(
-      CheckPlatformHandlePermissionsCorrespondToMode(handle.Get(), mode, size));
-
-  return PlatformSharedMemoryRegion(std::move(handle), mode, size, guid);
-}
-
-HANDLE PlatformSharedMemoryRegion::GetPlatformHandle() const {
-  return handle_.Get();
-}
-
-bool PlatformSharedMemoryRegion::IsValid() const {
-  return handle_.IsValid();
-}
-
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Duplicate() const {
-  if (!IsValid())
-    return {};
-
-  CHECK_NE(mode_, Mode::kWritable)
-      << "Duplicating a writable shared memory region is prohibited";
-
-  HANDLE duped_handle;
-  ProcessHandle process = GetCurrentProcess();
-  BOOL success =
-      ::DuplicateHandle(process, handle_.Get(), process, &duped_handle, 0,
-                        FALSE, DUPLICATE_SAME_ACCESS);
-  if (!success)
-    return {};
-
-  return PlatformSharedMemoryRegion(win::ScopedHandle(duped_handle), mode_,
-                                    size_, guid_);
-}
-
-bool PlatformSharedMemoryRegion::ConvertToReadOnly() {
-  if (!IsValid())
-    return false;
-
-  CHECK_EQ(mode_, Mode::kWritable)
-      << "Only writable shared memory region can be converted to read-only";
-
-  win::ScopedHandle handle_copy(handle_.Take());
-
-  HANDLE duped_handle;
-  ProcessHandle process = GetCurrentProcess();
-  BOOL success =
-      ::DuplicateHandle(process, handle_copy.Get(), process, &duped_handle,
-                        FILE_MAP_READ | SECTION_QUERY, FALSE, 0);
-  if (!success)
-    return false;
-
-  handle_.Set(duped_handle);
-  mode_ = Mode::kReadOnly;
-  return true;
-}
-
-bool PlatformSharedMemoryRegion::MapAt(off_t offset,
-                                       size_t size,
-                                       void** memory,
-                                       size_t* mapped_size) const {
-  if (!IsValid())
-    return false;
-
-  size_t end_byte;
-  if (!CheckAdd(offset, size).AssignIfValid(&end_byte) || end_byte > size_) {
-    return false;
-  }
-
-  bool write_allowed = mode_ != Mode::kReadOnly;
-  // Try to map the shared memory. On the first failure, release any reserved
-  // address space for a single entry.
-  for (int i = 0; i < 2; ++i) {
-    *memory = MapViewOfFile(
-        handle_.Get(), FILE_MAP_READ | (write_allowed ? FILE_MAP_WRITE : 0),
-        static_cast<uint64_t>(offset) >> 32, static_cast<DWORD>(offset), size);
-    if (*memory)
-      break;
-    ReleaseReservation();
-  }
-  if (!*memory) {
-    DPLOG(ERROR) << "Failed executing MapViewOfFile";
-    return false;
-  }
-
-  *mapped_size = GetMemorySectionSize(*memory);
-  DCHECK_EQ(0U,
-            reinterpret_cast<uintptr_t>(*memory) & (kMapMinimumAlignment - 1));
-  return true;
-}
-
-// static
-PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode,
-                                                              size_t size) {
-  // TODO(crbug.com/210609): NaCl forces us to round up 64k here, wasting 32k
-  // per mapping on average.
-  static const size_t kSectionSize = 65536;
-  if (size == 0) {
-    LogError(SIZE_ZERO, 0);
-    return {};
-  }
-
-  size_t rounded_size = bits::Align(size, kSectionSize);
-  if (rounded_size > static_cast<size_t>(std::numeric_limits<int>::max())) {
-    LogError(SIZE_TOO_LARGE, 0);
-    return {};
-  }
-
-  CHECK_NE(mode, Mode::kReadOnly) << "Creating a region in read-only mode will "
-                                     "lead to this region being non-modifiable";
-
-  // Add an empty DACL to enforce anonymous read-only sections.
-  ACL dacl;
-  SECURITY_DESCRIPTOR sd;
-  if (!InitializeAcl(&dacl, sizeof(dacl), ACL_REVISION)) {
-    LogError(INITIALIZE_ACL_FAILURE, GetLastError());
-    return {};
-  }
-  if (!InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION)) {
-    LogError(INITIALIZE_SECURITY_DESC_FAILURE, GetLastError());
-    return {};
-  }
-  if (!SetSecurityDescriptorDacl(&sd, TRUE, &dacl, FALSE)) {
-    LogError(SET_SECURITY_DESC_FAILURE, GetLastError());
-    return {};
-  }
-
-  // Windows ignores DACLs on unnamed shared section. Generate a random name in
-  // order to be able to enforce read-only.
-  uint64_t rand_values[4];
-  RandBytes(&rand_values, sizeof(rand_values));
-  string16 name =
-      StringPrintf(L"CrSharedMem_%016llx%016llx%016llx%016llx", rand_values[0],
-                   rand_values[1], rand_values[2], rand_values[3]);
-
-  SECURITY_ATTRIBUTES sa = {sizeof(sa), &sd, FALSE};
-  // Ask for the file mapping with reduced permisions to avoid passing the
-  // access control permissions granted by default into unpriviledged process.
-  HANDLE h =
-      CreateFileMappingWithReducedPermissions(&sa, rounded_size, name.c_str());
-  if (h == nullptr) {
-    // The error is logged within CreateFileMappingWithReducedPermissions().
-    return {};
-  }
-
-  win::ScopedHandle scoped_h(h);
-  // Check if the shared memory pre-exists.
-  if (GetLastError() == ERROR_ALREADY_EXISTS) {
-    LogError(ALREADY_EXISTS, ERROR_ALREADY_EXISTS);
-    return {};
-  }
-
-  return PlatformSharedMemoryRegion(std::move(scoped_h), mode, size,
-                                    UnguessableToken::Create());
-}
-
-// static
-bool PlatformSharedMemoryRegion::CheckPlatformHandlePermissionsCorrespondToMode(
-    PlatformHandle handle,
-    Mode mode,
-    size_t size) {
-  // Call ::DuplicateHandle() with FILE_MAP_WRITE as a desired access to check
-  // if the |handle| has a write access.
-  ProcessHandle process = GetCurrentProcess();
-  HANDLE duped_handle;
-  BOOL success = ::DuplicateHandle(process, handle, process, &duped_handle,
-                                   FILE_MAP_WRITE, FALSE, 0);
-  if (success) {
-    BOOL rv = ::CloseHandle(duped_handle);
-    DCHECK(rv);
-  }
-
-  bool is_read_only = !success;
-  bool expected_read_only = mode == Mode::kReadOnly;
-
-  if (is_read_only != expected_read_only) {
-    DLOG(ERROR) << "File mapping handle has wrong access rights: it is"
-                << (is_read_only ? " " : " not ") << "read-only but it should"
-                << (expected_read_only ? " " : " not ") << "be";
-    return false;
-  }
-
-  return true;
-}
-
-PlatformSharedMemoryRegion::PlatformSharedMemoryRegion(
-    win::ScopedHandle handle,
-    Mode mode,
-    size_t size,
-    const UnguessableToken& guid)
-    : handle_(std::move(handle)), mode_(mode), size_(size), guid_(guid) {}
-
-}  // namespace subtle
-}  // namespace base
diff --git a/base/memory/protected_memory.cc b/base/memory/protected_memory.cc
deleted file mode 100644
index 157a677..0000000
--- a/base/memory/protected_memory.cc
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 2017 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/protected_memory.h"
-#include "base/synchronization/lock.h"
-
-namespace base {
-
-#if !defined(COMPONENT_BUILD)
-PROTECTED_MEMORY_SECTION int AutoWritableMemory::writers = 0;
-#endif  // !defined(COMPONENT_BUILD)
-
-base::LazyInstance<Lock>::Leaky AutoWritableMemory::writers_lock =
-    LAZY_INSTANCE_INITIALIZER;
-
-}  // namespace base
diff --git a/base/memory/protected_memory.h b/base/memory/protected_memory.h
deleted file mode 100644
index 9f372ca..0000000
--- a/base/memory/protected_memory.h
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright 2017 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.
-
-// Protected memory is memory holding security-sensitive data intended to be
-// left read-only for the majority of its lifetime to avoid being overwritten
-// by attackers. ProtectedMemory is a simple wrapper around platform-specific
-// APIs to set memory read-write and read-only when required. Protected memory
-// should be set read-write for the minimum amount of time required.
-
-// Normally mutable variables are held in read-write memory and constant data
-// is held in read-only memory to ensure it is not accidentally overwritten.
-// In some cases we want to hold mutable variables in read-only memory, except
-// when they are being written to, to ensure that they are not tampered with.
-//
-// ProtectedMemory is a container class intended to hold a single variable in
-// read-only memory, except when explicitly set read-write. The variable can be
-// set read-write by creating a scoped AutoWritableMemory object by calling
-// AutoWritableMemory::Create(), the memory stays writable until the returned
-// object goes out of scope and is destructed. The wrapped variable can be
-// accessed using operator* and operator->.
-//
-// Instances of ProtectedMemory must be declared in the PROTECTED_MEMORY_SECTION
-// and as global variables. Because protected memory variables are globals, the
-// the same rules apply disallowing non-trivial constructors and destructors.
-// Global definitions are required to avoid the linker placing statics in
-// inlinable functions into a comdat section and setting the protected memory
-// section read-write when they are merged.
-//
-// EXAMPLE:
-//
-//  struct Items { void* item1; };
-//  static PROTECTED_MEMORY_SECTION base::ProtectedMemory<Items> items;
-//  void InitializeItems() {
-//    // Explicitly set items read-write before writing to it.
-//    auto writer = base::AutoWritableMemory::Create(items);
-//    items->item1 = /* ... */;
-//    assert(items->item1 != nullptr);
-//    // items is set back to read-only on the destruction of writer
-//  }
-//
-//  using FnPtr = void (*)(void);
-//  PROTECTED_MEMORY_SECTION base::ProtectedMemory<FnPtr> fnPtr;
-//  FnPtr ResolveFnPtr(void) {
-//    // The Initializer nested class is a helper class for creating a static
-//    // initializer for a ProtectedMemory variable. It implicitly sets the
-//    // variable read-write during initialization.
-//    static base::ProtectedMemory<FnPtr>::Initializer I(&fnPtr,
-//      reinterpret_cast<FnPtr>(dlsym(/* ... */)));
-//    return *fnPtr;
-//  }
-
-#ifndef BASE_MEMORY_PROTECTED_MEMORY_H_
-#define BASE_MEMORY_PROTECTED_MEMORY_H_
-
-#include "base/lazy_instance.h"
-#include "base/logging.h"
-#include "base/macros.h"
-#include "base/synchronization/lock.h"
-#include "build_config.h"
-
-#define PROTECTED_MEMORY_ENABLED 1
-
-#if defined(OS_MACOSX) && !defined(OS_IOS)
-// The segment the section is in is defined read-only with a linker flag in
-// build/config/mac/BUILD.gn
-#define PROTECTED_MEMORY_SECTION \
-  __attribute__((section("PROTECTED_MEMORY, protected_memory")))
-extern char __start_protected_memory __asm(
-    "section$start$PROTECTED_MEMORY$protected_memory");
-extern char __stop_protected_memory __asm(
-    "section$end$PROTECTED_MEMORY$protected_memory");
-
-#elif defined(OS_WIN)
-// Define a read-write prot section. The $a, $mem, and $z 'sub-sections' are
-// merged alphabetically so $a and $z are used to define the start and end of
-// the protected memory section, and $mem holds protected variables.
-// (Note: Sections in Portable Executables are equivalent to segments in other
-// executable formats, so this section is mapped into its own pages.)
-#pragma section("prot$a", read, write)
-#pragma section("prot$mem", read, write)
-#pragma section("prot$z", read, write)
-
-// We want the protected memory section to be read-only, not read-write so we
-// instruct the linker to set the section read-only at link time. We do this
-// at link time instead of compile time, because defining the prot section
-// read-only would cause mis-compiles due to optimizations assuming that the
-// section contents are constant.
-#pragma comment(linker, "/SECTION:prot,R")
-
-__declspec(allocate("prot$a")) __declspec(selectany)
-char __start_protected_memory;
-__declspec(allocate("prot$z")) __declspec(selectany)
-char __stop_protected_memory;
-
-#define PROTECTED_MEMORY_SECTION __declspec(allocate("prot$mem"))
-
-#else
-#undef PROTECTED_MEMORY_ENABLED
-#define PROTECTED_MEMORY_ENABLED 0
-#define PROTECTED_MEMORY_SECTION
-#endif
-
-namespace base {
-
-template <typename T>
-class ProtectedMemory {
- public:
-  ProtectedMemory() = default;
-
-  // Expose direct access to the encapsulated variable
-  T& operator*() { return data; }
-  const T& operator*() const { return data; }
-  T* operator->() { return &data; }
-  const T* operator->() const { return &data; }
-
-  // Helper class for creating simple ProtectedMemory static initializers.
-  class Initializer {
-   public:
-    // Defined out-of-line below to break circular definition dependency between
-    // ProtectedMemory and AutoWritableMemory.
-    Initializer(ProtectedMemory<T>* PM, const T& Init);
-
-    DISALLOW_IMPLICIT_CONSTRUCTORS(Initializer);
-  };
-
- private:
-  T data;
-
-  DISALLOW_COPY_AND_ASSIGN(ProtectedMemory);
-};
-
-// DCHECK that the byte at |ptr| is read-only.
-BASE_EXPORT void AssertMemoryIsReadOnly(const void* ptr);
-
-// Abstract out platform-specific methods to get the beginning and end of the
-// PROTECTED_MEMORY_SECTION. ProtectedMemoryEnd returns a pointer to the byte
-// past the end of the PROTECTED_MEMORY_SECTION.
-#if PROTECTED_MEMORY_ENABLED
-constexpr void* ProtectedMemoryStart = &__start_protected_memory;
-constexpr void* ProtectedMemoryEnd = &__stop_protected_memory;
-#endif
-
-#if defined(COMPONENT_BUILD)
-namespace internal {
-
-// For component builds we want to define a separate global writers variable
-// (explained below) in every DSO that includes this header. To do that we use
-// this template to define a global without duplicate symbol errors.
-template <typename T>
-struct DsoSpecific {
-  static T value;
-};
-template <typename T>
-T DsoSpecific<T>::value = 0;
-
-}  // namespace internal
-#endif  // defined(COMPONENT_BUILD)
-
-// A class that sets a given ProtectedMemory variable writable while the
-// AutoWritableMemory is in scope. This class implements the logic for setting
-// the protected memory region read-only/read-write in a thread-safe manner.
-class AutoWritableMemory {
- private:
-  // 'writers' is a global holding the number of ProtectedMemory instances set
-  // writable, used to avoid races setting protected memory readable/writable.
-  // When this reaches zero the protected memory region is set read only.
-  // Access is controlled by writers_lock.
-#if defined(COMPONENT_BUILD)
-  // For component builds writers is a reference to an int defined separately in
-  // every DSO.
-  static constexpr int& writers = internal::DsoSpecific<int>::value;
-#else
-  // Otherwise, we declare writers in the protected memory section to avoid the
-  // scenario where an attacker could overwrite it with a large value and invoke
-  // code that constructs and destructs an AutoWritableMemory. After such a call
-  // protected memory would still be set writable because writers > 0.
-  static int writers;
-#endif  // defined(COMPONENT_BUILD)
-
-  // Synchronizes access to the writers variable and the simultaneous actions
-  // that need to happen alongside writers changes, e.g. setting the protected
-  // memory region readable when writers is decremented to 0.
-  static BASE_EXPORT base::LazyInstance<Lock>::Leaky writers_lock;
-
-  // Abstract out platform-specific memory APIs. |end| points to the byte past
-  // the end of the region of memory having its memory protections changed.
-  BASE_EXPORT bool SetMemoryReadWrite(void* start, void* end);
-  BASE_EXPORT bool SetMemoryReadOnly(void* start, void* end);
-
-  // If this is the first writer (e.g. writers == 0) set the writers variable
-  // read-write. Next, increment writers and set the requested memory writable.
-  AutoWritableMemory(void* ptr, void* ptr_end) {
-#if PROTECTED_MEMORY_ENABLED
-    DCHECK(ptr >= ProtectedMemoryStart && ptr_end <= ProtectedMemoryEnd);
-
-    {
-      base::AutoLock auto_lock(writers_lock.Get());
-      if (writers == 0) {
-        AssertMemoryIsReadOnly(ptr);
-#if !defined(COMPONENT_BUILD)
-        AssertMemoryIsReadOnly(&writers);
-        CHECK(SetMemoryReadWrite(&writers, &writers + 1));
-#endif  // !defined(COMPONENT_BUILD)
-      }
-
-      writers++;
-    }
-
-    CHECK(SetMemoryReadWrite(ptr, ptr_end));
-#endif  // PROTECTED_MEMORY_ENABLED
-  }
-
- public:
-  // Wrap the private constructor to create an easy-to-use interface to
-  // construct AutoWritableMemory objects.
-  template <typename T>
-  static AutoWritableMemory Create(ProtectedMemory<T>& PM) {
-    T* ptr = &*PM;
-    return AutoWritableMemory(ptr, ptr + 1);
-  }
-
-  // Move constructor just increments writers
-  AutoWritableMemory(AutoWritableMemory&& original) {
-#if PROTECTED_MEMORY_ENABLED
-    base::AutoLock auto_lock(writers_lock.Get());
-    CHECK_GT(writers, 0);
-    writers++;
-#endif  // PROTECTED_MEMORY_ENABLED
-  }
-
-  // On destruction decrement writers, and if no other writers exist, set the
-  // entire protected memory region read-only.
-  ~AutoWritableMemory() {
-#if PROTECTED_MEMORY_ENABLED
-    base::AutoLock auto_lock(writers_lock.Get());
-    CHECK_GT(writers, 0);
-    writers--;
-
-    if (writers == 0) {
-      CHECK(SetMemoryReadOnly(ProtectedMemoryStart, ProtectedMemoryEnd));
-#if !defined(COMPONENT_BUILD)
-      AssertMemoryIsReadOnly(&writers);
-#endif  // !defined(COMPONENT_BUILD)
-    }
-#endif  // PROTECTED_MEMORY_ENABLED
-  }
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(AutoWritableMemory);
-};
-
-template <typename T>
-ProtectedMemory<T>::Initializer::Initializer(ProtectedMemory<T>* PM,
-                                             const T& Init) {
-  AutoWritableMemory writer = AutoWritableMemory::Create(*PM);
-  **PM = Init;
-}
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_PROTECTED_MEMORY_H_
diff --git a/base/memory/protected_memory_cfi.h b/base/memory/protected_memory_cfi.h
deleted file mode 100644
index f5b0121..0000000
--- a/base/memory/protected_memory_cfi.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2017 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.
-
-// Helper routines to call function pointers stored in protected memory with
-// Control Flow Integrity indirect call checking disabled. Some indirect calls,
-// e.g. dynamically resolved symbols in another DSO, can not be accounted for by
-// CFI-icall. These routines allow those symbols to be called without CFI-icall
-// checking safely by ensuring that they are placed in protected memory.
-
-#ifndef BASE_MEMORY_PROTECTED_MEMORY_CFI_H_
-#define BASE_MEMORY_PROTECTED_MEMORY_CFI_H_
-
-#include <utility>
-
-#include "base/compiler_specific.h"
-#include "base/macros.h"
-#include "base/memory/protected_memory.h"
-#include "build_config.h"
-
-namespace base {
-namespace internal {
-
-// This class is used to exempt calls to function pointers stored in
-// ProtectedMemory from cfi-icall checking. It's not secure to use directly, it
-// should only be used by the UnsanitizedCfiCall() functions below. Given an
-// UnsanitizedCfiCall object, you can use operator() to call the encapsulated
-// function pointer without cfi-icall checking.
-template <typename FunctionType>
-class UnsanitizedCfiCall {
- public:
-  explicit UnsanitizedCfiCall(FunctionType function) : function_(function) {}
-  UnsanitizedCfiCall(UnsanitizedCfiCall&&) = default;
-
-  template <typename... Args>
-  NO_SANITIZE("cfi-icall")
-  auto operator()(Args&&... args) {
-    return function_(std::forward<Args>(args)...);
-  }
-
- private:
-  FunctionType function_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(UnsanitizedCfiCall);
-};
-
-}  // namespace internal
-
-// These functions can be used to call function pointers in ProtectedMemory
-// without cfi-icall checking. They are intended to be used to create an
-// UnsanitizedCfiCall object and immediately call it. UnsanitizedCfiCall objects
-// should not initialized directly or stored because they hold a function
-// pointer that will be called without CFI-icall checking in mutable memory. The
-// functions can be used as shown below:
-
-// ProtectedMemory<void (*)(int)> p;
-// UnsanitizedCfiCall(p)(5); /* In place of (*p)(5); */
-
-template <typename T>
-auto UnsanitizedCfiCall(const ProtectedMemory<T>& PM) {
-#if PROTECTED_MEMORY_ENABLED
-  DCHECK(&PM >= ProtectedMemoryStart && &PM < ProtectedMemoryEnd);
-#endif  // PROTECTED_MEMORY_ENABLED
-  return internal::UnsanitizedCfiCall<T>(*PM);
-}
-
-// struct S { void (*fp)(int); } s;
-// ProtectedMemory<S> p;
-// UnsanitizedCfiCall(p, &S::fp)(5); /* In place of p->fp(5); */
-
-template <typename T, typename Member>
-auto UnsanitizedCfiCall(const ProtectedMemory<T>& PM, Member member) {
-#if PROTECTED_MEMORY_ENABLED
-  DCHECK(&PM >= ProtectedMemoryStart && &PM < ProtectedMemoryEnd);
-#endif  // PROTECTED_MEMORY_ENABLED
-  return internal::UnsanitizedCfiCall<decltype(*PM.*member)>(*PM.*member);
-}
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_PROTECTED_MEMORY_CFI_H_
diff --git a/base/memory/protected_memory_posix.cc b/base/memory/protected_memory_posix.cc
deleted file mode 100644
index 1839e3e..0000000
--- a/base/memory/protected_memory_posix.cc
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2017 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/protected_memory.h"
-
-#include <stdint.h>
-#include <sys/mman.h>
-#include <unistd.h>
-
-#if defined(OS_LINUX)
-#include <sys/resource.h>
-#endif  // defined(OS_LINUX)
-
-#if defined(OS_MACOSX) && !defined(OS_IOS)
-#include <mach/mach.h>
-#include <mach/mach_vm.h>
-#endif  // defined(OS_MACOSX) && !defined(OS_IOS)
-
-#include "base/posix/eintr_wrapper.h"
-#include "base/process/process_metrics.h"
-#include "base/synchronization/lock.h"
-#include "build_config.h"
-
-namespace base {
-
-namespace {
-
-bool SetMemory(void* start, void* end, int prot) {
-  DCHECK(end > start);
-  const uintptr_t page_mask = ~(base::GetPageSize() - 1);
-  const uintptr_t page_start = reinterpret_cast<uintptr_t>(start) & page_mask;
-  return mprotect(reinterpret_cast<void*>(page_start),
-                  reinterpret_cast<uintptr_t>(end) - page_start, prot) == 0;
-}
-
-}  // namespace
-
-bool AutoWritableMemory::SetMemoryReadWrite(void* start, void* end) {
-  return SetMemory(start, end, PROT_READ | PROT_WRITE);
-}
-
-bool AutoWritableMemory::SetMemoryReadOnly(void* start, void* end) {
-  return SetMemory(start, end, PROT_READ);
-}
-
-#if defined(OS_LINUX)
-void AssertMemoryIsReadOnly(const void* ptr) {
-#if DCHECK_IS_ON()
-  const uintptr_t page_mask = ~(base::GetPageSize() - 1);
-  const uintptr_t page_start = reinterpret_cast<uintptr_t>(ptr) & page_mask;
-
-  // Note: We've casted away const here, which should not be meaningful since
-  // if the memory is written to we will abort immediately.
-  int result =
-      getrlimit(RLIMIT_NPROC, reinterpret_cast<struct rlimit*>(page_start));
-  DCHECK_EQ(result, -1);
-  DCHECK_EQ(errno, EFAULT);
-#endif  // DCHECK_IS_ON()
-}
-#elif defined(OS_MACOSX) && !defined(OS_IOS)
-void AssertMemoryIsReadOnly(const void* ptr) {
-#if DCHECK_IS_ON()
-  mach_port_t object_name;
-  vm_region_basic_info_64 region_info;
-  mach_vm_size_t size = 1;
-  mach_msg_type_number_t count = VM_REGION_BASIC_INFO_COUNT_64;
-
-  kern_return_t kr = mach_vm_region(
-      mach_task_self(), reinterpret_cast<mach_vm_address_t*>(&ptr), &size,
-      VM_REGION_BASIC_INFO_64, reinterpret_cast<vm_region_info_t>(&region_info),
-      &count, &object_name);
-  DCHECK_EQ(kr, KERN_SUCCESS);
-  DCHECK_EQ(region_info.protection, VM_PROT_READ);
-#endif  // DCHECK_IS_ON()
-}
-#endif  // defined(OS_LINUX) || (defined(OS_MACOSX) && !defined(OS_IOS))
-
-}  // namespace base
diff --git a/base/memory/protected_memory_win.cc b/base/memory/protected_memory_win.cc
deleted file mode 100644
index 43ad8ba..0000000
--- a/base/memory/protected_memory_win.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 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/protected_memory.h"
-
-#include <windows.h>
-
-#include <stdint.h>
-
-#include "base/process/process_metrics.h"
-#include "base/synchronization/lock.h"
-#include "build_config.h"
-
-namespace base {
-
-namespace {
-
-bool SetMemory(void* start, void* end, DWORD prot) {
-  DCHECK(end > start);
-  const uintptr_t page_mask = ~(base::GetPageSize() - 1);
-  const uintptr_t page_start = reinterpret_cast<uintptr_t>(start) & page_mask;
-  DWORD old_prot;
-  return VirtualProtect(reinterpret_cast<void*>(page_start),
-                        reinterpret_cast<uintptr_t>(end) - page_start, prot,
-                        &old_prot) != 0;
-}
-
-}  // namespace
-
-bool AutoWritableMemory::SetMemoryReadWrite(void* start, void* end) {
-  return SetMemory(start, end, PAGE_READWRITE);
-}
-
-bool AutoWritableMemory::SetMemoryReadOnly(void* start, void* end) {
-  return SetMemory(start, end, PAGE_READONLY);
-}
-
-void AssertMemoryIsReadOnly(const void* ptr) {
-#if DCHECK_IS_ON()
-  const uintptr_t page_mask = ~(base::GetPageSize() - 1);
-  const uintptr_t page_start = reinterpret_cast<uintptr_t>(ptr) & page_mask;
-
-  MEMORY_BASIC_INFORMATION info;
-  SIZE_T result =
-      VirtualQuery(reinterpret_cast<LPCVOID>(page_start), &info, sizeof(info));
-  DCHECK_GT(result, 0U);
-  DCHECK(info.Protect == PAGE_READONLY);
-#endif  // DCHECK_IS_ON()
-}
-
-}  // namespace base
diff --git a/base/memory/read_only_shared_memory_region.cc b/base/memory/read_only_shared_memory_region.cc
deleted file mode 100644
index 0a5f900..0000000
--- a/base/memory/read_only_shared_memory_region.cc
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2018 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/read_only_shared_memory_region.h"
-
-#include <utility>
-
-#include "base/memory/shared_memory.h"
-#include "build_config.h"
-
-namespace base {
-
-// static
-MappedReadOnlyRegion ReadOnlySharedMemoryRegion::Create(size_t size) {
-  subtle::PlatformSharedMemoryRegion handle =
-      subtle::PlatformSharedMemoryRegion::CreateWritable(size);
-  if (!handle.IsValid())
-    return {};
-
-  void* memory_ptr = nullptr;
-  size_t mapped_size = 0;
-  if (!handle.MapAt(0, handle.GetSize(), &memory_ptr, &mapped_size))
-    return {};
-
-  WritableSharedMemoryMapping mapping(memory_ptr, size, mapped_size,
-                                      handle.GetGUID());
-#if defined(OS_MACOSX) && !defined(OS_IOS)
-  handle.ConvertToReadOnly(memory_ptr);
-#else
-  handle.ConvertToReadOnly();
-#endif  // defined(OS_MACOSX) && !defined(OS_IOS)
-  ReadOnlySharedMemoryRegion region(std::move(handle));
-
-  if (!region.IsValid() || !mapping.IsValid())
-    return {};
-
-  return {std::move(region), std::move(mapping)};
-}
-
-// static
-ReadOnlySharedMemoryRegion ReadOnlySharedMemoryRegion::Deserialize(
-    subtle::PlatformSharedMemoryRegion handle) {
-  return ReadOnlySharedMemoryRegion(std::move(handle));
-}
-
-// static
-subtle::PlatformSharedMemoryRegion
-ReadOnlySharedMemoryRegion::TakeHandleForSerialization(
-    ReadOnlySharedMemoryRegion region) {
-  return std::move(region.handle_);
-}
-
-ReadOnlySharedMemoryRegion::ReadOnlySharedMemoryRegion() = default;
-ReadOnlySharedMemoryRegion::ReadOnlySharedMemoryRegion(
-    ReadOnlySharedMemoryRegion&& region) = default;
-ReadOnlySharedMemoryRegion& ReadOnlySharedMemoryRegion::operator=(
-    ReadOnlySharedMemoryRegion&& region) = default;
-ReadOnlySharedMemoryRegion::~ReadOnlySharedMemoryRegion() = default;
-
-ReadOnlySharedMemoryRegion ReadOnlySharedMemoryRegion::Duplicate() const {
-  return ReadOnlySharedMemoryRegion(handle_.Duplicate());
-}
-
-ReadOnlySharedMemoryMapping ReadOnlySharedMemoryRegion::Map() const {
-  return MapAt(0, handle_.GetSize());
-}
-
-ReadOnlySharedMemoryMapping ReadOnlySharedMemoryRegion::MapAt(
-    off_t offset,
-    size_t size) const {
-  if (!IsValid())
-    return {};
-
-  void* memory = nullptr;
-  size_t mapped_size = 0;
-  if (!handle_.MapAt(offset, size, &memory, &mapped_size))
-    return {};
-
-  return ReadOnlySharedMemoryMapping(memory, size, mapped_size,
-                                     handle_.GetGUID());
-}
-
-bool ReadOnlySharedMemoryRegion::IsValid() const {
-  return handle_.IsValid();
-}
-
-ReadOnlySharedMemoryRegion::ReadOnlySharedMemoryRegion(
-    subtle::PlatformSharedMemoryRegion handle)
-    : handle_(std::move(handle)) {
-  if (handle_.IsValid()) {
-    CHECK_EQ(handle_.GetMode(),
-             subtle::PlatformSharedMemoryRegion::Mode::kReadOnly);
-  }
-}
-
-}  // namespace base
diff --git a/base/memory/read_only_shared_memory_region.h b/base/memory/read_only_shared_memory_region.h
deleted file mode 100644
index 54e73ed..0000000
--- a/base/memory/read_only_shared_memory_region.h
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2018 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.
-
-#ifndef BASE_MEMORY_READ_ONLY_SHARED_MEMORY_REGION_H_
-#define BASE_MEMORY_READ_ONLY_SHARED_MEMORY_REGION_H_
-
-#include <utility>
-
-#include "base/macros.h"
-#include "base/memory/platform_shared_memory_region.h"
-#include "base/memory/shared_memory_mapping.h"
-
-namespace base {
-
-struct MappedReadOnlyRegion;
-
-// Scoped move-only handle to a region of platform shared memory. The instance
-// owns the platform handle it wraps. Mappings created by this region are
-// read-only. These mappings remain valid even after the region handle is moved
-// or destroyed.
-class BASE_EXPORT ReadOnlySharedMemoryRegion {
- public:
-  using MappingType = ReadOnlySharedMemoryMapping;
-  // Creates a new ReadOnlySharedMemoryRegion instance of a given size along
-  // with the WritableSharedMemoryMapping which provides the only way to modify
-  // the content of the newly created region. The returned region and mapping
-  // are guaranteed to either be both valid or both invalid. Use
-  // |MappedReadOnlyRegion::IsValid()| as a shortcut for checking creation
-  // success.
-  //
-  // This means that the caller's process is the only process that can modify
-  // the region content. If you need to pass write access to another process,
-  // consider using WritableSharedMemoryRegion or UnsafeSharedMemoryRegion.
-  static MappedReadOnlyRegion Create(size_t size);
-
-  // Returns a ReadOnlySharedMemoryRegion built from a platform-specific handle
-  // that was taken from another ReadOnlySharedMemoryRegion instance. Returns an
-  // invalid region iff the |handle| is invalid. CHECK-fails if the |handle|
-  // isn't read-only.
-  // This should be used only by the code passing handles across process
-  // boundaries.
-  static ReadOnlySharedMemoryRegion Deserialize(
-      subtle::PlatformSharedMemoryRegion handle);
-
-  // Extracts a platform handle from the region. Ownership is transferred to the
-  // returned region object.
-  // This should be used only for sending the handle from the current process to
-  // another.
-  static subtle::PlatformSharedMemoryRegion TakeHandleForSerialization(
-      ReadOnlySharedMemoryRegion region);
-
-  // Default constructor initializes an invalid instance.
-  ReadOnlySharedMemoryRegion();
-
-  // Move operations are allowed.
-  ReadOnlySharedMemoryRegion(ReadOnlySharedMemoryRegion&&);
-  ReadOnlySharedMemoryRegion& operator=(ReadOnlySharedMemoryRegion&&);
-
-  // Destructor closes shared memory region if valid.
-  // All created mappings will remain valid.
-  ~ReadOnlySharedMemoryRegion();
-
-  // Duplicates the underlying platform handle and creates a new
-  // ReadOnlySharedMemoryRegion instance that owns this handle. Returns a valid
-  // ReadOnlySharedMemoryRegion on success, invalid otherwise. The current
-  // region instance remains valid in any case.
-  ReadOnlySharedMemoryRegion Duplicate() const;
-
-  // Maps the shared memory region into the caller's address space with
-  // read-only access. The mapped address is guaranteed to have an alignment of
-  // at least |subtle::PlatformSharedMemoryRegion::kMapMinimumAlignment|.
-  // Returns a valid ReadOnlySharedMemoryMapping instance on success, invalid
-  // otherwise.
-  ReadOnlySharedMemoryMapping Map() const;
-
-  // Same as above, but maps only |size| bytes of the shared memory region
-  // starting with the given |offset|. |offset| must be aligned to value of
-  // |SysInfo::VMAllocationGranularity()|. Returns an invalid mapping if
-  // requested bytes are out of the region limits.
-  ReadOnlySharedMemoryMapping MapAt(off_t offset, size_t size) const;
-
-  // Whether the underlying platform handle is valid.
-  bool IsValid() const;
-
-  // Returns the maximum mapping size that can be created from this region.
-  size_t GetSize() const {
-    DCHECK(IsValid());
-    return handle_.GetSize();
-  }
-
- private:
-  explicit ReadOnlySharedMemoryRegion(
-      subtle::PlatformSharedMemoryRegion handle);
-
-  subtle::PlatformSharedMemoryRegion handle_;
-
-  DISALLOW_COPY_AND_ASSIGN(ReadOnlySharedMemoryRegion);
-};
-
-// Helper struct for return value of ReadOnlySharedMemoryRegion::Create().
-struct MappedReadOnlyRegion {
-  ReadOnlySharedMemoryRegion region;
-  WritableSharedMemoryMapping mapping;
-  // Helper function to check return value of
-  // ReadOnlySharedMemoryRegion::Create(). |region| and |mapping| either both
-  // valid or invalid.
-  bool IsValid() {
-    DCHECK_EQ(region.IsValid(), mapping.IsValid());
-    return region.IsValid() && mapping.IsValid();
-  }
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_READ_ONLY_SHARED_MEMORY_REGION_H_
diff --git a/base/memory/ref_counted_delete_on_sequence.h b/base/memory/ref_counted_delete_on_sequence.h
deleted file mode 100644
index dd30106..0000000
--- a/base/memory/ref_counted_delete_on_sequence.h
+++ /dev/null
@@ -1,82 +0,0 @@
-// 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.
-
-#ifndef BASE_MEMORY_REF_COUNTED_DELETE_ON_SEQUENCE_H_
-#define BASE_MEMORY_REF_COUNTED_DELETE_ON_SEQUENCE_H_
-
-#include <utility>
-
-#include "base/location.h"
-#include "base/logging.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/sequenced_task_runner.h"
-
-namespace base {
-
-// RefCountedDeleteOnSequence is similar to RefCountedThreadSafe, and ensures
-// that the object will be deleted on a specified sequence.
-//
-// Sample usage:
-// class Foo : public RefCountedDeleteOnSequence<Foo> {
-//
-//   Foo(scoped_refptr<SequencedTaskRunner> task_runner)
-//       : RefCountedDeleteOnSequence<Foo>(std::move(task_runner)) {}
-//   ...
-//  private:
-//   friend class RefCountedDeleteOnSequence<Foo>;
-//   friend class DeleteHelper<Foo>;
-//
-//   ~Foo();
-// };
-template <class T>
-class RefCountedDeleteOnSequence : public subtle::RefCountedThreadSafeBase {
- public:
-  static constexpr subtle::StartRefCountFromZeroTag kRefCountPreference =
-      subtle::kStartRefCountFromZeroTag;
-
-  // A SequencedTaskRunner for the current sequence can be acquired by calling
-  // SequencedTaskRunnerHandle::Get().
-  RefCountedDeleteOnSequence(
-      scoped_refptr<SequencedTaskRunner> owning_task_runner)
-      : subtle::RefCountedThreadSafeBase(T::kRefCountPreference),
-        owning_task_runner_(std::move(owning_task_runner)) {
-    DCHECK(owning_task_runner_);
-  }
-
-  void AddRef() const { subtle::RefCountedThreadSafeBase::AddRef(); }
-
-  void Release() const {
-    if (subtle::RefCountedThreadSafeBase::Release())
-      DestructOnSequence();
-  }
-
- protected:
-  friend class DeleteHelper<RefCountedDeleteOnSequence>;
-  ~RefCountedDeleteOnSequence() = default;
-
-  SequencedTaskRunner* owning_task_runner() {
-    return owning_task_runner_.get();
-  }
-  const SequencedTaskRunner* owning_task_runner() const {
-    return owning_task_runner_.get();
-  }
-
- private:
-  void DestructOnSequence() const {
-    const T* t = static_cast<const T*>(this);
-    if (owning_task_runner_->RunsTasksInCurrentSequence())
-      delete t;
-    else
-      owning_task_runner_->DeleteSoon(FROM_HERE, t);
-  }
-
-  const scoped_refptr<SequencedTaskRunner> owning_task_runner_;
-
-  DISALLOW_COPY_AND_ASSIGN(RefCountedDeleteOnSequence);
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_REF_COUNTED_DELETE_ON_SEQUENCE_H_
diff --git a/base/memory/ref_counted_memory.cc b/base/memory/ref_counted_memory.cc
deleted file mode 100644
index 23a5ffc..0000000
--- a/base/memory/ref_counted_memory.cc
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright (c) 2012 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/ref_counted_memory.h"
-
-#include <utility>
-
-#include "base/logging.h"
-#include "base/memory/read_only_shared_memory_region.h"
-
-namespace base {
-
-bool RefCountedMemory::Equals(
-    const scoped_refptr<RefCountedMemory>& other) const {
-  return other.get() &&
-         size() == other->size() &&
-         (memcmp(front(), other->front(), size()) == 0);
-}
-
-RefCountedMemory::RefCountedMemory() = default;
-
-RefCountedMemory::~RefCountedMemory() = default;
-
-const unsigned char* RefCountedStaticMemory::front() const {
-  return data_;
-}
-
-size_t RefCountedStaticMemory::size() const {
-  return length_;
-}
-
-RefCountedStaticMemory::~RefCountedStaticMemory() = default;
-
-RefCountedBytes::RefCountedBytes() = default;
-
-RefCountedBytes::RefCountedBytes(const std::vector<unsigned char>& initializer)
-    : data_(initializer) {
-}
-
-RefCountedBytes::RefCountedBytes(const unsigned char* p, size_t size)
-    : data_(p, p + size) {}
-
-RefCountedBytes::RefCountedBytes(size_t size) : data_(size, 0) {}
-
-scoped_refptr<RefCountedBytes> RefCountedBytes::TakeVector(
-    std::vector<unsigned char>* to_destroy) {
-  auto bytes = MakeRefCounted<RefCountedBytes>();
-  bytes->data_.swap(*to_destroy);
-  return bytes;
-}
-
-const unsigned char* RefCountedBytes::front() const {
-  // STL will assert if we do front() on an empty vector, but calling code
-  // expects a NULL.
-  return size() ? &data_.front() : nullptr;
-}
-
-size_t RefCountedBytes::size() const {
-  return data_.size();
-}
-
-RefCountedBytes::~RefCountedBytes() = default;
-
-RefCountedString::RefCountedString() = default;
-
-RefCountedString::~RefCountedString() = default;
-
-// static
-scoped_refptr<RefCountedString> RefCountedString::TakeString(
-    std::string* to_destroy) {
-  auto self = MakeRefCounted<RefCountedString>();
-  to_destroy->swap(self->data_);
-  return self;
-}
-
-const unsigned char* RefCountedString::front() const {
-  return data_.empty() ? nullptr
-                       : reinterpret_cast<const unsigned char*>(data_.data());
-}
-
-size_t RefCountedString::size() const {
-  return data_.size();
-}
-
-RefCountedSharedMemory::RefCountedSharedMemory(
-    std::unique_ptr<SharedMemory> shm,
-    size_t size)
-    : shm_(std::move(shm)), size_(size) {
-  DCHECK(shm_);
-  DCHECK(shm_->memory());
-  DCHECK_GT(size_, 0U);
-  DCHECK_LE(size_, shm_->mapped_size());
-}
-
-RefCountedSharedMemory::~RefCountedSharedMemory() = default;
-
-const unsigned char* RefCountedSharedMemory::front() const {
-  return static_cast<const unsigned char*>(shm_->memory());
-}
-
-size_t RefCountedSharedMemory::size() const {
-  return size_;
-}
-
-RefCountedSharedMemoryMapping::RefCountedSharedMemoryMapping(
-    ReadOnlySharedMemoryMapping mapping)
-    : mapping_(std::move(mapping)), size_(mapping_.size()) {
-  DCHECK_GT(size_, 0U);
-}
-
-RefCountedSharedMemoryMapping::~RefCountedSharedMemoryMapping() = default;
-
-const unsigned char* RefCountedSharedMemoryMapping::front() const {
-  return static_cast<const unsigned char*>(mapping_.memory());
-}
-
-size_t RefCountedSharedMemoryMapping::size() const {
-  return size_;
-}
-
-// static
-scoped_refptr<RefCountedSharedMemoryMapping>
-RefCountedSharedMemoryMapping::CreateFromWholeRegion(
-    const ReadOnlySharedMemoryRegion& region) {
-  ReadOnlySharedMemoryMapping mapping = region.Map();
-  if (!mapping.IsValid())
-    return nullptr;
-  return MakeRefCounted<RefCountedSharedMemoryMapping>(std::move(mapping));
-}
-
-}  //  namespace base
diff --git a/base/memory/ref_counted_memory.h b/base/memory/ref_counted_memory.h
deleted file mode 100644
index 92a7d7b..0000000
--- a/base/memory/ref_counted_memory.h
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright (c) 2012 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.
-
-#ifndef BASE_MEMORY_REF_COUNTED_MEMORY_H_
-#define BASE_MEMORY_REF_COUNTED_MEMORY_H_
-
-#include <stddef.h>
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "base/base_export.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/shared_memory.h"
-#include "base/memory/shared_memory_mapping.h"
-
-namespace base {
-
-class ReadOnlySharedMemoryRegion;
-
-// A generic interface to memory. This object is reference counted because most
-// of its subclasses own the data they carry, and this interface needs to
-// support heterogeneous containers of these different types of memory.
-class BASE_EXPORT RefCountedMemory
-    : public RefCountedThreadSafe<RefCountedMemory> {
- public:
-  // Retrieves a pointer to the beginning of the data we point to. If the data
-  // is empty, this will return NULL.
-  virtual const unsigned char* front() const = 0;
-
-  // Size of the memory pointed to.
-  virtual size_t size() const = 0;
-
-  // Returns true if |other| is byte for byte equal.
-  bool Equals(const scoped_refptr<RefCountedMemory>& other) const;
-
-  // Handy method to simplify calling front() with a reinterpret_cast.
-  template<typename T> const T* front_as() const {
-    return reinterpret_cast<const T*>(front());
-  }
-
- protected:
-  friend class RefCountedThreadSafe<RefCountedMemory>;
-  RefCountedMemory();
-  virtual ~RefCountedMemory();
-};
-
-// An implementation of RefCountedMemory, where the ref counting does not
-// matter.
-class BASE_EXPORT RefCountedStaticMemory : public RefCountedMemory {
- public:
-  RefCountedStaticMemory() : data_(nullptr), length_(0) {}
-  RefCountedStaticMemory(const void* data, size_t length)
-      : data_(static_cast<const unsigned char*>(length ? data : nullptr)),
-        length_(length) {}
-
-  // RefCountedMemory:
-  const unsigned char* front() const override;
-  size_t size() const override;
-
- private:
-  ~RefCountedStaticMemory() override;
-
-  const unsigned char* data_;
-  size_t length_;
-
-  DISALLOW_COPY_AND_ASSIGN(RefCountedStaticMemory);
-};
-
-// An implementation of RefCountedMemory, where the data is stored in a STL
-// vector.
-class BASE_EXPORT RefCountedBytes : public RefCountedMemory {
- public:
-  RefCountedBytes();
-
-  // Constructs a RefCountedBytes object by copying from |initializer|.
-  explicit RefCountedBytes(const std::vector<unsigned char>& initializer);
-
-  // Constructs a RefCountedBytes object by copying |size| bytes from |p|.
-  RefCountedBytes(const unsigned char* p, size_t size);
-
-  // Constructs a RefCountedBytes object by zero-initializing a new vector of
-  // |size| bytes.
-  explicit RefCountedBytes(size_t size);
-
-  // Constructs a RefCountedBytes object by performing a swap. (To non
-  // destructively build a RefCountedBytes, use the constructor that takes a
-  // vector.)
-  static scoped_refptr<RefCountedBytes> TakeVector(
-      std::vector<unsigned char>* to_destroy);
-
-  // RefCountedMemory:
-  const unsigned char* front() const override;
-  size_t size() const override;
-
-  const std::vector<unsigned char>& data() const { return data_; }
-  std::vector<unsigned char>& data() { return data_; }
-
-  // Non-const versions of front() and front_as() that are simply shorthand for
-  // data().data().
-  unsigned char* front() { return data_.data(); }
-  template <typename T>
-  T* front_as() {
-    return reinterpret_cast<T*>(front());
-  }
-
- private:
-  ~RefCountedBytes() override;
-
-  std::vector<unsigned char> data_;
-
-  DISALLOW_COPY_AND_ASSIGN(RefCountedBytes);
-};
-
-// An implementation of RefCountedMemory, where the bytes are stored in a STL
-// string. Use this if your data naturally arrives in that format.
-class BASE_EXPORT RefCountedString : public RefCountedMemory {
- public:
-  RefCountedString();
-
-  // Constructs a RefCountedString object by performing a swap. (To non
-  // destructively build a RefCountedString, use the default constructor and
-  // copy into object->data()).
-  static scoped_refptr<RefCountedString> TakeString(std::string* to_destroy);
-
-  // RefCountedMemory:
-  const unsigned char* front() const override;
-  size_t size() const override;
-
-  const std::string& data() const { return data_; }
-  std::string& data() { return data_; }
-
- private:
-  ~RefCountedString() override;
-
-  std::string data_;
-
-  DISALLOW_COPY_AND_ASSIGN(RefCountedString);
-};
-
-// An implementation of RefCountedMemory, where the bytes are stored in
-// SharedMemory.
-class BASE_EXPORT RefCountedSharedMemory : public RefCountedMemory {
- public:
-  // Constructs a RefCountedMemory object by taking ownership of an already
-  // mapped SharedMemory object.
-  RefCountedSharedMemory(std::unique_ptr<SharedMemory> shm, size_t size);
-
-  // RefCountedMemory:
-  const unsigned char* front() const override;
-  size_t size() const override;
-
- private:
-  ~RefCountedSharedMemory() override;
-
-  const std::unique_ptr<SharedMemory> shm_;
-  const size_t size_;
-
-  DISALLOW_COPY_AND_ASSIGN(RefCountedSharedMemory);
-};
-
-// An implementation of RefCountedMemory, where the bytes are stored in
-// ReadOnlySharedMemoryMapping.
-class BASE_EXPORT RefCountedSharedMemoryMapping : public RefCountedMemory {
- public:
-  // Constructs a RefCountedMemory object by taking ownership of an already
-  // mapped ReadOnlySharedMemoryMapping object.
-  explicit RefCountedSharedMemoryMapping(ReadOnlySharedMemoryMapping mapping);
-
-  // Convenience method to map all of |region| and take ownership of the
-  // mapping. Returns an empty scoped_refptr if the map operation fails.
-  static scoped_refptr<RefCountedSharedMemoryMapping> CreateFromWholeRegion(
-      const ReadOnlySharedMemoryRegion& region);
-
-  // RefCountedMemory:
-  const unsigned char* front() const override;
-  size_t size() const override;
-
- private:
-  ~RefCountedSharedMemoryMapping() override;
-
-  const ReadOnlySharedMemoryMapping mapping_;
-  const size_t size_;
-
-  DISALLOW_COPY_AND_ASSIGN(RefCountedSharedMemoryMapping);
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_REF_COUNTED_MEMORY_H_
diff --git a/base/memory/shared_memory.h b/base/memory/shared_memory.h
deleted file mode 100644
index aa1f682..0000000
--- a/base/memory/shared_memory.h
+++ /dev/null
@@ -1,254 +0,0 @@
-// Copyright (c) 2012 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.
-
-#ifndef BASE_MEMORY_SHARED_MEMORY_H_
-#define BASE_MEMORY_SHARED_MEMORY_H_
-
-#include <stddef.h>
-
-#include <string>
-
-#include "base/base_export.h"
-#include "base/hash.h"
-#include "base/macros.h"
-#include "base/memory/shared_memory_handle.h"
-#include "base/process/process_handle.h"
-#include "base/strings/string16.h"
-#include "build_config.h"
-
-#if defined(OS_POSIX) || defined(OS_FUCHSIA)
-#include <stdio.h>
-#include <sys/types.h>
-#include <semaphore.h>
-#include "base/file_descriptor_posix.h"
-#include "base/files/file_util.h"
-#include "base/files/scoped_file.h"
-#endif
-
-#if defined(OS_WIN)
-#include "base/win/scoped_handle.h"
-#endif
-
-namespace base {
-
-class FilePath;
-
-// Options for creating a shared memory object.
-struct BASE_EXPORT SharedMemoryCreateOptions {
-#if defined(OS_MACOSX) && !defined(OS_IOS)
-  // The type of OS primitive that should back the SharedMemory object.
-  SharedMemoryHandle::Type type = SharedMemoryHandle::MACH;
-#elif !defined(OS_FUCHSIA)
-  // DEPRECATED (crbug.com/345734):
-  // If NULL, the object is anonymous.  This pointer is owned by the caller
-  // and must live through the call to Create().
-  const std::string* name_deprecated = nullptr;
-
-  // DEPRECATED (crbug.com/345734):
-  // If true, and the shared memory already exists, Create() will open the
-  // existing shared memory and ignore the size parameter.  If false,
-  // shared memory must not exist.  This flag is meaningless unless
-  // name_deprecated is non-NULL.
-  bool open_existing_deprecated = false;
-#endif  // defined(OS_MACOSX) && !defined(OS_IOS)
-
-  // Size of the shared memory object to be created.
-  // When opening an existing object, this has no effect.
-  size_t size = 0;
-
-  // If true, mappings might need to be made executable later.
-  bool executable = false;
-
-  // If true, the file can be shared read-only to a process.
-  bool share_read_only = false;
-};
-
-// Platform abstraction for shared memory.
-// SharedMemory consumes a SharedMemoryHandle [potentially one that it created]
-// to map a shared memory OS resource into the virtual address space of the
-// current process.
-class BASE_EXPORT SharedMemory {
- public:
-  SharedMemory();
-
-#if defined(OS_WIN)
-  // Similar to the default constructor, except that this allows for
-  // calling LockDeprecated() to acquire the named mutex before either Create or
-  // Open are called on Windows.
-  explicit SharedMemory(const string16& name);
-#endif
-
-  // Create a new SharedMemory object from an existing, open
-  // shared memory file.
-  //
-  // WARNING: This does not reduce the OS-level permissions on the handle; it
-  // only affects how the SharedMemory will be mmapped. Use
-  // GetReadOnlyHandle to drop permissions. TODO(jln,jyasskin): DCHECK
-  // that |read_only| matches the permissions of the handle.
-  SharedMemory(const SharedMemoryHandle& handle, bool read_only);
-
-  // Closes any open files.
-  ~SharedMemory();
-
-  // Return true iff the given handle is valid (i.e. not the distingished
-  // invalid value; NULL for a HANDLE and -1 for a file descriptor)
-  static bool IsHandleValid(const SharedMemoryHandle& handle);
-
-  // Closes a shared memory handle.
-  static void CloseHandle(const SharedMemoryHandle& handle);
-
-  // Returns the maximum number of handles that can be open at once per process.
-  static size_t GetHandleLimit();
-
-  // Duplicates The underlying OS primitive. Returns an invalid handle on
-  // failure. The caller is responsible for destroying the duplicated OS
-  // primitive.
-  static SharedMemoryHandle DuplicateHandle(const SharedMemoryHandle& handle);
-
-#if defined(OS_POSIX)
-  // This method requires that the SharedMemoryHandle is backed by a POSIX fd.
-  static int GetFdFromSharedMemoryHandle(const SharedMemoryHandle& handle);
-#endif
-
-  // Creates a shared memory object as described by the options struct.
-  // Returns true on success and false on failure.
-  bool Create(const SharedMemoryCreateOptions& options);
-
-  // Creates and maps an anonymous shared memory segment of size size.
-  // Returns true on success and false on failure.
-  bool CreateAndMapAnonymous(size_t size);
-
-  // Creates an anonymous shared memory segment of size size.
-  // Returns true on success and false on failure.
-  bool CreateAnonymous(size_t size) {
-    SharedMemoryCreateOptions options;
-    options.size = size;
-    return Create(options);
-  }
-
-#if (!defined(OS_MACOSX) || defined(OS_IOS)) && !defined(OS_FUCHSIA)
-  // DEPRECATED (crbug.com/345734):
-  // Creates or opens a shared memory segment based on a name.
-  // If open_existing is true, and the shared memory already exists,
-  // opens the existing shared memory and ignores the size parameter.
-  // If open_existing is false, shared memory must not exist.
-  // size is the size of the block to be created.
-  // Returns true on success, false on failure.
-  bool CreateNamedDeprecated(
-      const std::string& name, bool open_existing, size_t size) {
-    SharedMemoryCreateOptions options;
-    options.name_deprecated = &name;
-    options.open_existing_deprecated = open_existing;
-    options.size = size;
-    return Create(options);
-  }
-
-  // Deletes resources associated with a shared memory segment based on name.
-  // Not all platforms require this call.
-  bool Delete(const std::string& name);
-
-  // Opens a shared memory segment based on a name.
-  // If read_only is true, opens for read-only access.
-  // Returns true on success, false on failure.
-  bool Open(const std::string& name, bool read_only);
-#endif  // !defined(OS_MACOSX) || defined(OS_IOS)
-
-  // Maps the shared memory into the caller's address space.
-  // Returns true on success, false otherwise.  The memory address
-  // is accessed via the memory() accessor.  The mapped address is guaranteed to
-  // have an alignment of at least MAP_MINIMUM_ALIGNMENT. This method will fail
-  // if this object is currently mapped.
-  bool Map(size_t bytes) {
-    return MapAt(0, bytes);
-  }
-
-  // Same as above, but with |offset| to specify from begining of the shared
-  // memory block to map.
-  // |offset| must be alignent to value of |SysInfo::VMAllocationGranularity()|.
-  bool MapAt(off_t offset, size_t bytes);
-  enum { MAP_MINIMUM_ALIGNMENT = 32 };
-
-  // Unmaps the shared memory from the caller's address space.
-  // Returns true if successful; returns false on error or if the
-  // memory is not mapped.
-  bool Unmap();
-
-  // The size requested when the map is first created.
-  size_t requested_size() const { return requested_size_; }
-
-  // The actual size of the mapped memory (may be larger than requested).
-  size_t mapped_size() const { return mapped_size_; }
-
-  // Gets a pointer to the opened memory space if it has been
-  // Mapped via Map().  Returns NULL if it is not mapped.
-  void* memory() const { return memory_; }
-
-  // Returns the underlying OS handle for this segment.
-  // Use of this handle for anything other than an opaque
-  // identifier is not portable.
-  SharedMemoryHandle handle() const;
-
-  // Returns the underlying OS handle for this segment. The caller takes
-  // ownership of the handle and memory is unmapped. This is equivalent to
-  // duplicating the handle and then calling Unmap() and Close() on this object,
-  // without the overhead of duplicating the handle.
-  SharedMemoryHandle TakeHandle();
-
-  // Closes the open shared memory segment. The memory will remain mapped if
-  // it was previously mapped.
-  // It is safe to call Close repeatedly.
-  void Close();
-
-  // Returns a read-only handle to this shared memory region. The caller takes
-  // ownership of the handle. For POSIX handles, CHECK-fails if the region
-  // wasn't Created or Opened with share_read_only=true, which is required to
-  // make the handle read-only. When the handle is passed to the IPC subsystem,
-  // that takes ownership of the handle. As such, it's not valid to pass the
-  // sample handle to the IPC subsystem twice. Returns an invalid handle on
-  // failure.
-  SharedMemoryHandle GetReadOnlyHandle() const;
-
-  // Returns an ID for the mapped region. This is ID of the SharedMemoryHandle
-  // that was mapped. The ID is valid even after the SharedMemoryHandle is
-  // Closed, as long as the region is not unmapped.
-  const UnguessableToken& mapped_id() const { return mapped_id_; }
-
- private:
-#if defined(OS_POSIX) && !defined(OS_NACL) && !defined(OS_ANDROID) && \
-    (!defined(OS_MACOSX) || defined(OS_IOS))
-  bool FilePathForMemoryName(const std::string& mem_name, FilePath* path);
-#endif
-
-#if defined(OS_WIN)
-  // If true indicates this came from an external source so needs extra checks
-  // before being mapped.
-  bool external_section_ = false;
-  string16 name_;
-#elif !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
-  // If valid, points to the same memory region as shm_, but with readonly
-  // permissions.
-  SharedMemoryHandle readonly_shm_;
-#endif
-
-#if defined(OS_MACOSX) && !defined(OS_IOS)
-  // The mechanism by which the memory is mapped. Only valid if |memory_| is not
-  // |nullptr|.
-  SharedMemoryHandle::Type mapped_memory_mechanism_ = SharedMemoryHandle::MACH;
-#endif
-
-  // The OS primitive that backs the shared memory region.
-  SharedMemoryHandle shm_;
-
-  size_t mapped_size_ = 0;
-  void* memory_ = nullptr;
-  bool read_only_ = false;
-  size_t requested_size_ = 0;
-  base::UnguessableToken mapped_id_;
-
-  DISALLOW_COPY_AND_ASSIGN(SharedMemory);
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_SHARED_MEMORY_H_
diff --git a/base/memory/shared_memory_fuchsia.cc b/base/memory/shared_memory_fuchsia.cc
deleted file mode 100644
index 4036bf6..0000000
--- a/base/memory/shared_memory_fuchsia.cc
+++ /dev/null
@@ -1,166 +0,0 @@
-// Copyright 2017 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/shared_memory.h"
-
-#include <limits>
-
-#include <zircon/process.h>
-#include <zircon/rights.h>
-#include <zircon/syscalls.h>
-
-#include "base/bits.h"
-#include "base/fuchsia/scoped_zx_handle.h"
-#include "base/logging.h"
-#include "base/memory/shared_memory_tracker.h"
-#include "base/process/process_metrics.h"
-
-namespace base {
-
-SharedMemory::SharedMemory() {}
-
-SharedMemory::SharedMemory(const SharedMemoryHandle& handle, bool read_only)
-    : shm_(handle), read_only_(read_only) {}
-
-SharedMemory::~SharedMemory() {
-  Unmap();
-  Close();
-}
-
-// static
-bool SharedMemory::IsHandleValid(const SharedMemoryHandle& handle) {
-  return handle.IsValid();
-}
-
-// static
-void SharedMemory::CloseHandle(const SharedMemoryHandle& handle) {
-  DCHECK(handle.IsValid());
-  handle.Close();
-}
-
-// static
-size_t SharedMemory::GetHandleLimit() {
-  // Duplicated from the internal Magenta kernel constant kMaxHandleCount
-  // (kernel/lib/zircon/zircon.cpp).
-  return 256 * 1024u;
-}
-
-bool SharedMemory::CreateAndMapAnonymous(size_t size) {
-  return CreateAnonymous(size) && Map(size);
-}
-
-bool SharedMemory::Create(const SharedMemoryCreateOptions& options) {
-  requested_size_ = options.size;
-  mapped_size_ = bits::Align(requested_size_, GetPageSize());
-  ScopedZxHandle vmo;
-  zx_status_t status = zx_vmo_create(mapped_size_, 0, vmo.receive());
-  if (status != ZX_OK) {
-    DLOG(ERROR) << "zx_vmo_create failed, status=" << status;
-    return false;
-  }
-
-  if (!options.executable) {
-    // If options.executable isn't set, drop that permission by replacement.
-    const int kNoExecFlags = ZX_DEFAULT_VMO_RIGHTS & ~ZX_RIGHT_EXECUTE;
-    ScopedZxHandle old_vmo(std::move(vmo));
-    status = zx_handle_replace(old_vmo.get(), kNoExecFlags, vmo.receive());
-    if (status != ZX_OK) {
-      DLOG(ERROR) << "zx_handle_replace() failed: "
-                  << zx_status_get_string(status);
-      return false;
-    }
-    ignore_result(old_vmo.release());
-  }
-
-  shm_ = SharedMemoryHandle(vmo.release(), mapped_size_,
-                            UnguessableToken::Create());
-  return true;
-}
-
-bool SharedMemory::MapAt(off_t offset, size_t bytes) {
-  if (!shm_.IsValid())
-    return false;
-
-  if (bytes > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return false;
-
-  if (memory_)
-    return false;
-
-  int flags = ZX_VM_FLAG_PERM_READ;
-  if (!read_only_)
-    flags |= ZX_VM_FLAG_PERM_WRITE;
-  uintptr_t addr;
-  zx_status_t status = zx_vmar_map(zx_vmar_root_self(), 0, shm_.GetHandle(),
-                                   offset, bytes, flags, &addr);
-  if (status != ZX_OK) {
-    DLOG(ERROR) << "zx_vmar_map failed, status=" << status;
-    return false;
-  }
-  memory_ = reinterpret_cast<void*>(addr);
-
-  mapped_size_ = bytes;
-  mapped_id_ = shm_.GetGUID();
-  SharedMemoryTracker::GetInstance()->IncrementMemoryUsage(*this);
-  return true;
-}
-
-bool SharedMemory::Unmap() {
-  if (!memory_)
-    return false;
-
-  SharedMemoryTracker::GetInstance()->DecrementMemoryUsage(*this);
-
-  uintptr_t addr = reinterpret_cast<uintptr_t>(memory_);
-  zx_status_t status = zx_vmar_unmap(zx_vmar_root_self(), addr, mapped_size_);
-  if (status != ZX_OK) {
-    DLOG(ERROR) << "zx_vmar_unmap failed, status=" << status;
-    return false;
-  }
-
-  memory_ = nullptr;
-  mapped_id_ = UnguessableToken();
-  return true;
-}
-
-void SharedMemory::Close() {
-  if (shm_.IsValid()) {
-    shm_.Close();
-    shm_ = SharedMemoryHandle();
-  }
-}
-
-SharedMemoryHandle SharedMemory::handle() const {
-  return shm_;
-}
-
-SharedMemoryHandle SharedMemory::TakeHandle() {
-  SharedMemoryHandle handle(shm_);
-  handle.SetOwnershipPassesToIPC(true);
-  Unmap();
-  shm_ = SharedMemoryHandle();
-  return handle;
-}
-
-SharedMemoryHandle SharedMemory::DuplicateHandle(
-    const SharedMemoryHandle& handle) {
-  return handle.Duplicate();
-}
-
-SharedMemoryHandle SharedMemory::GetReadOnlyHandle() const {
-  zx_handle_t duped_handle;
-  const int kNoWriteOrExec =
-      ZX_DEFAULT_VMO_RIGHTS &
-      ~(ZX_RIGHT_WRITE | ZX_RIGHT_EXECUTE | ZX_RIGHT_SET_PROPERTY);
-  zx_status_t status =
-      zx_handle_duplicate(shm_.GetHandle(), kNoWriteOrExec, &duped_handle);
-  if (status != ZX_OK)
-    return SharedMemoryHandle();
-
-  SharedMemoryHandle handle(duped_handle, shm_.GetSize(), shm_.GetGUID());
-  handle.SetOwnershipPassesToIPC(true);
-  return handle;
-}
-
-}  // namespace base
diff --git a/base/memory/shared_memory_handle.cc b/base/memory/shared_memory_handle.cc
deleted file mode 100644
index 085bde4..0000000
--- a/base/memory/shared_memory_handle.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2017 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/shared_memory_handle.h"
-
-namespace base {
-
-SharedMemoryHandle::SharedMemoryHandle(const SharedMemoryHandle& handle) =
-    default;
-
-SharedMemoryHandle& SharedMemoryHandle::operator=(
-    const SharedMemoryHandle& handle) = default;
-
-base::UnguessableToken SharedMemoryHandle::GetGUID() const {
-  return guid_;
-}
-
-size_t SharedMemoryHandle::GetSize() const {
-  return size_;
-}
-
-}  // namespace base
diff --git a/base/memory/shared_memory_handle.h b/base/memory/shared_memory_handle.h
deleted file mode 100644
index 18aa816..0000000
--- a/base/memory/shared_memory_handle.h
+++ /dev/null
@@ -1,236 +0,0 @@
-// Copyright 2015 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.
-
-#ifndef BASE_MEMORY_SHARED_MEMORY_HANDLE_H_
-#define BASE_MEMORY_SHARED_MEMORY_HANDLE_H_
-
-#include <stddef.h>
-
-#include "base/unguessable_token.h"
-#include "build_config.h"
-
-#if defined(OS_WIN)
-#include "base/process/process_handle.h"
-#include "base/win/windows_types.h"
-#elif defined(OS_MACOSX) && !defined(OS_IOS)
-#include <mach/mach.h>
-#include "base/base_export.h"
-#include "base/file_descriptor_posix.h"
-#include "base/macros.h"
-#include "base/process/process_handle.h"
-#elif defined(OS_POSIX) || defined(OS_FUCHSIA)
-#include <sys/types.h>
-#include "base/file_descriptor_posix.h"
-#endif
-
-namespace base {
-
-// SharedMemoryHandle is the smallest possible IPC-transportable "reference" to
-// a shared memory OS resource. A "reference" can be consumed exactly once [by
-// base::SharedMemory] to map the shared memory OS resource into the virtual
-// address space of the current process.
-// TODO(erikchen): This class should have strong ownership semantics to prevent
-// leaks of the underlying OS resource. https://crbug.com/640840.
-class BASE_EXPORT SharedMemoryHandle {
- public:
-  // The default constructor returns an invalid SharedMemoryHandle.
-  SharedMemoryHandle();
-
-  // Standard copy constructor. The new instance shares the underlying OS
-  // primitives.
-  SharedMemoryHandle(const SharedMemoryHandle& handle);
-
-  // Standard assignment operator. The updated instance shares the underlying
-  // OS primitives.
-  SharedMemoryHandle& operator=(const SharedMemoryHandle& handle);
-
-  // Closes the underlying OS resource.
-  // The fact that this method needs to be "const" is an artifact of the
-  // original interface for base::SharedMemory::CloseHandle.
-  // TODO(erikchen): This doesn't clear the underlying reference, which seems
-  // like a bug, but is how this class has always worked. Fix this:
-  // https://crbug.com/716072.
-  void Close() const;
-
-  // Whether ownership of the underlying OS resource is implicitly passed to
-  // the IPC subsystem during serialization.
-  void SetOwnershipPassesToIPC(bool ownership_passes);
-  bool OwnershipPassesToIPC() const;
-
-  // Whether the underlying OS resource is valid.
-  bool IsValid() const;
-
-  // Duplicates the underlying OS resource. Using the return value as a
-  // parameter to an IPC message will cause the IPC subsystem to consume the OS
-  // resource.
-  SharedMemoryHandle Duplicate() const;
-
-  // Uniques identifies the shared memory region that the underlying OS resource
-  // points to. Multiple SharedMemoryHandles that point to the same shared
-  // memory region will have the same GUID. Preserved across IPC.
-  base::UnguessableToken GetGUID() const;
-
-  // Returns the size of the memory region that SharedMemoryHandle points to.
-  size_t GetSize() const;
-
-#if defined(OS_WIN)
-  // Takes implicit ownership of |h|.
-  // |guid| uniquely identifies the shared memory region pointed to by the
-  // underlying OS resource. If the HANDLE is associated with another
-  // SharedMemoryHandle, the caller must pass the |guid| of that
-  // SharedMemoryHandle. Otherwise, the caller should generate a new
-  // UnguessableToken.
-  // Passing the wrong |size| has no immediate consequence, but may cause errors
-  // when trying to map the SharedMemoryHandle at a later point in time.
-  SharedMemoryHandle(HANDLE h, size_t size, const base::UnguessableToken& guid);
-  HANDLE GetHandle() const;
-#elif defined(OS_FUCHSIA)
-  // Takes implicit ownership of |h|.
-  // |guid| uniquely identifies the shared memory region pointed to by the
-  // underlying OS resource. If the zx_handle_t is associated with another
-  // SharedMemoryHandle, the caller must pass the |guid| of that
-  // SharedMemoryHandle. Otherwise, the caller should generate a new
-  // UnguessableToken.
-  // Passing the wrong |size| has no immediate consequence, but may cause errors
-  // when trying to map the SharedMemoryHandle at a later point in time.
-  SharedMemoryHandle(zx_handle_t h,
-                     size_t size,
-                     const base::UnguessableToken& guid);
-  zx_handle_t GetHandle() const;
-#elif defined(OS_MACOSX) && !defined(OS_IOS)
-  enum Type {
-    // The SharedMemoryHandle is backed by a POSIX fd.
-    POSIX,
-    // The SharedMemoryHandle is backed by the Mach primitive "memory object".
-    MACH,
-  };
-
-  // Makes a Mach-based SharedMemoryHandle of the given size. On error,
-  // subsequent calls to IsValid() return false.
-  // Passing the wrong |size| has no immediate consequence, but may cause errors
-  // when trying to map the SharedMemoryHandle at a later point in time.
-  SharedMemoryHandle(mach_vm_size_t size, const base::UnguessableToken& guid);
-
-  // Makes a Mach-based SharedMemoryHandle from |memory_object|, a named entry
-  // in the current task. The memory region has size |size|.
-  // Passing the wrong |size| has no immediate consequence, but may cause errors
-  // when trying to map the SharedMemoryHandle at a later point in time.
-  SharedMemoryHandle(mach_port_t memory_object,
-                     mach_vm_size_t size,
-                     const base::UnguessableToken& guid);
-
-  // Exposed so that the SharedMemoryHandle can be transported between
-  // processes.
-  mach_port_t GetMemoryObject() const;
-
-  // The SharedMemoryHandle must be valid.
-  // Returns whether the SharedMemoryHandle was successfully mapped into memory.
-  // On success, |memory| is an output variable that contains the start of the
-  // mapped memory.
-  bool MapAt(off_t offset, size_t bytes, void** memory, bool read_only);
-#elif defined(OS_POSIX)
-  // Creates a SharedMemoryHandle from an |fd| supplied from an external
-  // service.
-  // Passing the wrong |size| has no immediate consequence, but may cause errors
-  // when trying to map the SharedMemoryHandle at a later point in time.
-  static SharedMemoryHandle ImportHandle(int fd, size_t size);
-
-  // Returns the underlying OS resource.
-  int GetHandle() const;
-
-  // Invalidates [but doesn't close] the underlying OS resource. This will leak
-  // unless the caller is careful.
-  int Release();
-#endif
-
-#if defined(OS_ANDROID)
-  // Marks the current file descriptor as read-only, for the purpose of
-  // mapping. This is independent of the region's read-only status.
-  void SetReadOnly() { read_only_ = true; }
-
-  // Returns true iff the descriptor is to be used for read-only
-  // mappings.
-  bool IsReadOnly() const { return read_only_; }
-
-  // Returns true iff the corresponding region is read-only.
-  bool IsRegionReadOnly() const;
-
-  // Try to set the region read-only. This will fail any future attempt
-  // at read-write mapping.
-  bool SetRegionReadOnly() const;
-#endif
-
-#if defined(OS_POSIX)
-  // Constructs a SharedMemoryHandle backed by a FileDescriptor. The newly
-  // created instance has the same ownership semantics as base::FileDescriptor.
-  // This typically means that the SharedMemoryHandle takes ownership of the
-  // |fd| if |auto_close| is true. Unfortunately, it's common for existing code
-  // to make shallow copies of SharedMemoryHandle, and the one that is finally
-  // passed into a base::SharedMemory is the one that "consumes" the fd.
-  //
-  // |guid| uniquely identifies the shared memory region pointed to by the
-  // underlying OS resource. If |file_descriptor| is associated with another
-  // SharedMemoryHandle, the caller must pass the |guid| of that
-  // SharedMemoryHandle. Otherwise, the caller should generate a new
-  // UnguessableToken.
-  // Passing the wrong |size| has no immediate consequence, but may cause errors
-  // when trying to map the SharedMemoryHandle at a later point in time.
-  SharedMemoryHandle(const base::FileDescriptor& file_descriptor,
-                     size_t size,
-                     const base::UnguessableToken& guid);
-#endif
-
- private:
-#if defined(OS_WIN)
-  HANDLE handle_ = nullptr;
-
-  // Whether passing this object as a parameter to an IPC message passes
-  // ownership of |handle_| to the IPC stack. This is meant to mimic the
-  // behavior of the |auto_close| parameter of FileDescriptor. This member only
-  // affects attachment-brokered SharedMemoryHandles.
-  // Defaults to |false|.
-  bool ownership_passes_to_ipc_ = false;
-#elif defined(OS_FUCHSIA)
-  zx_handle_t handle_ = ZX_HANDLE_INVALID;
-  bool ownership_passes_to_ipc_ = false;
-#elif defined(OS_MACOSX) && !defined(OS_IOS)
-  friend class SharedMemory;
-  friend bool CheckReadOnlySharedMemoryHandleForTesting(
-      SharedMemoryHandle handle);
-
-  Type type_ = MACH;
-
-  // Each instance of a SharedMemoryHandle is backed either by a POSIX fd or a
-  // mach port. |type_| determines the backing member.
-  union {
-    FileDescriptor file_descriptor_;
-
-    struct {
-      mach_port_t memory_object_ = MACH_PORT_NULL;
-
-      // Whether passing this object as a parameter to an IPC message passes
-      // ownership of |memory_object_| to the IPC stack. This is meant to mimic
-      // the behavior of the |auto_close| parameter of FileDescriptor.
-      // Defaults to |false|.
-      bool ownership_passes_to_ipc_ = false;
-    };
-  };
-#elif defined(OS_ANDROID)
-  friend class SharedMemory;
-
-  FileDescriptor file_descriptor_;
-  bool read_only_ = false;
-#elif defined(OS_POSIX)
-  FileDescriptor file_descriptor_;
-#endif
-
-  base::UnguessableToken guid_;
-
-  // The size of the region referenced by the SharedMemoryHandle.
-  size_t size_ = 0;
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_SHARED_MEMORY_HANDLE_H_
diff --git a/base/memory/shared_memory_handle_fuchsia.cc b/base/memory/shared_memory_handle_fuchsia.cc
deleted file mode 100644
index eab681f..0000000
--- a/base/memory/shared_memory_handle_fuchsia.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2017 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/shared_memory_handle.h"
-
-#include <zircon/syscalls.h>
-
-#include "base/logging.h"
-#include "base/unguessable_token.h"
-
-namespace base {
-
-SharedMemoryHandle::SharedMemoryHandle() {}
-
-SharedMemoryHandle::SharedMemoryHandle(zx_handle_t h,
-                                       size_t size,
-                                       const base::UnguessableToken& guid)
-    : handle_(h), guid_(guid), size_(size) {}
-
-void SharedMemoryHandle::Close() const {
-  DCHECK(handle_ != ZX_HANDLE_INVALID);
-  zx_handle_close(handle_);
-}
-
-bool SharedMemoryHandle::IsValid() const {
-  return handle_ != ZX_HANDLE_INVALID;
-}
-
-SharedMemoryHandle SharedMemoryHandle::Duplicate() const {
-  zx_handle_t duped_handle;
-  zx_status_t status =
-      zx_handle_duplicate(handle_, ZX_RIGHT_SAME_RIGHTS, &duped_handle);
-  if (status != ZX_OK)
-    return SharedMemoryHandle();
-
-  SharedMemoryHandle handle(duped_handle, GetSize(), GetGUID());
-  handle.SetOwnershipPassesToIPC(true);
-  return handle;
-}
-
-zx_handle_t SharedMemoryHandle::GetHandle() const {
-  return handle_;
-}
-
-void SharedMemoryHandle::SetOwnershipPassesToIPC(bool ownership_passes) {
-  ownership_passes_to_ipc_ = ownership_passes;
-}
-
-bool SharedMemoryHandle::OwnershipPassesToIPC() const {
-  return ownership_passes_to_ipc_;
-}
-
-}  // namespace base
diff --git a/base/memory/shared_memory_handle_mac.cc b/base/memory/shared_memory_handle_mac.cc
deleted file mode 100644
index 0e863fa..0000000
--- a/base/memory/shared_memory_handle_mac.cc
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2015 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/shared_memory_handle.h"
-
-#include <mach/mach_vm.h>
-#include <stddef.h>
-#include <sys/mman.h>
-#include <unistd.h>
-
-#include "base/mac/mac_util.h"
-#include "base/mac/mach_logging.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/unguessable_token.h"
-
-namespace base {
-
-SharedMemoryHandle::SharedMemoryHandle() {}
-
-SharedMemoryHandle::SharedMemoryHandle(
-    const base::FileDescriptor& file_descriptor,
-    size_t size,
-    const base::UnguessableToken& guid)
-    : type_(POSIX),
-      file_descriptor_(file_descriptor),
-      guid_(guid),
-      size_(size) {}
-
-SharedMemoryHandle::SharedMemoryHandle(mach_vm_size_t size,
-                                       const base::UnguessableToken& guid) {
-  type_ = MACH;
-  mach_port_t named_right;
-  kern_return_t kr = mach_make_memory_entry_64(
-      mach_task_self(),
-      &size,
-      0,  // Address.
-      MAP_MEM_NAMED_CREATE | VM_PROT_READ | VM_PROT_WRITE,
-      &named_right,
-      MACH_PORT_NULL);  // Parent handle.
-  if (kr != KERN_SUCCESS) {
-    memory_object_ = MACH_PORT_NULL;
-    return;
-  }
-
-  memory_object_ = named_right;
-  size_ = size;
-  ownership_passes_to_ipc_ = false;
-  guid_ = guid;
-}
-
-SharedMemoryHandle::SharedMemoryHandle(mach_port_t memory_object,
-                                       mach_vm_size_t size,
-                                       const base::UnguessableToken& guid)
-    : type_(MACH),
-      memory_object_(memory_object),
-      ownership_passes_to_ipc_(false),
-      guid_(guid),
-      size_(size) {}
-
-SharedMemoryHandle SharedMemoryHandle::Duplicate() const {
-  switch (type_) {
-    case POSIX: {
-      if (!IsValid())
-        return SharedMemoryHandle();
-      int duped_fd = HANDLE_EINTR(dup(file_descriptor_.fd));
-      if (duped_fd < 0)
-        return SharedMemoryHandle();
-      return SharedMemoryHandle(FileDescriptor(duped_fd, true), size_, guid_);
-    }
-    case MACH: {
-      if (!IsValid())
-        return SharedMemoryHandle();
-
-      // Increment the ref count.
-      kern_return_t kr = mach_port_mod_refs(mach_task_self(), memory_object_,
-                                            MACH_PORT_RIGHT_SEND, 1);
-      DCHECK_EQ(kr, KERN_SUCCESS);
-      SharedMemoryHandle handle(*this);
-      handle.SetOwnershipPassesToIPC(true);
-      return handle;
-    }
-  }
-}
-
-bool SharedMemoryHandle::IsValid() const {
-  switch (type_) {
-    case POSIX:
-      return file_descriptor_.fd >= 0;
-    case MACH:
-      return memory_object_ != MACH_PORT_NULL;
-  }
-}
-
-mach_port_t SharedMemoryHandle::GetMemoryObject() const {
-  DCHECK_EQ(type_, MACH);
-  return memory_object_;
-}
-
-bool SharedMemoryHandle::MapAt(off_t offset,
-                               size_t bytes,
-                               void** memory,
-                               bool read_only) {
-  DCHECK(IsValid());
-  switch (type_) {
-    case SharedMemoryHandle::POSIX:
-      *memory = mmap(nullptr, bytes, PROT_READ | (read_only ? 0 : PROT_WRITE),
-                     MAP_SHARED, file_descriptor_.fd, offset);
-      return *memory != MAP_FAILED;
-    case SharedMemoryHandle::MACH:
-      kern_return_t kr = mach_vm_map(
-          mach_task_self(),
-          reinterpret_cast<mach_vm_address_t*>(memory),    // Output parameter
-          bytes,
-          0,                                               // Alignment mask
-          VM_FLAGS_ANYWHERE,
-          memory_object_,
-          offset,
-          FALSE,                                           // Copy
-          VM_PROT_READ | (read_only ? 0 : VM_PROT_WRITE),  // Current protection
-          VM_PROT_WRITE | VM_PROT_READ | VM_PROT_IS_MASK,  // Maximum protection
-          VM_INHERIT_NONE);
-      return kr == KERN_SUCCESS;
-  }
-}
-
-void SharedMemoryHandle::Close() const {
-  if (!IsValid())
-    return;
-
-  switch (type_) {
-    case POSIX:
-      if (IGNORE_EINTR(close(file_descriptor_.fd)) < 0)
-        DPLOG(ERROR) << "Error closing fd";
-      break;
-    case MACH:
-      kern_return_t kr = mach_port_deallocate(mach_task_self(), memory_object_);
-      if (kr != KERN_SUCCESS)
-        MACH_DLOG(ERROR, kr) << "Error deallocating mach port";
-      break;
-  }
-}
-
-void SharedMemoryHandle::SetOwnershipPassesToIPC(bool ownership_passes) {
-  DCHECK_EQ(type_, MACH);
-  ownership_passes_to_ipc_ = ownership_passes;
-}
-
-bool SharedMemoryHandle::OwnershipPassesToIPC() const {
-  DCHECK_EQ(type_, MACH);
-  return ownership_passes_to_ipc_;
-}
-
-}  // namespace base
diff --git a/base/memory/shared_memory_handle_posix.cc b/base/memory/shared_memory_handle_posix.cc
deleted file mode 100644
index 09dfb9c..0000000
--- a/base/memory/shared_memory_handle_posix.cc
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2017 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/shared_memory_handle.h"
-
-#include <unistd.h>
-
-#include "base/logging.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/unguessable_token.h"
-
-namespace base {
-
-SharedMemoryHandle::SharedMemoryHandle() = default;
-
-SharedMemoryHandle::SharedMemoryHandle(
-    const base::FileDescriptor& file_descriptor,
-    size_t size,
-    const base::UnguessableToken& guid)
-    : file_descriptor_(file_descriptor), guid_(guid), size_(size) {}
-
-// static
-SharedMemoryHandle SharedMemoryHandle::ImportHandle(int fd, size_t size) {
-  SharedMemoryHandle handle;
-  handle.file_descriptor_.fd = fd;
-  handle.file_descriptor_.auto_close = false;
-  handle.guid_ = UnguessableToken::Create();
-  handle.size_ = size;
-  return handle;
-}
-
-int SharedMemoryHandle::GetHandle() const {
-  return file_descriptor_.fd;
-}
-
-bool SharedMemoryHandle::IsValid() const {
-  return file_descriptor_.fd >= 0;
-}
-
-void SharedMemoryHandle::Close() const {
-  if (IGNORE_EINTR(close(file_descriptor_.fd)) < 0)
-    PLOG(ERROR) << "close";
-}
-
-int SharedMemoryHandle::Release() {
-  int old_fd = file_descriptor_.fd;
-  file_descriptor_.fd = -1;
-  return old_fd;
-}
-
-SharedMemoryHandle SharedMemoryHandle::Duplicate() const {
-  if (!IsValid())
-    return SharedMemoryHandle();
-
-  int duped_handle = HANDLE_EINTR(dup(file_descriptor_.fd));
-  if (duped_handle < 0)
-    return SharedMemoryHandle();
-  return SharedMemoryHandle(FileDescriptor(duped_handle, true), GetSize(),
-                            GetGUID());
-}
-
-void SharedMemoryHandle::SetOwnershipPassesToIPC(bool ownership_passes) {
-  file_descriptor_.auto_close = ownership_passes;
-}
-
-bool SharedMemoryHandle::OwnershipPassesToIPC() const {
-  return file_descriptor_.auto_close;
-}
-
-}  // namespace base
diff --git a/base/memory/shared_memory_handle_win.cc b/base/memory/shared_memory_handle_win.cc
deleted file mode 100644
index 8c11d39..0000000
--- a/base/memory/shared_memory_handle_win.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2015 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/shared_memory_handle.h"
-
-#include "base/logging.h"
-#include "base/unguessable_token.h"
-
-#include <windows.h>
-
-namespace base {
-
-SharedMemoryHandle::SharedMemoryHandle() {}
-
-SharedMemoryHandle::SharedMemoryHandle(HANDLE h,
-                                       size_t size,
-                                       const base::UnguessableToken& guid)
-    : handle_(h), guid_(guid), size_(size) {}
-
-void SharedMemoryHandle::Close() const {
-  DCHECK(handle_ != nullptr);
-  ::CloseHandle(handle_);
-}
-
-bool SharedMemoryHandle::IsValid() const {
-  return handle_ != nullptr;
-}
-
-SharedMemoryHandle SharedMemoryHandle::Duplicate() const {
-  HANDLE duped_handle;
-  ProcessHandle process = GetCurrentProcess();
-  BOOL success = ::DuplicateHandle(process, handle_, process, &duped_handle, 0,
-                                   FALSE, DUPLICATE_SAME_ACCESS);
-  if (!success)
-    return SharedMemoryHandle();
-
-  base::SharedMemoryHandle handle(duped_handle, GetSize(), GetGUID());
-  handle.SetOwnershipPassesToIPC(true);
-  return handle;
-}
-
-HANDLE SharedMemoryHandle::GetHandle() const {
-  return handle_;
-}
-
-void SharedMemoryHandle::SetOwnershipPassesToIPC(bool ownership_passes) {
-  ownership_passes_to_ipc_ = ownership_passes;
-}
-
-bool SharedMemoryHandle::OwnershipPassesToIPC() const {
-  return ownership_passes_to_ipc_;
-}
-
-}  // namespace base
diff --git a/base/memory/shared_memory_helper.cc b/base/memory/shared_memory_helper.cc
deleted file mode 100644
index f98b734..0000000
--- a/base/memory/shared_memory_helper.cc
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright 2016 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/shared_memory_helper.h"
-
-#if defined(OS_CHROMEOS)
-#include <sys/resource.h>
-#include <sys/time.h>
-
-#include "base/debug/alias.h"
-#endif  // defined(OS_CHROMEOS)
-
-#include "base/threading/thread_restrictions.h"
-
-namespace base {
-
-struct ScopedPathUnlinkerTraits {
-  static const FilePath* InvalidValue() { return nullptr; }
-
-  static void Free(const FilePath* path) {
-    if (unlink(path->value().c_str()))
-      PLOG(WARNING) << "unlink";
-  }
-};
-
-// Unlinks the FilePath when the object is destroyed.
-using ScopedPathUnlinker =
-    ScopedGeneric<const FilePath*, ScopedPathUnlinkerTraits>;
-
-#if !defined(OS_ANDROID)
-bool CreateAnonymousSharedMemory(const SharedMemoryCreateOptions& options,
-                                 ScopedFD* fd,
-                                 ScopedFD* readonly_fd,
-                                 FilePath* path) {
-#if defined(OS_LINUX)
-  // It doesn't make sense to have a open-existing private piece of shmem
-  DCHECK(!options.open_existing_deprecated);
-#endif  // defined(OS_LINUX)
-  // Q: Why not use the shm_open() etc. APIs?
-  // A: Because they're limited to 4mb on OS X.  FFFFFFFUUUUUUUUUUU
-  FilePath directory;
-  ScopedPathUnlinker path_unlinker;
-  if (!GetShmemTempDir(options.executable, &directory))
-    return false;
-
-  fd->reset(base::CreateAndOpenFdForTemporaryFileInDir(directory, path));
-
-  if (!fd->is_valid())
-    return false;
-
-  // Deleting the file prevents anyone else from mapping it in (making it
-  // private), and prevents the need for cleanup (once the last fd is
-  // closed, it is truly freed).
-  path_unlinker.reset(path);
-
-  if (options.share_read_only) {
-    // Also open as readonly so that we can GetReadOnlyHandle.
-    readonly_fd->reset(HANDLE_EINTR(open(path->value().c_str(), O_RDONLY)));
-    if (!readonly_fd->is_valid()) {
-      DPLOG(ERROR) << "open(\"" << path->value() << "\", O_RDONLY) failed";
-      fd->reset();
-      return false;
-    }
-  }
-  return true;
-}
-
-bool PrepareMapFile(ScopedFD fd,
-                    ScopedFD readonly_fd,
-                    int* mapped_file,
-                    int* readonly_mapped_file) {
-  DCHECK_EQ(-1, *mapped_file);
-  DCHECK_EQ(-1, *readonly_mapped_file);
-  if (!fd.is_valid())
-    return false;
-
-  // This function theoretically can block on the disk, but realistically
-  // the temporary files we create will just go into the buffer cache
-  // and be deleted before they ever make it out to disk.
-  base::ThreadRestrictions::ScopedAllowIO allow_io;
-
-  if (readonly_fd.is_valid()) {
-    struct stat st = {};
-    if (fstat(fd.get(), &st))
-      NOTREACHED();
-
-    struct stat readonly_st = {};
-    if (fstat(readonly_fd.get(), &readonly_st))
-      NOTREACHED();
-    if (st.st_dev != readonly_st.st_dev || st.st_ino != readonly_st.st_ino) {
-      LOG(ERROR) << "writable and read-only inodes don't match; bailing";
-      return false;
-    }
-  }
-
-  *mapped_file = HANDLE_EINTR(dup(fd.get()));
-  if (*mapped_file == -1) {
-    NOTREACHED() << "Call to dup failed, errno=" << errno;
-
-#if defined(OS_CHROMEOS)
-    if (errno == EMFILE) {
-      // We're out of file descriptors and are probably about to crash somewhere
-      // else in Chrome anyway. Let's collect what FD information we can and
-      // crash.
-      // Added for debugging crbug.com/733718
-      int original_fd_limit = 16384;
-      struct rlimit rlim;
-      if (getrlimit(RLIMIT_NOFILE, &rlim) == 0) {
-        original_fd_limit = rlim.rlim_cur;
-        if (rlim.rlim_max > rlim.rlim_cur) {
-          // Increase fd limit so breakpad has a chance to write a minidump.
-          rlim.rlim_cur = rlim.rlim_max;
-          if (setrlimit(RLIMIT_NOFILE, &rlim) != 0) {
-            PLOG(ERROR) << "setrlimit() failed";
-          }
-        }
-      } else {
-        PLOG(ERROR) << "getrlimit() failed";
-      }
-
-      const char kFileDataMarker[] = "FDATA";
-      char buf[PATH_MAX];
-      char fd_path[PATH_MAX];
-      char crash_buffer[32 * 1024] = {0};
-      char* crash_ptr = crash_buffer;
-      base::debug::Alias(crash_buffer);
-
-      // Put a marker at the start of our data so we can confirm where it
-      // begins.
-      crash_ptr = strncpy(crash_ptr, kFileDataMarker, strlen(kFileDataMarker));
-      for (int i = original_fd_limit; i >= 0; --i) {
-        memset(buf, 0, arraysize(buf));
-        memset(fd_path, 0, arraysize(fd_path));
-        snprintf(fd_path, arraysize(fd_path) - 1, "/proc/self/fd/%d", i);
-        ssize_t count = readlink(fd_path, buf, arraysize(buf) - 1);
-        if (count < 0) {
-          PLOG(ERROR) << "readlink failed for: " << fd_path;
-          continue;
-        }
-
-        if (crash_ptr + count + 1 < crash_buffer + arraysize(crash_buffer)) {
-          crash_ptr = strncpy(crash_ptr, buf, count + 1);
-        }
-        LOG(ERROR) << i << ": " << buf;
-      }
-      LOG(FATAL) << "Logged for file descriptor exhaustion, crashing now";
-    }
-#endif  // defined(OS_CHROMEOS)
-  }
-  *readonly_mapped_file = readonly_fd.release();
-
-  return true;
-}
-#endif  // !defined(OS_ANDROID)
-
-}  // namespace base
diff --git a/base/memory/shared_memory_helper.h b/base/memory/shared_memory_helper.h
deleted file mode 100644
index 9da810e..0000000
--- a/base/memory/shared_memory_helper.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2016 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.
-
-#ifndef BASE_MEMORY_SHARED_MEMORY_HELPER_H_
-#define BASE_MEMORY_SHARED_MEMORY_HELPER_H_
-
-#include "base/memory/shared_memory.h"
-#include "build_config.h"
-
-#include <fcntl.h>
-
-namespace base {
-
-#if !defined(OS_ANDROID)
-// Makes a temporary file, fdopens it, and then unlinks it. |fd| is populated
-// with the opened fd. |readonly_fd| is populated with the opened fd if
-// options.share_read_only is true. |path| is populated with the location of
-// the file before it was unlinked.
-// Returns false if there's an unhandled failure.
-bool CreateAnonymousSharedMemory(const SharedMemoryCreateOptions& options,
-                                 ScopedFD* fd,
-                                 ScopedFD* readonly_fd,
-                                 FilePath* path);
-
-// Takes the outputs of CreateAnonymousSharedMemory and maps them properly to
-// |mapped_file| or |readonly_mapped_file|, depending on which one is populated.
-bool PrepareMapFile(ScopedFD fd,
-                    ScopedFD readonly_fd,
-                    int* mapped_file,
-                    int* readonly_mapped_file);
-#endif  // !defined(OS_ANDROID)
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_SHARED_MEMORY_HELPER_H_
diff --git a/base/memory/shared_memory_mac.cc b/base/memory/shared_memory_mac.cc
deleted file mode 100644
index 5e9e8fc..0000000
--- a/base/memory/shared_memory_mac.cc
+++ /dev/null
@@ -1,262 +0,0 @@
-// Copyright (c) 2012 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/shared_memory.h"
-
-#include <errno.h>
-#include <mach/mach_vm.h>
-#include <stddef.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include "base/files/file_util.h"
-#include "base/files/scoped_file.h"
-#include "base/logging.h"
-#include "base/mac/foundation_util.h"
-#include "base/mac/mac_util.h"
-#include "base/mac/scoped_mach_vm.h"
-#include "base/memory/shared_memory_helper.h"
-#include "base/memory/shared_memory_tracker.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/posix/safe_strerror.h"
-#include "base/process/process_metrics.h"
-#include "base/scoped_generic.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/threading/thread_restrictions.h"
-#include "base/unguessable_token.h"
-#include "build_config.h"
-
-#if defined(OS_IOS)
-#error "MacOS only - iOS uses shared_memory_posix.cc"
-#endif
-
-namespace base {
-
-namespace {
-
-// Returns whether the operation succeeded.
-// |new_handle| is an output variable, populated on success. The caller takes
-// ownership of the underlying memory object.
-// |handle| is the handle to copy.
-// If |handle| is already mapped, |mapped_addr| is its mapped location.
-// Otherwise, |mapped_addr| should be |nullptr|.
-bool MakeMachSharedMemoryHandleReadOnly(SharedMemoryHandle* new_handle,
-                                        SharedMemoryHandle handle,
-                                        void* mapped_addr) {
-  if (!handle.IsValid())
-    return false;
-
-  size_t size = handle.GetSize();
-
-  // Map if necessary.
-  void* temp_addr = mapped_addr;
-  base::mac::ScopedMachVM scoper;
-  if (!temp_addr) {
-    // Intentionally lower current prot and max prot to |VM_PROT_READ|.
-    kern_return_t kr = mach_vm_map(
-        mach_task_self(), reinterpret_cast<mach_vm_address_t*>(&temp_addr),
-        size, 0, VM_FLAGS_ANYWHERE, handle.GetMemoryObject(), 0, FALSE,
-        VM_PROT_READ, VM_PROT_READ, VM_INHERIT_NONE);
-    if (kr != KERN_SUCCESS)
-      return false;
-    scoper.reset(reinterpret_cast<vm_address_t>(temp_addr),
-                 mach_vm_round_page(size));
-  }
-
-  // Make new memory object.
-  mach_port_t named_right;
-  kern_return_t kr = mach_make_memory_entry_64(
-      mach_task_self(), reinterpret_cast<memory_object_size_t*>(&size),
-      reinterpret_cast<memory_object_offset_t>(temp_addr), VM_PROT_READ,
-      &named_right, MACH_PORT_NULL);
-  if (kr != KERN_SUCCESS)
-    return false;
-
-  *new_handle = SharedMemoryHandle(named_right, size, handle.GetGUID());
-  return true;
-}
-
-}  // namespace
-
-SharedMemory::SharedMemory() {}
-
-SharedMemory::SharedMemory(const SharedMemoryHandle& handle, bool read_only)
-    : mapped_memory_mechanism_(SharedMemoryHandle::POSIX),
-      shm_(handle),
-      read_only_(read_only) {}
-
-SharedMemory::~SharedMemory() {
-  Unmap();
-  Close();
-}
-
-// static
-bool SharedMemory::IsHandleValid(const SharedMemoryHandle& handle) {
-  return handle.IsValid();
-}
-
-// static
-void SharedMemory::CloseHandle(const SharedMemoryHandle& handle) {
-  handle.Close();
-}
-
-// static
-size_t SharedMemory::GetHandleLimit() {
-  return GetMaxFds();
-}
-
-// static
-SharedMemoryHandle SharedMemory::DuplicateHandle(
-    const SharedMemoryHandle& handle) {
-  return handle.Duplicate();
-}
-
-// static
-int SharedMemory::GetFdFromSharedMemoryHandle(
-    const SharedMemoryHandle& handle) {
-  return handle.file_descriptor_.fd;
-}
-
-bool SharedMemory::CreateAndMapAnonymous(size_t size) {
-  return CreateAnonymous(size) && Map(size);
-}
-
-// Chromium mostly only uses the unique/private shmem as specified by
-// "name == L"". The exception is in the StatsTable.
-bool SharedMemory::Create(const SharedMemoryCreateOptions& options) {
-  DCHECK(!shm_.IsValid());
-  if (options.size == 0)
-    return false;
-
-  if (options.size > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return false;
-
-  if (options.type == SharedMemoryHandle::MACH) {
-    shm_ = SharedMemoryHandle(options.size, UnguessableToken::Create());
-    requested_size_ = options.size;
-    return shm_.IsValid();
-  }
-
-  // This function theoretically can block on the disk. Both profiling of real
-  // users and local instrumentation shows that this is a real problem.
-  // https://code.google.com/p/chromium/issues/detail?id=466437
-  ThreadRestrictions::ScopedAllowIO allow_io;
-
-  ScopedFD fd;
-  ScopedFD readonly_fd;
-
-  FilePath path;
-  bool result = CreateAnonymousSharedMemory(options, &fd, &readonly_fd, &path);
-  if (!result)
-    return false;
-  // Should be guaranteed by CreateAnonymousSharedMemory().
-  DCHECK(fd.is_valid());
-
-  // Get current size.
-  struct stat stat;
-  if (fstat(fd.get(), &stat) != 0)
-    return false;
-  const size_t current_size = stat.st_size;
-  if (current_size != options.size) {
-    if (HANDLE_EINTR(ftruncate(fd.get(), options.size)) != 0)
-      return false;
-  }
-  requested_size_ = options.size;
-
-  int mapped_file = -1;
-  int readonly_mapped_file = -1;
-  result = PrepareMapFile(std::move(fd), std::move(readonly_fd), &mapped_file,
-                          &readonly_mapped_file);
-  shm_ = SharedMemoryHandle(FileDescriptor(mapped_file, false), options.size,
-                            UnguessableToken::Create());
-  readonly_shm_ =
-      SharedMemoryHandle(FileDescriptor(readonly_mapped_file, false),
-                         options.size, shm_.GetGUID());
-  return result;
-}
-
-bool SharedMemory::MapAt(off_t offset, size_t bytes) {
-  if (!shm_.IsValid())
-    return false;
-  if (bytes > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return false;
-  if (memory_)
-    return false;
-
-  bool success = shm_.MapAt(offset, bytes, &memory_, read_only_);
-  if (success) {
-    mapped_size_ = bytes;
-    DCHECK_EQ(0U, reinterpret_cast<uintptr_t>(memory_) &
-                      (SharedMemory::MAP_MINIMUM_ALIGNMENT - 1));
-    mapped_memory_mechanism_ = shm_.type_;
-    mapped_id_ = shm_.GetGUID();
-    SharedMemoryTracker::GetInstance()->IncrementMemoryUsage(*this);
-  } else {
-    memory_ = nullptr;
-  }
-
-  return success;
-}
-
-bool SharedMemory::Unmap() {
-  if (!memory_)
-    return false;
-
-  SharedMemoryTracker::GetInstance()->DecrementMemoryUsage(*this);
-  switch (mapped_memory_mechanism_) {
-    case SharedMemoryHandle::POSIX:
-      munmap(memory_, mapped_size_);
-      break;
-    case SharedMemoryHandle::MACH:
-      mach_vm_deallocate(mach_task_self(),
-                         reinterpret_cast<mach_vm_address_t>(memory_),
-                         mapped_size_);
-      break;
-  }
-  memory_ = nullptr;
-  mapped_size_ = 0;
-  mapped_id_ = UnguessableToken();
-  return true;
-}
-
-SharedMemoryHandle SharedMemory::handle() const {
-  return shm_;
-}
-
-SharedMemoryHandle SharedMemory::TakeHandle() {
-  SharedMemoryHandle dup = DuplicateHandle(handle());
-  Unmap();
-  Close();
-  return dup;
-}
-
-void SharedMemory::Close() {
-  shm_.Close();
-  shm_ = SharedMemoryHandle();
-  if (shm_.type_ == SharedMemoryHandle::POSIX) {
-    if (readonly_shm_.IsValid()) {
-      readonly_shm_.Close();
-      readonly_shm_ = SharedMemoryHandle();
-    }
-  }
-}
-
-SharedMemoryHandle SharedMemory::GetReadOnlyHandle() const {
-  if (shm_.type_ == SharedMemoryHandle::POSIX) {
-    // We could imagine re-opening the file from /dev/fd, but that can't make it
-    // readonly on Mac: https://codereview.chromium.org/27265002/#msg10.
-    CHECK(readonly_shm_.IsValid());
-    return readonly_shm_.Duplicate();
-  }
-
-  DCHECK(shm_.IsValid());
-  SharedMemoryHandle new_handle;
-  bool success = MakeMachSharedMemoryHandleReadOnly(&new_handle, shm_, memory_);
-  if (success)
-    new_handle.SetOwnershipPassesToIPC(true);
-  return new_handle;
-}
-
-}  // namespace base
diff --git a/base/memory/shared_memory_mapping.cc b/base/memory/shared_memory_mapping.cc
deleted file mode 100644
index 878a012..0000000
--- a/base/memory/shared_memory_mapping.cc
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2018 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/shared_memory_mapping.h"
-
-#include <utility>
-
-#include "base/logging.h"
-#include "base/memory/shared_memory_tracker.h"
-#include "base/unguessable_token.h"
-#include "build_config.h"
-
-#if defined(OS_POSIX)
-#include <sys/mman.h>
-#endif
-
-#if defined(OS_WIN)
-#include <aclapi.h>
-#endif
-
-#if defined(OS_MACOSX) && !defined(OS_IOS)
-#include <mach/mach_vm.h>
-#include "base/mac/mach_logging.h"
-#endif
-
-#if defined(OS_FUCHSIA)
-#include <zircon/process.h>
-#include <zircon/status.h>
-#include <zircon/syscalls.h>
-#endif
-
-namespace base {
-
-SharedMemoryMapping::SharedMemoryMapping() = default;
-
-SharedMemoryMapping::SharedMemoryMapping(SharedMemoryMapping&& mapping)
-    : memory_(mapping.memory_),
-      size_(mapping.size_),
-      mapped_size_(mapping.mapped_size_),
-      guid_(mapping.guid_) {
-  mapping.memory_ = nullptr;
-}
-
-SharedMemoryMapping& SharedMemoryMapping::operator=(
-    SharedMemoryMapping&& mapping) {
-  Unmap();
-  memory_ = mapping.memory_;
-  size_ = mapping.size_;
-  mapped_size_ = mapping.mapped_size_;
-  guid_ = mapping.guid_;
-  mapping.memory_ = nullptr;
-  return *this;
-}
-
-SharedMemoryMapping::~SharedMemoryMapping() {
-  Unmap();
-}
-
-SharedMemoryMapping::SharedMemoryMapping(void* memory,
-                                         size_t size,
-                                         size_t mapped_size,
-                                         const UnguessableToken& guid)
-    : memory_(memory), size_(size), mapped_size_(mapped_size), guid_(guid) {
-  SharedMemoryTracker::GetInstance()->IncrementMemoryUsage(*this);
-}
-
-void SharedMemoryMapping::Unmap() {
-  if (!IsValid())
-    return;
-
-  SharedMemoryTracker::GetInstance()->DecrementMemoryUsage(*this);
-#if defined(OS_WIN)
-  if (!UnmapViewOfFile(memory_))
-    DPLOG(ERROR) << "UnmapViewOfFile";
-#elif defined(OS_FUCHSIA)
-  uintptr_t addr = reinterpret_cast<uintptr_t>(memory_);
-  zx_status_t status = zx_vmar_unmap(zx_vmar_root_self(), addr, size_);
-  DLOG_IF(ERROR, status != ZX_OK)
-      << "zx_vmar_unmap failed: " << zx_status_get_string(status);
-#elif defined(OS_MACOSX) && !defined(OS_IOS)
-  kern_return_t kr = mach_vm_deallocate(
-      mach_task_self(), reinterpret_cast<mach_vm_address_t>(memory_), size_);
-  MACH_DLOG_IF(ERROR, kr != KERN_SUCCESS, kr) << "mach_vm_deallocate";
-#else
-  if (munmap(memory_, size_) < 0)
-    DPLOG(ERROR) << "munmap";
-#endif
-}
-
-ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping() = default;
-ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping(
-    ReadOnlySharedMemoryMapping&&) = default;
-ReadOnlySharedMemoryMapping& ReadOnlySharedMemoryMapping::operator=(
-    ReadOnlySharedMemoryMapping&&) = default;
-ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping(
-    void* address,
-    size_t size,
-    size_t mapped_size,
-    const UnguessableToken& guid)
-    : SharedMemoryMapping(address, size, mapped_size, guid) {}
-
-WritableSharedMemoryMapping::WritableSharedMemoryMapping() = default;
-WritableSharedMemoryMapping::WritableSharedMemoryMapping(
-    WritableSharedMemoryMapping&&) = default;
-WritableSharedMemoryMapping& WritableSharedMemoryMapping::operator=(
-    WritableSharedMemoryMapping&&) = default;
-WritableSharedMemoryMapping::WritableSharedMemoryMapping(
-    void* address,
-    size_t size,
-    size_t mapped_size,
-    const UnguessableToken& guid)
-    : SharedMemoryMapping(address, size, mapped_size, guid) {}
-
-}  // namespace base
diff --git a/base/memory/shared_memory_mapping.h b/base/memory/shared_memory_mapping.h
deleted file mode 100644
index ace4c15..0000000
--- a/base/memory/shared_memory_mapping.h
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright 2018 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.
-
-#ifndef BASE_MEMORY_SHARED_MEMORY_MAPPING_H_
-#define BASE_MEMORY_SHARED_MEMORY_MAPPING_H_
-
-#include <cstddef>
-
-#include "base/macros.h"
-#include "base/unguessable_token.h"
-
-namespace base {
-
-namespace subtle {
-class PlatformSharedMemoryRegion;
-}  // namespace subtle
-
-// Base class for scoped handles to a shared memory mapping created from a
-// shared memory region. Created shared memory mappings remain valid even if the
-// creator region is transferred or destroyed.
-//
-// Each mapping has an UnguessableToken that identifies the shared memory region
-// it was created from. This is used for memory metrics, to avoid overcounting
-// shared memory.
-class BASE_EXPORT SharedMemoryMapping {
- public:
-  // Default constructor initializes an invalid instance.
-  SharedMemoryMapping();
-
-  // Move operations are allowed.
-  SharedMemoryMapping(SharedMemoryMapping&& mapping);
-  SharedMemoryMapping& operator=(SharedMemoryMapping&& mapping);
-
-  // Unmaps the region if the mapping is valid.
-  virtual ~SharedMemoryMapping();
-
-  // Returns true iff the mapping is valid. False means there is no
-  // corresponding area of memory.
-  bool IsValid() const { return memory_ != nullptr; }
-
-  // Returns the logical size of the mapping in bytes. This is precisely the
-  // size requested by whoever created the mapping, and it is always less than
-  // or equal to |mapped_size()|. This is undefined for invalid instances.
-  size_t size() const {
-    DCHECK(IsValid());
-    return size_;
-  }
-
-  // Returns the actual size of the mapping in bytes. This is always at least
-  // as large as |size()| but may be larger due to platform mapping alignment
-  // constraints. This is undefined for invalid instances.
-  size_t mapped_size() const {
-    DCHECK(IsValid());
-    return mapped_size_;
-  }
-
-  // Returns 128-bit GUID of the region this mapping belongs to.
-  const UnguessableToken& guid() const {
-    DCHECK(IsValid());
-    return guid_;
-  }
-
- protected:
-  SharedMemoryMapping(void* address,
-                      size_t size,
-                      size_t mapped_size,
-                      const UnguessableToken& guid);
-  void* raw_memory_ptr() const { return memory_; }
-
- private:
-  friend class SharedMemoryTracker;
-
-  void Unmap();
-
-  void* memory_ = nullptr;
-  size_t size_ = 0;
-  size_t mapped_size_ = 0;
-  UnguessableToken guid_;
-
-  DISALLOW_COPY_AND_ASSIGN(SharedMemoryMapping);
-};
-
-// Class modeling a read-only mapping of a shared memory region into the
-// current process' address space. This is created by ReadOnlySharedMemoryRegion
-// instances.
-class BASE_EXPORT ReadOnlySharedMemoryMapping : public SharedMemoryMapping {
- public:
-  // Default constructor initializes an invalid instance.
-  ReadOnlySharedMemoryMapping();
-
-  // Move operations are allowed.
-  ReadOnlySharedMemoryMapping(ReadOnlySharedMemoryMapping&&);
-  ReadOnlySharedMemoryMapping& operator=(ReadOnlySharedMemoryMapping&&);
-
-  // Returns the base address of the mapping. This is read-only memory. This is
-  // page-aligned. This is nullptr for invalid instances.
-  const void* memory() const { return raw_memory_ptr(); }
-
- private:
-  friend class ReadOnlySharedMemoryRegion;
-  ReadOnlySharedMemoryMapping(void* address,
-                              size_t size,
-                              size_t mapped_size,
-                              const UnguessableToken& guid);
-
-  DISALLOW_COPY_AND_ASSIGN(ReadOnlySharedMemoryMapping);
-};
-
-// Class modeling a writable mapping of a shared memory region into the
-// current process' address space. This is created by *SharedMemoryRegion
-// instances.
-class BASE_EXPORT WritableSharedMemoryMapping : public SharedMemoryMapping {
- public:
-  // Default constructor initializes an invalid instance.
-  WritableSharedMemoryMapping();
-
-  // Move operations are allowed.
-  WritableSharedMemoryMapping(WritableSharedMemoryMapping&&);
-  WritableSharedMemoryMapping& operator=(WritableSharedMemoryMapping&&);
-
-  // Returns the base address of the mapping. This is writable memory. This is
-  // page-aligned. This is nullptr for invalid instances.
-  void* memory() const { return raw_memory_ptr(); }
-
- private:
-  friend WritableSharedMemoryMapping MapAtForTesting(
-      subtle::PlatformSharedMemoryRegion* region,
-      off_t offset,
-      size_t size);
-  friend class ReadOnlySharedMemoryRegion;
-  friend class WritableSharedMemoryRegion;
-  friend class UnsafeSharedMemoryRegion;
-  WritableSharedMemoryMapping(void* address,
-                              size_t size,
-                              size_t mapped_size,
-                              const UnguessableToken& guid);
-
-  DISALLOW_COPY_AND_ASSIGN(WritableSharedMemoryMapping);
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_SHARED_MEMORY_MAPPING_H_
diff --git a/base/memory/shared_memory_nacl.cc b/base/memory/shared_memory_nacl.cc
deleted file mode 100644
index 4bcbb54..0000000
--- a/base/memory/shared_memory_nacl.cc
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright (c) 2012 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/shared_memory.h"
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stddef.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include <limits>
-
-#include "base/logging.h"
-#include "base/memory/shared_memory_tracker.h"
-
-namespace base {
-
-SharedMemory::SharedMemory()
-    : mapped_size_(0), memory_(NULL), read_only_(false), requested_size_(0) {}
-
-SharedMemory::SharedMemory(const SharedMemoryHandle& handle, bool read_only)
-    : shm_(handle),
-      mapped_size_(0),
-      memory_(NULL),
-      read_only_(read_only),
-      requested_size_(0) {}
-
-SharedMemory::~SharedMemory() {
-  Unmap();
-  Close();
-}
-
-// static
-bool SharedMemory::IsHandleValid(const SharedMemoryHandle& handle) {
-  return handle.IsValid();
-}
-
-// static
-void SharedMemory::CloseHandle(const SharedMemoryHandle& handle) {
-  DCHECK(handle.IsValid());
-  handle.Close();
-}
-
-// static
-SharedMemoryHandle SharedMemory::DuplicateHandle(
-    const SharedMemoryHandle& handle) {
-  return handle.Duplicate();
-}
-
-bool SharedMemory::CreateAndMapAnonymous(size_t size) {
-  // Untrusted code can't create descriptors or handles.
-  return false;
-}
-
-bool SharedMemory::Create(const SharedMemoryCreateOptions& options) {
-  // Untrusted code can't create descriptors or handles.
-  return false;
-}
-
-bool SharedMemory::Delete(const std::string& name) {
-  return false;
-}
-
-bool SharedMemory::Open(const std::string& name, bool read_only) {
-  return false;
-}
-
-bool SharedMemory::MapAt(off_t offset, size_t bytes) {
-  if (!shm_.IsValid())
-    return false;
-
-  if (bytes > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return false;
-
-  if (memory_)
-    return false;
-
-  memory_ = mmap(NULL, bytes, PROT_READ | (read_only_ ? 0 : PROT_WRITE),
-                 MAP_SHARED, shm_.GetHandle(), offset);
-
-  bool mmap_succeeded = memory_ != MAP_FAILED && memory_ != NULL;
-  if (mmap_succeeded) {
-    mapped_size_ = bytes;
-    DCHECK_EQ(0U, reinterpret_cast<uintptr_t>(memory_) &
-        (SharedMemory::MAP_MINIMUM_ALIGNMENT - 1));
-    mapped_id_ = shm_.GetGUID();
-    SharedMemoryTracker::GetInstance()->IncrementMemoryUsage(*this);
-  } else {
-    memory_ = NULL;
-  }
-
-  return mmap_succeeded;
-}
-
-bool SharedMemory::Unmap() {
-  if (memory_ == NULL)
-    return false;
-
-  SharedMemoryTracker::GetInstance()->DecrementMemoryUsage(*this);
-  if (munmap(memory_, mapped_size_) < 0)
-    DPLOG(ERROR) << "munmap";
-  memory_ = NULL;
-  mapped_size_ = 0;
-  mapped_id_ = UnguessableToken();
-  return true;
-}
-
-SharedMemoryHandle SharedMemory::handle() const {
-  SharedMemoryHandle handle_copy = shm_;
-  handle_copy.SetOwnershipPassesToIPC(false);
-  return handle_copy;
-}
-
-SharedMemoryHandle SharedMemory::TakeHandle() {
-  SharedMemoryHandle handle_copy = shm_;
-  handle_copy.SetOwnershipPassesToIPC(true);
-  Unmap();
-  shm_ = SharedMemoryHandle();
-  return handle_copy;
-}
-
-void SharedMemory::Close() {
-  if (shm_.IsValid()) {
-    shm_.Close();
-    shm_ = SharedMemoryHandle();
-  }
-}
-
-SharedMemoryHandle SharedMemory::GetReadOnlyHandle() const {
-  // Untrusted code can't create descriptors or handles, which is needed to
-  // drop permissions.
-  return SharedMemoryHandle();
-}
-
-}  // namespace base
diff --git a/base/memory/shared_memory_posix.cc b/base/memory/shared_memory_posix.cc
deleted file mode 100644
index f868eb2..0000000
--- a/base/memory/shared_memory_posix.cc
+++ /dev/null
@@ -1,385 +0,0 @@
-// Copyright (c) 2012 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/shared_memory.h"
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stddef.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include "base/files/file_util.h"
-#include "base/files/scoped_file.h"
-#include "base/logging.h"
-#include "base/macros.h"
-#include "base/memory/shared_memory_helper.h"
-#include "base/memory/shared_memory_tracker.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/posix/safe_strerror.h"
-#include "base/process/process_metrics.h"
-#include "base/scoped_generic.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/threading/thread_restrictions.h"
-#include "base/unguessable_token.h"
-#include "build_config.h"
-
-#if defined(OS_ANDROID)
-#include "base/os_compat_android.h"
-#include "third_party/ashmem/ashmem.h"
-#endif
-
-#if defined(OS_MACOSX) && !defined(OS_IOS)
-#error "MacOS uses shared_memory_mac.cc"
-#endif
-
-namespace base {
-
-SharedMemory::SharedMemory() = default;
-
-SharedMemory::SharedMemory(const SharedMemoryHandle& handle, bool read_only)
-    : shm_(handle), read_only_(read_only) {}
-
-SharedMemory::~SharedMemory() {
-  Unmap();
-  Close();
-}
-
-// static
-bool SharedMemory::IsHandleValid(const SharedMemoryHandle& handle) {
-  return handle.IsValid();
-}
-
-// static
-void SharedMemory::CloseHandle(const SharedMemoryHandle& handle) {
-  DCHECK(handle.IsValid());
-  handle.Close();
-}
-
-// static
-size_t SharedMemory::GetHandleLimit() {
-  return GetMaxFds();
-}
-
-// static
-SharedMemoryHandle SharedMemory::DuplicateHandle(
-    const SharedMemoryHandle& handle) {
-  return handle.Duplicate();
-}
-
-// static
-int SharedMemory::GetFdFromSharedMemoryHandle(
-    const SharedMemoryHandle& handle) {
-  return handle.GetHandle();
-}
-
-bool SharedMemory::CreateAndMapAnonymous(size_t size) {
-  return CreateAnonymous(size) && Map(size);
-}
-
-#if !defined(OS_ANDROID)
-
-// Chromium mostly only uses the unique/private shmem as specified by
-// "name == L"". The exception is in the StatsTable.
-// TODO(jrg): there is no way to "clean up" all unused named shmem if
-// we restart from a crash.  (That isn't a new problem, but it is a problem.)
-// In case we want to delete it later, it may be useful to save the value
-// of mem_filename after FilePathForMemoryName().
-bool SharedMemory::Create(const SharedMemoryCreateOptions& options) {
-  DCHECK(!shm_.IsValid());
-  if (options.size == 0) return false;
-
-  if (options.size > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return false;
-
-  // This function theoretically can block on the disk, but realistically
-  // the temporary files we create will just go into the buffer cache
-  // and be deleted before they ever make it out to disk.
-  ThreadRestrictions::ScopedAllowIO allow_io;
-
-  bool fix_size = true;
-  ScopedFD fd;
-  ScopedFD readonly_fd;
-  FilePath path;
-  if (!options.name_deprecated || options.name_deprecated->empty()) {
-    bool result =
-        CreateAnonymousSharedMemory(options, &fd, &readonly_fd, &path);
-    if (!result)
-      return false;
-  } else {
-    if (!FilePathForMemoryName(*options.name_deprecated, &path))
-      return false;
-
-    // Make sure that the file is opened without any permission
-    // to other users on the system.
-    const mode_t kOwnerOnly = S_IRUSR | S_IWUSR;
-
-    // First, try to create the file.
-    fd.reset(HANDLE_EINTR(
-        open(path.value().c_str(), O_RDWR | O_CREAT | O_EXCL, kOwnerOnly)));
-    if (!fd.is_valid() && options.open_existing_deprecated) {
-      // If this doesn't work, try and open an existing file in append mode.
-      // Opening an existing file in a world writable directory has two main
-      // security implications:
-      // - Attackers could plant a file under their control, so ownership of
-      //   the file is checked below.
-      // - Attackers could plant a symbolic link so that an unexpected file
-      //   is opened, so O_NOFOLLOW is passed to open().
-#if !defined(OS_AIX)
-      fd.reset(HANDLE_EINTR(
-          open(path.value().c_str(), O_RDWR | O_APPEND | O_NOFOLLOW)));
-#else
-      // AIX has no 64-bit support for open flags such as -
-      //  O_CLOEXEC, O_NOFOLLOW and O_TTY_INIT.
-      fd.reset(HANDLE_EINTR(open(path.value().c_str(), O_RDWR | O_APPEND)));
-#endif
-      // Check that the current user owns the file.
-      // If uid != euid, then a more complex permission model is used and this
-      // API is not appropriate.
-      const uid_t real_uid = getuid();
-      const uid_t effective_uid = geteuid();
-      struct stat sb;
-      if (fd.is_valid() &&
-          (fstat(fd.get(), &sb) != 0 || sb.st_uid != real_uid ||
-           sb.st_uid != effective_uid)) {
-        LOG(ERROR) <<
-            "Invalid owner when opening existing shared memory file.";
-        close(fd.get());
-        return false;
-      }
-
-      // An existing file was opened, so its size should not be fixed.
-      fix_size = false;
-    }
-
-    if (options.share_read_only) {
-      // Also open as readonly so that we can GetReadOnlyHandle.
-      readonly_fd.reset(HANDLE_EINTR(open(path.value().c_str(), O_RDONLY)));
-      if (!readonly_fd.is_valid()) {
-        DPLOG(ERROR) << "open(\"" << path.value() << "\", O_RDONLY) failed";
-        close(fd.get());
-        return false;
-      }
-    }
-    if (fd.is_valid()) {
-      // "a+" is always appropriate: if it's a new file, a+ is similar to w+.
-      if (!fdopen(fd.get(), "a+")) {
-        PLOG(ERROR) << "Creating file stream in " << path.value() << " failed";
-        return false;
-      }
-    }
-  }
-  if (fd.is_valid() && fix_size) {
-    // Get current size.
-    struct stat stat;
-    if (fstat(fd.get(), &stat) != 0)
-      return false;
-    const size_t current_size = stat.st_size;
-    if (current_size != options.size) {
-      if (HANDLE_EINTR(ftruncate(fd.get(), options.size)) != 0)
-        return false;
-    }
-    requested_size_ = options.size;
-  }
-  if (!fd.is_valid()) {
-    PLOG(ERROR) << "Creating shared memory in " << path.value() << " failed";
-    FilePath dir = path.DirName();
-    if (access(dir.value().c_str(), W_OK | X_OK) < 0) {
-      PLOG(ERROR) << "Unable to access(W_OK|X_OK) " << dir.value();
-      if (dir.value() == "/dev/shm") {
-        LOG(FATAL) << "This is frequently caused by incorrect permissions on "
-                   << "/dev/shm.  Try 'sudo chmod 1777 /dev/shm' to fix.";
-      }
-    }
-    return false;
-  }
-
-  int mapped_file = -1;
-  int readonly_mapped_file = -1;
-
-  bool result = PrepareMapFile(std::move(fd), std::move(readonly_fd),
-                               &mapped_file, &readonly_mapped_file);
-  shm_ = SharedMemoryHandle(FileDescriptor(mapped_file, false), options.size,
-                            UnguessableToken::Create());
-  readonly_shm_ =
-      SharedMemoryHandle(FileDescriptor(readonly_mapped_file, false),
-                         options.size, shm_.GetGUID());
-  return result;
-}
-
-// Our current implementation of shmem is with mmap()ing of files.
-// These files need to be deleted explicitly.
-// In practice this call is only needed for unit tests.
-bool SharedMemory::Delete(const std::string& name) {
-  FilePath path;
-  if (!FilePathForMemoryName(name, &path))
-    return false;
-
-  if (PathExists(path))
-    return DeleteFile(path, false);
-
-  // Doesn't exist, so success.
-  return true;
-}
-
-bool SharedMemory::Open(const std::string& name, bool read_only) {
-  FilePath path;
-  if (!FilePathForMemoryName(name, &path))
-    return false;
-
-  read_only_ = read_only;
-
-  int mode = read_only ? O_RDONLY : O_RDWR;
-  ScopedFD fd(HANDLE_EINTR(open(path.value().c_str(), mode)));
-  ScopedFD readonly_fd(HANDLE_EINTR(open(path.value().c_str(), O_RDONLY)));
-  if (!readonly_fd.is_valid()) {
-    DPLOG(ERROR) << "open(\"" << path.value() << "\", O_RDONLY) failed";
-    return false;
-  }
-  int mapped_file = -1;
-  int readonly_mapped_file = -1;
-  bool result = PrepareMapFile(std::move(fd), std::move(readonly_fd),
-                               &mapped_file, &readonly_mapped_file);
-  // This form of sharing shared memory is deprecated. https://crbug.com/345734.
-  // However, we can't get rid of it without a significant refactor because its
-  // used to communicate between two versions of the same service process, very
-  // early in the life cycle.
-  // Technically, we should also pass the GUID from the original shared memory
-  // region. We don't do that - this means that we will overcount this memory,
-  // which thankfully isn't relevant since Chrome only communicates with a
-  // single version of the service process.
-  // We pass the size |0|, which is a dummy size and wrong, but otherwise
-  // harmless.
-  shm_ = SharedMemoryHandle(FileDescriptor(mapped_file, false), 0u,
-                            UnguessableToken::Create());
-  readonly_shm_ = SharedMemoryHandle(
-      FileDescriptor(readonly_mapped_file, false), 0, shm_.GetGUID());
-  return result;
-}
-#endif  // !defined(OS_ANDROID)
-
-bool SharedMemory::MapAt(off_t offset, size_t bytes) {
-  if (!shm_.IsValid())
-    return false;
-
-  if (bytes > static_cast<size_t>(std::numeric_limits<int>::max()))
-    return false;
-
-  if (memory_)
-    return false;
-
-#if defined(OS_ANDROID)
-  // On Android, Map can be called with a size and offset of zero to use the
-  // ashmem-determined size.
-  if (bytes == 0) {
-    DCHECK_EQ(0, offset);
-    int ashmem_bytes = ashmem_get_size_region(shm_.GetHandle());
-    if (ashmem_bytes < 0)
-      return false;
-    bytes = ashmem_bytes;
-  }
-
-  // Sanity check. This shall catch invalid uses of the SharedMemory APIs
-  // but will not protect against direct mmap() attempts.
-  if (shm_.IsReadOnly()) {
-    // Use a DCHECK() to call writable mappings with read-only descriptors
-    // in debug builds immediately. Return an error for release builds
-    // or during unit-testing (assuming a ScopedLogAssertHandler was installed).
-    DCHECK(read_only_)
-        << "Trying to map a region writable with a read-only descriptor.";
-    if (!read_only_) {
-      return false;
-    }
-    if (!shm_.SetRegionReadOnly()) {  // Ensure the region is read-only.
-      return false;
-    }
-  }
-#endif
-
-  memory_ = mmap(nullptr, bytes, PROT_READ | (read_only_ ? 0 : PROT_WRITE),
-                 MAP_SHARED, shm_.GetHandle(), offset);
-
-  bool mmap_succeeded = memory_ && memory_ != reinterpret_cast<void*>(-1);
-  if (mmap_succeeded) {
-    mapped_size_ = bytes;
-    mapped_id_ = shm_.GetGUID();
-    DCHECK_EQ(0U,
-              reinterpret_cast<uintptr_t>(memory_) &
-                  (SharedMemory::MAP_MINIMUM_ALIGNMENT - 1));
-    SharedMemoryTracker::GetInstance()->IncrementMemoryUsage(*this);
-  } else {
-    memory_ = nullptr;
-  }
-
-  return mmap_succeeded;
-}
-
-bool SharedMemory::Unmap() {
-  if (!memory_)
-    return false;
-
-  SharedMemoryTracker::GetInstance()->DecrementMemoryUsage(*this);
-  munmap(memory_, mapped_size_);
-  memory_ = nullptr;
-  mapped_size_ = 0;
-  mapped_id_ = UnguessableToken();
-  return true;
-}
-
-SharedMemoryHandle SharedMemory::handle() const {
-  return shm_;
-}
-
-SharedMemoryHandle SharedMemory::TakeHandle() {
-  SharedMemoryHandle handle_copy = shm_;
-  handle_copy.SetOwnershipPassesToIPC(true);
-  Unmap();
-  shm_ = SharedMemoryHandle();
-  return handle_copy;
-}
-
-#if !defined(OS_ANDROID)
-void SharedMemory::Close() {
-  if (shm_.IsValid()) {
-    shm_.Close();
-    shm_ = SharedMemoryHandle();
-  }
-  if (readonly_shm_.IsValid()) {
-    readonly_shm_.Close();
-    readonly_shm_ = SharedMemoryHandle();
-  }
-}
-
-// For the given shmem named |mem_name|, return a filename to mmap()
-// (and possibly create).  Modifies |filename|.  Return false on
-// error, or true of we are happy.
-bool SharedMemory::FilePathForMemoryName(const std::string& mem_name,
-                                         FilePath* path) {
-  // mem_name will be used for a filename; make sure it doesn't
-  // contain anything which will confuse us.
-  DCHECK_EQ(std::string::npos, mem_name.find('/'));
-  DCHECK_EQ(std::string::npos, mem_name.find('\0'));
-
-  FilePath temp_dir;
-  if (!GetShmemTempDir(false, &temp_dir))
-    return false;
-
-#if defined(GOOGLE_CHROME_BUILD)
-  static const char kShmem[] = "com.google.Chrome.shmem.";
-#else
-  static const char kShmem[] = "org.chromium.Chromium.shmem.";
-#endif
-  CR_DEFINE_STATIC_LOCAL(const std::string, name_base, (kShmem));
-  *path = temp_dir.AppendASCII(name_base + mem_name);
-  return true;
-}
-
-SharedMemoryHandle SharedMemory::GetReadOnlyHandle() const {
-  CHECK(readonly_shm_.IsValid());
-  return readonly_shm_.Duplicate();
-}
-#endif  // !defined(OS_ANDROID)
-
-}  // namespace base
diff --git a/base/memory/shared_memory_tracker.cc b/base/memory/shared_memory_tracker.cc
deleted file mode 100644
index ee2b490..0000000
--- a/base/memory/shared_memory_tracker.cc
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2017 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/shared_memory_tracker.h"
-
-#include "base/memory/shared_memory.h"
-#include "base/strings/string_number_conversions.h"
-
-namespace base {
-
-const char SharedMemoryTracker::kDumpRootName[] = "shared_memory";
-
-// static
-SharedMemoryTracker* SharedMemoryTracker::GetInstance() {
-  static SharedMemoryTracker* instance = new SharedMemoryTracker;
-  return instance;
-}
-
-// static
-std::string SharedMemoryTracker::GetDumpNameForTracing(
-    const UnguessableToken& id) {
-  DCHECK(!id.is_empty());
-  return std::string(kDumpRootName) + "/" + id.ToString();
-}
-
-void SharedMemoryTracker::IncrementMemoryUsage(
-    const SharedMemory& shared_memory) {
-  AutoLock hold(usages_lock_);
-  DCHECK(usages_.find(shared_memory.memory()) == usages_.end());
-  usages_.emplace(shared_memory.memory(), UsageInfo(shared_memory.mapped_size(),
-                                                    shared_memory.mapped_id()));
-}
-
-void SharedMemoryTracker::IncrementMemoryUsage(
-    const SharedMemoryMapping& mapping) {
-  AutoLock hold(usages_lock_);
-  DCHECK(usages_.find(mapping.raw_memory_ptr()) == usages_.end());
-  usages_.emplace(mapping.raw_memory_ptr(),
-                  UsageInfo(mapping.mapped_size(), mapping.guid()));
-}
-
-void SharedMemoryTracker::DecrementMemoryUsage(
-    const SharedMemory& shared_memory) {
-  AutoLock hold(usages_lock_);
-  DCHECK(usages_.find(shared_memory.memory()) != usages_.end());
-  usages_.erase(shared_memory.memory());
-}
-
-void SharedMemoryTracker::DecrementMemoryUsage(
-    const SharedMemoryMapping& mapping) {
-  AutoLock hold(usages_lock_);
-  DCHECK(usages_.find(mapping.raw_memory_ptr()) != usages_.end());
-  usages_.erase(mapping.raw_memory_ptr());
-}
-
-SharedMemoryTracker::SharedMemoryTracker() {
-}
-
-SharedMemoryTracker::~SharedMemoryTracker() = default;
-
-}  // namespace
diff --git a/base/memory/shared_memory_tracker.h b/base/memory/shared_memory_tracker.h
deleted file mode 100644
index 72c7b7a..0000000
--- a/base/memory/shared_memory_tracker.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2017 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.
-
-#ifndef BASE_MEMORY_SHARED_MEMORY_TRACKER_H_
-#define BASE_MEMORY_SHARED_MEMORY_TRACKER_H_
-
-#include <map>
-#include <string>
-
-#include "base/memory/shared_memory.h"
-#include "base/memory/shared_memory_mapping.h"
-#include "base/synchronization/lock.h"
-
-namespace base {
-
-// SharedMemoryTracker tracks shared memory usage.
-class BASE_EXPORT SharedMemoryTracker {
- public:
-  // Returns a singleton instance.
-  static SharedMemoryTracker* GetInstance();
-
-  static std::string GetDumpNameForTracing(const UnguessableToken& id);
-
-  // Records shared memory usage on valid mapping.
-  void IncrementMemoryUsage(const SharedMemory& shared_memory);
-  void IncrementMemoryUsage(const SharedMemoryMapping& mapping);
-
-  // Records shared memory usage on unmapping.
-  void DecrementMemoryUsage(const SharedMemory& shared_memory);
-  void DecrementMemoryUsage(const SharedMemoryMapping& mapping);
-
-  // Root dump name for all shared memory dumps.
-  static const char kDumpRootName[];
-
- private:
-  SharedMemoryTracker();
-  ~SharedMemoryTracker();
-
-  // Information associated with each mapped address.
-  struct UsageInfo {
-    UsageInfo(size_t size, const UnguessableToken& id)
-        : mapped_size(size), mapped_id(id) {}
-
-    size_t mapped_size;
-    UnguessableToken mapped_id;
-  };
-
-  // Used to lock when |usages_| is modified or read.
-  Lock usages_lock_;
-  std::map<void*, UsageInfo> usages_;
-
-  DISALLOW_COPY_AND_ASSIGN(SharedMemoryTracker);
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_SHARED_MEMORY_TRACKER_H_
diff --git a/base/memory/shared_memory_win.cc b/base/memory/shared_memory_win.cc
deleted file mode 100644
index cf06dd3..0000000
--- a/base/memory/shared_memory_win.cc
+++ /dev/null
@@ -1,381 +0,0 @@
-// Copyright (c) 2011 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/shared_memory.h"
-
-#include <aclapi.h>
-#include <stddef.h>
-#include <stdint.h>
-
-#include "base/allocator/partition_allocator/page_allocator.h"
-#include "base/logging.h"
-#include "base/memory/shared_memory_tracker.h"
-#include "base/metrics/histogram_functions.h"
-#include "base/metrics/histogram_macros.h"
-#include "base/rand_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/unguessable_token.h"
-
-namespace base {
-namespace {
-
-// Errors that can occur during Shared Memory construction.
-// These match tools/metrics/histograms/histograms.xml.
-// This enum is append-only.
-enum CreateError {
-  SUCCESS = 0,
-  SIZE_ZERO = 1,
-  SIZE_TOO_LARGE = 2,
-  INITIALIZE_ACL_FAILURE = 3,
-  INITIALIZE_SECURITY_DESC_FAILURE = 4,
-  SET_SECURITY_DESC_FAILURE = 5,
-  CREATE_FILE_MAPPING_FAILURE = 6,
-  REDUCE_PERMISSIONS_FAILURE = 7,
-  ALREADY_EXISTS = 8,
-  CREATE_ERROR_LAST = ALREADY_EXISTS
-};
-
-// Emits UMA metrics about encountered errors. Pass zero (0) for |winerror|
-// if there is no associated Windows error.
-void LogError(CreateError error, DWORD winerror) {
-  UMA_HISTOGRAM_ENUMERATION("SharedMemory.CreateError", error,
-                            CREATE_ERROR_LAST + 1);
-  static_assert(ERROR_SUCCESS == 0, "Windows error code changed!");
-  if (winerror != ERROR_SUCCESS)
-    UmaHistogramSparse("SharedMemory.CreateWinError", winerror);
-}
-
-typedef enum _SECTION_INFORMATION_CLASS {
-  SectionBasicInformation,
-} SECTION_INFORMATION_CLASS;
-
-typedef struct _SECTION_BASIC_INFORMATION {
-  PVOID BaseAddress;
-  ULONG Attributes;
-  LARGE_INTEGER Size;
-} SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
-
-typedef ULONG(__stdcall* NtQuerySectionType)(
-    HANDLE SectionHandle,
-    SECTION_INFORMATION_CLASS SectionInformationClass,
-    PVOID SectionInformation,
-    ULONG SectionInformationLength,
-    PULONG ResultLength);
-
-// Returns the length of the memory section starting at the supplied address.
-size_t GetMemorySectionSize(void* address) {
-  MEMORY_BASIC_INFORMATION memory_info;
-  if (!::VirtualQuery(address, &memory_info, sizeof(memory_info)))
-    return 0;
-  return memory_info.RegionSize - (static_cast<char*>(address) -
-         static_cast<char*>(memory_info.AllocationBase));
-}
-
-// Checks if the section object is safe to map. At the moment this just means
-// it's not an image section.
-bool IsSectionSafeToMap(HANDLE handle) {
-  static NtQuerySectionType nt_query_section_func;
-  if (!nt_query_section_func) {
-    nt_query_section_func = reinterpret_cast<NtQuerySectionType>(
-        ::GetProcAddress(::GetModuleHandle(L"ntdll.dll"), "NtQuerySection"));
-    DCHECK(nt_query_section_func);
-  }
-
-  // The handle must have SECTION_QUERY access for this to succeed.
-  SECTION_BASIC_INFORMATION basic_information = {};
-  ULONG status =
-      nt_query_section_func(handle, SectionBasicInformation, &basic_information,
-                            sizeof(basic_information), nullptr);
-  if (status)
-    return false;
-  return (basic_information.Attributes & SEC_IMAGE) != SEC_IMAGE;
-}
-
-// Returns a HANDLE on success and |nullptr| on failure.
-// This function is similar to CreateFileMapping, but removes the permissions
-// WRITE_DAC, WRITE_OWNER, READ_CONTROL, and DELETE.
-//
-// A newly created file mapping has two sets of permissions. It has access
-// control permissions (WRITE_DAC, WRITE_OWNER, READ_CONTROL, and DELETE) and
-// file permissions (FILE_MAP_READ, FILE_MAP_WRITE, etc.). ::DuplicateHandle()
-// with the parameter DUPLICATE_SAME_ACCESS copies both sets of permissions.
-//
-// The Chrome sandbox prevents HANDLEs with the WRITE_DAC permission from being
-// duplicated into unprivileged processes. But the only way to copy file
-// permissions is with the parameter DUPLICATE_SAME_ACCESS. This means that
-// there is no way for a privileged process to duplicate a file mapping into an
-// unprivileged process while maintaining the previous file permissions.
-//
-// By removing all access control permissions of a file mapping immediately
-// after creation, ::DuplicateHandle() effectively only copies the file
-// permissions.
-HANDLE CreateFileMappingWithReducedPermissions(SECURITY_ATTRIBUTES* sa,
-                                               size_t rounded_size,
-                                               LPCWSTR name) {
-  HANDLE h = CreateFileMapping(INVALID_HANDLE_VALUE, sa, PAGE_READWRITE, 0,
-                               static_cast<DWORD>(rounded_size), name);
-  if (!h) {
-    LogError(CREATE_FILE_MAPPING_FAILURE, GetLastError());
-    return nullptr;
-  }
-
-  HANDLE h2;
-  BOOL success = ::DuplicateHandle(
-      GetCurrentProcess(), h, GetCurrentProcess(), &h2,
-      FILE_MAP_READ | FILE_MAP_WRITE | SECTION_QUERY, FALSE, 0);
-  BOOL rv = ::CloseHandle(h);
-  DCHECK(rv);
-
-  if (!success) {
-    LogError(REDUCE_PERMISSIONS_FAILURE, GetLastError());
-    return nullptr;
-  }
-
-  return h2;
-}
-
-}  // namespace.
-
-SharedMemory::SharedMemory() {}
-
-SharedMemory::SharedMemory(const string16& name) : name_(name) {}
-
-SharedMemory::SharedMemory(const SharedMemoryHandle& handle, bool read_only)
-    : external_section_(true), shm_(handle), read_only_(read_only) {}
-
-SharedMemory::~SharedMemory() {
-  Unmap();
-  Close();
-}
-
-// static
-bool SharedMemory::IsHandleValid(const SharedMemoryHandle& handle) {
-  return handle.IsValid();
-}
-
-// static
-void SharedMemory::CloseHandle(const SharedMemoryHandle& handle) {
-  handle.Close();
-}
-
-// static
-size_t SharedMemory::GetHandleLimit() {
-  // Rounded down from value reported here:
-  // http://blogs.technet.com/b/markrussinovich/archive/2009/09/29/3283844.aspx
-  return static_cast<size_t>(1 << 23);
-}
-
-// static
-SharedMemoryHandle SharedMemory::DuplicateHandle(
-    const SharedMemoryHandle& handle) {
-  return handle.Duplicate();
-}
-
-bool SharedMemory::CreateAndMapAnonymous(size_t size) {
-  return CreateAnonymous(size) && Map(size);
-}
-
-bool SharedMemory::Create(const SharedMemoryCreateOptions& options) {
-  // TODO(crbug.com/210609): NaCl forces us to round up 64k here, wasting 32k
-  // per mapping on average.
-  static const size_t kSectionMask = 65536 - 1;
-  DCHECK(!options.executable);
-  DCHECK(!shm_.IsValid());
-  if (options.size == 0) {
-    LogError(SIZE_ZERO, 0);
-    return false;
-  }
-
-  // Check maximum accounting for overflow.
-  if (options.size >
-      static_cast<size_t>(std::numeric_limits<int>::max()) - kSectionMask) {
-    LogError(SIZE_TOO_LARGE, 0);
-    return false;
-  }
-
-  size_t rounded_size = (options.size + kSectionMask) & ~kSectionMask;
-  name_ = options.name_deprecated ?
-      ASCIIToUTF16(*options.name_deprecated) : L"";
-  SECURITY_ATTRIBUTES sa = {sizeof(sa), nullptr, FALSE};
-  SECURITY_DESCRIPTOR sd;
-  ACL dacl;
-
-  if (name_.empty()) {
-    // Add an empty DACL to enforce anonymous read-only sections.
-    sa.lpSecurityDescriptor = &sd;
-    if (!InitializeAcl(&dacl, sizeof(dacl), ACL_REVISION)) {
-      LogError(INITIALIZE_ACL_FAILURE, GetLastError());
-      return false;
-    }
-    if (!InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION)) {
-      LogError(INITIALIZE_SECURITY_DESC_FAILURE, GetLastError());
-      return false;
-    }
-    if (!SetSecurityDescriptorDacl(&sd, TRUE, &dacl, FALSE)) {
-      LogError(SET_SECURITY_DESC_FAILURE, GetLastError());
-      return false;
-    }
-
-    // Windows ignores DACLs on certain unnamed objects (like shared sections).
-    // So, we generate a random name when we need to enforce read-only.
-    uint64_t rand_values[4];
-    RandBytes(&rand_values, sizeof(rand_values));
-    name_ = StringPrintf(L"CrSharedMem_%016llx%016llx%016llx%016llx",
-                         rand_values[0], rand_values[1],
-                         rand_values[2], rand_values[3]);
-  }
-  DCHECK(!name_.empty());
-  shm_ = SharedMemoryHandle(
-      CreateFileMappingWithReducedPermissions(&sa, rounded_size, name_.c_str()),
-      rounded_size, UnguessableToken::Create());
-  if (!shm_.IsValid()) {
-    // The error is logged within CreateFileMappingWithReducedPermissions().
-    return false;
-  }
-
-  requested_size_ = options.size;
-
-  // Check if the shared memory pre-exists.
-  if (GetLastError() == ERROR_ALREADY_EXISTS) {
-    // If the file already existed, set requested_size_ to 0 to show that
-    // we don't know the size.
-    requested_size_ = 0;
-    external_section_ = true;
-    if (!options.open_existing_deprecated) {
-      Close();
-      // From "if" above: GetLastError() == ERROR_ALREADY_EXISTS.
-      LogError(ALREADY_EXISTS, ERROR_ALREADY_EXISTS);
-      return false;
-    }
-  }
-
-  LogError(SUCCESS, ERROR_SUCCESS);
-  return true;
-}
-
-bool SharedMemory::Delete(const std::string& name) {
-  // intentionally empty -- there is nothing for us to do on Windows.
-  return true;
-}
-
-bool SharedMemory::Open(const std::string& name, bool read_only) {
-  DCHECK(!shm_.IsValid());
-  DWORD access = FILE_MAP_READ | SECTION_QUERY;
-  if (!read_only)
-    access |= FILE_MAP_WRITE;
-  name_ = ASCIIToUTF16(name);
-  read_only_ = read_only;
-
-  // This form of sharing shared memory is deprecated. https://crbug.com/345734.
-  // However, we can't get rid of it without a significant refactor because its
-  // used to communicate between two versions of the same service process, very
-  // early in the life cycle.
-  // Technically, we should also pass the GUID from the original shared memory
-  // region. We don't do that - this means that we will overcount this memory,
-  // which thankfully isn't relevant since Chrome only communicates with a
-  // single version of the service process.
-  // We pass the size |0|, which is a dummy size and wrong, but otherwise
-  // harmless.
-  shm_ = SharedMemoryHandle(
-      OpenFileMapping(access, false, name_.empty() ? nullptr : name_.c_str()),
-      0u, UnguessableToken::Create());
-  if (!shm_.IsValid())
-    return false;
-  // If a name specified assume it's an external section.
-  if (!name_.empty())
-    external_section_ = true;
-  // Note: size_ is not set in this case.
-  return true;
-}
-
-bool SharedMemory::MapAt(off_t offset, size_t bytes) {
-  if (!shm_.IsValid()) {
-    DLOG(ERROR) << "Invalid SharedMemoryHandle.";
-    return false;
-  }
-
-  if (bytes > static_cast<size_t>(std::numeric_limits<int>::max())) {
-    DLOG(ERROR) << "Bytes required exceeds the 2G limitation.";
-    return false;
-  }
-
-  if (memory_) {
-    DLOG(ERROR) << "The SharedMemory has been mapped already.";
-    return false;
-  }
-
-  if (external_section_ && !IsSectionSafeToMap(shm_.GetHandle())) {
-    DLOG(ERROR) << "SharedMemoryHandle is not safe to be mapped.";
-    return false;
-  }
-
-  // Try to map the shared memory. On the first failure, release any reserved
-  // address space for a single retry.
-  for (int i = 0; i < 2; ++i) {
-    memory_ = MapViewOfFile(
-        shm_.GetHandle(),
-        read_only_ ? FILE_MAP_READ : FILE_MAP_READ | FILE_MAP_WRITE,
-        static_cast<uint64_t>(offset) >> 32, static_cast<DWORD>(offset), bytes);
-    if (memory_)
-      break;
-    ReleaseReservation();
-  }
-  if (!memory_) {
-    DPLOG(ERROR) << "Failed executing MapViewOfFile";
-    return false;
-  }
-
-  DCHECK_EQ(0U, reinterpret_cast<uintptr_t>(memory_) &
-                    (SharedMemory::MAP_MINIMUM_ALIGNMENT - 1));
-  mapped_size_ = GetMemorySectionSize(memory_);
-  mapped_id_ = shm_.GetGUID();
-  SharedMemoryTracker::GetInstance()->IncrementMemoryUsage(*this);
-  return true;
-}
-
-bool SharedMemory::Unmap() {
-  if (!memory_)
-    return false;
-
-  SharedMemoryTracker::GetInstance()->DecrementMemoryUsage(*this);
-  UnmapViewOfFile(memory_);
-  memory_ = nullptr;
-  mapped_id_ = UnguessableToken();
-  return true;
-}
-
-SharedMemoryHandle SharedMemory::GetReadOnlyHandle() const {
-  HANDLE result;
-  ProcessHandle process = GetCurrentProcess();
-  if (!::DuplicateHandle(process, shm_.GetHandle(), process, &result,
-                         FILE_MAP_READ | SECTION_QUERY, FALSE, 0)) {
-    return SharedMemoryHandle();
-  }
-  SharedMemoryHandle handle =
-      SharedMemoryHandle(result, shm_.GetSize(), shm_.GetGUID());
-  handle.SetOwnershipPassesToIPC(true);
-  return handle;
-}
-
-void SharedMemory::Close() {
-  if (shm_.IsValid()) {
-    shm_.Close();
-    shm_ = SharedMemoryHandle();
-  }
-}
-
-SharedMemoryHandle SharedMemory::handle() const {
-  return shm_;
-}
-
-SharedMemoryHandle SharedMemory::TakeHandle() {
-  SharedMemoryHandle handle(shm_);
-  handle.SetOwnershipPassesToIPC(true);
-  Unmap();
-  shm_ = SharedMemoryHandle();
-  return handle;
-}
-
-}  // namespace base
diff --git a/base/memory/unsafe_shared_memory_region.cc b/base/memory/unsafe_shared_memory_region.cc
deleted file mode 100644
index 422b5a9..0000000
--- a/base/memory/unsafe_shared_memory_region.cc
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2018 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/unsafe_shared_memory_region.h"
-
-#include <utility>
-
-#include "base/memory/shared_memory.h"
-
-namespace base {
-
-// static
-UnsafeSharedMemoryRegion UnsafeSharedMemoryRegion::Create(size_t size) {
-  subtle::PlatformSharedMemoryRegion handle =
-      subtle::PlatformSharedMemoryRegion::CreateUnsafe(size);
-
-  return UnsafeSharedMemoryRegion(std::move(handle));
-}
-
-// static
-UnsafeSharedMemoryRegion UnsafeSharedMemoryRegion::Deserialize(
-    subtle::PlatformSharedMemoryRegion handle) {
-  return UnsafeSharedMemoryRegion(std::move(handle));
-}
-
-// static
-subtle::PlatformSharedMemoryRegion
-UnsafeSharedMemoryRegion::TakeHandleForSerialization(
-    UnsafeSharedMemoryRegion region) {
-  return std::move(region.handle_);
-}
-
-UnsafeSharedMemoryRegion::UnsafeSharedMemoryRegion() = default;
-UnsafeSharedMemoryRegion::UnsafeSharedMemoryRegion(
-    UnsafeSharedMemoryRegion&& region) = default;
-UnsafeSharedMemoryRegion& UnsafeSharedMemoryRegion::operator=(
-    UnsafeSharedMemoryRegion&& region) = default;
-UnsafeSharedMemoryRegion::~UnsafeSharedMemoryRegion() = default;
-
-UnsafeSharedMemoryRegion UnsafeSharedMemoryRegion::Duplicate() const {
-  return UnsafeSharedMemoryRegion(handle_.Duplicate());
-}
-
-WritableSharedMemoryMapping UnsafeSharedMemoryRegion::Map() const {
-  return MapAt(0, handle_.GetSize());
-}
-
-WritableSharedMemoryMapping UnsafeSharedMemoryRegion::MapAt(off_t offset,
-                                                            size_t size) const {
-  if (!IsValid())
-    return {};
-
-  void* memory = nullptr;
-  size_t mapped_size = 0;
-  if (!handle_.MapAt(offset, size, &memory, &mapped_size))
-    return {};
-
-  return WritableSharedMemoryMapping(memory, size, mapped_size,
-                                     handle_.GetGUID());
-}
-
-bool UnsafeSharedMemoryRegion::IsValid() const {
-  return handle_.IsValid();
-}
-
-UnsafeSharedMemoryRegion::UnsafeSharedMemoryRegion(
-    subtle::PlatformSharedMemoryRegion handle)
-    : handle_(std::move(handle)) {
-  if (handle_.IsValid()) {
-    CHECK_EQ(handle_.GetMode(),
-             subtle::PlatformSharedMemoryRegion::Mode::kUnsafe);
-  }
-}
-
-}  // namespace base
diff --git a/base/memory/unsafe_shared_memory_region.h b/base/memory/unsafe_shared_memory_region.h
deleted file mode 100644
index d77eaaa..0000000
--- a/base/memory/unsafe_shared_memory_region.h
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright 2018 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.
-
-#ifndef BASE_MEMORY_UNSAFE_SHARED_MEMORY_REGION_H_
-#define BASE_MEMORY_UNSAFE_SHARED_MEMORY_REGION_H_
-
-#include "base/gtest_prod_util.h"
-#include "base/macros.h"
-#include "base/memory/platform_shared_memory_region.h"
-#include "base/memory/shared_memory_mapping.h"
-
-namespace base {
-
-// Scoped move-only handle to a region of platform shared memory. The instance
-// owns the platform handle it wraps. Mappings created by this region are
-// writable. These mappings remain valid even after the region handle is moved
-// or destroyed.
-//
-// NOTE: UnsafeSharedMemoryRegion cannot be converted to a read-only region. Use
-// with caution as the region will be writable to any process with a handle to
-// the region.
-//
-// Use this if and only if the following is true:
-// - You do not need to share the region as read-only, and,
-// - You need to have several instances of the region simultaneously, possibly
-//   in different processes, that can produce writable mappings.
-
-class BASE_EXPORT UnsafeSharedMemoryRegion {
- public:
-  using MappingType = WritableSharedMemoryMapping;
-  // Creates a new UnsafeSharedMemoryRegion instance of a given size that can be
-  // used for mapping writable shared memory into the virtual address space.
-  static UnsafeSharedMemoryRegion Create(size_t size);
-
-  // Returns an UnsafeSharedMemoryRegion built from a platform-specific handle
-  // that was taken from another UnsafeSharedMemoryRegion instance. Returns an
-  // invalid region iff the |handle| is invalid. CHECK-fails if the |handle|
-  // isn't unsafe.
-  // This should be used only by the code passing a handle across
-  // process boundaries.
-  static UnsafeSharedMemoryRegion Deserialize(
-      subtle::PlatformSharedMemoryRegion handle);
-
-  // Extracts a platform handle from the region. Ownership is transferred to the
-  // returned region object.
-  // This should be used only for sending the handle from the current
-  // process to another.
-  static subtle::PlatformSharedMemoryRegion TakeHandleForSerialization(
-      UnsafeSharedMemoryRegion region);
-
-  // Default constructor initializes an invalid instance.
-  UnsafeSharedMemoryRegion();
-
-  // Move operations are allowed.
-  UnsafeSharedMemoryRegion(UnsafeSharedMemoryRegion&&);
-  UnsafeSharedMemoryRegion& operator=(UnsafeSharedMemoryRegion&&);
-
-  // Destructor closes shared memory region if valid.
-  // All created mappings will remain valid.
-  ~UnsafeSharedMemoryRegion();
-
-  // Duplicates the underlying platform handle and creates a new
-  // UnsafeSharedMemoryRegion instance that owns the newly created handle.
-  // Returns a valid UnsafeSharedMemoryRegion on success, invalid otherwise.
-  // The current region instance remains valid in any case.
-  UnsafeSharedMemoryRegion Duplicate() const;
-
-  // Maps the shared memory region into the caller's address space with write
-  // access. The mapped address is guaranteed to have an alignment of
-  // at least |subtle::PlatformSharedMemoryRegion::kMapMinimumAlignment|.
-  // Returns a valid WritableSharedMemoryMapping instance on success, invalid
-  // otherwise.
-  WritableSharedMemoryMapping Map() const;
-
-  // Same as above, but maps only |size| bytes of the shared memory region
-  // starting with the given |offset|. |offset| must be aligned to value of
-  // |SysInfo::VMAllocationGranularity()|. Returns an invalid mapping if
-  // requested bytes are out of the region limits.
-  WritableSharedMemoryMapping MapAt(off_t offset, size_t size) const;
-
-  // Whether the underlying platform handle is valid.
-  bool IsValid() const;
-
-  // Returns the maximum mapping size that can be created from this region.
-  size_t GetSize() const {
-    DCHECK(IsValid());
-    return handle_.GetSize();
-  }
-
- private:
-  FRIEND_TEST_ALL_PREFIXES(DiscardableSharedMemoryTest,
-                           LockShouldFailIfPlatformLockPagesFails);
-  friend class DiscardableSharedMemory;
-
-  explicit UnsafeSharedMemoryRegion(subtle::PlatformSharedMemoryRegion handle);
-
-  // Returns a platform shared memory handle. |this| remains the owner of the
-  // handle.
-  subtle::PlatformSharedMemoryRegion::PlatformHandle GetPlatformHandle() const {
-    DCHECK(IsValid());
-    return handle_.GetPlatformHandle();
-  }
-
-  subtle::PlatformSharedMemoryRegion handle_;
-
-  DISALLOW_COPY_AND_ASSIGN(UnsafeSharedMemoryRegion);
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_UNSAFE_SHARED_MEMORY_REGION_H_
diff --git a/base/memory/writable_shared_memory_region.cc b/base/memory/writable_shared_memory_region.cc
deleted file mode 100644
index 7a29522..0000000
--- a/base/memory/writable_shared_memory_region.cc
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2018 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/writable_shared_memory_region.h"
-
-#include <utility>
-
-#include "base/memory/shared_memory.h"
-#include "build_config.h"
-
-namespace base {
-
-// static
-WritableSharedMemoryRegion WritableSharedMemoryRegion::Create(size_t size) {
-  subtle::PlatformSharedMemoryRegion handle =
-      subtle::PlatformSharedMemoryRegion::CreateWritable(size);
-
-  return WritableSharedMemoryRegion(std::move(handle));
-}
-
-// static
-WritableSharedMemoryRegion WritableSharedMemoryRegion::Deserialize(
-    subtle::PlatformSharedMemoryRegion handle) {
-  return WritableSharedMemoryRegion(std::move(handle));
-}
-
-// static
-subtle::PlatformSharedMemoryRegion
-WritableSharedMemoryRegion::TakeHandleForSerialization(
-    WritableSharedMemoryRegion region) {
-  return std::move(region.handle_);
-}
-
-// static
-ReadOnlySharedMemoryRegion WritableSharedMemoryRegion::ConvertToReadOnly(
-    WritableSharedMemoryRegion region) {
-  subtle::PlatformSharedMemoryRegion handle = std::move(region.handle_);
-  if (!handle.ConvertToReadOnly())
-    return {};
-
-  return ReadOnlySharedMemoryRegion::Deserialize(std::move(handle));
-}
-
-WritableSharedMemoryRegion::WritableSharedMemoryRegion() = default;
-WritableSharedMemoryRegion::WritableSharedMemoryRegion(
-    WritableSharedMemoryRegion&& region) = default;
-WritableSharedMemoryRegion& WritableSharedMemoryRegion::operator=(
-    WritableSharedMemoryRegion&& region) = default;
-WritableSharedMemoryRegion::~WritableSharedMemoryRegion() = default;
-
-WritableSharedMemoryMapping WritableSharedMemoryRegion::Map() const {
-  return MapAt(0, handle_.GetSize());
-}
-
-WritableSharedMemoryMapping WritableSharedMemoryRegion::MapAt(
-    off_t offset,
-    size_t size) const {
-  if (!IsValid())
-    return {};
-
-  void* memory = nullptr;
-  size_t mapped_size = 0;
-  if (!handle_.MapAt(offset, size, &memory, &mapped_size))
-    return {};
-
-  return WritableSharedMemoryMapping(memory, size, mapped_size,
-                                     handle_.GetGUID());
-}
-
-bool WritableSharedMemoryRegion::IsValid() const {
-  return handle_.IsValid();
-}
-
-WritableSharedMemoryRegion::WritableSharedMemoryRegion(
-    subtle::PlatformSharedMemoryRegion handle)
-    : handle_(std::move(handle)) {
-  if (handle_.IsValid()) {
-    CHECK_EQ(handle_.GetMode(),
-             subtle::PlatformSharedMemoryRegion::Mode::kWritable);
-  }
-}
-
-}  // namespace base
diff --git a/base/memory/writable_shared_memory_region.h b/base/memory/writable_shared_memory_region.h
deleted file mode 100644
index b953a10..0000000
--- a/base/memory/writable_shared_memory_region.h
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2018 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.
-
-#ifndef BASE_MEMORY_WRITABLE_SHARED_MEMORY_REGION_H_
-#define BASE_MEMORY_WRITABLE_SHARED_MEMORY_REGION_H_
-
-#include "base/macros.h"
-#include "base/memory/platform_shared_memory_region.h"
-#include "base/memory/read_only_shared_memory_region.h"
-#include "base/memory/shared_memory_mapping.h"
-
-namespace base {
-
-// Scoped move-only handle to a region of platform shared memory. The instance
-// owns the platform handle it wraps. Mappings created by this region are
-// writable. These mappings remain valid even after the region handle is moved
-// or destroyed.
-//
-// This region can be locked to read-only access by converting it to a
-// ReadOnlySharedMemoryRegion. However, unlike ReadOnlySharedMemoryRegion and
-// UnsafeSharedMemoryRegion, ownership of this region (while writable) is unique
-// and may only be transferred, not duplicated.
-class BASE_EXPORT WritableSharedMemoryRegion {
- public:
-  using MappingType = WritableSharedMemoryMapping;
-  // Creates a new WritableSharedMemoryRegion instance of a given
-  // size that can be used for mapping writable shared memory into the virtual
-  // address space.
-  static WritableSharedMemoryRegion Create(size_t size);
-
-  // Returns a WritableSharedMemoryRegion built from a platform handle that was
-  // taken from another WritableSharedMemoryRegion instance. Returns an invalid
-  // region iff the |handle| is invalid. CHECK-fails if the |handle| isn't
-  // writable.
-  // This should be used only by the code passing handles across process
-  // boundaries.
-  static WritableSharedMemoryRegion Deserialize(
-      subtle::PlatformSharedMemoryRegion handle);
-
-  // Extracts a platform handle from the region. Ownership is transferred to the
-  // returned region object.
-  // This should be used only for sending the handle from the current
-  // process to another.
-  static subtle::PlatformSharedMemoryRegion TakeHandleForSerialization(
-      WritableSharedMemoryRegion region);
-
-  // Makes the region read-only. No new writable mappings of the region can be
-  // created after this call. Returns an invalid region on failure.
-  static ReadOnlySharedMemoryRegion ConvertToReadOnly(
-      WritableSharedMemoryRegion region);
-
-  // Default constructor initializes an invalid instance.
-  WritableSharedMemoryRegion();
-
-  // Move operations are allowed.
-  WritableSharedMemoryRegion(WritableSharedMemoryRegion&&);
-  WritableSharedMemoryRegion& operator=(WritableSharedMemoryRegion&&);
-
-  // Destructor closes shared memory region if valid.
-  // All created mappings will remain valid.
-  ~WritableSharedMemoryRegion();
-
-  // Maps the shared memory region into the caller's address space with write
-  // access. The mapped address is guaranteed to have an alignment of
-  // at least |subtle::PlatformSharedMemoryRegion::kMapMinimumAlignment|.
-  // Returns a valid WritableSharedMemoryMapping instance on success, invalid
-  // otherwise.
-  WritableSharedMemoryMapping Map() const;
-
-  // Same as above, but maps only |size| bytes of the shared memory block
-  // starting with the given |offset|. |offset| must be aligned to value of
-  // |SysInfo::VMAllocationGranularity()|. Returns an invalid mapping if
-  // requested bytes are out of the region limits.
-  WritableSharedMemoryMapping MapAt(off_t offset, size_t size) const;
-
-  // Whether underlying platform handles are valid.
-  bool IsValid() const;
-
-  // Returns the maximum mapping size that can be created from this region.
-  size_t GetSize() const {
-    DCHECK(IsValid());
-    return handle_.GetSize();
-  }
-
- private:
-  explicit WritableSharedMemoryRegion(
-      subtle::PlatformSharedMemoryRegion handle);
-
-  subtle::PlatformSharedMemoryRegion handle_;
-
-  DISALLOW_COPY_AND_ASSIGN(WritableSharedMemoryRegion);
-};
-
-}  // namespace base
-
-#endif  // BASE_MEMORY_WRITABLE_SHARED_MEMORY_REGION_H_
diff --git a/build/gen.py b/build/gen.py
index 5f73187..95f8fe1 100755
--- a/build/gen.py
+++ b/build/gen.py
@@ -263,13 +263,7 @@
         'base/location.cc',
         'base/logging.cc',
         'base/md5.cc',
-        'base/memory/platform_shared_memory_region.cc',
-        'base/memory/read_only_shared_memory_region.cc',
         'base/memory/ref_counted.cc',
-        'base/memory/ref_counted_memory.cc',
-        'base/memory/shared_memory_mapping.cc',
-        'base/memory/shared_memory_handle.cc',
-        'base/memory/shared_memory_tracker.cc',
         'base/memory/weak_ptr.cc',
         'base/message_loop/incoming_task_queue.cc',
         'base/message_loop/message_loop.cc',
@@ -554,19 +548,6 @@
       ], 'tool': 'cxx', 'include_dirs': [], 'libs': []},
   }
 
-  if is_win:
-    static_libraries['base']['sources'].extend([
-        'base/memory/platform_shared_memory_region_win.cc'
-    ])
-  elif is_mac:
-    static_libraries['base']['sources'].extend([
-        'base/memory/platform_shared_memory_region_mac.cc'
-    ])
-  elif is_linux:
-    static_libraries['base']['sources'].extend([
-        'base/memory/platform_shared_memory_region_posix.cc'
-    ])
-
   if is_posix:
     static_libraries['base']['sources'].extend([
         'base/base_paths_posix.cc',
@@ -577,7 +558,6 @@
         'base/files/file_posix.cc',
         'base/files/file_util_posix.cc',
         'base/files/memory_mapped_file_posix.cc',
-        'base/memory/shared_memory_helper.cc',
         'base/message_loop/message_pump_libevent.cc',
         'base/posix/file_descriptor_shuffle.cc',
         'base/posix/global_descriptors.cc',
@@ -626,8 +606,6 @@
         'tool': 'cxx',
     }
     static_libraries['base']['sources'].extend([
-        'base/memory/shared_memory_handle_posix.cc',
-        'base/memory/shared_memory_posix.cc',
         'base/nix/xdg_util.cc',
         'base/process/internal_linux.cc',
         'base/process/memory_linux.cc',
@@ -675,8 +653,6 @@
         'base/mac/scoped_mach_port.cc',
         'base/mac/scoped_mach_vm.cc',
         'base/mac/scoped_nsautorelease_pool.mm',
-        'base/memory/shared_memory_handle_mac.cc',
-        'base/memory/shared_memory_mac.cc',
         'base/message_loop/message_pump_mac.mm',
         'base/process/process_handle_mac.cc',
         'base/process/process_info_mac.cc',
@@ -723,9 +699,6 @@
         'base/files/memory_mapped_file_win.cc',
         'base/guid.cc',
         'base/logging_win.cc',
-        'base/memory/memory_pressure_monitor_win.cc',
-        'base/memory/shared_memory_handle_win.cc',
-        'base/memory/shared_memory_win.cc',
         'base/message_loop/message_pump_win.cc',
         'base/native_library_win.cc',
         'base/power_monitor/power_monitor_device_source_win.cc',