Delete lots of unused base/win

Change-Id: Ia0b915bd0a39915569022c7a9ae29d2eb29fb228
Reviewed-on: https://gn-review.googlesource.com/1681
Reviewed-by: Brett Wilson <brettw@chromium.org>
Commit-Queue: Scott Graham <scottmg@chromium.org>
diff --git a/base/files/file_util_win.cc b/base/files/file_util_win.cc
index 545dbc0..9133d7e 100644
--- a/base/files/file_util_win.cc
+++ b/base/files/file_util_win.cc
@@ -30,7 +30,6 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
 #include "base/win/scoped_handle.h"
-#include "base/win/windows_version.h"
 
 // #define needed to link in RtlGenRandom(), a.k.a. SystemFunction036.  See the
 // "Community Additions" comment on MSDN here:
diff --git a/base/win/async_operation.h b/base/win/async_operation.h
deleted file mode 100644
index 2c41ddf..0000000
--- a/base/win/async_operation.h
+++ /dev/null
@@ -1,244 +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_WIN_ASYNC_OPERATION_H_
-#define BASE_WIN_ASYNC_OPERATION_H_
-
-#include <unknwn.h>
-#include <windows.foundation.h>
-#include <wrl/async.h>
-#include <wrl/client.h>
-
-#include <type_traits>
-#include <utility>
-
-#include "base/bind.h"
-#include "base/callback.h"
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "base/optional.h"
-#include "base/threading/thread_checker.h"
-
-namespace base {
-namespace win {
-
-// This file provides an implementation of Windows::Foundation::IAsyncOperation.
-// Specializations exist for "regular" types and interface types that inherit
-// from IUnknown. Both specializations expose a callback() method, which can be
-// used to provide the result that will be forwarded to the registered
-// completion handler. For regular types it expects an instance of that type,
-// and for interface types it expects a corresponding ComPtr. This class is
-// thread-affine and all member methods should be called on the same thread that
-// constructed the object. In order to offload heavy result computation,
-// base's PostTaskAndReplyWithResult() should be used with the ResultCallback
-// passed as a reply.
-//
-// Example usages:
-//
-// // Regular types
-// auto regular_op = WRL::Make<base::win::AsyncOperation<int>>();
-// auto cb = regular_op->callback();
-// regular_op->put_Completed(...event handler...);
-// ...
-// // This will invoke the event handler.
-// std::move(cb).Run(123);
-// ...
-// // Results can be queried:
-// int results = 0;
-// regular_op->GetResults(&results);
-// EXPECT_EQ(123, results);
-//
-// // Interface types
-// auto interface_op = WRL::Make<base::win::AsyncOperation<FooBar*>>();
-// auto cb = interface_op->callback();
-// interface_op->put_Completed(...event handler...);
-// ...
-// // This will invoke the event handler.
-// std::move(cb).Run(WRL::Make<IFooBarImpl>());
-// ...
-// // Results can be queried:
-// WRL::ComPtr<IFooBar> results;
-// interface_op->GetResults(&results);
-// // |results| points to the provided IFooBarImpl instance.
-//
-// // Offloading a heavy computation:
-// auto my_op = WRL::Make<base::win::AsyncOperation<FooBar*>>();
-// base::PostTaskAndReplyWithResult(
-//     base::BindOnce(MakeFooBar), my_op->callback());
-
-namespace internal {
-
-// Template tricks needed to dispatch to the correct implementation below.
-//
-// For all types which are neither InterfaceGroups nor RuntimeClasses, the
-// following three typedefs are synonyms for a single C++ type.  But for
-// InterfaceGroups and RuntimeClasses, they are different types:
-//   LogicalT: The C++ Type for the InterfaceGroup or RuntimeClass, when
-//             used as a template parameter.  Eg "RCFoo*"
-//   AbiT:     The C++ type for the default interface used to represent the
-//             InterfaceGroup or RuntimeClass when passed as a method parameter.
-//             Eg "IFoo*"
-//   ComplexT: An instantiation of the Internal "AggregateType" template that
-//             combines LogicalT with AbiT. Eg "AggregateType<RCFoo*,IFoo*>"
-//
-// windows.foundation.collections.h defines the following template and
-// semantics in Windows::Foundation::Internal:
-//
-// template <class LogicalType, class AbiType>
-// struct AggregateType;
-//
-//   LogicalType - the Windows Runtime type (eg, runtime class, inteface group,
-//                 etc) being provided as an argument to an _impl template, when
-//                 that type cannot be represented at the ABI.
-//   AbiType     - the type used for marshalling, ie "at the ABI", for the
-//                 logical type.
-template <typename T>
-using ComplexT =
-    typename ABI::Windows::Foundation::IAsyncOperation<T>::TResult_complex;
-
-template <typename T>
-using AbiT =
-    typename ABI::Windows::Foundation::Internal::GetAbiType<ComplexT<T>>::type;
-
-template <typename T>
-using LogicalT = typename ABI::Windows::Foundation::Internal::GetLogicalType<
-    ComplexT<T>>::type;
-
-template <typename T>
-using InterfaceT = std::remove_pointer_t<AbiT<T>>;
-
-// Implementation of shared functionality.
-template <class T>
-class AsyncOperationBase
-    : public Microsoft::WRL::RuntimeClass<
-          Microsoft::WRL::RuntimeClassFlags<
-              Microsoft::WRL::WinRt | Microsoft::WRL::InhibitRoOriginateError>,
-          ABI::Windows::Foundation::IAsyncOperation<T>> {
- public:
-  using Handler = ABI::Windows::Foundation::IAsyncOperationCompletedHandler<T>;
-
-  AsyncOperationBase() = default;
-  ~AsyncOperationBase() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); }
-
-  // ABI::Windows::Foundation::IAsyncOperation:
-  IFACEMETHODIMP put_Completed(Handler* handler) override {
-    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-    handler_ = handler;
-    return S_OK;
-  }
-
-  IFACEMETHODIMP get_Completed(Handler** handler) override {
-    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-    return handler_.CopyTo(handler);
-  }
-
- protected:
-  void InvokeCompletedHandler() {
-    handler_->Invoke(this, ABI::Windows::Foundation::AsyncStatus::Completed);
-  }
-
-  THREAD_CHECKER(thread_checker_);
-
- private:
-  Microsoft::WRL::ComPtr<Handler> handler_;
-
-  DISALLOW_COPY_AND_ASSIGN(AsyncOperationBase);
-};
-
-}  // namespace internal
-
-template <typename T, typename Enable = void>
-class AsyncOperation;
-
-template <typename T>
-class AsyncOperation<
-    T,
-    std::enable_if_t<std::is_base_of<IUnknown, internal::InterfaceT<T>>::value>>
-    : public internal::AsyncOperationBase<T> {
- public:
-  using InterfacePointer = Microsoft::WRL::ComPtr<internal::InterfaceT<T>>;
-  using ResultCallback = base::OnceCallback<void(InterfacePointer)>;
-
-  AsyncOperation() : weak_factory_(this) {
-    // Note: This can't be done in the constructor initializer list. This is
-    // because it relies on weak_factory_ to be initialized, which needs to be
-    // the last class member. Also applies below.
-    callback_ =
-        base::BindOnce(&AsyncOperation::OnResult, weak_factory_.GetWeakPtr());
-  }
-
-  ResultCallback callback() {
-    // Note: `this->` here and below is necessary due to the
-    // -Wmicrosoft-template compiler warning.
-    DCHECK_CALLED_ON_VALID_THREAD(this->thread_checker_);
-    DCHECK(!callback_.is_null());
-    return std::move(callback_);
-  }
-
-  // ABI::Windows::Foundation::IAsyncOperation:
-  IFACEMETHODIMP GetResults(internal::AbiT<T>* results) override {
-    DCHECK_CALLED_ON_VALID_THREAD(this->thread_checker_);
-    return ptr_ ? ptr_.CopyTo(results) : E_PENDING;
-  }
-
- private:
-  void OnResult(InterfacePointer ptr) {
-    DCHECK_CALLED_ON_VALID_THREAD(this->thread_checker_);
-    DCHECK(!ptr_);
-    ptr_ = std::move(ptr);
-    this->InvokeCompletedHandler();
-  }
-
-  ResultCallback callback_;
-  InterfacePointer ptr_;
-  base::WeakPtrFactory<AsyncOperation> weak_factory_;
-};
-
-template <typename T>
-class AsyncOperation<
-    T,
-    std::enable_if_t<
-        !std::is_base_of<IUnknown, internal::InterfaceT<T>>::value>>
-    : public internal::AsyncOperationBase<T> {
- public:
-  using ResultCallback = base::OnceCallback<void(T)>;
-
-  AsyncOperation() : weak_factory_(this) {
-    callback_ =
-        base::BindOnce(&AsyncOperation::OnResult, weak_factory_.GetWeakPtr());
-  }
-
-  ResultCallback callback() {
-    DCHECK_CALLED_ON_VALID_THREAD(this->thread_checker_);
-    DCHECK(!callback_.is_null());
-    return std::move(callback_);
-  }
-
-  // ABI::Windows::Foundation::IAsyncOperation:
-  IFACEMETHODIMP GetResults(internal::AbiT<T>* results) override {
-    DCHECK_CALLED_ON_VALID_THREAD(this->thread_checker_);
-    if (!value_)
-      return E_PENDING;
-
-    *results = *value_;
-    return S_OK;
-  }
-
- private:
-  void OnResult(T result) {
-    DCHECK_CALLED_ON_VALID_THREAD(this->thread_checker_);
-    DCHECK(!value_);
-    value_.emplace(std::move(result));
-    this->InvokeCompletedHandler();
-  }
-
-  ResultCallback callback_;
-  base::Optional<T> value_;
-  base::WeakPtrFactory<AsyncOperation> weak_factory_;
-};
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_ASYNC_OPERATION_H_
diff --git a/base/win/com_init_check_hook.cc b/base/win/com_init_check_hook.cc
deleted file mode 100644
index 7055bb0..0000000
--- a/base/win/com_init_check_hook.cc
+++ /dev/null
@@ -1,299 +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/win/com_init_check_hook.h"
-
-#include <objbase.h>
-#include <stdint.h>
-#include <string.h>
-#include <windows.h>
-
-#include "base/strings/stringprintf.h"
-#include "base/synchronization/lock.h"
-#include "base/win/com_init_util.h"
-#include "base/win/patch_util.h"
-
-namespace base {
-namespace win {
-
-#if defined(COM_INIT_CHECK_HOOK_ENABLED)
-
-namespace {
-
-// Hotpatchable Microsoft x86 32-bit functions take one of two forms:
-// Newer format:
-// RelAddr  Binary     Instruction                 Remarks
-//      -5  cc         int 3
-//      -4  cc         int 3
-//      -3  cc         int 3
-//      -2  cc         int 3
-//      -1  cc         int 3
-//       0  8bff       mov edi,edi                 Actual entry point and no-op.
-//       2  ...                                    Actual body.
-//
-// Older format:
-// RelAddr  Binary     Instruction                 Remarks
-//      -5  90         nop
-//      -4  90         nop
-//      -3  90         nop
-//      -2  90         nop
-//      -1  90         nop
-//       0  8bff       mov edi,edi                 Actual entry point and no-op.
-//       2  ...                                    Actual body.
-//
-// The "int 3" or nop sled as well as entry point no-op are critical, as they
-// are just enough to patch in a short backwards jump to -5 (2 bytes) then that
-// can do a relative 32-bit jump about 2GB before or after the current address.
-//
-// To perform a hotpatch, we need to figure out where we want to go and where
-// we are now as the final jump is relative. Let's say we want to jump to
-// 0x12345678. Relative jumps are calculated from eip, which for our jump is the
-// next instruction address. For the example above, that means we start at a 0
-// base address.
-//
-// Our patch will then look as follows:
-// RelAddr  Binary     Instruction                 Remarks
-//      -5  e978563412 jmp 0x12345678-(-0x5+0x5)   Note little-endian format.
-//       0  ebf9       jmp -0x5-(0x0+0x2)          Goes to RelAddr -0x5.
-//       2  ...                                    Actual body.
-// Note: The jmp instructions above are structured as
-//       Address(Destination)-(Address(jmp Instruction)+sizeof(jmp Instruction))
-
-// The struct below is provided for convenience and must be packed together byte
-// by byte with no word alignment padding. This comes at a very small
-// performance cost because now there are shifts handling the fields, but
-// it improves readability.
-#pragma pack(push, 1)
-struct StructuredHotpatch {
-  unsigned char jmp_32_relative = 0xe9;  // jmp relative 32-bit.
-  int32_t relative_address = 0;          // 32-bit signed operand.
-  unsigned char jmp_8_relative = 0xeb;   // jmp relative 8-bit.
-  unsigned char back_address = 0xf9;     // Operand of -7.
-};
-#pragma pack(pop)
-
-static_assert(sizeof(StructuredHotpatch) == 7,
-              "Needs to be exactly 7 bytes for the hotpatch to work.");
-
-// nop Function Padding with "mov edi,edi"
-const unsigned char g_hotpatch_placeholder_nop[] = {0x90, 0x90, 0x90, 0x90,
-                                                    0x90, 0x8b, 0xff};
-
-// int 3 Function Padding with "mov edi,edi"
-const unsigned char g_hotpatch_placeholder_int3[] = {0xcc, 0xcc, 0xcc, 0xcc,
-                                                     0xcc, 0x8b, 0xff};
-
-class HookManager {
- public:
-  static HookManager* GetInstance() {
-    static auto* hook_manager = new HookManager();
-    return hook_manager;
-  }
-
-  void RegisterHook() {
-    AutoLock auto_lock(lock_);
-    if (init_count_ == 0)
-      WriteHook();
-
-    ++init_count_;
-  }
-
-  void UnregisterHook() {
-    AutoLock auto_lock(lock_);
-    DCHECK_NE(0U, init_count_);
-    if (init_count_ == 1)
-      RevertHook();
-
-    --init_count_;
-  }
-
- private:
-  enum class HotpatchPlaceholderFormat {
-    // The hotpatch placeholder is currently unknown
-    UNKNOWN,
-    // The hotpatch placeholder used int 3's in the sled.
-    INT3,
-    // The hotpatch placeholder used nop's in the sled.
-    NOP,
-    // This function has already been patched by a different component.
-    EXTERNALLY_PATCHED,
-  };
-
-  HookManager() = default;
-  ~HookManager() = default;
-
-  void WriteHook() {
-    lock_.AssertAcquired();
-    DCHECK(!ole32_library_);
-    ole32_library_ = ::LoadLibrary(L"ole32.dll");
-
-    if (!ole32_library_)
-      return;
-
-    // See banner comment above why this subtracts 5 bytes.
-    co_create_instance_padded_address_ =
-        reinterpret_cast<uint32_t>(
-            GetProcAddress(ole32_library_, "CoCreateInstance")) -
-        5;
-
-    // See banner comment above why this adds 7 bytes.
-    original_co_create_instance_body_function_ =
-        reinterpret_cast<decltype(original_co_create_instance_body_function_)>(
-            co_create_instance_padded_address_ + 7);
-
-    HotpatchPlaceholderFormat format = GetHotpatchPlaceholderFormat(
-        reinterpret_cast<const void*>(co_create_instance_padded_address_));
-    if (format == HotpatchPlaceholderFormat::UNKNOWN) {
-      NOTREACHED() << "Unrecognized hotpatch function format: "
-                   << FirstSevenBytesToString(
-                          co_create_instance_padded_address_);
-      return;
-    } else if (format == HotpatchPlaceholderFormat::EXTERNALLY_PATCHED) {
-      hotpatch_placeholder_format_ = format;
-      NOTREACHED() << "CoCreateInstance appears to be previously patched. ("
-                   << FirstSevenBytesToString(
-                          co_create_instance_padded_address_)
-                   << ")";
-      return;
-    }
-
-    uint32_t dchecked_co_create_instance_address =
-        reinterpret_cast<uint32_t>(&HookManager::DCheckedCoCreateInstance);
-    uint32_t jmp_offset_base_address = co_create_instance_padded_address_ + 5;
-    StructuredHotpatch structured_hotpatch;
-    structured_hotpatch.relative_address =
-        dchecked_co_create_instance_address - jmp_offset_base_address;
-
-    DCHECK_EQ(hotpatch_placeholder_format_, HotpatchPlaceholderFormat::UNKNOWN);
-    DWORD patch_result = internal::ModifyCode(
-        reinterpret_cast<void*>(co_create_instance_padded_address_),
-        reinterpret_cast<void*>(&structured_hotpatch),
-        sizeof(structured_hotpatch));
-    if (patch_result == NO_ERROR)
-      hotpatch_placeholder_format_ = format;
-  }
-
-  void RevertHook() {
-    lock_.AssertAcquired();
-    switch (hotpatch_placeholder_format_) {
-      case HotpatchPlaceholderFormat::INT3:
-        internal::ModifyCode(
-            reinterpret_cast<void*>(co_create_instance_padded_address_),
-            reinterpret_cast<const void*>(&g_hotpatch_placeholder_int3),
-            sizeof(g_hotpatch_placeholder_int3));
-        break;
-      case HotpatchPlaceholderFormat::NOP:
-        internal::ModifyCode(
-            reinterpret_cast<void*>(co_create_instance_padded_address_),
-            reinterpret_cast<const void*>(&g_hotpatch_placeholder_nop),
-            sizeof(g_hotpatch_placeholder_nop));
-        break;
-      case HotpatchPlaceholderFormat::EXTERNALLY_PATCHED:
-      case HotpatchPlaceholderFormat::UNKNOWN:
-        break;
-    }
-
-    hotpatch_placeholder_format_ = HotpatchPlaceholderFormat::UNKNOWN;
-
-    if (ole32_library_) {
-      ::FreeLibrary(ole32_library_);
-      ole32_library_ = nullptr;
-    }
-
-    co_create_instance_padded_address_ = 0;
-    original_co_create_instance_body_function_ = nullptr;
-  }
-
-  HotpatchPlaceholderFormat GetHotpatchPlaceholderFormat(const void* address) {
-    if (::memcmp(reinterpret_cast<void*>(co_create_instance_padded_address_),
-                 reinterpret_cast<const void*>(&g_hotpatch_placeholder_int3),
-                 sizeof(g_hotpatch_placeholder_int3)) == 0) {
-      return HotpatchPlaceholderFormat::INT3;
-    }
-
-    if (::memcmp(reinterpret_cast<void*>(co_create_instance_padded_address_),
-                 reinterpret_cast<const void*>(&g_hotpatch_placeholder_nop),
-                 sizeof(g_hotpatch_placeholder_nop)) == 0) {
-      return HotpatchPlaceholderFormat::NOP;
-    }
-
-    const unsigned char* instruction_bytes =
-        reinterpret_cast<const unsigned char*>(
-            co_create_instance_padded_address_);
-    const unsigned char entry_point_byte = instruction_bytes[5];
-    // Check for all of the common jmp opcodes.
-    if (entry_point_byte == 0xeb || entry_point_byte == 0xe9 ||
-        entry_point_byte == 0xff || entry_point_byte == 0xea) {
-      return HotpatchPlaceholderFormat::EXTERNALLY_PATCHED;
-    }
-
-    return HotpatchPlaceholderFormat::UNKNOWN;
-  }
-
-  static HRESULT __stdcall DCheckedCoCreateInstance(const CLSID& rclsid,
-                                                    IUnknown* pUnkOuter,
-                                                    DWORD dwClsContext,
-                                                    REFIID riid,
-                                                    void** ppv) {
-    // Chromium COM callers need to make sure that their thread is configured to
-    // process COM objects to avoid creating an implicit MTA or silently failing
-    // STA object creation call due to the SUCCEEDED() pattern for COM calls.
-    //
-    // If you hit this assert as part of migrating to the Task Scheduler,
-    // evaluate your threading guarantees and dispatch your work with
-    // base::CreateCOMSTATaskRunnerWithTraits().
-    //
-    // If you need MTA support, ping //base/task_scheduler/OWNERS.
-    AssertComInitialized(
-        "CoCreateInstance calls in Chromium require explicit COM "
-        "initialization via base::CreateCOMSTATaskRunnerWithTraits() or "
-        "ScopedCOMInitializer. See the comment in DCheckedCoCreateInstance for "
-        "more details.");
-    return original_co_create_instance_body_function_(rclsid, pUnkOuter,
-                                                      dwClsContext, riid, ppv);
-  }
-
-  // Returns the first 7 bytes in hex as a string at |address|.
-  static std::string FirstSevenBytesToString(uint32_t address) {
-    const unsigned char* bytes =
-        reinterpret_cast<const unsigned char*>(address);
-    return base::StringPrintf("%02x %02x %02x %02x %02x %02x %02x", bytes[0],
-                              bytes[1], bytes[2], bytes[3], bytes[4], bytes[5],
-                              bytes[6]);
-  }
-
-  // Synchronizes everything in this class.
-  base::Lock lock_;
-  size_t init_count_ = 0;
-  HMODULE ole32_library_ = nullptr;
-  uint32_t co_create_instance_padded_address_ = 0;
-  HotpatchPlaceholderFormat hotpatch_placeholder_format_ =
-      HotpatchPlaceholderFormat::UNKNOWN;
-  static decltype(
-      ::CoCreateInstance)* original_co_create_instance_body_function_;
-
-  DISALLOW_COPY_AND_ASSIGN(HookManager);
-};
-
-decltype(::CoCreateInstance)*
-    HookManager::original_co_create_instance_body_function_ = nullptr;
-
-}  // namespace
-
-#endif  // defined(COM_INIT_CHECK_HOOK_ENABLED)
-
-ComInitCheckHook::ComInitCheckHook() {
-#if defined(COM_INIT_CHECK_HOOK_ENABLED)
-  HookManager::GetInstance()->RegisterHook();
-#endif  // defined(COM_INIT_CHECK_HOOK_ENABLED)
-}
-
-ComInitCheckHook::~ComInitCheckHook() {
-#if defined(COM_INIT_CHECK_HOOK_ENABLED)
-  HookManager::GetInstance()->UnregisterHook();
-#endif  // defined(COM_INIT_CHECK_HOOK_ENABLED)
-}
-
-}  // namespace win
-}  // namespace base
diff --git a/base/win/com_init_check_hook.h b/base/win/com_init_check_hook.h
deleted file mode 100644
index 6681da1..0000000
--- a/base/win/com_init_check_hook.h
+++ /dev/null
@@ -1,42 +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_WIN_COM_INIT_CHECK_HOOK_H_
-#define BASE_WIN_COM_INIT_CHECK_HOOK_H_
-
-#include "base/logging.h"
-#include "base/macros.h"
-#include "build_config.h"
-
-namespace base {
-namespace win {
-
-// Hotpatching is only supported in Intel 32-bit x86 processors because Windows
-// binaries contain a convenient 2 byte hotpatch noop. This doesn't exist in
-// 64-bit binaries.
-
-#if DCHECK_IS_ON() && defined(ARCH_CPU_X86_FAMILY) &&             \
-    defined(ARCH_CPU_32_BITS) && !defined(GOOGLE_CHROME_BUILD) && \
-    !defined(OFFICIAL_BUILD) &&                                   \
-    !defined(COM_INIT_CHECK_HOOK_DISABLED)  // See crbug/737090 for details.
-#define COM_INIT_CHECK_HOOK_ENABLED
-#endif
-
-// Manages the installation of consistency DCHECK hooks of COM APIs that require
-// COM to be initialized and only works if COM_INIT_CHECK_HOOK_ENABLED is
-// defined. Care should be taken if this is instantiated with multiple threads
-// running as the hotpatch does not apply atomically.
-class ComInitCheckHook {
- public:
-  ComInitCheckHook();
-  ~ComInitCheckHook();
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(ComInitCheckHook);
-};
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_COM_INIT_CHECK_HOOK_H_
diff --git a/base/win/com_init_util.cc b/base/win/com_init_util.cc
deleted file mode 100644
index d81f420..0000000
--- a/base/win/com_init_util.cc
+++ /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.
-
-#include "base/win/com_init_util.h"
-
-#include <windows.h>
-#include <winternl.h>
-
-namespace base {
-namespace win {
-
-#if DCHECK_IS_ON()
-
-namespace {
-
-const char kComNotInitialized[] = "COM is not initialized on this thread.";
-
-// Derived from combase.dll.
-struct OleTlsData {
-  enum ApartmentFlags {
-    LOGICAL_THREAD_REGISTERED = 0x2,
-    STA = 0x80,
-    MTA = 0x140,
-  };
-
-  void* thread_base;
-  void* sm_allocator;
-  DWORD apartment_id;
-  DWORD apartment_flags;
-  // There are many more fields than this, but for our purposes, we only care
-  // about |apartment_flags|. Correctly declaring the previous types allows this
-  // to work between x86 and x64 builds.
-};
-
-OleTlsData* GetOleTlsData() {
-  TEB* teb = NtCurrentTeb();
-  return reinterpret_cast<OleTlsData*>(teb->ReservedForOle);
-}
-
-ComApartmentType GetComApartmentTypeForThread() {
-  OleTlsData* ole_tls_data = GetOleTlsData();
-  if (!ole_tls_data)
-    return ComApartmentType::NONE;
-
-  if (ole_tls_data->apartment_flags & OleTlsData::ApartmentFlags::STA)
-    return ComApartmentType::STA;
-
-  if ((ole_tls_data->apartment_flags & OleTlsData::ApartmentFlags::MTA) ==
-      OleTlsData::ApartmentFlags::MTA) {
-    return ComApartmentType::MTA;
-  }
-
-  return ComApartmentType::NONE;
-}
-
-}  // namespace
-
-void AssertComInitialized(const char* message) {
-  if (GetComApartmentTypeForThread() != ComApartmentType::NONE)
-    return;
-
-  // COM worker threads don't always set up the apartment, but they do perform
-  // some thread registration, so we allow those.
-  OleTlsData* ole_tls_data = GetOleTlsData();
-  if (ole_tls_data && (ole_tls_data->apartment_flags &
-                       OleTlsData::ApartmentFlags::LOGICAL_THREAD_REGISTERED)) {
-    return;
-  }
-
-  NOTREACHED() << (message ? message : kComNotInitialized);
-}
-
-void AssertComApartmentType(ComApartmentType apartment_type) {
-  DCHECK_EQ(apartment_type, GetComApartmentTypeForThread());
-}
-
-#endif  // DCHECK_IS_ON()
-
-}  // namespace win
-}  // namespace base
diff --git a/base/win/com_init_util.h b/base/win/com_init_util.h
deleted file mode 100644
index 9d47099..0000000
--- a/base/win/com_init_util.h
+++ /dev/null
@@ -1,40 +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_WIN_COM_INIT_UTIL_H_
-#define BASE_WIN_COM_INIT_UTIL_H_
-
-#include "base/logging.h"
-
-namespace base {
-namespace win {
-
-enum class ComApartmentType {
-  // Uninitialized or has an unrecognized apartment type.
-  NONE,
-  // Single-threaded Apartment.
-  STA,
-  // Multi-threaded Apartment.
-  MTA,
-};
-
-#if DCHECK_IS_ON()
-
-// DCHECKs if COM is not initialized on this thread as an STA or MTA.
-// |message| is optional and is used for the DCHECK if specified.
-void AssertComInitialized(const char* message = nullptr);
-
-// DCHECKs if |apartment_type| is not the same as the current thread's apartment
-// type.
-void AssertComApartmentType(ComApartmentType apartment_type);
-
-#else   // DCHECK_IS_ON()
-inline void AssertComInitialized() {}
-inline void AssertComApartmentType(ComApartmentType apartment_type) {}
-#endif  // DCHECK_IS_ON()
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_COM_INIT_UTIL_H_
diff --git a/base/win/core_winrt_util.cc b/base/win/core_winrt_util.cc
deleted file mode 100644
index 7a30490..0000000
--- a/base/win/core_winrt_util.cc
+++ /dev/null
@@ -1,83 +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/win/core_winrt_util.h"
-
-namespace {
-
-FARPROC LoadComBaseFunction(const char* function_name) {
-  static HMODULE const handle = ::LoadLibrary(L"combase.dll");
-  return handle ? ::GetProcAddress(handle, function_name) : nullptr;
-}
-
-decltype(&::RoInitialize) GetRoInitializeFunction() {
-  static decltype(&::RoInitialize) const function =
-      reinterpret_cast<decltype(&::RoInitialize)>(
-          LoadComBaseFunction("RoInitialize"));
-  return function;
-}
-
-decltype(&::RoUninitialize) GetRoUninitializeFunction() {
-  static decltype(&::RoUninitialize) const function =
-      reinterpret_cast<decltype(&::RoUninitialize)>(
-          LoadComBaseFunction("RoUninitialize"));
-  return function;
-}
-
-decltype(&::RoActivateInstance) GetRoActivateInstanceFunction() {
-  static decltype(&::RoActivateInstance) const function =
-      reinterpret_cast<decltype(&::RoActivateInstance)>(
-          LoadComBaseFunction("RoActivateInstance"));
-  return function;
-}
-
-decltype(&::RoGetActivationFactory) GetRoGetActivationFactoryFunction() {
-  static decltype(&::RoGetActivationFactory) const function =
-      reinterpret_cast<decltype(&::RoGetActivationFactory)>(
-          LoadComBaseFunction("RoGetActivationFactory"));
-  return function;
-}
-
-}  // namespace
-
-namespace base {
-namespace win {
-
-bool ResolveCoreWinRTDelayload() {
-  // TODO(finnur): Add AssertIOAllowed once crbug.com/770193 is fixed.
-  return GetRoInitializeFunction() && GetRoUninitializeFunction() &&
-         GetRoActivateInstanceFunction() && GetRoGetActivationFactoryFunction();
-}
-
-HRESULT RoInitialize(RO_INIT_TYPE init_type) {
-  auto ro_initialize_func = GetRoInitializeFunction();
-  if (!ro_initialize_func)
-    return E_FAIL;
-  return ro_initialize_func(init_type);
-}
-
-void RoUninitialize() {
-  auto ro_uninitialize_func = GetRoUninitializeFunction();
-  if (ro_uninitialize_func)
-    ro_uninitialize_func();
-}
-
-HRESULT RoGetActivationFactory(HSTRING class_id,
-                               const IID& iid,
-                               void** out_factory) {
-  auto get_factory_func = GetRoGetActivationFactoryFunction();
-  if (!get_factory_func)
-    return E_FAIL;
-  return get_factory_func(class_id, iid, out_factory);
-}
-
-HRESULT RoActivateInstance(HSTRING class_id, IInspectable** instance) {
-  auto activate_instance_func = GetRoActivateInstanceFunction();
-  if (!activate_instance_func)
-    return E_FAIL;
-  return activate_instance_func(class_id, instance);
-}
-
-}  // namespace win
-}  // namespace base
diff --git a/base/win/core_winrt_util.h b/base/win/core_winrt_util.h
deleted file mode 100644
index d760c79..0000000
--- a/base/win/core_winrt_util.h
+++ /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.
-
-#ifndef BASE_WIN_CORE_WINRT_UTIL_H_
-#define BASE_WIN_CORE_WINRT_UTIL_H_
-
-#include <hstring.h>
-#include <inspectable.h>
-#include <roapi.h>
-#include <windef.h>
-
-#include "base/strings/string16.h"
-#include "base/win/scoped_hstring.h"
-
-namespace base {
-namespace win {
-
-// Provides access to Core WinRT functions which may not be available on
-// Windows 7. Loads functions dynamically at runtime to prevent library
-// dependencies.
-
-bool ResolveCoreWinRTDelayload();
-
-// The following stubs are provided for when component build is enabled, in
-// order to avoid the propagation of delay-loading CoreWinRT to other modules.
-
-HRESULT RoInitialize(RO_INIT_TYPE init_type);
-
-void RoUninitialize();
-
-HRESULT RoGetActivationFactory(HSTRING class_id,
-                               const IID& iid,
-                               void** out_factory);
-
-HRESULT RoActivateInstance(HSTRING class_id, IInspectable** instance);
-
-// Retrieves an activation factory for the type specified.
-template <typename InterfaceType, char16 const* runtime_class_id>
-HRESULT GetActivationFactory(InterfaceType** factory) {
-  ScopedHString class_id_hstring = ScopedHString::Create(runtime_class_id);
-  if (!class_id_hstring.is_valid())
-    return E_FAIL;
-
-  return base::win::RoGetActivationFactory(class_id_hstring.get(),
-                                           IID_PPV_ARGS(factory));
-}
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_CORE_WINRT_UTIL_H_
diff --git a/base/win/dllmain.cc b/base/win/dllmain.cc
deleted file mode 100644
index 907c7f4..0000000
--- a/base/win/dllmain.cc
+++ /dev/null
@@ -1,123 +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.
-
-// Windows doesn't support pthread_key_create's destr_function, and in fact
-// it's a bit tricky to get code to run when a thread exits.  This is
-// cargo-cult magic from http://www.codeproject.com/threads/tls.asp.
-// We are trying to be compatible with both a LoadLibrary style invocation, as
-// well as static linking. This code only needs to be included if we use
-// LoadLibrary, but it hooks into the "standard" set of TLS callbacks that are
-// provided for static linking.
-
-// This code is deliberately written to match the style of calls seen in
-// base/threading/thread_local_storage_win.cc.  Please keep the two in sync if
-// coding conventions are changed.
-
-// WARNING: Do *NOT* try to include this in the construction of the base
-// library, even though it potentially drives code in
-// base/threading/thread_local_storage_win.cc.  If you do, some users will end
-// up getting duplicate definition of DllMain() in some of their later links.
-
-// Force a reference to _tls_used to make the linker create the TLS directory
-// if it's not already there (that is, even if __declspec(thread) is not used).
-// Force a reference to p_thread_callback_dllmain_typical_entry to prevent whole
-// program optimization from discarding the variables.
-
-#include <windows.h>
-
-#include "base/compiler_specific.h"
-#include "base/win/win_util.h"
-
-// Indicate if another service is scanning the callbacks.  When this becomes
-// set to true, then DllMain() will stop supporting the callback service. This
-// value is set to true the first time any of our callbacks are called, as that
-// shows that some other service is handling callbacks.
-static bool linker_notifications_are_active = false;
-
-// This will be our mostly no-op callback that we'll list.  We won't
-// deliberately call it, and if it is called, that means we don't need to do any
-// of the callbacks anymore.  We expect such a call to arrive via a
-// THREAD_ATTACH message, long before we'd have to perform our THREAD_DETACH
-// callbacks.
-static void NTAPI on_callback(PVOID h, DWORD reason, PVOID reserved);
-
-#ifdef _WIN64
-
-#pragma comment(linker, "/INCLUDE:_tls_used")
-#pragma comment(linker, "/INCLUDE:p_thread_callback_dllmain_typical_entry")
-
-#else  // _WIN64
-
-#pragma comment(linker, "/INCLUDE:__tls_used")
-#pragma comment(linker, "/INCLUDE:_p_thread_callback_dllmain_typical_entry")
-
-#endif  // _WIN64
-
-// Explicitly depend on VC\crt\src\tlssup.c variables
-// to bracket the list of TLS callbacks.
-extern "C" PIMAGE_TLS_CALLBACK __xl_a, __xl_z;
-
-// extern "C" suppresses C++ name mangling so we know the symbol names for the
-// linker /INCLUDE:symbol pragmas above.
-extern "C" {
-#ifdef _WIN64
-
-// .CRT section is merged with .rdata on x64 so it must be constant data.
-#pragma data_seg(push, old_seg)
-// Use a typical possible name in the .CRT$XL? list of segments.
-#pragma const_seg(".CRT$XLB")
-// When defining a const variable, it must have external linkage to be sure the
-// linker doesn't discard it.
-extern const PIMAGE_TLS_CALLBACK p_thread_callback_dllmain_typical_entry;
-const PIMAGE_TLS_CALLBACK p_thread_callback_dllmain_typical_entry = on_callback;
-#pragma data_seg(pop, old_seg)
-
-#else  // _WIN64
-
-#pragma data_seg(push, old_seg)
-// Use a typical possible name in the .CRT$XL? list of segments.
-#pragma data_seg(".CRT$XLB")
-PIMAGE_TLS_CALLBACK p_thread_callback_dllmain_typical_entry = on_callback;
-#pragma data_seg(pop, old_seg)
-
-#endif  // _WIN64
-}  // extern "C"
-
-// Custom crash code to get a unique entry in crash reports.
-NOINLINE static void CrashOnProcessDetach() {
-  *static_cast<volatile int*>(0) = 0x356;
-}
-
-// Make DllMain call the listed callbacks.  This way any third parties that are
-// linked in will also be called.
-BOOL WINAPI DllMain(PVOID h, DWORD reason, PVOID reserved) {
-  if (DLL_PROCESS_DETACH == reason && base::win::ShouldCrashOnProcessDetach())
-    CrashOnProcessDetach();
-
-  if (DLL_THREAD_DETACH != reason && DLL_PROCESS_DETACH != reason)
-    return true;  // We won't service THREAD_ATTACH calls.
-
-  if (linker_notifications_are_active)
-    return true;  // Some other service is doing this work.
-
-  for (PIMAGE_TLS_CALLBACK* it = &__xl_a; it < &__xl_z; ++it) {
-    if (*it == NULL || *it == on_callback)
-      continue;  // Don't bother to call our own callback.
-    (*it)(h, reason, reserved);
-  }
-  return true;
-}
-
-static void NTAPI on_callback(PVOID h, DWORD reason, PVOID reserved) {
-  // Do nothing.  We were just a place holder in the list used to test that we
-  // call all items.
-  // If we are called, it means that some other system is scanning the callbacks
-  // and we don't need to do so in DllMain().
-  linker_notifications_are_active = true;
-  // Note: If some other routine some how plays this same game... we could both
-  // decide not to do the scanning <sigh>, but this trick should suppress
-  // duplicate calls on Vista, where the runtime takes care of the callbacks,
-  // and allow us to do the callbacks on XP, where we are currently devoid of
-  // callbacks (due to an explicit LoadLibrary call).
-}
diff --git a/base/win/enum_variant.cc b/base/win/enum_variant.cc
deleted file mode 100644
index fd81775..0000000
--- a/base/win/enum_variant.cc
+++ /dev/null
@@ -1,79 +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/win/enum_variant.h"
-
-#include <algorithm>
-
-#include "base/logging.h"
-
-namespace base {
-namespace win {
-
-EnumVariant::EnumVariant(unsigned long count)
-    : items_(new VARIANT[count]), count_(count), current_index_(0) {}
-
-EnumVariant::~EnumVariant() {}
-
-VARIANT* EnumVariant::ItemAt(unsigned long index) {
-  DCHECK(index < count_);
-  return &items_[index];
-}
-
-ULONG STDMETHODCALLTYPE EnumVariant::AddRef() {
-  return IUnknownImpl::AddRef();
-}
-
-ULONG STDMETHODCALLTYPE EnumVariant::Release() {
-  return IUnknownImpl::Release();
-}
-
-STDMETHODIMP EnumVariant::QueryInterface(REFIID riid, void** ppv) {
-  if (riid == IID_IEnumVARIANT) {
-    *ppv = static_cast<IEnumVARIANT*>(this);
-    AddRef();
-    return S_OK;
-  }
-
-  return IUnknownImpl::QueryInterface(riid, ppv);
-}
-
-STDMETHODIMP EnumVariant::Next(ULONG requested_count,
-                               VARIANT* out_elements,
-                               ULONG* out_elements_received) {
-  unsigned long count = std::min(requested_count, count_ - current_index_);
-  for (unsigned long i = 0; i < count; ++i)
-    out_elements[i] = items_[current_index_ + i];
-  current_index_ += count;
-  *out_elements_received = count;
-
-  return (count == requested_count ? S_OK : S_FALSE);
-}
-
-STDMETHODIMP EnumVariant::Skip(ULONG skip_count) {
-  unsigned long count = skip_count;
-  if (current_index_ + count > count_)
-    count = count_ - current_index_;
-
-  current_index_ += count;
-  return (count == skip_count ? S_OK : S_FALSE);
-}
-
-STDMETHODIMP EnumVariant::Reset() {
-  current_index_ = 0;
-  return S_OK;
-}
-
-STDMETHODIMP EnumVariant::Clone(IEnumVARIANT** out_cloned_object) {
-  EnumVariant* other = new EnumVariant(count_);
-  if (count_ > 0)
-    memcpy(other->ItemAt(0), &items_[0], count_ * sizeof(VARIANT));
-  other->Skip(current_index_);
-  other->AddRef();
-  *out_cloned_object = other;
-  return S_OK;
-}
-
-}  // namespace win
-}  // namespace base
diff --git a/base/win/enum_variant.h b/base/win/enum_variant.h
deleted file mode 100644
index d12f350..0000000
--- a/base/win/enum_variant.h
+++ /dev/null
@@ -1,51 +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.
-
-#ifndef BASE_WIN_ENUM_VARIANT_H_
-#define BASE_WIN_ENUM_VARIANT_H_
-
-#include <unknwn.h>
-
-#include <memory>
-
-#include "base/win/iunknown_impl.h"
-
-namespace base {
-namespace win {
-
-// A simple implementation of IEnumVARIANT.
-class EnumVariant : public IEnumVARIANT, public IUnknownImpl {
- public:
-  // The constructor allocates an array of size |count|. Then use
-  // ItemAt to set the value of each item in the array to initialize it.
-  explicit EnumVariant(unsigned long count);
-
-  // Returns a mutable pointer to the item at position |index|.
-  VARIANT* ItemAt(unsigned long index);
-
-  // IUnknown.
-  ULONG STDMETHODCALLTYPE AddRef() override;
-  ULONG STDMETHODCALLTYPE Release() override;
-  STDMETHODIMP QueryInterface(REFIID riid, void** ppv) override;
-
-  // IEnumVARIANT.
-  STDMETHODIMP Next(ULONG requested_count,
-                    VARIANT* out_elements,
-                    ULONG* out_elements_received) override;
-  STDMETHODIMP Skip(ULONG skip_count) override;
-  STDMETHODIMP Reset() override;
-  STDMETHODIMP Clone(IEnumVARIANT** out_cloned_object) override;
-
- private:
-  ~EnumVariant() override;
-
-  std::unique_ptr<VARIANT[]> items_;
-  unsigned long count_;
-  unsigned long current_index_;
-};
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_ENUM_VARIANT_H_
diff --git a/base/win/iat_patch_function.cc b/base/win/iat_patch_function.cc
deleted file mode 100644
index 5f151f9..0000000
--- a/base/win/iat_patch_function.cc
+++ /dev/null
@@ -1,255 +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/win/iat_patch_function.h"
-
-#include "base/logging.h"
-#include "base/win/patch_util.h"
-#include "base/win/pe_image.h"
-
-namespace base {
-namespace win {
-
-namespace {
-
-struct InterceptFunctionInformation {
-  bool finished_operation;
-  const char* imported_from_module;
-  const char* function_name;
-  void* new_function;
-  void** old_function;
-  IMAGE_THUNK_DATA** iat_thunk;
-  DWORD return_code;
-};
-
-void* GetIATFunction(IMAGE_THUNK_DATA* iat_thunk) {
-  if (NULL == iat_thunk) {
-    NOTREACHED();
-    return NULL;
-  }
-
-  // Works around the 64 bit portability warning:
-  // The Function member inside IMAGE_THUNK_DATA is really a pointer
-  // to the IAT function. IMAGE_THUNK_DATA correctly maps to IMAGE_THUNK_DATA32
-  // or IMAGE_THUNK_DATA64 for correct pointer size.
-  union FunctionThunk {
-    IMAGE_THUNK_DATA thunk;
-    void* pointer;
-  } iat_function;
-
-  iat_function.thunk = *iat_thunk;
-  return iat_function.pointer;
-}
-
-bool InterceptEnumCallback(const base::win::PEImage& image,
-                           const char* module,
-                           DWORD ordinal,
-                           const char* name,
-                           DWORD hint,
-                           IMAGE_THUNK_DATA* iat,
-                           void* cookie) {
-  InterceptFunctionInformation* intercept_information =
-      reinterpret_cast<InterceptFunctionInformation*>(cookie);
-
-  if (NULL == intercept_information) {
-    NOTREACHED();
-    return false;
-  }
-
-  DCHECK(module);
-
-  if ((0 == lstrcmpiA(module, intercept_information->imported_from_module)) &&
-      (NULL != name) &&
-      (0 == lstrcmpiA(name, intercept_information->function_name))) {
-    // Save the old pointer.
-    if (NULL != intercept_information->old_function) {
-      *(intercept_information->old_function) = GetIATFunction(iat);
-    }
-
-    if (NULL != intercept_information->iat_thunk) {
-      *(intercept_information->iat_thunk) = iat;
-    }
-
-    // portability check
-    static_assert(
-        sizeof(iat->u1.Function) == sizeof(intercept_information->new_function),
-        "unknown IAT thunk format");
-
-    // Patch the function.
-    intercept_information->return_code = internal::ModifyCode(
-        &(iat->u1.Function), &(intercept_information->new_function),
-        sizeof(intercept_information->new_function));
-
-    // Terminate further enumeration.
-    intercept_information->finished_operation = true;
-    return false;
-  }
-
-  return true;
-}
-
-// Helper to intercept a function in an import table of a specific
-// module.
-//
-// Arguments:
-// module_handle          Module to be intercepted
-// imported_from_module   Module that exports the symbol
-// function_name          Name of the API to be intercepted
-// new_function           Interceptor function
-// old_function           Receives the original function pointer
-// iat_thunk              Receives pointer to IAT_THUNK_DATA
-//                        for the API from the import table.
-//
-// Returns: Returns NO_ERROR on success or Windows error code
-//          as defined in winerror.h
-DWORD InterceptImportedFunction(HMODULE module_handle,
-                                const char* imported_from_module,
-                                const char* function_name,
-                                void* new_function,
-                                void** old_function,
-                                IMAGE_THUNK_DATA** iat_thunk) {
-  if ((NULL == module_handle) || (NULL == imported_from_module) ||
-      (NULL == function_name) || (NULL == new_function)) {
-    NOTREACHED();
-    return ERROR_INVALID_PARAMETER;
-  }
-
-  base::win::PEImage target_image(module_handle);
-  if (!target_image.VerifyMagic()) {
-    NOTREACHED();
-    return ERROR_INVALID_PARAMETER;
-  }
-
-  InterceptFunctionInformation intercept_information = {false,
-                                                        imported_from_module,
-                                                        function_name,
-                                                        new_function,
-                                                        old_function,
-                                                        iat_thunk,
-                                                        ERROR_GEN_FAILURE};
-
-  // First go through the IAT. If we don't find the import we are looking
-  // for in IAT, search delay import table.
-  target_image.EnumAllImports(InterceptEnumCallback, &intercept_information);
-  if (!intercept_information.finished_operation) {
-    target_image.EnumAllDelayImports(InterceptEnumCallback,
-                                     &intercept_information);
-  }
-
-  return intercept_information.return_code;
-}
-
-// Restore intercepted IAT entry with the original function.
-//
-// Arguments:
-// intercept_function     Interceptor function
-// original_function      Receives the original function pointer
-//
-// Returns: Returns NO_ERROR on success or Windows error code
-//          as defined in winerror.h
-DWORD RestoreImportedFunction(void* intercept_function,
-                              void* original_function,
-                              IMAGE_THUNK_DATA* iat_thunk) {
-  if ((NULL == intercept_function) || (NULL == original_function) ||
-      (NULL == iat_thunk)) {
-    NOTREACHED();
-    return ERROR_INVALID_PARAMETER;
-  }
-
-  if (GetIATFunction(iat_thunk) != intercept_function) {
-    // Check if someone else has intercepted on top of us.
-    // We cannot unpatch in this case, just raise a red flag.
-    NOTREACHED();
-    return ERROR_INVALID_FUNCTION;
-  }
-
-  return internal::ModifyCode(&(iat_thunk->u1.Function), &original_function,
-                              sizeof(original_function));
-}
-
-}  // namespace
-
-IATPatchFunction::IATPatchFunction()
-    : module_handle_(NULL),
-      intercept_function_(NULL),
-      original_function_(NULL),
-      iat_thunk_(NULL) {}
-
-IATPatchFunction::~IATPatchFunction() {
-  if (NULL != intercept_function_) {
-    DWORD error = Unpatch();
-    DCHECK_EQ(static_cast<DWORD>(NO_ERROR), error);
-  }
-}
-
-DWORD IATPatchFunction::Patch(const wchar_t* module,
-                              const char* imported_from_module,
-                              const char* function_name,
-                              void* new_function) {
-  HMODULE module_handle = LoadLibraryW(module);
-  if (module_handle == NULL) {
-    NOTREACHED();
-    return GetLastError();
-  }
-
-  DWORD error = PatchFromModule(module_handle, imported_from_module,
-                                function_name, new_function);
-  if (NO_ERROR == error) {
-    module_handle_ = module_handle;
-  } else {
-    FreeLibrary(module_handle);
-  }
-
-  return error;
-}
-
-DWORD IATPatchFunction::PatchFromModule(HMODULE module,
-                                        const char* imported_from_module,
-                                        const char* function_name,
-                                        void* new_function) {
-  DCHECK_EQ(static_cast<void*>(NULL), original_function_);
-  DCHECK_EQ(static_cast<IMAGE_THUNK_DATA*>(NULL), iat_thunk_);
-  DCHECK_EQ(static_cast<void*>(NULL), intercept_function_);
-  DCHECK(module);
-
-  DWORD error =
-      InterceptImportedFunction(module, imported_from_module, function_name,
-                                new_function, &original_function_, &iat_thunk_);
-
-  if (NO_ERROR == error) {
-    DCHECK_NE(original_function_, intercept_function_);
-    intercept_function_ = new_function;
-  }
-
-  return error;
-}
-
-DWORD IATPatchFunction::Unpatch() {
-  DWORD error = RestoreImportedFunction(intercept_function_, original_function_,
-                                        iat_thunk_);
-  DCHECK_EQ(static_cast<DWORD>(NO_ERROR), error);
-
-  // Hands off the intercept if we fail to unpatch.
-  // If IATPatchFunction::Unpatch fails during RestoreImportedFunction
-  // it means that we cannot safely unpatch the import address table
-  // patch. In this case its better to be hands off the intercept as
-  // trying to unpatch again in the destructor of IATPatchFunction is
-  // not going to be any safer
-  if (module_handle_)
-    FreeLibrary(module_handle_);
-  module_handle_ = NULL;
-  intercept_function_ = NULL;
-  original_function_ = NULL;
-  iat_thunk_ = NULL;
-
-  return error;
-}
-
-void* IATPatchFunction::original_function() const {
-  DCHECK(is_patched());
-  return original_function_;
-}
-
-}  // namespace win
-}  // namespace base
diff --git a/base/win/iat_patch_function.h b/base/win/iat_patch_function.h
deleted file mode 100644
index c9f2d6c..0000000
--- a/base/win/iat_patch_function.h
+++ /dev/null
@@ -1,77 +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.
-
-#ifndef BASE_WIN_IAT_PATCH_FUNCTION_H_
-#define BASE_WIN_IAT_PATCH_FUNCTION_H_
-
-#include <windows.h>
-
-#include "base/macros.h"
-
-namespace base {
-namespace win {
-
-// A class that encapsulates Import Address Table patching helpers and restores
-// the original function in the destructor.
-//
-// It will intercept functions for a specific DLL imported from another DLL.
-// This is the case when, for example, we want to intercept
-// CertDuplicateCertificateContext function (exported from crypt32.dll) called
-// by wininet.dll.
-class IATPatchFunction {
- public:
-  IATPatchFunction();
-  ~IATPatchFunction();
-
-  // Intercept a function in an import table of a specific
-  // module. Save the original function and the import
-  // table address. These values will be used later
-  // during Unpatch
-  //
-  // Arguments:
-  // module                 Module to be intercepted
-  // imported_from_module   Module that exports the 'function_name'
-  // function_name          Name of the API to be intercepted
-  //
-  // Returns: Windows error code (winerror.h). NO_ERROR if successful
-  //
-  // Note: Patching a function will make the IAT patch take some "ownership" on
-  // |module|.  It will LoadLibrary(module) to keep the DLL alive until a call
-  // to Unpatch(), which will call FreeLibrary() and allow the module to be
-  // unloaded.  The idea is to help prevent the DLL from going away while a
-  // patch is still active.
-  DWORD Patch(const wchar_t* module,
-              const char* imported_from_module,
-              const char* function_name,
-              void* new_function);
-
-  // Same as Patch(), but uses a handle to a |module| instead of the DLL name.
-  DWORD PatchFromModule(HMODULE module,
-                        const char* imported_from_module,
-                        const char* function_name,
-                        void* new_function);
-
-  // Unpatch the IAT entry using internally saved original
-  // function.
-  //
-  // Returns: Windows error code (winerror.h). NO_ERROR if successful
-  DWORD Unpatch();
-
-  bool is_patched() const { return (NULL != intercept_function_); }
-
-  void* original_function() const;
-
- private:
-  HMODULE module_handle_;
-  void* intercept_function_;
-  void* original_function_;
-  IMAGE_THUNK_DATA* iat_thunk_;
-
-  DISALLOW_COPY_AND_ASSIGN(IATPatchFunction);
-};
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_IAT_PATCH_FUNCTION_H_
diff --git a/base/win/iunknown_impl.cc b/base/win/iunknown_impl.cc
deleted file mode 100644
index 2d83523..0000000
--- a/base/win/iunknown_impl.cc
+++ /dev/null
@@ -1,39 +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/win/iunknown_impl.h"
-
-namespace base {
-namespace win {
-
-IUnknownImpl::IUnknownImpl() : ref_count_(0) {}
-
-IUnknownImpl::~IUnknownImpl() {}
-
-ULONG STDMETHODCALLTYPE IUnknownImpl::AddRef() {
-  ref_count_.Increment();
-  return 1;
-}
-
-ULONG STDMETHODCALLTYPE IUnknownImpl::Release() {
-  if (!ref_count_.Decrement()) {
-    delete this;
-    return 0;
-  }
-  return 1;
-}
-
-STDMETHODIMP IUnknownImpl::QueryInterface(REFIID riid, void** ppv) {
-  if (riid == IID_IUnknown) {
-    *ppv = static_cast<IUnknown*>(this);
-    AddRef();
-    return S_OK;
-  }
-
-  *ppv = NULL;
-  return E_NOINTERFACE;
-}
-
-}  // namespace win
-}  // namespace base
diff --git a/base/win/iunknown_impl.h b/base/win/iunknown_impl.h
deleted file mode 100644
index 60f2403..0000000
--- a/base/win/iunknown_impl.h
+++ /dev/null
@@ -1,37 +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_WIN_IUNKNOWN_IMPL_H_
-#define BASE_WIN_IUNKNOWN_IMPL_H_
-
-#include <unknwn.h>
-
-#include "base/atomic_ref_count.h"
-#include "base/compiler_specific.h"
-
-namespace base {
-namespace win {
-
-// IUnknown implementation for other classes to derive from.
-class IUnknownImpl : public IUnknown {
- public:
-  IUnknownImpl();
-
-  ULONG STDMETHODCALLTYPE AddRef() override;
-  ULONG STDMETHODCALLTYPE Release() override;
-
-  // Subclasses should extend this to return any interfaces they provide.
-  STDMETHODIMP QueryInterface(REFIID riid, void** ppv) override;
-
- protected:
-  virtual ~IUnknownImpl();
-
- private:
-  AtomicRefCount ref_count_;
-};
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_IUNKNOWN_IMPL_H_
diff --git a/base/win/pe_image.cc b/base/win/pe_image.cc
deleted file mode 100644
index ea58504..0000000
--- a/base/win/pe_image.cc
+++ /dev/null
@@ -1,582 +0,0 @@
-// Copyright (c) 2010 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.
-
-// This file implements PEImage, a generic class to manipulate PE files.
-// This file was adapted from GreenBorder's Code.
-
-#include <stddef.h>
-
-#include "base/win/pe_image.h"
-
-namespace base {
-namespace win {
-
-// Structure to perform imports enumerations.
-struct EnumAllImportsStorage {
-  PEImage::EnumImportsFunction callback;
-  PVOID cookie;
-};
-
-namespace {
-
-// PdbInfo Signature
-const DWORD kPdbInfoSignature = 'SDSR';
-
-// Compare two strings byte by byte on an unsigned basis.
-//   if s1 == s2, return 0
-//   if s1 < s2, return negative
-//   if s1 > s2, return positive
-// Exception if inputs are invalid.
-int StrCmpByByte(LPCSTR s1, LPCSTR s2) {
-  while (*s1 != '\0' && *s1 == *s2) {
-    ++s1;
-    ++s2;
-  }
-
-  return (*reinterpret_cast<const unsigned char*>(s1) -
-          *reinterpret_cast<const unsigned char*>(s2));
-}
-
-struct PdbInfo {
-  DWORD Signature;
-  GUID Guid;
-  DWORD Age;
-  char PdbFileName[1];
-};
-
-}  // namespace
-
-// Callback used to enumerate imports. See EnumImportChunksFunction.
-bool ProcessImportChunk(const PEImage& image,
-                        LPCSTR module,
-                        PIMAGE_THUNK_DATA name_table,
-                        PIMAGE_THUNK_DATA iat,
-                        PVOID cookie) {
-  EnumAllImportsStorage& storage =
-      *reinterpret_cast<EnumAllImportsStorage*>(cookie);
-
-  return image.EnumOneImportChunk(storage.callback, module, name_table, iat,
-                                  storage.cookie);
-}
-
-// Callback used to enumerate delay imports. See EnumDelayImportChunksFunction.
-bool ProcessDelayImportChunk(const PEImage& image,
-                             PImgDelayDescr delay_descriptor,
-                             LPCSTR module,
-                             PIMAGE_THUNK_DATA name_table,
-                             PIMAGE_THUNK_DATA iat,
-                             PVOID cookie) {
-  EnumAllImportsStorage& storage =
-      *reinterpret_cast<EnumAllImportsStorage*>(cookie);
-
-  return image.EnumOneDelayImportChunk(storage.callback, delay_descriptor,
-                                       module, name_table, iat, storage.cookie);
-}
-
-void PEImage::set_module(HMODULE module) {
-  module_ = module;
-}
-
-PIMAGE_DOS_HEADER PEImage::GetDosHeader() const {
-  return reinterpret_cast<PIMAGE_DOS_HEADER>(module_);
-}
-
-PIMAGE_NT_HEADERS PEImage::GetNTHeaders() const {
-  PIMAGE_DOS_HEADER dos_header = GetDosHeader();
-
-  return reinterpret_cast<PIMAGE_NT_HEADERS>(
-      reinterpret_cast<char*>(dos_header) + dos_header->e_lfanew);
-}
-
-PIMAGE_SECTION_HEADER PEImage::GetSectionHeader(UINT section) const {
-  PIMAGE_NT_HEADERS nt_headers = GetNTHeaders();
-  PIMAGE_SECTION_HEADER first_section = IMAGE_FIRST_SECTION(nt_headers);
-
-  if (section < nt_headers->FileHeader.NumberOfSections)
-    return first_section + section;
-  else
-    return NULL;
-}
-
-WORD PEImage::GetNumSections() const {
-  return GetNTHeaders()->FileHeader.NumberOfSections;
-}
-
-DWORD PEImage::GetImageDirectoryEntrySize(UINT directory) const {
-  PIMAGE_NT_HEADERS nt_headers = GetNTHeaders();
-
-  return nt_headers->OptionalHeader.DataDirectory[directory].Size;
-}
-
-PVOID PEImage::GetImageDirectoryEntryAddr(UINT directory) const {
-  PIMAGE_NT_HEADERS nt_headers = GetNTHeaders();
-
-  return RVAToAddr(
-      nt_headers->OptionalHeader.DataDirectory[directory].VirtualAddress);
-}
-
-PIMAGE_SECTION_HEADER PEImage::GetImageSectionFromAddr(PVOID address) const {
-  PBYTE target = reinterpret_cast<PBYTE>(address);
-  PIMAGE_SECTION_HEADER section;
-
-  for (UINT i = 0; NULL != (section = GetSectionHeader(i)); i++) {
-    // Don't use the virtual RVAToAddr.
-    PBYTE start =
-        reinterpret_cast<PBYTE>(PEImage::RVAToAddr(section->VirtualAddress));
-
-    DWORD size = section->Misc.VirtualSize;
-
-    if ((start <= target) && (start + size > target))
-      return section;
-  }
-
-  return NULL;
-}
-
-PIMAGE_SECTION_HEADER PEImage::GetImageSectionHeaderByName(
-    LPCSTR section_name) const {
-  if (NULL == section_name)
-    return NULL;
-
-  PIMAGE_SECTION_HEADER ret = NULL;
-  int num_sections = GetNumSections();
-
-  for (int i = 0; i < num_sections; i++) {
-    PIMAGE_SECTION_HEADER section = GetSectionHeader(i);
-    if (0 == _strnicmp(reinterpret_cast<LPCSTR>(section->Name), section_name,
-                       sizeof(section->Name))) {
-      ret = section;
-      break;
-    }
-  }
-
-  return ret;
-}
-
-bool PEImage::GetDebugId(LPGUID guid, LPDWORD age, LPCSTR* pdb_filename) const {
-  DWORD debug_directory_size =
-      GetImageDirectoryEntrySize(IMAGE_DIRECTORY_ENTRY_DEBUG);
-  PIMAGE_DEBUG_DIRECTORY debug_directory =
-      reinterpret_cast<PIMAGE_DEBUG_DIRECTORY>(
-          GetImageDirectoryEntryAddr(IMAGE_DIRECTORY_ENTRY_DEBUG));
-
-  size_t directory_count = debug_directory_size / sizeof(IMAGE_DEBUG_DIRECTORY);
-
-  for (size_t index = 0; index < directory_count; ++index) {
-    if (debug_directory[index].Type == IMAGE_DEBUG_TYPE_CODEVIEW) {
-      PdbInfo* pdb_info = reinterpret_cast<PdbInfo*>(
-          RVAToAddr(debug_directory[index].AddressOfRawData));
-      if (pdb_info->Signature != kPdbInfoSignature) {
-        // Unsupported PdbInfo signature
-        return false;
-      }
-
-      if (guid)
-        *guid = pdb_info->Guid;
-      if (age)
-        *age = pdb_info->Age;
-      if (pdb_filename)
-        *pdb_filename = pdb_info->PdbFileName;
-      return true;
-    }
-  }
-  return false;
-}
-
-PDWORD PEImage::GetExportEntry(LPCSTR name) const {
-  PIMAGE_EXPORT_DIRECTORY exports = GetExportDirectory();
-
-  if (NULL == exports)
-    return NULL;
-
-  WORD ordinal = 0;
-  if (!GetProcOrdinal(name, &ordinal))
-    return NULL;
-
-  PDWORD functions =
-      reinterpret_cast<PDWORD>(RVAToAddr(exports->AddressOfFunctions));
-
-  return functions + ordinal - exports->Base;
-}
-
-FARPROC PEImage::GetProcAddress(LPCSTR function_name) const {
-  PDWORD export_entry = GetExportEntry(function_name);
-  if (NULL == export_entry)
-    return NULL;
-
-  PBYTE function = reinterpret_cast<PBYTE>(RVAToAddr(*export_entry));
-
-  PBYTE exports = reinterpret_cast<PBYTE>(
-      GetImageDirectoryEntryAddr(IMAGE_DIRECTORY_ENTRY_EXPORT));
-  DWORD size = GetImageDirectoryEntrySize(IMAGE_DIRECTORY_ENTRY_EXPORT);
-
-  // Check for forwarded exports as a special case.
-  if (exports <= function && exports + size > function)
-    return reinterpret_cast<FARPROC>(-1);
-
-  return reinterpret_cast<FARPROC>(function);
-}
-
-bool PEImage::GetProcOrdinal(LPCSTR function_name, WORD* ordinal) const {
-  if (NULL == ordinal)
-    return false;
-
-  PIMAGE_EXPORT_DIRECTORY exports = GetExportDirectory();
-
-  if (NULL == exports)
-    return false;
-
-  if (IsOrdinal(function_name)) {
-    *ordinal = ToOrdinal(function_name);
-  } else {
-    PDWORD names = reinterpret_cast<PDWORD>(RVAToAddr(exports->AddressOfNames));
-    PDWORD lower = names;
-    PDWORD upper = names + exports->NumberOfNames;
-    int cmp = -1;
-
-    // Binary Search for the name.
-    while (lower != upper) {
-      PDWORD middle = lower + (upper - lower) / 2;
-      LPCSTR name = reinterpret_cast<LPCSTR>(RVAToAddr(*middle));
-
-      // This may be called by sandbox before MSVCRT dll loads, so can't use
-      // CRT function here.
-      cmp = StrCmpByByte(function_name, name);
-
-      if (cmp == 0) {
-        lower = middle;
-        break;
-      }
-
-      if (cmp > 0)
-        lower = middle + 1;
-      else
-        upper = middle;
-    }
-
-    if (cmp != 0)
-      return false;
-
-    PWORD ordinals =
-        reinterpret_cast<PWORD>(RVAToAddr(exports->AddressOfNameOrdinals));
-
-    *ordinal = ordinals[lower - names] + static_cast<WORD>(exports->Base);
-  }
-
-  return true;
-}
-
-bool PEImage::EnumSections(EnumSectionsFunction callback, PVOID cookie) const {
-  PIMAGE_NT_HEADERS nt_headers = GetNTHeaders();
-  UINT num_sections = nt_headers->FileHeader.NumberOfSections;
-  PIMAGE_SECTION_HEADER section = GetSectionHeader(0);
-
-  for (UINT i = 0; i < num_sections; i++, section++) {
-    PVOID section_start = RVAToAddr(section->VirtualAddress);
-    DWORD size = section->Misc.VirtualSize;
-
-    if (!callback(*this, section, section_start, size, cookie))
-      return false;
-  }
-
-  return true;
-}
-
-bool PEImage::EnumExports(EnumExportsFunction callback, PVOID cookie) const {
-  PVOID directory = GetImageDirectoryEntryAddr(IMAGE_DIRECTORY_ENTRY_EXPORT);
-  DWORD size = GetImageDirectoryEntrySize(IMAGE_DIRECTORY_ENTRY_EXPORT);
-
-  // Check if there are any exports at all.
-  if (NULL == directory || 0 == size)
-    return true;
-
-  PIMAGE_EXPORT_DIRECTORY exports =
-      reinterpret_cast<PIMAGE_EXPORT_DIRECTORY>(directory);
-  UINT ordinal_base = exports->Base;
-  UINT num_funcs = exports->NumberOfFunctions;
-  UINT num_names = exports->NumberOfNames;
-  PDWORD functions =
-      reinterpret_cast<PDWORD>(RVAToAddr(exports->AddressOfFunctions));
-  PDWORD names = reinterpret_cast<PDWORD>(RVAToAddr(exports->AddressOfNames));
-  PWORD ordinals =
-      reinterpret_cast<PWORD>(RVAToAddr(exports->AddressOfNameOrdinals));
-
-  for (UINT count = 0; count < num_funcs; count++) {
-    PVOID func = RVAToAddr(functions[count]);
-    if (NULL == func)
-      continue;
-
-    // Check for a name.
-    LPCSTR name = NULL;
-    UINT hint;
-    for (hint = 0; hint < num_names; hint++) {
-      if (ordinals[hint] == count) {
-        name = reinterpret_cast<LPCSTR>(RVAToAddr(names[hint]));
-        break;
-      }
-    }
-
-    if (name == NULL)
-      hint = 0;
-
-    // Check for forwarded exports.
-    LPCSTR forward = NULL;
-    if (reinterpret_cast<char*>(func) >= reinterpret_cast<char*>(directory) &&
-        reinterpret_cast<char*>(func) <=
-            reinterpret_cast<char*>(directory) + size) {
-      forward = reinterpret_cast<LPCSTR>(func);
-      func = 0;
-    }
-
-    if (!callback(*this, ordinal_base + count, hint, name, func, forward,
-                  cookie))
-      return false;
-  }
-
-  return true;
-}
-
-bool PEImage::EnumRelocs(EnumRelocsFunction callback, PVOID cookie) const {
-  PVOID directory = GetImageDirectoryEntryAddr(IMAGE_DIRECTORY_ENTRY_BASERELOC);
-  DWORD size = GetImageDirectoryEntrySize(IMAGE_DIRECTORY_ENTRY_BASERELOC);
-  PIMAGE_BASE_RELOCATION base =
-      reinterpret_cast<PIMAGE_BASE_RELOCATION>(directory);
-
-  if (!directory)
-    return true;
-
-  while (size >= sizeof(IMAGE_BASE_RELOCATION) && base->SizeOfBlock &&
-         size >= base->SizeOfBlock) {
-    PWORD reloc = reinterpret_cast<PWORD>(base + 1);
-    UINT num_relocs =
-        (base->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(WORD);
-
-    for (UINT i = 0; i < num_relocs; i++, reloc++) {
-      WORD type = *reloc >> 12;
-      PVOID address = RVAToAddr(base->VirtualAddress + (*reloc & 0x0FFF));
-
-      if (!callback(*this, type, address, cookie))
-        return false;
-    }
-
-    size -= base->SizeOfBlock;
-    base = reinterpret_cast<PIMAGE_BASE_RELOCATION>(
-        reinterpret_cast<char*>(base) + base->SizeOfBlock);
-  }
-
-  return true;
-}
-
-bool PEImage::EnumImportChunks(EnumImportChunksFunction callback,
-                               PVOID cookie) const {
-  DWORD size = GetImageDirectoryEntrySize(IMAGE_DIRECTORY_ENTRY_IMPORT);
-  PIMAGE_IMPORT_DESCRIPTOR import = GetFirstImportChunk();
-
-  if (import == NULL || size < sizeof(IMAGE_IMPORT_DESCRIPTOR))
-    return true;
-
-  for (; import->FirstThunk; import++) {
-    LPCSTR module_name = reinterpret_cast<LPCSTR>(RVAToAddr(import->Name));
-    PIMAGE_THUNK_DATA name_table = reinterpret_cast<PIMAGE_THUNK_DATA>(
-        RVAToAddr(import->OriginalFirstThunk));
-    PIMAGE_THUNK_DATA iat =
-        reinterpret_cast<PIMAGE_THUNK_DATA>(RVAToAddr(import->FirstThunk));
-
-    if (!callback(*this, module_name, name_table, iat, cookie))
-      return false;
-  }
-
-  return true;
-}
-
-bool PEImage::EnumOneImportChunk(EnumImportsFunction callback,
-                                 LPCSTR module_name,
-                                 PIMAGE_THUNK_DATA name_table,
-                                 PIMAGE_THUNK_DATA iat,
-                                 PVOID cookie) const {
-  if (NULL == name_table)
-    return false;
-
-  for (; name_table && name_table->u1.Ordinal; name_table++, iat++) {
-    LPCSTR name = NULL;
-    WORD ordinal = 0;
-    WORD hint = 0;
-
-    if (IMAGE_SNAP_BY_ORDINAL(name_table->u1.Ordinal)) {
-      ordinal = static_cast<WORD>(IMAGE_ORDINAL32(name_table->u1.Ordinal));
-    } else {
-      PIMAGE_IMPORT_BY_NAME import = reinterpret_cast<PIMAGE_IMPORT_BY_NAME>(
-          RVAToAddr(name_table->u1.ForwarderString));
-
-      hint = import->Hint;
-      name = reinterpret_cast<LPCSTR>(&import->Name);
-    }
-
-    if (!callback(*this, module_name, ordinal, name, hint, iat, cookie))
-      return false;
-  }
-
-  return true;
-}
-
-bool PEImage::EnumAllImports(EnumImportsFunction callback, PVOID cookie) const {
-  EnumAllImportsStorage temp = {callback, cookie};
-  return EnumImportChunks(ProcessImportChunk, &temp);
-}
-
-bool PEImage::EnumDelayImportChunks(EnumDelayImportChunksFunction callback,
-                                    PVOID cookie) const {
-  PVOID directory =
-      GetImageDirectoryEntryAddr(IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT);
-  DWORD size = GetImageDirectoryEntrySize(IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT);
-  PImgDelayDescr delay_descriptor = reinterpret_cast<PImgDelayDescr>(directory);
-
-  if (directory == NULL || size == 0)
-    return true;
-
-  for (; delay_descriptor->rvaHmod; delay_descriptor++) {
-    PIMAGE_THUNK_DATA name_table;
-    PIMAGE_THUNK_DATA iat;
-    LPCSTR module_name;
-
-    // check if VC7-style imports, using RVAs instead of
-    // VC6-style addresses.
-    bool rvas = (delay_descriptor->grAttrs & dlattrRva) != 0;
-
-    if (rvas) {
-      module_name =
-          reinterpret_cast<LPCSTR>(RVAToAddr(delay_descriptor->rvaDLLName));
-      name_table = reinterpret_cast<PIMAGE_THUNK_DATA>(
-          RVAToAddr(delay_descriptor->rvaINT));
-      iat = reinterpret_cast<PIMAGE_THUNK_DATA>(
-          RVAToAddr(delay_descriptor->rvaIAT));
-    } else {
-      // Values in IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT are 32-bit, even on 64-bit
-      // platforms. See section 4.8 of PECOFF image spec rev 8.3.
-      module_name = reinterpret_cast<LPCSTR>(
-          static_cast<uintptr_t>(delay_descriptor->rvaDLLName));
-      name_table = reinterpret_cast<PIMAGE_THUNK_DATA>(
-          static_cast<uintptr_t>(delay_descriptor->rvaINT));
-      iat = reinterpret_cast<PIMAGE_THUNK_DATA>(
-          static_cast<uintptr_t>(delay_descriptor->rvaIAT));
-    }
-
-    if (!callback(*this, delay_descriptor, module_name, name_table, iat,
-                  cookie))
-      return false;
-  }
-
-  return true;
-}
-
-bool PEImage::EnumOneDelayImportChunk(EnumImportsFunction callback,
-                                      PImgDelayDescr delay_descriptor,
-                                      LPCSTR module_name,
-                                      PIMAGE_THUNK_DATA name_table,
-                                      PIMAGE_THUNK_DATA iat,
-                                      PVOID cookie) const {
-  for (; name_table->u1.Ordinal; name_table++, iat++) {
-    LPCSTR name = NULL;
-    WORD ordinal = 0;
-    WORD hint = 0;
-
-    if (IMAGE_SNAP_BY_ORDINAL(name_table->u1.Ordinal)) {
-      ordinal = static_cast<WORD>(IMAGE_ORDINAL32(name_table->u1.Ordinal));
-    } else {
-      PIMAGE_IMPORT_BY_NAME import;
-      bool rvas = (delay_descriptor->grAttrs & dlattrRva) != 0;
-
-      if (rvas) {
-        import = reinterpret_cast<PIMAGE_IMPORT_BY_NAME>(
-            RVAToAddr(name_table->u1.ForwarderString));
-      } else {
-        import = reinterpret_cast<PIMAGE_IMPORT_BY_NAME>(
-            name_table->u1.ForwarderString);
-      }
-
-      hint = import->Hint;
-      name = reinterpret_cast<LPCSTR>(&import->Name);
-    }
-
-    if (!callback(*this, module_name, ordinal, name, hint, iat, cookie))
-      return false;
-  }
-
-  return true;
-}
-
-bool PEImage::EnumAllDelayImports(EnumImportsFunction callback,
-                                  PVOID cookie) const {
-  EnumAllImportsStorage temp = {callback, cookie};
-  return EnumDelayImportChunks(ProcessDelayImportChunk, &temp);
-}
-
-bool PEImage::VerifyMagic() const {
-  PIMAGE_DOS_HEADER dos_header = GetDosHeader();
-
-  if (dos_header->e_magic != IMAGE_DOS_SIGNATURE)
-    return false;
-
-  PIMAGE_NT_HEADERS nt_headers = GetNTHeaders();
-
-  if (nt_headers->Signature != IMAGE_NT_SIGNATURE)
-    return false;
-
-  if (nt_headers->FileHeader.SizeOfOptionalHeader !=
-      sizeof(IMAGE_OPTIONAL_HEADER))
-    return false;
-
-  if (nt_headers->OptionalHeader.Magic != IMAGE_NT_OPTIONAL_HDR_MAGIC)
-    return false;
-
-  return true;
-}
-
-bool PEImage::ImageRVAToOnDiskOffset(DWORD rva, DWORD* on_disk_offset) const {
-  LPVOID address = RVAToAddr(rva);
-  return ImageAddrToOnDiskOffset(address, on_disk_offset);
-}
-
-bool PEImage::ImageAddrToOnDiskOffset(LPVOID address,
-                                      DWORD* on_disk_offset) const {
-  if (NULL == address)
-    return false;
-
-  // Get the section that this address belongs to.
-  PIMAGE_SECTION_HEADER section_header = GetImageSectionFromAddr(address);
-  if (NULL == section_header)
-    return false;
-
-  // Don't follow the virtual RVAToAddr, use the one on the base.
-  DWORD offset_within_section =
-      static_cast<DWORD>(reinterpret_cast<uintptr_t>(address)) -
-      static_cast<DWORD>(reinterpret_cast<uintptr_t>(
-          PEImage::RVAToAddr(section_header->VirtualAddress)));
-
-  *on_disk_offset = section_header->PointerToRawData + offset_within_section;
-  return true;
-}
-
-PVOID PEImage::RVAToAddr(DWORD rva) const {
-  if (rva == 0)
-    return NULL;
-
-  return reinterpret_cast<char*>(module_) + rva;
-}
-
-PVOID PEImageAsData::RVAToAddr(DWORD rva) const {
-  if (rva == 0)
-    return NULL;
-
-  PVOID in_memory = PEImage::RVAToAddr(rva);
-  DWORD disk_offset;
-
-  if (!ImageAddrToOnDiskOffset(in_memory, &disk_offset))
-    return NULL;
-
-  return PEImage::RVAToAddr(disk_offset);
-}
-
-}  // namespace win
-}  // namespace base
diff --git a/base/win/pe_image.h b/base/win/pe_image.h
deleted file mode 100644
index 7766b49..0000000
--- a/base/win/pe_image.h
+++ /dev/null
@@ -1,281 +0,0 @@
-// Copyright (c) 2010 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.
-
-// This file was adapted from GreenBorder's Code.
-// To understand what this class is about (for other than well known functions
-// as GetProcAddress), a good starting point is "An In-Depth Look into the
-// Win32 Portable Executable File Format" by Matt Pietrek:
-// http://msdn.microsoft.com/msdnmag/issues/02/02/PE/default.aspx
-
-#ifndef BASE_WIN_PE_IMAGE_H_
-#define BASE_WIN_PE_IMAGE_H_
-
-#include <windows.h>
-
-#if defined(_WIN32_WINNT_WIN8)
-// The Windows 8 SDK defines FACILITY_VISUALCPP in winerror.h.
-#undef FACILITY_VISUALCPP
-#endif
-#include <DelayIMP.h>
-
-namespace base {
-namespace win {
-
-// This class is a wrapper for the Portable Executable File Format (PE).
-// Its main purpose is to provide an easy way to work with imports and exports
-// from a file, mapped in memory as image.
-class PEImage {
- public:
-  // Callback to enumerate sections.
-  // cookie is the value passed to the enumerate method.
-  // Returns true to continue the enumeration.
-  typedef bool (*EnumSectionsFunction)(const PEImage& image,
-                                       PIMAGE_SECTION_HEADER header,
-                                       PVOID section_start,
-                                       DWORD section_size,
-                                       PVOID cookie);
-
-  // Callback to enumerate exports.
-  // function is the actual address of the symbol. If forward is not null, it
-  // contains the dll and symbol to forward this export to. cookie is the value
-  // passed to the enumerate method.
-  // Returns true to continue the enumeration.
-  typedef bool (*EnumExportsFunction)(const PEImage& image,
-                                      DWORD ordinal,
-                                      DWORD hint,
-                                      LPCSTR name,
-                                      PVOID function,
-                                      LPCSTR forward,
-                                      PVOID cookie);
-
-  // Callback to enumerate import blocks.
-  // name_table and iat point to the imports name table and address table for
-  // this block. cookie is the value passed to the enumerate method.
-  // Returns true to continue the enumeration.
-  typedef bool (*EnumImportChunksFunction)(const PEImage& image,
-                                           LPCSTR module,
-                                           PIMAGE_THUNK_DATA name_table,
-                                           PIMAGE_THUNK_DATA iat,
-                                           PVOID cookie);
-
-  // Callback to enumerate imports.
-  // module is the dll that exports this symbol. cookie is the value passed to
-  // the enumerate method.
-  // Returns true to continue the enumeration.
-  typedef bool (*EnumImportsFunction)(const PEImage& image,
-                                      LPCSTR module,
-                                      DWORD ordinal,
-                                      LPCSTR name,
-                                      DWORD hint,
-                                      PIMAGE_THUNK_DATA iat,
-                                      PVOID cookie);
-
-  // Callback to enumerate delayed import blocks.
-  // module is the dll that exports this block of symbols. cookie is the value
-  // passed to the enumerate method.
-  // Returns true to continue the enumeration.
-  typedef bool (*EnumDelayImportChunksFunction)(const PEImage& image,
-                                                PImgDelayDescr delay_descriptor,
-                                                LPCSTR module,
-                                                PIMAGE_THUNK_DATA name_table,
-                                                PIMAGE_THUNK_DATA iat,
-                                                PVOID cookie);
-
-  // Callback to enumerate relocations.
-  // cookie is the value passed to the enumerate method.
-  // Returns true to continue the enumeration.
-  typedef bool (*EnumRelocsFunction)(const PEImage& image,
-                                     WORD type,
-                                     PVOID address,
-                                     PVOID cookie);
-
-  explicit PEImage(HMODULE module) : module_(module) {}
-  explicit PEImage(const void* module) {
-    module_ = reinterpret_cast<HMODULE>(const_cast<void*>(module));
-  }
-
-  virtual ~PEImage() {}
-
-  // Gets the HMODULE for this object.
-  HMODULE module() const;
-
-  // Sets this object's HMODULE.
-  void set_module(HMODULE module);
-
-  // Checks if this symbol is actually an ordinal.
-  static bool IsOrdinal(LPCSTR name);
-
-  // Converts a named symbol to the corresponding ordinal.
-  static WORD ToOrdinal(LPCSTR name);
-
-  // Returns the DOS_HEADER for this PE.
-  PIMAGE_DOS_HEADER GetDosHeader() const;
-
-  // Returns the NT_HEADER for this PE.
-  PIMAGE_NT_HEADERS GetNTHeaders() const;
-
-  // Returns number of sections of this PE.
-  WORD GetNumSections() const;
-
-  // Returns the header for a given section.
-  // returns NULL if there is no such section.
-  PIMAGE_SECTION_HEADER GetSectionHeader(UINT section) const;
-
-  // Returns the size of a given directory entry.
-  DWORD GetImageDirectoryEntrySize(UINT directory) const;
-
-  // Returns the address of a given directory entry.
-  PVOID GetImageDirectoryEntryAddr(UINT directory) const;
-
-  // Returns the section header for a given address.
-  // Use: s = image.GetImageSectionFromAddr(a);
-  // Post: 's' is the section header of the section that contains 'a'
-  //       or NULL if there is no such section.
-  PIMAGE_SECTION_HEADER GetImageSectionFromAddr(PVOID address) const;
-
-  // Returns the section header for a given section.
-  PIMAGE_SECTION_HEADER GetImageSectionHeaderByName(LPCSTR section_name) const;
-
-  // Returns the first block of imports.
-  PIMAGE_IMPORT_DESCRIPTOR GetFirstImportChunk() const;
-
-  // Returns the exports directory.
-  PIMAGE_EXPORT_DIRECTORY GetExportDirectory() const;
-
-  // Returns the debug id (guid+age) and |pdb_filename|. Parameters are optional
-  // and can be null. |pdb_filename| is a direct reference to PEImage and
-  // doesn't not need to be freed.
-  bool GetDebugId(LPGUID guid, LPDWORD age, LPCSTR* pdb_filename) const;
-
-  // Returns a given export entry.
-  // Use: e = image.GetExportEntry(f);
-  // Pre: 'f' is either a zero terminated string or ordinal
-  // Post: 'e' is a pointer to the export directory entry
-  //       that contains 'f's export RVA, or NULL if 'f'
-  //       is not exported from this image
-  PDWORD GetExportEntry(LPCSTR name) const;
-
-  // Returns the address for a given exported symbol.
-  // Use: p = image.GetProcAddress(f);
-  // Pre: 'f' is either a zero terminated string or ordinal.
-  // Post: if 'f' is a non-forwarded export from image, 'p' is
-  //       the exported function. If 'f' is a forwarded export
-  //       then p is the special value -1. In this case
-  //       RVAToAddr(*GetExportEntry) can be used to resolve
-  //       the string that describes the forward.
-  FARPROC GetProcAddress(LPCSTR function_name) const;
-
-  // Retrieves the ordinal for a given exported symbol.
-  // Returns true if the symbol was found.
-  bool GetProcOrdinal(LPCSTR function_name, WORD* ordinal) const;
-
-  // Enumerates PE sections.
-  // cookie is a generic cookie to pass to the callback.
-  // Returns true on success.
-  bool EnumSections(EnumSectionsFunction callback, PVOID cookie) const;
-
-  // Enumerates PE exports.
-  // cookie is a generic cookie to pass to the callback.
-  // Returns true on success.
-  bool EnumExports(EnumExportsFunction callback, PVOID cookie) const;
-
-  // Enumerates PE imports.
-  // cookie is a generic cookie to pass to the callback.
-  // Returns true on success.
-  bool EnumAllImports(EnumImportsFunction callback, PVOID cookie) const;
-
-  // Enumerates PE import blocks.
-  // cookie is a generic cookie to pass to the callback.
-  // Returns true on success.
-  bool EnumImportChunks(EnumImportChunksFunction callback, PVOID cookie) const;
-
-  // Enumerates the imports from a single PE import block.
-  // cookie is a generic cookie to pass to the callback.
-  // Returns true on success.
-  bool EnumOneImportChunk(EnumImportsFunction callback,
-                          LPCSTR module_name,
-                          PIMAGE_THUNK_DATA name_table,
-                          PIMAGE_THUNK_DATA iat,
-                          PVOID cookie) const;
-
-  // Enumerates PE delay imports.
-  // cookie is a generic cookie to pass to the callback.
-  // Returns true on success.
-  bool EnumAllDelayImports(EnumImportsFunction callback, PVOID cookie) const;
-
-  // Enumerates PE delay import blocks.
-  // cookie is a generic cookie to pass to the callback.
-  // Returns true on success.
-  bool EnumDelayImportChunks(EnumDelayImportChunksFunction callback,
-                             PVOID cookie) const;
-
-  // Enumerates imports from a single PE delay import block.
-  // cookie is a generic cookie to pass to the callback.
-  // Returns true on success.
-  bool EnumOneDelayImportChunk(EnumImportsFunction callback,
-                               PImgDelayDescr delay_descriptor,
-                               LPCSTR module_name,
-                               PIMAGE_THUNK_DATA name_table,
-                               PIMAGE_THUNK_DATA iat,
-                               PVOID cookie) const;
-
-  // Enumerates PE relocation entries.
-  // cookie is a generic cookie to pass to the callback.
-  // Returns true on success.
-  bool EnumRelocs(EnumRelocsFunction callback, PVOID cookie) const;
-
-  // Verifies the magic values on the PE file.
-  // Returns true if all values are correct.
-  bool VerifyMagic() const;
-
-  // Converts an rva value to the appropriate address.
-  virtual PVOID RVAToAddr(DWORD rva) const;
-
-  // Converts an rva value to an offset on disk.
-  // Returns true on success.
-  bool ImageRVAToOnDiskOffset(DWORD rva, DWORD* on_disk_offset) const;
-
-  // Converts an address to an offset on disk.
-  // Returns true on success.
-  bool ImageAddrToOnDiskOffset(LPVOID address, DWORD* on_disk_offset) const;
-
- private:
-  HMODULE module_;
-};
-
-// This class is an extension to the PEImage class that allows working with PE
-// files mapped as data instead of as image file.
-class PEImageAsData : public PEImage {
- public:
-  explicit PEImageAsData(HMODULE hModule) : PEImage(hModule) {}
-
-  PVOID RVAToAddr(DWORD rva) const override;
-};
-
-inline bool PEImage::IsOrdinal(LPCSTR name) {
-  return reinterpret_cast<uintptr_t>(name) <= 0xFFFF;
-}
-
-inline WORD PEImage::ToOrdinal(LPCSTR name) {
-  return static_cast<WORD>(reinterpret_cast<intptr_t>(name));
-}
-
-inline HMODULE PEImage::module() const {
-  return module_;
-}
-
-inline PIMAGE_IMPORT_DESCRIPTOR PEImage::GetFirstImportChunk() const {
-  return reinterpret_cast<PIMAGE_IMPORT_DESCRIPTOR>(
-      GetImageDirectoryEntryAddr(IMAGE_DIRECTORY_ENTRY_IMPORT));
-}
-
-inline PIMAGE_EXPORT_DIRECTORY PEImage::GetExportDirectory() const {
-  return reinterpret_cast<PIMAGE_EXPORT_DIRECTORY>(
-      GetImageDirectoryEntryAddr(IMAGE_DIRECTORY_ENTRY_EXPORT));
-}
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_PE_IMAGE_H_
diff --git a/base/win/pe_image_test.cc b/base/win/pe_image_test.cc
deleted file mode 100644
index 8591495..0000000
--- a/base/win/pe_image_test.cc
+++ /dev/null
@@ -1,33 +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 <windows.h>
-
-#include <cfgmgr32.h>
-#include <shellapi.h>
-
-#pragma comment(linker, "/export:FwdExport=KERNEL32.CreateFileA")
-
-extern "C" {
-
-__declspec(dllexport) void ExportFunc1() {
-  // Call into user32.dll.
-  HWND dummy = GetDesktopWindow();
-  SetWindowTextA(dummy, "dummy");
-}
-
-__declspec(dllexport) void ExportFunc2() {
-  // Call into cfgmgr32.dll.
-  CM_MapCrToWin32Err(CR_SUCCESS, ERROR_SUCCESS);
-
-  // Call into shell32.dll.
-  SHFILEOPSTRUCT file_operation = {0};
-  SHFileOperation(&file_operation);
-
-  // Call into kernel32.dll.
-  HANDLE h = CreateEvent(NULL, FALSE, FALSE, NULL);
-  CloseHandle(h);
-}
-
-}  // extern "C"
diff --git a/base/win/process_startup_helper.cc b/base/win/process_startup_helper.cc
deleted file mode 100644
index 347db71..0000000
--- a/base/win/process_startup_helper.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 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/win/process_startup_helper.h"
-
-#include <crtdbg.h>
-#include <new.h>
-#include <stdlib.h>
-
-namespace {
-
-#pragma optimize("", off)
-// Handlers for invalid parameter and pure call. They generate a breakpoint to
-// tell breakpad that it needs to dump the process.
-void InvalidParameter(const wchar_t* expression,
-                      const wchar_t* function,
-                      const wchar_t* file,
-                      unsigned int line,
-                      uintptr_t reserved) {
-  __debugbreak();
-  _exit(1);
-}
-
-void PureCall() {
-  __debugbreak();
-  _exit(1);
-}
-#pragma optimize("", on)
-
-}  // namespace
-
-namespace base {
-namespace win {
-
-// Register the invalid param handler and pure call handler to be able to
-// notify breakpad when it happens.
-void RegisterInvalidParamHandler() {
-  _set_invalid_parameter_handler(InvalidParameter);
-  _set_purecall_handler(PureCall);
-}
-
-void SetupCRT(const CommandLine& command_line) {
-#if defined(_CRTDBG_MAP_ALLOC)
-  _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
-  _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
-#else
-  _CrtSetReportMode(_CRT_ASSERT, 0);
-#endif
-}
-
-}  // namespace win
-}  // namespace base
diff --git a/base/win/process_startup_helper.h b/base/win/process_startup_helper.h
deleted file mode 100644
index c579433..0000000
--- a/base/win/process_startup_helper.h
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 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_WIN_PROCESS_STARTUP_HELPER_H_
-#define BASE_WIN_PROCESS_STARTUP_HELPER_H_
-
-namespace base {
-
-class CommandLine;
-
-namespace win {
-
-// Register the invalid param handler and pure call handler to be able to
-// notify breakpad when it happens.
-void RegisterInvalidParamHandler();
-
-// Sets up the CRT's debugging macros to output to stdout.
-void SetupCRT(const CommandLine& command_line);
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_PROCESS_STARTUP_HELPER_H_
diff --git a/base/win/registry.cc b/base/win/registry.cc
index 1ca839d..e07820b 100644
--- a/base/win/registry.cc
+++ b/base/win/registry.cc
@@ -11,7 +11,6 @@
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/strings/string_util.h"
-#include "base/win/windows_version.h"
 
 namespace base {
 namespace win {
diff --git a/base/win/resource_util.cc b/base/win/resource_util.cc
deleted file mode 100644
index b964aee..0000000
--- a/base/win/resource_util.cc
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2006-2008 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/win/resource_util.h"
-#include "base/logging.h"
-
-namespace base {
-namespace win {
-
-bool GetResourceFromModule(HMODULE module,
-                           int resource_id,
-                           LPCTSTR resource_type,
-                           void** data,
-                           size_t* length) {
-  if (!module)
-    return false;
-
-  if (!IS_INTRESOURCE(resource_id)) {
-    NOTREACHED();
-    return false;
-  }
-
-  HRSRC hres_info =
-      FindResource(module, MAKEINTRESOURCE(resource_id), resource_type);
-  if (NULL == hres_info)
-    return false;
-
-  DWORD data_size = SizeofResource(module, hres_info);
-  HGLOBAL hres = LoadResource(module, hres_info);
-  if (!hres)
-    return false;
-
-  void* resource = LockResource(hres);
-  if (!resource)
-    return false;
-
-  *data = resource;
-  *length = static_cast<size_t>(data_size);
-  return true;
-}
-
-bool GetDataResourceFromModule(HMODULE module,
-                               int resource_id,
-                               void** data,
-                               size_t* length) {
-  return GetResourceFromModule(module, resource_id, L"BINDATA", data, length);
-}
-
-}  // namespace win
-}  // namespace base
diff --git a/base/win/resource_util.h b/base/win/resource_util.h
deleted file mode 100644
index b4473fd..0000000
--- a/base/win/resource_util.h
+++ /dev/null
@@ -1,37 +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.
-
-// This file contains utility functions for accessing resources in external
-// files (DLLs) or embedded in the executable itself.
-
-#ifndef BASE_WIN_RESOURCE_UTIL_H_
-#define BASE_WIN_RESOURCE_UTIL_H_
-
-#include <stddef.h>
-#include <windows.h>
-
-namespace base {
-namespace win {
-
-// Function for getting a data resource of the specified |resource_type| from
-// a dll.  Some resources are optional, especially in unit tests, so this
-// returns false but doesn't raise an error if the resource can't be loaded.
-bool GetResourceFromModule(HMODULE module,
-                           int resource_id,
-                           LPCTSTR resource_type,
-                           void** data,
-                           size_t* length);
-
-// Function for getting a data resource (BINDATA) from a dll.  Some
-// resources are optional, especially in unit tests, so this returns false
-// but doesn't raise an error if the resource can't be loaded.
-bool GetDataResourceFromModule(HMODULE module,
-                               int resource_id,
-                               void** data,
-                               size_t* length);
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_RESOURCE_UTIL_H_
diff --git a/base/win/shortcut.cc b/base/win/shortcut.cc
deleted file mode 100644
index fcd8a70..0000000
--- a/base/win/shortcut.cc
+++ /dev/null
@@ -1,364 +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/win/shortcut.h"
-
-#include <objbase.h>
-#include <propkey.h>
-#include <shellapi.h>
-#include <shlobj.h>
-#include <wrl/client.h>
-
-#include "base/files/file_util.h"
-#include "base/win/scoped_propvariant.h"
-#include "base/win/win_util.h"
-#include "base/win/windows_version.h"
-
-namespace base {
-namespace win {
-
-namespace {
-
-using Microsoft::WRL::ComPtr;
-
-// Initializes |i_shell_link| and |i_persist_file| (releasing them first if they
-// are already initialized).
-// If |shortcut| is not NULL, loads |shortcut| into |i_persist_file|.
-// If any of the above steps fail, both |i_shell_link| and |i_persist_file| will
-// be released.
-void InitializeShortcutInterfaces(const wchar_t* shortcut,
-                                  ComPtr<IShellLink>* i_shell_link,
-                                  ComPtr<IPersistFile>* i_persist_file) {
-  i_shell_link->Reset();
-  i_persist_file->Reset();
-  if (FAILED(::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
-                                IID_PPV_ARGS(i_shell_link->GetAddressOf()))) ||
-      FAILED(i_shell_link->CopyTo(i_persist_file->GetAddressOf())) ||
-      (shortcut && FAILED((*i_persist_file)->Load(shortcut, STGM_READWRITE)))) {
-    i_shell_link->Reset();
-    i_persist_file->Reset();
-  }
-}
-
-}  // namespace
-
-ShortcutProperties::ShortcutProperties()
-    : icon_index(-1), dual_mode(false), options(0U) {}
-
-ShortcutProperties::ShortcutProperties(const ShortcutProperties& other) =
-    default;
-
-ShortcutProperties::~ShortcutProperties() {}
-
-bool CreateOrUpdateShortcutLink(const FilePath& shortcut_path,
-                                const ShortcutProperties& properties,
-                                ShortcutOperation operation) {
-  // A target is required unless |operation| is SHORTCUT_UPDATE_EXISTING.
-  if (operation != SHORTCUT_UPDATE_EXISTING &&
-      !(properties.options & ShortcutProperties::PROPERTIES_TARGET)) {
-    NOTREACHED();
-    return false;
-  }
-
-  bool shortcut_existed = PathExists(shortcut_path);
-
-  // Interfaces to the old shortcut when replacing an existing shortcut.
-  ComPtr<IShellLink> old_i_shell_link;
-  ComPtr<IPersistFile> old_i_persist_file;
-
-  // Interfaces to the shortcut being created/updated.
-  ComPtr<IShellLink> i_shell_link;
-  ComPtr<IPersistFile> i_persist_file;
-  switch (operation) {
-    case SHORTCUT_CREATE_ALWAYS:
-      InitializeShortcutInterfaces(NULL, &i_shell_link, &i_persist_file);
-      break;
-    case SHORTCUT_UPDATE_EXISTING:
-      InitializeShortcutInterfaces(shortcut_path.value().c_str(), &i_shell_link,
-                                   &i_persist_file);
-      break;
-    case SHORTCUT_REPLACE_EXISTING:
-      InitializeShortcutInterfaces(shortcut_path.value().c_str(),
-                                   &old_i_shell_link, &old_i_persist_file);
-      // Confirm |shortcut_path| exists and is a shortcut by verifying
-      // |old_i_persist_file| was successfully initialized in the call above. If
-      // so, initialize the interfaces to begin writing a new shortcut (to
-      // overwrite the current one if successful).
-      if (old_i_persist_file.Get())
-        InitializeShortcutInterfaces(NULL, &i_shell_link, &i_persist_file);
-      break;
-    default:
-      NOTREACHED();
-  }
-
-  // Return false immediately upon failure to initialize shortcut interfaces.
-  if (!i_persist_file.Get())
-    return false;
-
-  if ((properties.options & ShortcutProperties::PROPERTIES_TARGET) &&
-      FAILED(i_shell_link->SetPath(properties.target.value().c_str()))) {
-    return false;
-  }
-
-  if ((properties.options & ShortcutProperties::PROPERTIES_WORKING_DIR) &&
-      FAILED(i_shell_link->SetWorkingDirectory(
-          properties.working_dir.value().c_str()))) {
-    return false;
-  }
-
-  if (properties.options & ShortcutProperties::PROPERTIES_ARGUMENTS) {
-    if (FAILED(i_shell_link->SetArguments(properties.arguments.c_str())))
-      return false;
-  } else if (old_i_persist_file.Get()) {
-    wchar_t current_arguments[MAX_PATH] = {0};
-    if (SUCCEEDED(
-            old_i_shell_link->GetArguments(current_arguments, MAX_PATH))) {
-      i_shell_link->SetArguments(current_arguments);
-    }
-  }
-
-  if ((properties.options & ShortcutProperties::PROPERTIES_DESCRIPTION) &&
-      FAILED(i_shell_link->SetDescription(properties.description.c_str()))) {
-    return false;
-  }
-
-  if ((properties.options & ShortcutProperties::PROPERTIES_ICON) &&
-      FAILED(i_shell_link->SetIconLocation(properties.icon.value().c_str(),
-                                           properties.icon_index))) {
-    return false;
-  }
-
-  bool has_app_id =
-      (properties.options & ShortcutProperties::PROPERTIES_APP_ID) != 0;
-  bool has_dual_mode =
-      (properties.options & ShortcutProperties::PROPERTIES_DUAL_MODE) != 0;
-  bool has_toast_activator_clsid =
-      (properties.options &
-       ShortcutProperties::PROPERTIES_TOAST_ACTIVATOR_CLSID) != 0;
-  if (has_app_id || has_dual_mode || has_toast_activator_clsid) {
-    ComPtr<IPropertyStore> property_store;
-    if (FAILED(i_shell_link.CopyTo(property_store.GetAddressOf())) ||
-        !property_store.Get())
-      return false;
-
-    if (has_app_id && !SetAppIdForPropertyStore(property_store.Get(),
-                                                properties.app_id.c_str())) {
-      return false;
-    }
-    if (has_dual_mode && !SetBooleanValueForPropertyStore(
-                             property_store.Get(), PKEY_AppUserModel_IsDualMode,
-                             properties.dual_mode)) {
-      return false;
-    }
-    if (has_toast_activator_clsid &&
-        !SetClsidForPropertyStore(property_store.Get(),
-                                  PKEY_AppUserModel_ToastActivatorCLSID,
-                                  properties.toast_activator_clsid)) {
-      return false;
-    }
-  }
-
-  // Release the interfaces to the old shortcut to make sure it doesn't prevent
-  // overwriting it if needed.
-  old_i_persist_file.Reset();
-  old_i_shell_link.Reset();
-
-  HRESULT result = i_persist_file->Save(shortcut_path.value().c_str(), TRUE);
-
-  // Release the interfaces in case the SHChangeNotify call below depends on
-  // the operations above being fully completed.
-  i_persist_file.Reset();
-  i_shell_link.Reset();
-
-  // If we successfully created/updated the icon, notify the shell that we have
-  // done so.
-  const bool succeeded = SUCCEEDED(result);
-  if (succeeded) {
-    if (shortcut_existed) {
-      // TODO(gab): SHCNE_UPDATEITEM might be sufficient here; further testing
-      // required.
-      SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);
-    } else {
-      SHChangeNotify(SHCNE_CREATE, SHCNF_PATH, shortcut_path.value().c_str(),
-                     NULL);
-    }
-  }
-
-  return succeeded;
-}
-
-bool ResolveShortcutProperties(const FilePath& shortcut_path,
-                               uint32_t options,
-                               ShortcutProperties* properties) {
-  DCHECK(options && properties);
-
-  if (options & ~ShortcutProperties::PROPERTIES_ALL)
-    NOTREACHED() << "Unhandled property is used.";
-
-  ComPtr<IShellLink> i_shell_link;
-
-  // Get pointer to the IShellLink interface.
-  if (FAILED(::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
-                                IID_PPV_ARGS(&i_shell_link)))) {
-    return false;
-  }
-
-  ComPtr<IPersistFile> persist;
-  // Query IShellLink for the IPersistFile interface.
-  if (FAILED(i_shell_link.CopyTo(persist.GetAddressOf())))
-    return false;
-
-  // Load the shell link.
-  if (FAILED(persist->Load(shortcut_path.value().c_str(), STGM_READ)))
-    return false;
-
-  // Reset |properties|.
-  properties->options = 0;
-
-  wchar_t temp[MAX_PATH];
-  if (options & ShortcutProperties::PROPERTIES_TARGET) {
-    if (FAILED(i_shell_link->GetPath(temp, MAX_PATH, NULL, SLGP_UNCPRIORITY)))
-      return false;
-    properties->set_target(FilePath(temp));
-  }
-
-  if (options & ShortcutProperties::PROPERTIES_WORKING_DIR) {
-    if (FAILED(i_shell_link->GetWorkingDirectory(temp, MAX_PATH)))
-      return false;
-    properties->set_working_dir(FilePath(temp));
-  }
-
-  if (options & ShortcutProperties::PROPERTIES_ARGUMENTS) {
-    if (FAILED(i_shell_link->GetArguments(temp, MAX_PATH)))
-      return false;
-    properties->set_arguments(temp);
-  }
-
-  if (options & ShortcutProperties::PROPERTIES_DESCRIPTION) {
-    // Note: description length constrained by MAX_PATH.
-    if (FAILED(i_shell_link->GetDescription(temp, MAX_PATH)))
-      return false;
-    properties->set_description(temp);
-  }
-
-  if (options & ShortcutProperties::PROPERTIES_ICON) {
-    int temp_index;
-    if (FAILED(i_shell_link->GetIconLocation(temp, MAX_PATH, &temp_index)))
-      return false;
-    properties->set_icon(FilePath(temp), temp_index);
-  }
-
-  if (options & (ShortcutProperties::PROPERTIES_APP_ID |
-                 ShortcutProperties::PROPERTIES_DUAL_MODE |
-                 ShortcutProperties::PROPERTIES_TOAST_ACTIVATOR_CLSID)) {
-    ComPtr<IPropertyStore> property_store;
-    if (FAILED(i_shell_link.CopyTo(property_store.GetAddressOf())))
-      return false;
-
-    if (options & ShortcutProperties::PROPERTIES_APP_ID) {
-      ScopedPropVariant pv_app_id;
-      if (property_store->GetValue(PKEY_AppUserModel_ID, pv_app_id.Receive()) !=
-          S_OK) {
-        return false;
-      }
-      switch (pv_app_id.get().vt) {
-        case VT_EMPTY:
-          properties->set_app_id(L"");
-          break;
-        case VT_LPWSTR:
-          properties->set_app_id(pv_app_id.get().pwszVal);
-          break;
-        default:
-          NOTREACHED() << "Unexpected variant type: " << pv_app_id.get().vt;
-          return false;
-      }
-    }
-
-    if (options & ShortcutProperties::PROPERTIES_DUAL_MODE) {
-      ScopedPropVariant pv_dual_mode;
-      if (property_store->GetValue(PKEY_AppUserModel_IsDualMode,
-                                   pv_dual_mode.Receive()) != S_OK) {
-        return false;
-      }
-      switch (pv_dual_mode.get().vt) {
-        case VT_EMPTY:
-          properties->set_dual_mode(false);
-          break;
-        case VT_BOOL:
-          properties->set_dual_mode(pv_dual_mode.get().boolVal == VARIANT_TRUE);
-          break;
-        default:
-          NOTREACHED() << "Unexpected variant type: " << pv_dual_mode.get().vt;
-          return false;
-      }
-    }
-
-    if (options & ShortcutProperties::PROPERTIES_TOAST_ACTIVATOR_CLSID) {
-      ScopedPropVariant pv_toast_activator_clsid;
-      if (property_store->GetValue(PKEY_AppUserModel_ToastActivatorCLSID,
-                                   pv_toast_activator_clsid.Receive()) !=
-          S_OK) {
-        return false;
-      }
-      switch (pv_toast_activator_clsid.get().vt) {
-        case VT_EMPTY:
-          properties->set_toast_activator_clsid(CLSID_NULL);
-          break;
-        case VT_CLSID:
-          properties->set_toast_activator_clsid(
-              *(pv_toast_activator_clsid.get().puuid));
-          break;
-        default:
-          NOTREACHED() << "Unexpected variant type: "
-                       << pv_toast_activator_clsid.get().vt;
-          return false;
-      }
-    }
-  }
-
-  return true;
-}
-
-bool ResolveShortcut(const FilePath& shortcut_path,
-                     FilePath* target_path,
-                     string16* args) {
-  uint32_t options = 0;
-  if (target_path)
-    options |= ShortcutProperties::PROPERTIES_TARGET;
-  if (args)
-    options |= ShortcutProperties::PROPERTIES_ARGUMENTS;
-  DCHECK(options);
-
-  ShortcutProperties properties;
-  if (!ResolveShortcutProperties(shortcut_path, options, &properties))
-    return false;
-
-  if (target_path)
-    *target_path = properties.target;
-  if (args)
-    *args = properties.arguments;
-  return true;
-}
-
-bool CanPinShortcutToTaskbar() {
-  // "Pin to taskbar" stopped being supported in Windows 10.
-  return GetVersion() < VERSION_WIN10;
-}
-
-bool PinShortcutToTaskbar(const FilePath& shortcut) {
-  DCHECK(CanPinShortcutToTaskbar());
-
-  intptr_t result = reinterpret_cast<intptr_t>(ShellExecute(
-      NULL, L"taskbarpin", shortcut.value().c_str(), NULL, NULL, 0));
-  return result > 32;
-}
-
-bool UnpinShortcutFromTaskbar(const FilePath& shortcut) {
-  intptr_t result = reinterpret_cast<intptr_t>(ShellExecute(
-      NULL, L"taskbarunpin", shortcut.value().c_str(), NULL, NULL, 0));
-  return result > 32;
-}
-
-}  // namespace win
-}  // namespace base
diff --git a/base/win/shortcut.h b/base/win/shortcut.h
deleted file mode 100644
index d5bcff7..0000000
--- a/base/win/shortcut.h
+++ /dev/null
@@ -1,179 +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_WIN_SHORTCUT_H_
-#define BASE_WIN_SHORTCUT_H_
-
-#include <stdint.h>
-#include <windows.h>
-
-#include "base/files/file_path.h"
-#include "base/logging.h"
-#include "base/strings/string16.h"
-
-namespace base {
-namespace win {
-
-enum ShortcutOperation {
-  // Create a new shortcut (overwriting if necessary).
-  SHORTCUT_CREATE_ALWAYS = 0,
-  // Overwrite an existing shortcut (fails if the shortcut doesn't exist).
-  // If the arguments are not specified on the new shortcut, keep the old
-  // shortcut's arguments.
-  SHORTCUT_REPLACE_EXISTING,
-  // Update specified properties only on an existing shortcut.
-  SHORTCUT_UPDATE_EXISTING,
-};
-
-// Properties for shortcuts. Properties set will be applied to the shortcut on
-// creation/update, others will be ignored.
-// Callers are encouraged to use the setters provided which take care of
-// setting |options| as desired.
-struct ShortcutProperties {
-  enum IndividualProperties {
-    PROPERTIES_TARGET = 1U << 0,
-    PROPERTIES_WORKING_DIR = 1U << 1,
-    PROPERTIES_ARGUMENTS = 1U << 2,
-    PROPERTIES_DESCRIPTION = 1U << 3,
-    PROPERTIES_ICON = 1U << 4,
-    PROPERTIES_APP_ID = 1U << 5,
-    PROPERTIES_DUAL_MODE = 1U << 6,
-    PROPERTIES_TOAST_ACTIVATOR_CLSID = 1U << 7,
-    // Be sure to update the values below when adding a new property.
-    PROPERTIES_ALL = PROPERTIES_TARGET | PROPERTIES_WORKING_DIR |
-                     PROPERTIES_ARGUMENTS | PROPERTIES_DESCRIPTION |
-                     PROPERTIES_ICON | PROPERTIES_APP_ID |
-                     PROPERTIES_DUAL_MODE | PROPERTIES_TOAST_ACTIVATOR_CLSID
-  };
-
-  ShortcutProperties();
-  ShortcutProperties(const ShortcutProperties& other);
-  ~ShortcutProperties();
-
-  void set_target(const FilePath& target_in) {
-    target = target_in;
-    options |= PROPERTIES_TARGET;
-  }
-
-  void set_working_dir(const FilePath& working_dir_in) {
-    working_dir = working_dir_in;
-    options |= PROPERTIES_WORKING_DIR;
-  }
-
-  void set_arguments(const string16& arguments_in) {
-    // Size restriction as per MSDN at http://goo.gl/TJ7q5.
-    DCHECK(arguments_in.size() < MAX_PATH);
-    arguments = arguments_in;
-    options |= PROPERTIES_ARGUMENTS;
-  }
-
-  void set_description(const string16& description_in) {
-    // Size restriction as per MSDN at http://goo.gl/OdNQq.
-    DCHECK(description_in.size() < MAX_PATH);
-    description = description_in;
-    options |= PROPERTIES_DESCRIPTION;
-  }
-
-  void set_icon(const FilePath& icon_in, int icon_index_in) {
-    icon = icon_in;
-    icon_index = icon_index_in;
-    options |= PROPERTIES_ICON;
-  }
-
-  void set_app_id(const string16& app_id_in) {
-    app_id = app_id_in;
-    options |= PROPERTIES_APP_ID;
-  }
-
-  void set_dual_mode(bool dual_mode_in) {
-    dual_mode = dual_mode_in;
-    options |= PROPERTIES_DUAL_MODE;
-  }
-
-  void set_toast_activator_clsid(const CLSID& toast_activator_clsid_in) {
-    toast_activator_clsid = toast_activator_clsid_in;
-    options |= PROPERTIES_TOAST_ACTIVATOR_CLSID;
-  }
-
-  // The target to launch from this shortcut. This is mandatory when creating
-  // a shortcut.
-  FilePath target;
-  // The name of the working directory when launching the shortcut.
-  FilePath working_dir;
-  // The arguments to be applied to |target| when launching from this shortcut.
-  // The length of this string must be less than MAX_PATH.
-  string16 arguments;
-  // The localized description of the shortcut.
-  // The length of this string must be less than MAX_PATH.
-  string16 description;
-  // The path to the icon (can be a dll or exe, in which case |icon_index| is
-  // the resource id).
-  FilePath icon;
-  int icon_index;
-  // The app model id for the shortcut.
-  string16 app_id;
-  // Whether this is a dual mode shortcut (Win8+).
-  bool dual_mode;
-  // The CLSID of the COM object registered with the OS via the shortcut. This
-  // is for app activation via user interaction with a toast notification in the
-  // Action Center. (Win10 version 1607, build 14393, and beyond).
-  CLSID toast_activator_clsid;
-  // Bitfield made of IndividualProperties. Properties set in |options| will be
-  // set on the shortcut, others will be ignored.
-  uint32_t options;
-};
-
-// This method creates (or updates) a shortcut link at |shortcut_path| using the
-// information given through |properties|.
-// Ensure you have initialized COM before calling into this function.
-// |operation|: a choice from the ShortcutOperation enum.
-// If |operation| is SHORTCUT_REPLACE_EXISTING or SHORTCUT_UPDATE_EXISTING and
-// |shortcut_path| does not exist, this method is a no-op and returns false.
-bool CreateOrUpdateShortcutLink(const FilePath& shortcut_path,
-                                const ShortcutProperties& properties,
-                                ShortcutOperation operation);
-
-// Resolves Windows shortcut (.LNK file).
-// This methods tries to resolve selected properties of a shortcut .LNK file.
-// The path of the shortcut to resolve is in |shortcut_path|. |options| is a bit
-// field composed of ShortcutProperties::IndividualProperties, to specify which
-// properties to read. It should be non-0. The resulting data are read into
-// |properties|, which must not be NULL. Note: PROPERTIES_TARGET will retrieve
-// the target path as stored in the shortcut but won't attempt to resolve that
-// path so it may not be valid. The function returns true if all requested
-// properties are successfully read. Otherwise some reads have failed and
-// intermediate values written to |properties| should be ignored.
-bool ResolveShortcutProperties(const FilePath& shortcut_path,
-                               uint32_t options,
-                               ShortcutProperties* properties);
-
-// Resolves Windows shortcut (.LNK file).
-// This is a wrapper to ResolveShortcutProperties() to handle the common use
-// case of resolving target and arguments. |target_path| and |args| are
-// optional output variables that are ignored if NULL (but at least one must be
-// non-NULL). The function returns true if all requested fields are found
-// successfully. Callers can safely use the same variable for both
-// |shortcut_path| and |target_path|.
-bool ResolveShortcut(const FilePath& shortcut_path,
-                     FilePath* target_path,
-                     string16* args);
-
-// Pin to taskbar is only supported on Windows 7 and Windows 8. Returns true on
-// those platforms.
-bool CanPinShortcutToTaskbar();
-
-// Pins a shortcut to the taskbar on Windows 7 and 8. The |shortcut| file must
-// already exist and be a shortcut that points to an executable. The app id of
-// the shortcut is used to group windows and must be set correctly.
-bool PinShortcutToTaskbar(const FilePath& shortcut);
-
-// Unpins a shortcut from the Windows 7+ taskbar. The |shortcut| must exist and
-// already be pinned to the taskbar. The app id of the shortcut is used as the
-// identifier for the taskbar item to remove and must be set correctly.
-bool UnpinShortcutFromTaskbar(const FilePath& shortcut);
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_SHORTCUT_H_
diff --git a/base/win/win_client_metrics.h b/base/win/win_client_metrics.h
deleted file mode 100644
index d63bf20..0000000
--- a/base/win/win_client_metrics.h
+++ /dev/null
@@ -1,41 +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.
-
-// This file is separate from base/win/win_util.h to avoid pulling windows.h
-// into too many translation units.
-
-#ifndef BASE_WIN_WIN_CLIENT_METRICS_H_
-#define BASE_WIN_WIN_CLIENT_METRICS_H_
-
-#include <windows.h>
-
-// This is the same as NONCLIENTMETRICS except that the
-// unused member |iPaddedBorderWidth| has been removed.
-struct NONCLIENTMETRICS_XP {
-  UINT cbSize;
-  int iBorderWidth;
-  int iScrollWidth;
-  int iScrollHeight;
-  int iCaptionWidth;
-  int iCaptionHeight;
-  LOGFONTW lfCaptionFont;
-  int iSmCaptionWidth;
-  int iSmCaptionHeight;
-  LOGFONTW lfSmCaptionFont;
-  int iMenuWidth;
-  int iMenuHeight;
-  LOGFONTW lfMenuFont;
-  LOGFONTW lfStatusFont;
-  LOGFONTW lfMessageFont;
-};
-
-namespace base {
-namespace win {
-
-void GetNonClientMetrics(NONCLIENTMETRICS_XP* metrics);
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_WIN_CLIENT_METRICS_H_
diff --git a/base/win/win_util.cc b/base/win/win_util.cc
deleted file mode 100644
index d9efb6e..0000000
--- a/base/win/win_util.cc
+++ /dev/null
@@ -1,392 +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/win/win_util.h"
-
-#include <aclapi.h>
-#include <cfgmgr32.h>
-#include <initguid.h>
-#include <powrprof.h>
-#include <shobjidl.h>  // Must be before propkey.
-
-#include <inspectable.h>
-#include <mdmregistration.h>
-#include <objbase.h>
-#include <propkey.h>
-#include <propvarutil.h>
-#include <psapi.h>
-#include <roapi.h>
-#include <sddl.h>
-#include <setupapi.h>
-#include <shellscalingapi.h>
-#include <shlwapi.h>
-#include <signal.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <tchar.h>  // Must be before tpcshrd.h or for any use of _T macro
-#include <tpcshrd.h>
-#include <uiviewsettingsinterop.h>
-#include <windows.ui.viewmanagement.h>
-#include <winstring.h>
-#include <wrl/client.h>
-#include <wrl/wrappers/corewrappers.h>
-
-#include <memory>
-
-#include "base/command_line.h"
-#include "base/files/file_path.h"
-#include "base/logging.h"
-#include "base/macros.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/win/core_winrt_util.h"
-#include "base/win/registry.h"
-#include "base/win/scoped_co_mem.h"
-#include "base/win/scoped_handle.h"
-#include "base/win/scoped_hstring.h"
-#include "base/win/scoped_propvariant.h"
-#include "base/win/win_client_metrics.h"
-#include "base/win/windows_version.h"
-
-namespace base {
-namespace win {
-
-namespace {
-
-// Sets the value of |property_key| to |property_value| in |property_store|.
-bool SetPropVariantValueForPropertyStore(
-    IPropertyStore* property_store,
-    const PROPERTYKEY& property_key,
-    const ScopedPropVariant& property_value) {
-  DCHECK(property_store);
-
-  HRESULT result = property_store->SetValue(property_key, property_value.get());
-  if (result == S_OK)
-    result = property_store->Commit();
-  if (SUCCEEDED(result))
-    return true;
-#if DCHECK_IS_ON()
-  ScopedCoMem<OLECHAR> guidString;
-  ::StringFromCLSID(property_key.fmtid, &guidString);
-  if (HRESULT_FACILITY(result) == FACILITY_WIN32)
-    ::SetLastError(HRESULT_CODE(result));
-  // See third_party/perl/c/i686-w64-mingw32/include/propkey.h for GUID and
-  // PID definitions.
-  DPLOG(ERROR) << "Failed to set property with GUID " << guidString << " PID "
-               << property_key.pid;
-#endif
-  return false;
-}
-
-void __cdecl ForceCrashOnSigAbort(int) {
-  *((volatile int*)0) = 0x1337;
-}
-
-// Returns the current platform role. We use the PowerDeterminePlatformRoleEx
-// API for that.
-POWER_PLATFORM_ROLE GetPlatformRole() {
-  return PowerDeterminePlatformRoleEx(POWER_PLATFORM_ROLE_V2);
-}
-
-// Method used for Windows 8.1 and later.
-// Since we support versions earlier than 8.1, we must dynamically load this
-// function from user32.dll, so it won't fail to load in runtime. For earlier
-// Windows versions GetProcAddress will return null and report failure so that
-// callers can fall back on the deprecated SetProcessDPIAware.
-bool SetProcessDpiAwarenessWrapper(PROCESS_DPI_AWARENESS value) {
-  decltype(&::SetProcessDpiAwareness) set_process_dpi_awareness_func =
-      reinterpret_cast<decltype(&::SetProcessDpiAwareness)>(GetProcAddress(
-          GetModuleHandle(L"user32.dll"), "SetProcessDpiAwarenessInternal"));
-  if (set_process_dpi_awareness_func) {
-    HRESULT hr = set_process_dpi_awareness_func(value);
-    if (SUCCEEDED(hr))
-      return true;
-    DLOG_IF(ERROR, hr == E_ACCESSDENIED)
-        << "Access denied error from SetProcessDpiAwarenessInternal. Function "
-           "called twice, or manifest was used.";
-    NOTREACHED()
-        << "SetProcessDpiAwarenessInternal failed with unexpected error: "
-        << hr;
-    return false;
-  }
-
-  DCHECK_LT(GetVersion(), VERSION_WIN8_1) << "SetProcessDpiAwarenessInternal "
-                                             "should be available on all "
-                                             "platforms >= Windows 8.1";
-  return false;
-}
-
-}  // namespace
-
-static bool g_crash_on_process_detach = false;
-
-void GetNonClientMetrics(NONCLIENTMETRICS_XP* metrics) {
-  DCHECK(metrics);
-  metrics->cbSize = sizeof(*metrics);
-  const bool success =
-      !!SystemParametersInfo(SPI_GETNONCLIENTMETRICS, metrics->cbSize,
-                             reinterpret_cast<NONCLIENTMETRICS*>(metrics), 0);
-  DCHECK(success);
-}
-
-bool GetUserSidString(std::wstring* user_sid) {
-  // Get the current token.
-  HANDLE token = NULL;
-  if (!::OpenProcessToken(::GetCurrentProcess(), TOKEN_QUERY, &token))
-    return false;
-  ScopedHandle token_scoped(token);
-
-  DWORD size = sizeof(TOKEN_USER) + SECURITY_MAX_SID_SIZE;
-  std::unique_ptr<BYTE[]> user_bytes(new BYTE[size]);
-  TOKEN_USER* user = reinterpret_cast<TOKEN_USER*>(user_bytes.get());
-
-  if (!::GetTokenInformation(token, TokenUser, user, size, &size))
-    return false;
-
-  if (!user->User.Sid)
-    return false;
-
-  // Convert the data to a string.
-  wchar_t* sid_string;
-  if (!::ConvertSidToStringSid(user->User.Sid, &sid_string))
-    return false;
-
-  *user_sid = sid_string;
-
-  ::LocalFree(sid_string);
-
-  return true;
-}
-
-bool UserAccountControlIsEnabled() {
-  RegKey key(HKEY_LOCAL_MACHINE,
-             L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System",
-             KEY_READ);
-  DWORD uac_enabled;
-  if (key.ReadValueDW(L"EnableLUA", &uac_enabled) != ERROR_SUCCESS)
-    return true;
-  // Users can set the EnableLUA value to something arbitrary, like 2, which
-  // Vista will treat as UAC enabled, so we make sure it is not set to 0.
-  return (uac_enabled != 0);
-}
-
-bool SetBooleanValueForPropertyStore(IPropertyStore* property_store,
-                                     const PROPERTYKEY& property_key,
-                                     bool property_bool_value) {
-  ScopedPropVariant property_value;
-  if (FAILED(InitPropVariantFromBoolean(property_bool_value,
-                                        property_value.Receive()))) {
-    return false;
-  }
-
-  return SetPropVariantValueForPropertyStore(property_store, property_key,
-                                             property_value);
-}
-
-bool SetStringValueForPropertyStore(IPropertyStore* property_store,
-                                    const PROPERTYKEY& property_key,
-                                    const wchar_t* property_string_value) {
-  ScopedPropVariant property_value;
-  if (FAILED(InitPropVariantFromString(property_string_value,
-                                       property_value.Receive()))) {
-    return false;
-  }
-
-  return SetPropVariantValueForPropertyStore(property_store, property_key,
-                                             property_value);
-}
-
-bool SetClsidForPropertyStore(IPropertyStore* property_store,
-                              const PROPERTYKEY& property_key,
-                              const CLSID& property_clsid_value) {
-  ScopedPropVariant property_value;
-  if (FAILED(InitPropVariantFromCLSID(property_clsid_value,
-                                      property_value.Receive()))) {
-    return false;
-  }
-
-  return SetPropVariantValueForPropertyStore(property_store, property_key,
-                                             property_value);
-}
-
-bool SetAppIdForPropertyStore(IPropertyStore* property_store,
-                              const wchar_t* app_id) {
-  // App id should be less than 64 chars and contain no space. And recommended
-  // format is CompanyName.ProductName[.SubProduct.ProductNumber].
-  // See http://msdn.microsoft.com/en-us/library/dd378459%28VS.85%29.aspx
-  DCHECK(lstrlen(app_id) < 64 && wcschr(app_id, L' ') == NULL);
-
-  return SetStringValueForPropertyStore(property_store, PKEY_AppUserModel_ID,
-                                        app_id);
-}
-
-static const char16 kAutoRunKeyPath[] =
-    L"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
-
-bool AddCommandToAutoRun(HKEY root_key,
-                         const string16& name,
-                         const string16& command) {
-  RegKey autorun_key(root_key, kAutoRunKeyPath, KEY_SET_VALUE);
-  return (autorun_key.WriteValue(name.c_str(), command.c_str()) ==
-          ERROR_SUCCESS);
-}
-
-bool RemoveCommandFromAutoRun(HKEY root_key, const string16& name) {
-  RegKey autorun_key(root_key, kAutoRunKeyPath, KEY_SET_VALUE);
-  return (autorun_key.DeleteValue(name.c_str()) == ERROR_SUCCESS);
-}
-
-bool ReadCommandFromAutoRun(HKEY root_key,
-                            const string16& name,
-                            string16* command) {
-  RegKey autorun_key(root_key, kAutoRunKeyPath, KEY_QUERY_VALUE);
-  return (autorun_key.ReadValue(name.c_str(), command) == ERROR_SUCCESS);
-}
-
-void SetShouldCrashOnProcessDetach(bool crash) {
-  g_crash_on_process_detach = crash;
-}
-
-bool ShouldCrashOnProcessDetach() {
-  return g_crash_on_process_detach;
-}
-
-void SetAbortBehaviorForCrashReporting() {
-  // Prevent CRT's abort code from prompting a dialog or trying to "report" it.
-  // Disabling the _CALL_REPORTFAULT behavior is important since otherwise it
-  // has the sideffect of clearing our exception filter, which means we
-  // don't get any crash.
-  _set_abort_behavior(0, _WRITE_ABORT_MSG | _CALL_REPORTFAULT);
-
-  // Set a SIGABRT handler for good measure. We will crash even if the default
-  // is left in place, however this allows us to crash earlier. And it also
-  // lets us crash in response to code which might directly call raise(SIGABRT)
-  signal(SIGABRT, ForceCrashOnSigAbort);
-}
-
-bool IsUser32AndGdi32Available() {
-  static auto is_user32_and_gdi32_available = []() {
-    // If win32k syscalls aren't disabled, then user32 and gdi32 are available.
-
-    // Can't disable win32k prior to windows 8.
-    if (GetVersion() < VERSION_WIN8)
-      return true;
-
-    typedef decltype(
-        GetProcessMitigationPolicy)* GetProcessMitigationPolicyType;
-    GetProcessMitigationPolicyType get_process_mitigation_policy_func =
-        reinterpret_cast<GetProcessMitigationPolicyType>(GetProcAddress(
-            GetModuleHandle(L"kernel32.dll"), "GetProcessMitigationPolicy"));
-
-    if (!get_process_mitigation_policy_func)
-      return true;
-
-    PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY policy = {};
-    if (get_process_mitigation_policy_func(GetCurrentProcess(),
-                                           ProcessSystemCallDisablePolicy,
-                                           &policy, sizeof(policy))) {
-      return policy.DisallowWin32kSystemCalls == 0;
-    }
-
-    return true;
-  }();
-  return is_user32_and_gdi32_available;
-}
-
-bool GetLoadedModulesSnapshot(HANDLE process, std::vector<HMODULE>* snapshot) {
-  DCHECK(snapshot);
-  DCHECK_EQ(0u, snapshot->size());
-  snapshot->resize(128);
-
-  // We will retry at least once after first determining |bytes_required|. If
-  // the list of modules changes after we receive |bytes_required| we may retry
-  // more than once.
-  int retries_remaining = 5;
-  do {
-    DWORD bytes_required = 0;
-    // EnumProcessModules returns 'success' even if the buffer size is too
-    // small.
-    DCHECK_GE(std::numeric_limits<DWORD>::max(),
-              snapshot->size() * sizeof(HMODULE));
-    if (!::EnumProcessModules(
-            process, &(*snapshot)[0],
-            static_cast<DWORD>(snapshot->size() * sizeof(HMODULE)),
-            &bytes_required)) {
-      DPLOG(ERROR) << "::EnumProcessModules failed.";
-      return false;
-    }
-    DCHECK_EQ(0u, bytes_required % sizeof(HMODULE));
-    size_t num_modules = bytes_required / sizeof(HMODULE);
-    if (num_modules <= snapshot->size()) {
-      // Buffer size was too big, presumably because a module was unloaded.
-      snapshot->erase(snapshot->begin() + num_modules, snapshot->end());
-      return true;
-    } else if (num_modules == 0) {
-      DLOG(ERROR) << "Can't determine the module list size.";
-      return false;
-    } else {
-      // Buffer size was too small. Try again with a larger buffer. A little
-      // more room is given to avoid multiple expensive calls to
-      // ::EnumProcessModules() just because one module has been added.
-      snapshot->resize(num_modules + 8, NULL);
-    }
-  } while (--retries_remaining);
-
-  DLOG(ERROR) << "Failed to enumerate modules.";
-  return false;
-}
-
-void EnableFlicks(HWND hwnd) {
-  ::RemoveProp(hwnd, MICROSOFT_TABLETPENSERVICE_PROPERTY);
-}
-
-void DisableFlicks(HWND hwnd) {
-  ::SetProp(hwnd, MICROSOFT_TABLETPENSERVICE_PROPERTY,
-            reinterpret_cast<HANDLE>(TABLET_DISABLE_FLICKS |
-                                     TABLET_DISABLE_FLICKFALLBACKKEYS));
-}
-
-bool IsProcessPerMonitorDpiAware() {
-  enum class PerMonitorDpiAware {
-    UNKNOWN = 0,
-    PER_MONITOR_DPI_UNAWARE,
-    PER_MONITOR_DPI_AWARE,
-  };
-  static PerMonitorDpiAware per_monitor_dpi_aware = PerMonitorDpiAware::UNKNOWN;
-  if (per_monitor_dpi_aware == PerMonitorDpiAware::UNKNOWN) {
-    per_monitor_dpi_aware = PerMonitorDpiAware::PER_MONITOR_DPI_UNAWARE;
-    HMODULE shcore_dll = ::LoadLibrary(L"shcore.dll");
-    if (shcore_dll) {
-      auto get_process_dpi_awareness_func =
-          reinterpret_cast<decltype(::GetProcessDpiAwareness)*>(
-              ::GetProcAddress(shcore_dll, "GetProcessDpiAwareness"));
-      if (get_process_dpi_awareness_func) {
-        PROCESS_DPI_AWARENESS awareness;
-        if (SUCCEEDED(get_process_dpi_awareness_func(nullptr, &awareness)) &&
-            awareness == PROCESS_PER_MONITOR_DPI_AWARE)
-          per_monitor_dpi_aware = PerMonitorDpiAware::PER_MONITOR_DPI_AWARE;
-      }
-    }
-  }
-  return per_monitor_dpi_aware == PerMonitorDpiAware::PER_MONITOR_DPI_AWARE;
-}
-
-void EnableHighDPISupport() {
-  // Enable per-monitor DPI for Win10 or above instead of Win8.1 since Win8.1
-  // does not have EnableChildWindowDpiMessage, necessary for correct non-client
-  // area scaling across monitors.
-  PROCESS_DPI_AWARENESS process_dpi_awareness =
-      GetVersion() >= VERSION_WIN10 ? PROCESS_PER_MONITOR_DPI_AWARE
-                                    : PROCESS_SYSTEM_DPI_AWARE;
-  if (!SetProcessDpiAwarenessWrapper(process_dpi_awareness)) {
-    // For windows versions where SetProcessDpiAwareness is not available or
-    // failed, try its predecessor.
-    BOOL result = ::SetProcessDPIAware();
-    DCHECK(result) << "SetProcessDPIAware failed.";
-  }
-}
-
-}  // namespace win
-}  // namespace base
diff --git a/base/win/win_util.h b/base/win/win_util.h
deleted file mode 100644
index 08738cb..0000000
--- a/base/win/win_util.h
+++ /dev/null
@@ -1,151 +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.
-
-// =============================================================================
-// PLEASE READ
-//
-// In general, you should not be adding stuff to this file.
-//
-// - If your thing is only used in one place, just put it in a reasonable
-//   location in or near that one place. It's nice you want people to be able
-//   to re-use your function, but realistically, if it hasn't been necessary
-//   before after so many years of development, it's probably not going to be
-//   used in other places in the future unless you know of them now.
-//
-// - If your thing is used by multiple callers and is UI-related, it should
-//   probably be in app/win/ instead. Try to put it in the most specific file
-//   possible (avoiding the *_util files when practical).
-//
-// =============================================================================
-
-#ifndef BASE_WIN_WIN_UTIL_H_
-#define BASE_WIN_WIN_UTIL_H_
-
-#include <stdint.h>
-#include "base/win/windows_types.h"
-
-#include <string>
-#include <vector>
-
-#include "base/strings/string16.h"
-
-struct IPropertyStore;
-struct _tagpropertykey;
-typedef _tagpropertykey PROPERTYKEY;
-
-namespace base {
-namespace win {
-
-inline uint32_t HandleToUint32(HANDLE h) {
-  // Cast through uintptr_t and then unsigned int to make the truncation to
-  // 32 bits explicit. Handles are size of-pointer but are always 32-bit values.
-  // https://msdn.microsoft.com/en-us/library/aa384203(VS.85).aspx says:
-  // 64-bit versions of Windows use 32-bit handles for interoperability.
-  return static_cast<uint32_t>(reinterpret_cast<uintptr_t>(h));
-}
-
-inline HANDLE Uint32ToHandle(uint32_t h) {
-  return reinterpret_cast<HANDLE>(
-      static_cast<uintptr_t>(static_cast<int32_t>(h)));
-}
-
-// Returns the string representing the current user sid.
-bool GetUserSidString(std::wstring* user_sid);
-
-// Returns false if user account control (UAC) has been disabled with the
-// EnableLUA registry flag. Returns true if user account control is enabled.
-// NOTE: The EnableLUA registry flag, which is ignored on Windows XP
-// machines, might still exist and be set to 0 (UAC disabled), in which case
-// this function will return false. You should therefore check this flag only
-// if the OS is Vista or later.
-bool UserAccountControlIsEnabled();
-
-// Sets the boolean value for a given key in given IPropertyStore.
-bool SetBooleanValueForPropertyStore(IPropertyStore* property_store,
-                                     const PROPERTYKEY& property_key,
-                                     bool property_bool_value);
-
-// Sets the string value for a given key in given IPropertyStore.
-bool SetStringValueForPropertyStore(IPropertyStore* property_store,
-                                    const PROPERTYKEY& property_key,
-                                    const wchar_t* property_string_value);
-
-// Sets the CLSID value for a given key in a given IPropertyStore.
-bool SetClsidForPropertyStore(IPropertyStore* property_store,
-                              const PROPERTYKEY& property_key,
-                              const CLSID& property_clsid_value);
-
-// Sets the application id in given IPropertyStore. The function is intended
-// for tagging application/chromium shortcut, browser window and jump list for
-// Win7.
-bool SetAppIdForPropertyStore(IPropertyStore* property_store,
-                              const wchar_t* app_id);
-
-// Adds the specified |command| using the specified |name| to the AutoRun key.
-// |root_key| could be HKCU or HKLM or the root of any user hive.
-bool AddCommandToAutoRun(HKEY root_key,
-                         const string16& name,
-                         const string16& command);
-// Removes the command specified by |name| from the AutoRun key. |root_key|
-// could be HKCU or HKLM or the root of any user hive.
-bool RemoveCommandFromAutoRun(HKEY root_key, const string16& name);
-
-// Reads the command specified by |name| from the AutoRun key. |root_key|
-// could be HKCU or HKLM or the root of any user hive. Used for unit-tests.
-bool ReadCommandFromAutoRun(HKEY root_key,
-                            const string16& name,
-                            string16* command);
-
-// Sets whether to crash the process during exit. This is inspected by DLLMain
-// and used to intercept unexpected terminations of the process (via calls to
-// exit(), abort(), _exit(), ExitProcess()) and convert them into crashes.
-// Note that not all mechanisms for terminating the process are covered by
-// this. In particular, TerminateProcess() is not caught.
-void SetShouldCrashOnProcessDetach(bool crash);
-bool ShouldCrashOnProcessDetach();
-
-// Adjusts the abort behavior so that crash reports can be generated when the
-// process is aborted.
-void SetAbortBehaviorForCrashReporting();
-
-// Get the size of a struct up to and including the specified member.
-// This is necessary to set compatible struct sizes for different versions
-// of certain Windows APIs (e.g. SystemParametersInfo).
-#define SIZEOF_STRUCT_WITH_SPECIFIED_LAST_MEMBER(struct_name, member) \
-  offsetof(struct_name, member) +                                     \
-      (sizeof static_cast<struct_name*>(NULL)->member)
-
-// Used by tests to mock any wanted state. Call with |state| set to true to
-// simulate being in a domain and false otherwise.
-void SetDomainStateForTesting(bool state);
-
-// Returns true if the current process can make USER32 or GDI32 calls such as
-// CreateWindow and CreateDC. Windows 8 and above allow the kernel component
-// of these calls to be disabled which can cause undefined behaviour such as
-// crashes. This function can be used to guard areas of code using these calls
-// and provide a fallback path if necessary.
-bool IsUser32AndGdi32Available();
-
-// Takes a snapshot of the modules loaded in the |process|. The returned
-// HMODULEs are not add-ref'd, so they should not be closed and may be
-// invalidated at any time (should a module be unloaded). |process| requires
-// the PROCESS_QUERY_INFORMATION and PROCESS_VM_READ permissions.
-bool GetLoadedModulesSnapshot(HANDLE process, std::vector<HMODULE>* snapshot);
-
-// Adds or removes the MICROSOFT_TABLETPENSERVICE_PROPERTY property with the
-// TABLET_DISABLE_FLICKS & TABLET_DISABLE_FLICKFALLBACKKEYS flags in order to
-// disable pen flick gestures for the given HWND.
-void EnableFlicks(HWND hwnd);
-void DisableFlicks(HWND hwnd);
-
-// Returns true if the process is per monitor DPI aware.
-bool IsProcessPerMonitorDpiAware();
-
-// Enable high-DPI support for the current process.
-void EnableHighDPISupport();
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_WIN_UTIL_H_
diff --git a/base/win/windows_version.cc b/base/win/windows_version.cc
deleted file mode 100644
index dd45286..0000000
--- a/base/win/windows_version.cc
+++ /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.
-
-#include "base/win/windows_version.h"
-
-#include <windows.h>
-
-#include <memory>
-
-#include "base/files/file_path.h"
-#include "base/logging.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/win/registry.h"
-
-#if !defined(__clang__) && _MSC_FULL_VER < 191125507
-#error VS 2017 Update 3.2 or higher is required
-#endif
-
-#if !defined(NTDDI_WIN10_RS2)
-// Windows 10 April 2018 SDK is required to build Chrome.
-#error April 2018 SDK (10.0.17134.0) or higher required.
-#endif
-
-namespace {
-typedef BOOL(WINAPI* GetProductInfoPtr)(DWORD, DWORD, DWORD, DWORD, PDWORD);
-}  // namespace
-
-namespace base {
-namespace win {
-
-namespace {
-
-// Helper to map a major.minor.x.build version (e.g. 6.1) to a Windows release.
-Version MajorMinorBuildToVersion(int major, int minor, int build) {
-  if ((major == 5) && (minor > 0)) {
-    // Treat XP Pro x64, Home Server, and Server 2003 R2 as Server 2003.
-    return (minor == 1) ? VERSION_XP : VERSION_SERVER_2003;
-  } else if (major == 6) {
-    switch (minor) {
-      case 0:
-        // Treat Windows Server 2008 the same as Windows Vista.
-        return VERSION_VISTA;
-      case 1:
-        // Treat Windows Server 2008 R2 the same as Windows 7.
-        return VERSION_WIN7;
-      case 2:
-        // Treat Windows Server 2012 the same as Windows 8.
-        return VERSION_WIN8;
-      default:
-        DCHECK_EQ(minor, 3);
-        return VERSION_WIN8_1;
-    }
-  } else if (major == 10) {
-    if (build < 10586) {
-      return VERSION_WIN10;
-    } else if (build < 14393) {
-      return VERSION_WIN10_TH2;
-    } else if (build < 15063) {
-      return VERSION_WIN10_RS1;
-    } else if (build < 16299) {
-      return VERSION_WIN10_RS2;
-    } else if (build < 17134) {
-      return VERSION_WIN10_RS3;
-    } else {
-      return VERSION_WIN10_RS4;
-    }
-  } else if (major > 6) {
-    NOTREACHED();
-    return VERSION_WIN_LAST;
-  }
-
-  return VERSION_PRE_XP;
-}
-
-// Returns the the "UBR" value from the registry. Introduced in Windows 10,
-// this undocumented value appears to be similar to a patch number.
-// Returns 0 if the value does not exist or it could not be read.
-int GetUBR() {
-  // The values under the CurrentVersion registry hive are mirrored under
-  // the corresponding Wow6432 hive.
-  static constexpr wchar_t kRegKeyWindowsNTCurrentVersion[] =
-      L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
-
-  base::win::RegKey key;
-  if (key.Open(HKEY_LOCAL_MACHINE, kRegKeyWindowsNTCurrentVersion,
-               KEY_QUERY_VALUE) != ERROR_SUCCESS) {
-    return 0;
-  }
-
-  DWORD ubr = 0;
-  key.ReadValueDW(L"UBR", &ubr);
-
-  return static_cast<int>(ubr);
-}
-
-}  // namespace
-
-// static
-OSInfo* OSInfo::GetInstance() {
-  // Note: we don't use the Singleton class because it depends on AtExitManager,
-  // and it's convenient for other modules to use this classs without it. This
-  // pattern is copied from gurl.cc.
-  static OSInfo* info;
-  if (!info) {
-    OSInfo* new_info = new OSInfo();
-    if (InterlockedCompareExchangePointer(reinterpret_cast<PVOID*>(&info),
-                                          new_info, NULL)) {
-      delete new_info;
-    }
-  }
-  return info;
-}
-
-OSInfo::OSInfo()
-    : version_(VERSION_PRE_XP),
-      kernel32_version_(VERSION_PRE_XP),
-      architecture_(OTHER_ARCHITECTURE),
-      wow64_status_(GetWOW64StatusForProcess(GetCurrentProcess())) {
-  OSVERSIONINFOEX version_info = {sizeof version_info};
-  ::GetVersionEx(reinterpret_cast<OSVERSIONINFO*>(&version_info));
-  version_number_.major = version_info.dwMajorVersion;
-  version_number_.minor = version_info.dwMinorVersion;
-  version_number_.build = version_info.dwBuildNumber;
-  version_number_.patch = GetUBR();
-  version_ = MajorMinorBuildToVersion(
-      version_number_.major, version_number_.minor, version_number_.build);
-  service_pack_.major = version_info.wServicePackMajor;
-  service_pack_.minor = version_info.wServicePackMinor;
-  service_pack_str_ = base::WideToUTF8(version_info.szCSDVersion);
-
-  SYSTEM_INFO system_info = {};
-  ::GetNativeSystemInfo(&system_info);
-  switch (system_info.wProcessorArchitecture) {
-    case PROCESSOR_ARCHITECTURE_INTEL:
-      architecture_ = X86_ARCHITECTURE;
-      break;
-    case PROCESSOR_ARCHITECTURE_AMD64:
-      architecture_ = X64_ARCHITECTURE;
-      break;
-    case PROCESSOR_ARCHITECTURE_IA64:
-      architecture_ = IA64_ARCHITECTURE;
-      break;
-  }
-  processors_ = system_info.dwNumberOfProcessors;
-  allocation_granularity_ = system_info.dwAllocationGranularity;
-
-  GetProductInfoPtr get_product_info;
-  DWORD os_type;
-
-  if (version_info.dwMajorVersion == 6 || version_info.dwMajorVersion == 10) {
-    // Only present on Vista+.
-    get_product_info = reinterpret_cast<GetProductInfoPtr>(
-        ::GetProcAddress(::GetModuleHandle(L"kernel32.dll"), "GetProductInfo"));
-
-    get_product_info(version_info.dwMajorVersion, version_info.dwMinorVersion,
-                     0, 0, &os_type);
-    switch (os_type) {
-      case PRODUCT_CLUSTER_SERVER:
-      case PRODUCT_DATACENTER_SERVER:
-      case PRODUCT_DATACENTER_SERVER_CORE:
-      case PRODUCT_ENTERPRISE_SERVER:
-      case PRODUCT_ENTERPRISE_SERVER_CORE:
-      case PRODUCT_ENTERPRISE_SERVER_IA64:
-      case PRODUCT_SMALLBUSINESS_SERVER:
-      case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:
-      case PRODUCT_STANDARD_SERVER:
-      case PRODUCT_STANDARD_SERVER_CORE:
-      case PRODUCT_WEB_SERVER:
-        version_type_ = SUITE_SERVER;
-        break;
-      case PRODUCT_PROFESSIONAL:
-      case PRODUCT_ULTIMATE:
-        version_type_ = SUITE_PROFESSIONAL;
-        break;
-      case PRODUCT_ENTERPRISE:
-      case PRODUCT_ENTERPRISE_E:
-      case PRODUCT_ENTERPRISE_EVALUATION:
-      case PRODUCT_ENTERPRISE_N:
-      case PRODUCT_ENTERPRISE_N_EVALUATION:
-      case PRODUCT_ENTERPRISE_S:
-      case PRODUCT_ENTERPRISE_S_EVALUATION:
-      case PRODUCT_ENTERPRISE_S_N:
-      case PRODUCT_ENTERPRISE_S_N_EVALUATION:
-      case PRODUCT_BUSINESS:
-      case PRODUCT_BUSINESS_N:
-        version_type_ = SUITE_ENTERPRISE;
-        break;
-      case PRODUCT_EDUCATION:
-      case PRODUCT_EDUCATION_N:
-        version_type_ = SUITE_EDUCATION;
-        break;
-      case PRODUCT_HOME_BASIC:
-      case PRODUCT_HOME_PREMIUM:
-      case PRODUCT_STARTER:
-      default:
-        version_type_ = SUITE_HOME;
-        break;
-    }
-  } else if (version_info.dwMajorVersion == 5 &&
-             version_info.dwMinorVersion == 2) {
-    if (version_info.wProductType == VER_NT_WORKSTATION &&
-        system_info.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) {
-      version_type_ = SUITE_PROFESSIONAL;
-    } else if (version_info.wSuiteMask & VER_SUITE_WH_SERVER) {
-      version_type_ = SUITE_HOME;
-    } else {
-      version_type_ = SUITE_SERVER;
-    }
-  } else if (version_info.dwMajorVersion == 5 &&
-             version_info.dwMinorVersion == 1) {
-    if (version_info.wSuiteMask & VER_SUITE_PERSONAL)
-      version_type_ = SUITE_HOME;
-    else
-      version_type_ = SUITE_PROFESSIONAL;
-  } else {
-    // Windows is pre XP so we don't care but pick a safe default.
-    version_type_ = SUITE_HOME;
-  }
-}
-
-OSInfo::~OSInfo() {}
-
-std::string OSInfo::processor_model_name() {
-  if (processor_model_name_.empty()) {
-    const wchar_t kProcessorNameString[] =
-        L"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";
-    base::win::RegKey key(HKEY_LOCAL_MACHINE, kProcessorNameString, KEY_READ);
-    string16 value;
-    key.ReadValue(L"ProcessorNameString", &value);
-    processor_model_name_ = UTF16ToUTF8(value);
-  }
-  return processor_model_name_;
-}
-
-// static
-OSInfo::WOW64Status OSInfo::GetWOW64StatusForProcess(HANDLE process_handle) {
-  typedef BOOL(WINAPI * IsWow64ProcessFunc)(HANDLE, PBOOL);
-  IsWow64ProcessFunc is_wow64_process = reinterpret_cast<IsWow64ProcessFunc>(
-      GetProcAddress(GetModuleHandle(L"kernel32.dll"), "IsWow64Process"));
-  if (!is_wow64_process)
-    return WOW64_DISABLED;
-  BOOL is_wow64 = FALSE;
-  if (!(*is_wow64_process)(process_handle, &is_wow64))
-    return WOW64_UNKNOWN;
-  return is_wow64 ? WOW64_ENABLED : WOW64_DISABLED;
-}
-
-Version GetVersion() {
-  return OSInfo::GetInstance()->version();
-}
-
-}  // namespace win
-}  // namespace base
diff --git a/base/win/windows_version.h b/base/win/windows_version.h
deleted file mode 100644
index cd1df78..0000000
--- a/base/win/windows_version.h
+++ /dev/null
@@ -1,146 +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_WIN_WINDOWS_VERSION_H_
-#define BASE_WIN_WINDOWS_VERSION_H_
-
-#include <stddef.h>
-
-#include <string>
-
-#include "base/macros.h"
-
-typedef void* HANDLE;
-
-namespace base {
-namespace win {
-
-// The running version of Windows.  This is declared outside OSInfo for
-// syntactic sugar reasons; see the declaration of GetVersion() below.
-// NOTE: Keep these in order so callers can do things like
-// "if (base::win::GetVersion() >= base::win::VERSION_VISTA) ...".
-//
-// This enum is used in metrics histograms, so they shouldn't be reordered or
-// removed. New values can be added before VERSION_WIN_LAST.
-enum Version {
-  VERSION_PRE_XP = 0,  // Not supported.
-  VERSION_XP = 1,
-  VERSION_SERVER_2003 = 2,  // Also includes XP Pro x64 and Server 2003 R2.
-  VERSION_VISTA = 3,        // Also includes Windows Server 2008.
-  VERSION_WIN7 = 4,         // Also includes Windows Server 2008 R2.
-  VERSION_WIN8 = 5,         // Also includes Windows Server 2012.
-  VERSION_WIN8_1 = 6,       // Also includes Windows Server 2012 R2.
-  VERSION_WIN10 = 7,        // Threshold 1: Version 1507, Build 10240.
-  VERSION_WIN10_TH2 = 8,    // Threshold 2: Version 1511, Build 10586.
-  VERSION_WIN10_RS1 = 9,    // Redstone 1: Version 1607, Build 14393.
-  VERSION_WIN10_RS2 = 10,   // Redstone 2: Version 1703, Build 15063.
-  VERSION_WIN10_RS3 = 11,   // Redstone 3: Version 1709, Build 16299.
-  VERSION_WIN10_RS4 = 12,   // Redstone 4: Version 1803, Build 17134.
-  // On edit, update tools\metrics\histograms\enums.xml "WindowsVersion" and
-  // "GpuBlacklistFeatureTestResultsWindows2".
-  VERSION_WIN_LAST,  // Indicates error condition.
-};
-
-// A rough bucketing of the available types of versions of Windows. This is used
-// to distinguish enterprise enabled versions from home versions and potentially
-// server versions. Keep these values in the same order, since they are used as
-// is for metrics histogram ids.
-enum VersionType {
-  SUITE_HOME = 0,
-  SUITE_PROFESSIONAL,
-  SUITE_SERVER,
-  SUITE_ENTERPRISE,
-  SUITE_EDUCATION,
-  SUITE_LAST,
-};
-
-// A singleton that can be used to query various pieces of information about the
-// OS and process state. Note that this doesn't use the base Singleton class, so
-// it can be used without an AtExitManager.
-class OSInfo {
- public:
-  struct VersionNumber {
-    int major;
-    int minor;
-    int build;
-    int patch;
-  };
-
-  struct ServicePack {
-    int major;
-    int minor;
-  };
-
-  // The processor architecture this copy of Windows natively uses.  For
-  // example, given an x64-capable processor, we have three possibilities:
-  //   32-bit Chrome running on 32-bit Windows:           X86_ARCHITECTURE
-  //   32-bit Chrome running on 64-bit Windows via WOW64: X64_ARCHITECTURE
-  //   64-bit Chrome running on 64-bit Windows:           X64_ARCHITECTURE
-  enum WindowsArchitecture {
-    X86_ARCHITECTURE,
-    X64_ARCHITECTURE,
-    IA64_ARCHITECTURE,
-    OTHER_ARCHITECTURE,
-  };
-
-  // Whether a process is running under WOW64 (the wrapper that allows 32-bit
-  // processes to run on 64-bit versions of Windows).  This will return
-  // WOW64_DISABLED for both "32-bit Chrome on 32-bit Windows" and "64-bit
-  // Chrome on 64-bit Windows".  WOW64_UNKNOWN means "an error occurred", e.g.
-  // the process does not have sufficient access rights to determine this.
-  enum WOW64Status {
-    WOW64_DISABLED,
-    WOW64_ENABLED,
-    WOW64_UNKNOWN,
-  };
-
-  static OSInfo* GetInstance();
-
-  Version version() const { return version_; }
-  // The next two functions return arrays of values, [major, minor(, build)].
-  VersionNumber version_number() const { return version_number_; }
-  VersionType version_type() const { return version_type_; }
-  ServicePack service_pack() const { return service_pack_; }
-  std::string service_pack_str() const { return service_pack_str_; }
-  WindowsArchitecture architecture() const { return architecture_; }
-  int processors() const { return processors_; }
-  size_t allocation_granularity() const { return allocation_granularity_; }
-  WOW64Status wow64_status() const { return wow64_status_; }
-  std::string processor_model_name();
-
-  // Like wow64_status(), but for the supplied handle instead of the current
-  // process.  This doesn't touch member state, so you can bypass the singleton.
-  static WOW64Status GetWOW64StatusForProcess(HANDLE process_handle);
-
- private:
-  OSInfo();
-  ~OSInfo();
-
-  Version version_;
-  mutable Version kernel32_version_;
-  VersionNumber version_number_;
-  VersionType version_type_;
-  ServicePack service_pack_;
-
-  // A string, such as "Service Pack 3", that indicates the latest Service Pack
-  // installed on the system. If no Service Pack has been installed, the string
-  // is empty.
-  std::string service_pack_str_;
-  WindowsArchitecture architecture_;
-  int processors_;
-  size_t allocation_granularity_;
-  WOW64Status wow64_status_;
-  std::string processor_model_name_;
-
-  DISALLOW_COPY_AND_ASSIGN(OSInfo);
-};
-
-// Because this is by far the most commonly-requested value from the above
-// singleton, we add a global-scope accessor here as syntactic sugar.
-Version GetVersion();
-
-}  // namespace win
-}  // namespace base
-
-#endif  // BASE_WIN_WINDOWS_VERSION_H_
diff --git a/build/gen.py b/build/gen.py
index ff6084e..4bf84d9 100755
--- a/build/gen.py
+++ b/build/gen.py
@@ -525,20 +525,10 @@
         'base/synchronization/waitable_event_win.cc',
         'base/threading/platform_thread_win.cc',
         'base/time/time_win.cc',
-        'base/win/core_winrt_util.cc',
-        'base/win/enum_variant.cc',
-        'base/win/iat_patch_function.cc',
-        'base/win/iunknown_impl.cc',
-        'base/win/pe_image.cc',
-        'base/win/process_startup_helper.cc',
         'base/win/registry.cc',
-        'base/win/resource_util.cc',
         'base/win/scoped_handle.cc',
         'base/win/scoped_process_information.cc',
-        'base/win/shortcut.cc',
         'base/win/startup_information.cc',
-        'base/win/win_util.cc',
-        'base/win/windows_version.cc',
     ])
 
     libs.extend([