[pigeon] Make Windows tests run on stable (#2928)

Regenerates platform_tests/test_plugin/example/windows using stable,
since it was created on `master`, where the template uses APIs that
aren't available on stable yet.
diff --git a/packages/pigeon/platform_tests/test_plugin/example/windows/runner/CMakeLists.txt b/packages/pigeon/platform_tests/test_plugin/example/windows/runner/CMakeLists.txt
index 394917c..17411a8 100644
--- a/packages/pigeon/platform_tests/test_plugin/example/windows/runner/CMakeLists.txt
+++ b/packages/pigeon/platform_tests/test_plugin/example/windows/runner/CMakeLists.txt
@@ -33,7 +33,6 @@
 # Add dependency libraries and include directories. Add any application-specific
 # dependencies here.
 target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app)
-target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib")
 target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}")
 
 # Run the Flutter tool portions of the build. This must not be removed.
diff --git a/packages/pigeon/platform_tests/test_plugin/example/windows/runner/flutter_window.cpp b/packages/pigeon/platform_tests/test_plugin/example/windows/runner/flutter_window.cpp
index 7be2fe2..8254bd9 100644
--- a/packages/pigeon/platform_tests/test_plugin/example/windows/runner/flutter_window.cpp
+++ b/packages/pigeon/platform_tests/test_plugin/example/windows/runner/flutter_window.cpp
@@ -30,9 +30,6 @@
   }
   RegisterPlugins(flutter_controller_->engine());
   SetChildContent(flutter_controller_->view()->GetNativeWindow());
-
-  flutter_controller_->engine()->SetNextFrameCallback([&]() { this->Show(); });
-
   return true;
 }
 
diff --git a/packages/pigeon/platform_tests/test_plugin/example/windows/runner/main.cpp b/packages/pigeon/platform_tests/test_plugin/example/windows/runner/main.cpp
index cd54d85..a58aa90 100644
--- a/packages/pigeon/platform_tests/test_plugin/example/windows/runner/main.cpp
+++ b/packages/pigeon/platform_tests/test_plugin/example/windows/runner/main.cpp
@@ -30,7 +30,7 @@
   FlutterWindow window(project);
   Win32Window::Point origin(10, 10);
   Win32Window::Size size(1280, 720);
-  if (!window.Create(L"test_plugin_example", origin, size)) {
+  if (!window.CreateAndShow(L"test_plugin_example", origin, size)) {
     return EXIT_FAILURE;
   }
   window.SetQuitOnClose(true);
diff --git a/packages/pigeon/platform_tests/test_plugin/example/windows/runner/win32_window.cpp b/packages/pigeon/platform_tests/test_plugin/example/windows/runner/win32_window.cpp
index daefc27..85aa361 100644
--- a/packages/pigeon/platform_tests/test_plugin/example/windows/runner/win32_window.cpp
+++ b/packages/pigeon/platform_tests/test_plugin/example/windows/runner/win32_window.cpp
@@ -4,34 +4,14 @@
 
 #include "win32_window.h"
 
-#include <dwmapi.h>
 #include <flutter_windows.h>
 
 #include "resource.h"
 
 namespace {
 
-/// Window attribute that enables dark mode window decorations.
-///
-/// Redefined in case the developer's machine has a Windows SDK older than
-/// version 10.0.22000.0.
-/// See:
-/// https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute
-#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE
-#define DWMWA_USE_IMMERSIVE_DARK_MODE 20
-#endif
-
 constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW";
 
-/// Registry key for app theme preference.
-///
-/// A value of 0 indicates apps should use dark mode. A non-zero or missing
-/// value indicates apps should use light mode.
-constexpr const wchar_t kGetPreferredBrightnessRegKey[] =
-    L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize";
-constexpr const wchar_t kGetPreferredBrightnessRegValue[] =
-    L"AppsUseLightTheme";
-
 // The number of Win32Window objects that currently exist.
 static int g_active_window_count = 0;
 
@@ -55,8 +35,8 @@
           GetProcAddress(user32_module, "EnableNonClientDpiScaling"));
   if (enable_non_client_dpi_scaling != nullptr) {
     enable_non_client_dpi_scaling(hwnd);
+    FreeLibrary(user32_module);
   }
-  FreeLibrary(user32_module);
 }
 
 }  // namespace
@@ -124,8 +104,8 @@
   Destroy();
 }
 
-bool Win32Window::Create(const std::wstring& title, const Point& origin,
-                         const Size& size) {
+bool Win32Window::CreateAndShow(const std::wstring& title, const Point& origin,
+                                const Size& size) {
   Destroy();
 
   const wchar_t* window_class =
@@ -138,7 +118,7 @@
   double scale_factor = dpi / 96.0;
 
   HWND window = CreateWindow(
-      window_class, title.c_str(), WS_OVERLAPPEDWINDOW,
+      window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE,
       Scale(origin.x, scale_factor), Scale(origin.y, scale_factor),
       Scale(size.width, scale_factor), Scale(size.height, scale_factor),
       nullptr, nullptr, GetModuleHandle(nullptr), this);
@@ -147,13 +127,9 @@
     return false;
   }
 
-  UpdateTheme(window);
-
   return OnCreate();
 }
 
-bool Win32Window::Show() { return ShowWindow(window_handle_, SW_SHOWNORMAL); }
-
 // static
 LRESULT CALLBACK Win32Window::WndProc(HWND const window, UINT const message,
                                       WPARAM const wparam,
@@ -210,10 +186,6 @@
         SetFocus(child_content_);
       }
       return 0;
-
-    case WM_DWMCOLORIZATIONCOLORCHANGED:
-      UpdateTheme(hwnd);
-      return 0;
   }
 
   return DefWindowProc(window_handle_, message, wparam, lparam);
@@ -267,18 +239,3 @@
 void Win32Window::OnDestroy() {
   // No-op; provided for subclasses.
 }
-
-void Win32Window::UpdateTheme(HWND const window) {
-  DWORD light_mode;
-  DWORD light_mode_size = sizeof(light_mode);
-  LSTATUS result =
-      RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey,
-                  kGetPreferredBrightnessRegValue, RRF_RT_REG_DWORD, nullptr,
-                  &light_mode, &light_mode_size);
-
-  if (result == ERROR_SUCCESS) {
-    BOOL enable_dark_mode = light_mode == 0;
-    DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE,
-                          &enable_dark_mode, sizeof(enable_dark_mode));
-  }
-}
diff --git a/packages/pigeon/platform_tests/test_plugin/example/windows/runner/win32_window.h b/packages/pigeon/platform_tests/test_plugin/example/windows/runner/win32_window.h
index 33d491e..d2a7300 100644
--- a/packages/pigeon/platform_tests/test_plugin/example/windows/runner/win32_window.h
+++ b/packages/pigeon/platform_tests/test_plugin/example/windows/runner/win32_window.h
@@ -32,16 +32,14 @@
   Win32Window();
   virtual ~Win32Window();
 
-  // Creates a win32 window with |title| that is positioned and sized using
+  // Creates and shows a win32 window with |title| and position and size using
   // |origin| and |size|. New windows are created on the default monitor. Window
   // sizes are specified to the OS in physical pixels, hence to ensure a
-  // consistent size this function will scale the inputted width and height as
-  // as appropriate for the default monitor. The window is invisible until
-  // |Show| is called. Returns true if the window was created successfully.
-  bool Create(const std::wstring& title, const Point& origin, const Size& size);
-
-  // Show the current window. Returns true if the window was successfully shown.
-  bool Show();
+  // consistent size to will treat the width height passed in to this function
+  // as logical pixels and scale to appropriate for the default monitor. Returns
+  // true if the window was created successfully.
+  bool CreateAndShow(const std::wstring& title, const Point& origin,
+                     const Size& size);
 
   // Release OS resources associated with window.
   void Destroy();
@@ -89,9 +87,6 @@
   // Retrieves a class instance pointer for |window|
   static Win32Window* GetThisFromHandle(HWND const window) noexcept;
 
-  // Update the window frame's theme to match the system theme.
-  static void UpdateTheme(HWND const window);
-
   bool quit_on_close_ = false;
 
   // window handle for top level window.