[flutter_plugin_tools] Remove UWP (#5432)

diff --git a/.ci/scripts/build_examples_uwp.sh b/.ci/scripts/build_examples_uwp.sh
deleted file mode 100644
index 04b8256..0000000
--- a/.ci/scripts/build_examples_uwp.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-# Copyright 2013 The Flutter Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-dart ./script/tool/bin/flutter_plugin_tools.dart build-examples --winuwp \
-   --packages-for-branch --log-timing
diff --git a/.ci/targets/uwp_build_and_platform_tests.yaml b/.ci/targets/uwp_build_and_platform_tests.yaml
deleted file mode 100644
index a7f0707..0000000
--- a/.ci/targets/uwp_build_and_platform_tests.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-tasks:
-  - name: prepare tool
-    script: .ci/scripts/prepare_tool.sh
-  - name: build examples (UWP)
-    script: .ci/scripts/build_examples_uwp.sh
diff --git a/script/tool/CHANGELOG.md b/script/tool/CHANGELOG.md
index 82a3115..7587ff3 100644
--- a/script/tool/CHANGELOG.md
+++ b/script/tool/CHANGELOG.md
@@ -5,6 +5,7 @@
 - `license-check` now ignores submodules.
 - Allows `make-deps-path-based` to skip packages it has alredy rewritten, so
   that running multiple times won't fail after the first time.
+- Removes UWP support, since Flutter has dropped support for UWP.
 
 ## 0.8.2+1
 
diff --git a/script/tool/lib/src/build_examples_command.dart b/script/tool/lib/src/build_examples_command.dart
index b88cfe3..1aade35 100644
--- a/script/tool/lib/src/build_examples_command.dart
+++ b/script/tool/lib/src/build_examples_command.dart
@@ -37,8 +37,7 @@
 const String _flutterBuildTypeLinux = 'linux';
 const String _flutterBuildTypeMacOS = 'macos';
 const String _flutterBuildTypeWeb = 'web';
-const String _flutterBuildTypeWin32 = 'windows';
-const String _flutterBuildTypeWinUwp = 'winuwp';
+const String _flutterBuildTypeWindows = 'windows';
 
 /// A command to build the example applications for packages.
 class BuildExamplesCommand extends PackageLoopingCommand {
@@ -52,7 +51,6 @@
     argParser.addFlag(platformMacOS);
     argParser.addFlag(platformWeb);
     argParser.addFlag(platformWindows);
-    argParser.addFlag(platformWinUwp);
     argParser.addFlag(platformIOS);
     argParser.addFlag(_platformFlagApk);
     argParser.addOption(
@@ -93,16 +91,9 @@
       flutterBuildType: _flutterBuildTypeWeb,
     ),
     platformWindows: const _PlatformDetails(
-      'Win32',
+      'Windows',
       pluginPlatform: platformWindows,
-      pluginPlatformVariant: platformVariantWin32,
-      flutterBuildType: _flutterBuildTypeWin32,
-    ),
-    platformWinUwp: const _PlatformDetails(
-      'UWP',
-      pluginPlatform: platformWindows,
-      pluginPlatformVariant: platformVariantWinUwp,
-      flutterBuildType: _flutterBuildTypeWinUwp,
+      flutterBuildType: _flutterBuildTypeWindows,
     ),
   };
 
@@ -146,9 +137,8 @@
     // no package-level platform information for non-plugin packages.
     final Set<_PlatformDetails> buildPlatforms = isPlugin
         ? requestedPlatforms
-            .where((_PlatformDetails platform) => pluginSupportsPlatform(
-                platform.pluginPlatform, package,
-                variant: platform.pluginPlatformVariant))
+            .where((_PlatformDetails platform) =>
+                pluginSupportsPlatform(platform.pluginPlatform, package))
             .toSet()
         : requestedPlatforms.toSet();
 
@@ -280,22 +270,6 @@
   }) async {
     final String enableExperiment = getStringArg(kEnableExperiment);
 
-    // The UWP template is not yet stable, so the UWP directory
-    // needs to be created on the fly with 'flutter create .'
-    Directory? temporaryPlatformDirectory;
-    if (flutterBuildType == _flutterBuildTypeWinUwp) {
-      final Directory uwpDirectory = example.directory.childDirectory('winuwp');
-      if (!uwpDirectory.existsSync()) {
-        print('Creating temporary winuwp folder');
-        final int exitCode = await processRunner.runAndStream(flutterCommand,
-            <String>['create', '--platforms=$platformWinUwp', '.'],
-            workingDir: example.directory);
-        if (exitCode == 0) {
-          temporaryPlatformDirectory = uwpDirectory;
-        }
-      }
-    }
-
     final int exitCode = await processRunner.runAndStream(
       flutterCommand,
       <String>[
@@ -308,13 +282,6 @@
       ],
       workingDir: example.directory,
     );
-
-    if (temporaryPlatformDirectory != null &&
-        temporaryPlatformDirectory.existsSync()) {
-      print('Cleaning up ${temporaryPlatformDirectory.path}');
-      temporaryPlatformDirectory.deleteSync(recursive: true);
-    }
-
     return exitCode == 0;
   }
 }
@@ -324,7 +291,6 @@
   const _PlatformDetails(
     this.label, {
     required this.pluginPlatform,
-    this.pluginPlatformVariant,
     required this.flutterBuildType,
     this.extraBuildFlags = const <String>[],
   });
@@ -335,10 +301,6 @@
   /// The key in a pubspec's platform: entry.
   final String pluginPlatform;
 
-  /// The supportedVariants key under a plugin's [pluginPlatform] entry, if
-  /// applicable.
-  final String? pluginPlatformVariant;
-
   /// The `flutter build` build type.
   final String flutterBuildType;
 
diff --git a/script/tool/lib/src/common/core.dart b/script/tool/lib/src/common/core.dart
index 15a0d6f..de1cefd 100644
--- a/script/tool/lib/src/common/core.dart
+++ b/script/tool/lib/src/common/core.dart
@@ -26,27 +26,8 @@
 const String platformWeb = 'web';
 
 /// Key for windows platform.
-///
-/// Note that this corresponds to the Win32 variant for flutter commands like
-/// `build` and `run`, but is a general platform containing all Windows
-/// variants for purposes of the `platform` section of a plugin pubspec).
 const String platformWindows = 'windows';
 
-/// Key for WinUWP platform.
-///
-/// Note that UWP is a platform for the purposes of flutter commands like
-/// `build` and `run`, but a variant of the `windows` platform for the purposes
-/// of plugin pubspecs).
-const String platformWinUwp = 'winuwp';
-
-/// Key for Win32 variant of the Windows platform.
-const String platformVariantWin32 = 'win32';
-
-/// Key for UWP variant of the Windows platform.
-///
-/// See the note on [platformWinUwp].
-const String platformVariantWinUwp = 'uwp';
-
 /// Key for enable experiment.
 const String kEnableExperiment = 'enable-experiment';
 
diff --git a/script/tool/lib/src/common/plugin_utils.dart b/script/tool/lib/src/common/plugin_utils.dart
index 081ce7f..94f294e 100644
--- a/script/tool/lib/src/common/plugin_utils.dart
+++ b/script/tool/lib/src/common/plugin_utils.dart
@@ -37,7 +37,6 @@
   String platform,
   RepositoryPackage plugin, {
   PlatformSupport? requiredMode,
-  String? variant,
 }) {
   assert(platform == platformIOS ||
       platform == platformAndroid ||
@@ -61,26 +60,6 @@
     }
   }
 
-  // If a variant is specified, check for that variant.
-  if (variant != null) {
-    const String variantsKey = 'supportedVariants';
-    if (platformEntry.containsKey(variantsKey)) {
-      if (!(platformEntry['supportedVariants']! as YamlList)
-          .contains(variant)) {
-        return false;
-      }
-    } else {
-      // Platforms with variants have a default variant when unspecified for
-      // backward compatibility. Must match the flutter tool logic.
-      const Map<String, String> defaultVariants = <String, String>{
-        platformWindows: platformVariantWin32,
-      };
-      if (variant != defaultVariants[platform]) {
-        return false;
-      }
-    }
-  }
-
   return true;
 }
 
diff --git a/script/tool/lib/src/drive_examples_command.dart b/script/tool/lib/src/drive_examples_command.dart
index d81153a..0e1efa8 100644
--- a/script/tool/lib/src/drive_examples_command.dart
+++ b/script/tool/lib/src/drive_examples_command.dart
@@ -36,10 +36,7 @@
     argParser.addFlag(platformWeb,
         help: 'Runs the web implementation of the examples');
     argParser.addFlag(platformWindows,
-        help: 'Runs the Windows (Win32) implementation of the examples');
-    argParser.addFlag(platformWinUwp,
-        help:
-            'Runs the UWP implementation of the examples [currently a no-op]');
+        help: 'Runs the Windows implementation of the examples');
     argParser.addOption(
       kEnableExperiment,
       defaultsTo: '',
@@ -70,7 +67,6 @@
       platformMacOS,
       platformWeb,
       platformWindows,
-      platformWinUwp,
     ];
     final int platformCount = platformSwitches
         .where((String platform) => getBoolArg(platform))
@@ -85,10 +81,6 @@
       throw ToolExit(_exitNoPlatformFlags);
     }
 
-    if (getBoolArg(platformWinUwp)) {
-      logWarning('Driving UWP applications is not yet supported');
-    }
-
     String? androidDevice;
     if (getBoolArg(platformAndroid)) {
       final List<String> devices = await _getDevicesForPlatform('android');
@@ -126,9 +118,6 @@
         ],
       if (getBoolArg(platformWindows))
         platformWindows: <String>['-d', 'windows'],
-      // TODO(stuartmorgan): Check these flags once drive supports UWP:
-      // https://github.com/flutter/flutter/issues/82821
-      if (getBoolArg(platformWinUwp)) platformWinUwp: <String>['-d', 'winuwp'],
     };
   }
 
@@ -146,16 +135,7 @@
     for (final MapEntry<String, List<String>> entry
         in _targetDeviceFlags.entries) {
       final String platform = entry.key;
-      String? variant;
-      if (platform == platformWindows) {
-        variant = platformVariantWin32;
-      } else if (platform == platformWinUwp) {
-        variant = platformVariantWinUwp;
-        // TODO(stuartmorgan): Remove this once drive supports UWP.
-        // https://github.com/flutter/flutter/issues/82821
-        return PackageResult.skip('Drive does not yet support UWP');
-      }
-      if (pluginSupportsPlatform(platform, package, variant: variant)) {
+      if (pluginSupportsPlatform(platform, package)) {
         deviceFlags.addAll(entry.value);
       } else {
         print('Skipping unsupported platform ${entry.key}...');
diff --git a/script/tool/test/build_examples_command_test.dart b/script/tool/test/build_examples_command_test.dart
index 29a8790..2bdb1bc 100644
--- a/script/tool/test/build_examples_command_test.dart
+++ b/script/tool/test/build_examples_command_test.dart
@@ -313,7 +313,7 @@
     });
 
     test(
-        'building for win32 when plugin is not set up for Windows results in no-op',
+        'building for Windows when plugin is not set up for Windows results in no-op',
         () async {
       mockPlatform.isWindows = true;
       createFakePlugin('plugin', packagesDir);
@@ -325,7 +325,7 @@
         output,
         containsAllInOrder(<Matcher>[
           contains('Running for plugin'),
-          contains('Win32 is not supported by this plugin'),
+          contains('Windows is not supported by this plugin'),
         ]),
       );
 
@@ -334,7 +334,7 @@
       expect(processRunner.recordedCalls, orderedEquals(<ProcessCall>[]));
     });
 
-    test('building for win32', () async {
+    test('building for Windows', () async {
       mockPlatform.isWindows = true;
       final Directory pluginDirectory = createFakePlugin('plugin', packagesDir,
           platformSupport: <String, PlatformDetails>{
@@ -350,7 +350,7 @@
       expect(
         output,
         containsAllInOrder(<String>[
-          '\nBUILDING plugin/example for Win32 (windows)',
+          '\nBUILDING plugin/example for Windows',
         ]),
       );
 
@@ -364,88 +364,6 @@
           ]));
     });
 
-    test('building for UWP when plugin does not support UWP is a no-op',
-        () async {
-      createFakePlugin('plugin', packagesDir);
-
-      final List<String> output = await runCapturingPrint(
-          runner, <String>['build-examples', '--winuwp']);
-
-      expect(
-        output,
-        containsAllInOrder(<Matcher>[
-          contains('Running for plugin'),
-          contains('UWP is not supported by this plugin'),
-        ]),
-      );
-
-      // Output should be empty since running build-examples --macos with no macos
-      // implementation is a no-op.
-      expect(processRunner.recordedCalls, orderedEquals(<ProcessCall>[]));
-    });
-
-    test('building for UWP', () async {
-      final Directory pluginDirectory =
-          createFakePlugin('plugin', packagesDir, extraFiles: <String>[
-        'example/test',
-      ], platformSupport: <String, PlatformDetails>{
-        platformWindows: const PlatformDetails(PlatformSupport.federated,
-            variants: <String>[platformVariantWinUwp]),
-      });
-
-      final Directory pluginExampleDirectory =
-          pluginDirectory.childDirectory('example');
-
-      final List<String> output = await runCapturingPrint(
-          runner, <String>['build-examples', '--winuwp']);
-
-      expect(
-        output,
-        containsAllInOrder(<Matcher>[
-          contains('BUILDING plugin/example for UWP (winuwp)'),
-        ]),
-      );
-
-      expect(
-          processRunner.recordedCalls,
-          containsAll(<ProcessCall>[
-            ProcessCall(getFlutterCommand(mockPlatform),
-                const <String>['build', 'winuwp'], pluginExampleDirectory.path),
-          ]));
-    });
-
-    test('building for UWP creates a folder if necessary', () async {
-      final Directory pluginDirectory =
-          createFakePlugin('plugin', packagesDir, extraFiles: <String>[
-        'example/test',
-      ], platformSupport: <String, PlatformDetails>{
-        platformWindows: const PlatformDetails(PlatformSupport.federated,
-            variants: <String>[platformVariantWinUwp]),
-      });
-
-      final Directory pluginExampleDirectory =
-          pluginDirectory.childDirectory('example');
-
-      final List<String> output = await runCapturingPrint(
-          runner, <String>['build-examples', '--winuwp']);
-
-      expect(
-        output,
-        contains('Creating temporary winuwp folder'),
-      );
-
-      expect(
-          processRunner.recordedCalls,
-          orderedEquals(<ProcessCall>[
-            ProcessCall(
-                getFlutterCommand(mockPlatform),
-                const <String>['create', '--platforms=winuwp', '.'],
-                pluginExampleDirectory.path),
-            ProcessCall(getFlutterCommand(mockPlatform),
-                const <String>['build', 'winuwp'], pluginExampleDirectory.path),
-          ]));
-    });
-
     test(
         'building for Android when plugin is not set up for Android results in no-op',
         () async {
diff --git a/script/tool/test/common/plugin_utils_test.dart b/script/tool/test/common/plugin_utils_test.dart
index cedd40a..af5cb7d 100644
--- a/script/tool/test/common/plugin_utils_test.dart
+++ b/script/tool/test/common/plugin_utils_test.dart
@@ -193,85 +193,6 @@
               requiredMode: PlatformSupport.inline),
           isFalse);
     });
-
-    test('windows without variants is only win32', () async {
-      final RepositoryPackage plugin = RepositoryPackage(createFakePlugin(
-        'plugin',
-        packagesDir,
-        platformSupport: <String, PlatformDetails>{
-          platformWindows: const PlatformDetails(PlatformSupport.inline),
-        },
-      ));
-
-      expect(
-          pluginSupportsPlatform(platformWindows, plugin,
-              variant: platformVariantWin32),
-          isTrue);
-      expect(
-          pluginSupportsPlatform(platformWindows, plugin,
-              variant: platformVariantWinUwp),
-          isFalse);
-    });
-
-    test('windows with both variants matches win32 and winuwp', () async {
-      final RepositoryPackage plugin = RepositoryPackage(createFakePlugin(
-          'plugin', packagesDir,
-          platformSupport: <String, PlatformDetails>{
-            platformWindows: const PlatformDetails(
-              PlatformSupport.federated,
-              variants: <String>[platformVariantWin32, platformVariantWinUwp],
-            ),
-          }));
-
-      expect(
-          pluginSupportsPlatform(platformWindows, plugin,
-              variant: platformVariantWin32),
-          isTrue);
-      expect(
-          pluginSupportsPlatform(platformWindows, plugin,
-              variant: platformVariantWinUwp),
-          isTrue);
-    });
-
-    test('win32 plugin is only win32', () async {
-      final RepositoryPackage plugin = RepositoryPackage(createFakePlugin(
-          'plugin', packagesDir,
-          platformSupport: <String, PlatformDetails>{
-            platformWindows: const PlatformDetails(
-              PlatformSupport.federated,
-              variants: <String>[platformVariantWin32],
-            ),
-          }));
-
-      expect(
-          pluginSupportsPlatform(platformWindows, plugin,
-              variant: platformVariantWin32),
-          isTrue);
-      expect(
-          pluginSupportsPlatform(platformWindows, plugin,
-              variant: platformVariantWinUwp),
-          isFalse);
-    });
-
-    test('winup plugin is only winuwp', () async {
-      final RepositoryPackage plugin = RepositoryPackage(createFakePlugin(
-        'plugin',
-        packagesDir,
-        platformSupport: <String, PlatformDetails>{
-          platformWindows: const PlatformDetails(PlatformSupport.federated,
-              variants: <String>[platformVariantWinUwp]),
-        },
-      ));
-
-      expect(
-          pluginSupportsPlatform(platformWindows, plugin,
-              variant: platformVariantWin32),
-          isFalse);
-      expect(
-          pluginSupportsPlatform(platformWindows, plugin,
-              variant: platformVariantWinUwp),
-          isTrue);
-    });
   });
 
   group('pluginHasNativeCodeForPlatform', () {
diff --git a/script/tool/test/drive_examples_command_test.dart b/script/tool/test/drive_examples_command_test.dart
index 9372c57..ac57eb7 100644
--- a/script/tool/test/drive_examples_command_test.dart
+++ b/script/tool/test/drive_examples_command_test.dart
@@ -708,40 +708,6 @@
           ]));
     });
 
-    test('driving UWP is a no-op', () async {
-      createFakePlugin(
-        'plugin',
-        packagesDir,
-        extraFiles: <String>[
-          'example/test_driver/plugin_test.dart',
-          'example/test_driver/plugin.dart',
-        ],
-        platformSupport: <String, PlatformDetails>{
-          platformWindows: const PlatformDetails(PlatformSupport.inline,
-              variants: <String>[platformVariantWinUwp]),
-        },
-      );
-
-      final List<String> output = await runCapturingPrint(runner, <String>[
-        'drive-examples',
-        '--winuwp',
-      ]);
-
-      expect(
-        output,
-        containsAllInOrder(<Matcher>[
-          contains('Driving UWP applications is not yet supported'),
-          contains('Running for plugin'),
-          contains('SKIPPING: Drive does not yet support UWP'),
-          contains('No issues found!'),
-        ]),
-      );
-
-      // Output should be empty since running drive-examples --windows on a
-      // non-Windows plugin is a no-op.
-      expect(processRunner.recordedCalls, <ProcessCall>[]);
-    });
-
     test('driving on an Android plugin', () async {
       final Directory pluginDirectory = createFakePlugin(
         'plugin',
diff --git a/script/tool/test/util.dart b/script/tool/test/util.dart
index fab4f39..2b1719e 100644
--- a/script/tool/test/util.dart
+++ b/script/tool/test/util.dart
@@ -47,7 +47,6 @@
 class PlatformDetails {
   const PlatformDetails(
     this.type, {
-    this.variants = const <String>[],
     this.hasNativeCode = true,
     this.hasDartCode = false,
   });
@@ -55,9 +54,6 @@
   /// The type of support for the platform.
   final PlatformSupport type;
 
-  /// Any 'supportVariants' to list in the pubspec.
-  final List<String> variants;
-
   /// Whether or not the plugin includes native code.
   ///
   /// Ignored for web, which does not have native code.
@@ -293,18 +289,6 @@
     entry = lines.join('\n') + '\n';
   }
 
-  // Add any variants.
-  if (support.variants.isNotEmpty) {
-    entry += '''
-        supportedVariants:
-''';
-    for (final String variant in support.variants) {
-      entry += '''
-          - $variant
-''';
-    }
-  }
-
   return entry;
 }