Reduce includes of windows.h

Windows.h is included in a number of key header files which means that
a majority of the translation units when building Chrome include
Windows.h. This is slowing down builds.

This change creates a new header - base/win/windows_types.h - which
contains typedefs and defines of common Windows.h types - and uses this
in place of windows.h in enough places to reduce the number of
translation units that include windows.h in a build of the 'chrome'
target (debug component non-jumbo) by 5219, from 19041 to 13822, giving
measurable build-time speedups (~2.5-3.0%).

Follow-up changes will apply the same techniques to more headers and
drop the number much further.

Perversely enough, this change also adds includes of windows.h in many
places - places that always needed windows.h but were implicitly
depending on it being included elsewhere.

TBR=jochen@chromium.org,wfh@chromium.org,rockot@chromium.org,mef@chromium.org,raymes@chromium.org,joedow@chromium.org,rogerta@chromium.org,jsbell@chromium.org,dpranke@chromium.org,sky@chromium.org
TBRing mechanical changes, reviewers:
jochen@ : Please review changes to chrome/, components/, content/, third_party/WebKit/Source/platform
wfh@ : Please review changes to courgette/, sandbox/win
rockot@ : Please review changes to device/, ipc/, services/
mef@ : Please review changes to net/
raymes@ : Please review changes to ppapi/
joedow@ : Please review changes to remoting/
rogerta@ : Please review changes to rlz/
jsbell@: Please review changes to storage/
dpranke@ : Please review changes to tools/gn/
sky@ : Please review changes to ui/


Bug: 796644,798763
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I3958d0d7d813bed74d9b166e0358dbde5b5729af
Reviewed-on: https://chromium-review.googlesource.com/846422
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Reviewed-by: Misha Efimov <mef@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#526881}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: bfdc3fdc473922b0b99a0a0af37e8f8f97340173
1 file changed
tree: 8ffd6cd09aa35614446d71c45fd220a20c21c599
  1. testdata/
  2. third_party/
  3. adjustment_method.cc
  4. adjustment_method.h
  5. adjustment_method_2.cc
  6. adjustment_method_unittest.cc
  7. analyze_mem_test
  8. analyze_stress_test
  9. assembly_program.cc
  10. assembly_program.h
  11. base_test_unittest.cc
  12. base_test_unittest.h
  13. bsdiff_memory_unittest.cc
  14. BUILD.gn
  15. consecutive_range_visitor.h
  16. consecutive_range_visitor_unittest.cc
  17. courgette.h
  18. courgette_application.png
  19. courgette_flow.cc
  20. courgette_flow.h
  21. courgette_generation.png
  22. courgette_minimal_tool.cc
  23. courgette_tool.cc
  24. crc.cc
  25. crc.h
  26. DEPS
  27. description.html
  28. description.md
  29. difference_estimator.cc
  30. difference_estimator.h
  31. difference_estimator_unittest.cc
  32. disassembler.cc
  33. disassembler.h
  34. disassembler_elf_32.cc
  35. disassembler_elf_32.h
  36. disassembler_elf_32_arm.cc
  37. disassembler_elf_32_arm.h
  38. disassembler_elf_32_x86.cc
  39. disassembler_elf_32_x86.h
  40. disassembler_elf_32_x86_unittest.cc
  41. disassembler_win32.cc
  42. disassembler_win32.h
  43. disassembler_win32_x64.cc
  44. disassembler_win32_x64.h
  45. disassembler_win32_x64_unittest.cc
  46. disassembler_win32_x86.cc
  47. disassembler_win32_x86.h
  48. disassembler_win32_x86_unittest.cc
  49. encode_decode_unittest.cc
  50. encoded_program.cc
  51. encoded_program.h
  52. encoded_program_fuzz_unittest.cc
  53. encoded_program_unittest.cc
  54. ensemble.cc
  55. ensemble.h
  56. ensemble_apply.cc
  57. ensemble_create.cc
  58. ensemble_unittest.cc
  59. image_utils.h
  60. image_utils_unittest.cc
  61. instruction_utils.h
  62. label_manager.cc
  63. label_manager.h
  64. label_manager_unittest.cc
  65. memory_allocator.cc
  66. memory_allocator.h
  67. memory_allocator_unittest.cc
  68. memory_monitor.cc
  69. OWNERS
  70. patch_generator_x86_32.h
  71. patcher_x86_32.h
  72. program_detector.cc
  73. program_detector.h
  74. program_detector_unittest.cc
  75. region.h
  76. rel32_finder.cc
  77. rel32_finder.h
  78. rel32_finder_unittest.cc
  79. rel32_finder_x64.cc
  80. rel32_finder_x64.h
  81. rel32_finder_x86.cc
  82. rel32_finder_x86.h
  83. run_mem_test
  84. run_stress_test
  85. simple_delta.cc
  86. simple_delta.h
  87. streams.cc
  88. streams.h
  89. streams_unittest.cc
  90. stress_test_common
  91. typedrva_unittest.cc
  92. types_elf.h
  93. types_win_pe.h
  94. versioning_unittest.cc