Let the tool warn about all old API plugins (#48282)
diff --git a/packages/flutter_tools/test/general.shard/plugins_test.dart b/packages/flutter_tools/test/general.shard/plugins_test.dart index 30b4401..635d0e9 100644 --- a/packages/flutter_tools/test/general.shard/plugins_test.dart +++ b/packages/flutter_tools/test/general.shard/plugins_test.dart
@@ -129,7 +129,7 @@ ); } - void createOldJavaPlugin3() { + void createOldJavaPlugin(String pluginName) { final Directory pluginUsingOldEmbeddingDir = fs.systemTempDirectory.createTempSync('flutter_plugin_using_old_embedding_dir.'); pluginUsingOldEmbeddingDir @@ -137,7 +137,7 @@ .writeAsStringSync(''' flutter: plugin: - androidPackage: plugin3 + androidPackage: $pluginName pluginClass: UseOldEmbedding '''); pluginUsingOldEmbeddingDir @@ -145,14 +145,14 @@ .childDirectory('src') .childDirectory('main') .childDirectory('java') - .childDirectory('plugin3') + .childDirectory(pluginName) .childFile('UseOldEmbedding.java') ..createSync(recursive: true); flutterProject.directory .childFile('.packages') .writeAsStringSync( - 'plugin3:${pluginUsingOldEmbeddingDir.childDirectory('lib').uri.toString()}\n', + '$pluginName:${pluginUsingOldEmbeddingDir.childDirectory('lib').uri.toString()}\n', mode: FileMode.append, ); } @@ -379,7 +379,7 @@ createNewJavaPlugin1(); createNewKotlinPlugin2(); - createOldJavaPlugin3(); + createOldJavaPlugin('plugin3'); await injectPlugins(flutterProject); @@ -497,7 +497,7 @@ when(flutterProject.isModule).thenReturn(true); when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v2); - createOldJavaPlugin3(); + createOldJavaPlugin('plugin3'); await injectPlugins(flutterProject); @@ -558,6 +558,31 @@ XcodeProjectInterpreter: () => xcodeProjectInterpreter, }); + testUsingContext('Module using multiple old plugins all show warnings', () async { + when(flutterProject.isModule).thenReturn(true); + when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v2); + + createOldJavaPlugin('plugin3'); + createOldJavaPlugin('plugin4'); + + await injectPlugins(flutterProject); + + final File registrant = flutterProject.directory + .childDirectory(fs.path.join('android', 'app', 'src', 'main', 'java', 'io', 'flutter', 'plugins')) + .childFile('GeneratedPluginRegistrant.java'); + expect(registrant.readAsStringSync(), + contains('plugin3.UseOldEmbedding.registerWith(shimPluginRegistry.registrarFor("plugin3.UseOldEmbedding"));')); + expect(registrant.readAsStringSync(), + contains('plugin4.UseOldEmbedding.registerWith(shimPluginRegistry.registrarFor("plugin4.UseOldEmbedding"));')); + expect(testLogger.statusText, contains('The plugin `plugin3` is built using an older version of the Android plugin API')); + expect(testLogger.statusText, contains('The plugin `plugin4` is built using an older version of the Android plugin API')); + }, overrides: <Type, Generator>{ + FileSystem: () => fs, + ProcessManager: () => FakeProcessManager.any(), + FeatureFlags: () => featureFlags, + XcodeProjectInterpreter: () => xcodeProjectInterpreter, + }); + testUsingContext('Does not throw when AndroidManifest.xml is not found', () async { when(flutterProject.isModule).thenReturn(false);