diff --git a/chrome/app/chrome_exe_main_win.cc b/chrome/app/chrome_exe_main_win.cc index 319f03ffaa9bb..19921d07f82fb 100644 --- a/chrome/app/chrome_exe_main_win.cc +++ b/chrome/app/chrome_exe_main_win.cc @@ -380,10 +380,6 @@ int main() { // The exit manager is in charge of calling the dtors of singletons. base::AtExitManager exit_manager; - // Only enable High DPI support for browser and GPU process. - if (process_type.empty() || process_type == switches::kGpuProcess) - base::win::EnableHighDPISupport(); - if (AttemptFastNotify(*command_line)) return 0; diff --git a/content/browser/browser_main_runner_impl.cc b/content/browser/browser_main_runner_impl.cc index 6a2302dd99dbe..ca75beb5df7ea 100644 --- a/content/browser/browser_main_runner_impl.cc +++ b/content/browser/browser_main_runner_impl.cc @@ -36,6 +36,7 @@ #endif #if BUILDFLAG(IS_WIN) +#include "base/win/win_util.h" #include "base/win/windows_version.h" #include "ui/base/win/scoped_ole_initializer.h" #endif @@ -91,6 +92,7 @@ int BrowserMainRunnerImpl::Initialize(MainFunctionParams parameters) { notification_service_ = std::make_unique<NotificationServiceImpl>(); #if BUILDFLAG(IS_WIN) + base::win::EnableHighDPISupport(); // Ole must be initialized before starting message pump, so that TSF // (Text Services Framework) module can interact with the message pump // on Windows 8 Metro mode. diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc index 160763ceb3318..5c3bcea340870 100644 --- a/content/gpu/gpu_main.cc +++ b/content/gpu/gpu_main.cc @@ -80,6 +80,7 @@ #if BUILDFLAG(IS_WIN) #include "base/trace_event/trace_event_etw_export_win.h" #include "base/win/scoped_com_initializer.h" +#include "base/win/win_util.h" #include "base/win/windows_version.h" #include "media/gpu/windows/dxva_video_decode_accelerator_win.h" #include "media/gpu/windows/media_foundation_video_encode_accelerator_win.h" @@ -218,6 +219,7 @@ int GpuMain(MainFunctionParams parameters) { base::TimeTicks start_time = base::TimeTicks::Now(); #if BUILDFLAG(IS_WIN) + base::win::EnableHighDPISupport(); base::trace_event::TraceEventETWExport::EnableETWExport(); // Prevent Windows from displaying a modal dialog on failures like not being diff --git a/content/utility/utility_main.cc b/content/utility/utility_main.cc index 1520e8feba29e..c15f7b9bbcbdf 100644 --- a/content/utility/utility_main.cc +++ b/content/utility/utility_main.cc @@ -70,6 +70,7 @@ #if BUILDFLAG(IS_WIN) #include "base/rand_util.h" +#include "base/win/win_util.h" #include "base/win/windows_version.h" #include "sandbox/win/src/sandbox.h" @@ -246,6 +247,21 @@ int UtilityMain(MainFunctionParams parameters) { UNREFERENCED_PARAMETER(shell32_pin); } + // Not all utility processes require DPI awareness as this context only + // pertains to certain workloads & impacted system API calls (e.g. UX + // scaling or per-monitor windowing). We do not blanket apply DPI awareness + // as utility processes running within a kService sandbox with the Win32K + // Lockdown policy applied may crash when calling EnableHighDPISupport. See + // crbug.com/978133. + if (sandbox_type == sandbox::mojom::Sandbox::kMediaFoundationCdm) { + // The Media Foundation Utility Process needs to be marked as DPI aware so + // the Media Engine & CDM can correctly identify the target monitor for + // video output. This is required to ensure that the proper monitor is + // queried for hardware capabilities & any settings are applied to the + // correct monitor. + base::win::EnableHighDPISupport(); + } + if (!sandbox::policy::IsUnsandboxedSandboxType(sandbox_type) && sandbox_type != sandbox::mojom::Sandbox::kCdm && sandbox_type != sandbox::mojom::Sandbox::kMediaFoundationCdm && diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png index 45cedaf6d809e..ec3327479b123 100644 Binary files a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png and b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png differ diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index cd45df5ff7221..dcaf63f38f5e0 100644 Binary files a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png and b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png differ diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png index 7d325df9aab9b..8514171ea4cb6 100644 Binary files a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png and b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png differ diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index dd9fc52566568..7a792e8a34ba6 100644 Binary files a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png and b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png differ