Fix Windows build

Change-Id: I2d8d61ff28f72e249b5c700f9353c5d33e405282
diff --git a/base/BUILD b/base/BUILD
index d31df3e..9de3117 100644
--- a/base/BUILD
+++ b/base/BUILD
@@ -13,7 +13,10 @@
         "strings/string_util_constants.cc",
         "strings/utf_string_conversion_utils.cc",
         "strings/utf_string_conversions.cc",
-    ],
+    ] + select({
+        "//build_config:windows_x86_64": ["strings/string_util_win.cc"],
+        "//conditions:default": [],
+    }),
     hdrs = [
         "compiler_specific.h",
         "containers/checked_iterators.h",
@@ -45,6 +48,9 @@
         "strings/utf_string_conversion_utils.h",
     ] + build_config.strings_hdrs,
     copts = build_config.default_copts,
+    textual_hdrs = [
+        "win/win_handle_types_list.inc",
+    ],
     visibility = ["//visibility:public"],
     deps = [
         "//base/third_party/icu",
diff --git a/base/memory/raw_ptr.h b/base/memory/raw_ptr.h
index 379c0d8..16094d3 100644
--- a/base/memory/raw_ptr.h
+++ b/base/memory/raw_ptr.h
@@ -31,7 +31,7 @@
 #endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
 
 #if BUILDFLAG(IS_WIN)
-#include "base/win/windows_types.h"
+#include <windows.h>
 #endif
 
 // Marks a field as excluded from the raw_ptr usage enforcement clang plugin.
diff --git a/base/strings/string_number_conversions.h b/base/strings/string_number_conversions.h
index 1ef1733..7d1b0b5 100644
--- a/base/strings/string_number_conversions.h
+++ b/base/strings/string_number_conversions.h
@@ -150,7 +150,7 @@
 }  // namespace base
 
 #if BUILDFLAG(IS_WIN)
-#include "base/strings/string_number_conversions_win.h"
+
 #endif
 
 #endif  // BASE_STRINGS_STRING_NUMBER_CONVERSIONS_H_
diff --git a/base/strings/string_number_conversions_win.cc b/base/strings/string_number_conversions_win.cc
index 381f99d..da67ca2 100644
--- a/base/strings/string_number_conversions_win.cc
+++ b/base/strings/string_number_conversions_win.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/strings/string_number_conversions_win.h"
+
 
 #include <string>
 
diff --git a/base/win/win_handle_types_list.inc b/base/win/win_handle_types_list.inc
new file mode 100644
index 0000000..b1dbef6
--- /dev/null
+++ b/base/win/win_handle_types_list.inc
@@ -0,0 +1,25 @@
+// Copyright 2021 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 intentionally does not have header guards, it's included
+// inside a macro to generate enum values. The following line silences a
+// presubmit and Tricium warning that would otherwise be triggered by this:
+// no-include-guard-because-multiply-included
+// NOLINT(build/header_guard)
+
+// This file contains the list of Windows handle types that can be recognized
+// via specific pointee types declared in //base/win/windows_types.h
+// (e.g. `HDC` points to a fake/forward-declared `HDC__` struct).
+
+CHROME_WINDOWS_HANDLE_TYPE(HDC)
+CHROME_WINDOWS_HANDLE_TYPE(HDESK)
+CHROME_WINDOWS_HANDLE_TYPE(HGLRC)
+CHROME_WINDOWS_HANDLE_TYPE(HICON)
+CHROME_WINDOWS_HANDLE_TYPE(HINSTANCE)
+CHROME_WINDOWS_HANDLE_TYPE(HKEY)
+CHROME_WINDOWS_HANDLE_TYPE(HKL)
+CHROME_WINDOWS_HANDLE_TYPE(HMENU)
+CHROME_WINDOWS_HANDLE_TYPE(HWINSTA)
+CHROME_WINDOWS_HANDLE_TYPE(HWND)
+CHROME_WINDOWS_HANDLE_TYPE(HMONITOR)
diff --git a/copy.bara.sky b/copy.bara.sky
index 0f78461..44173d6 100644
--- a/copy.bara.sky
+++ b/copy.bara.sky
@@ -33,6 +33,7 @@
         "base/strings/*.h",
         "base/template_util.h",
         "base/third_party/icu/**",
+        "base/win/win_handle_types_list.inc",
         "build/build_config.h",
         "build/buildflag.h",
         "url/*.cc",
@@ -71,7 +72,6 @@
     "base/debug/alias.h",
     "base/export_template.h",
     "base/logging.h",
-    "base/metrics/histogram_macros.h",
     "base/notreached.h",
     "base/trace_event/memory_usage_estimator.h",
     "third_party/perfetto/include/perfetto/tracing/traced_value.h",
@@ -101,6 +101,9 @@
     # Fix some Perfetto includes.
     core.replace("perfetto/tracing/traced_value_forward.h", "perfetto/tracing/traced_value.h"),
 
+    core.replace("#include \"base/win/windows_types.h\"", "#include <windows.h>"),
+    core.replace("#include \"base/strings/string_number_conversions_win.h\"", ""),
+
     # Use system ICU.
     core.replace(
         '"third_party/icu/source/common/unicode/${file}.h"',