Add Android embedding version analytics (#44043)
diff --git a/packages/flutter_tools/test/general.shard/plugins_test.dart b/packages/flutter_tools/test/general.shard/plugins_test.dart
index 59c19c4..0dea334 100644
--- a/packages/flutter_tools/test/general.shard/plugins_test.dart
+++ b/packages/flutter_tools/test/general.shard/plugins_test.dart
@@ -125,22 +125,6 @@
MockFeatureFlags featureFlags;
MockXcodeProjectInterpreter xcodeProjectInterpreter;
- const String kAndroidManifestUsingOldEmbedding = '''
- <manifest>
- <application>
- </application>
- </manifest>
- ''';
- const String kAndroidManifestUsingNewEmbedding = '''
- <manifest>
- <application>
- <meta-data
- android:name="flutterEmbedding"
- android:value="2" />
- </application>
- </manifest>
- ''';
-
setUp(() {
featureFlags = MockFeatureFlags();
when(featureFlags.isLinuxEnabled).thenReturn(false);
@@ -154,13 +138,7 @@
testUsingContext('Registrant uses old embedding in app project', () async {
when(flutterProject.isModule).thenReturn(false);
-
- final File androidManifest = flutterProject.directory
- .childDirectory('android')
- .childFile('AndroidManifest.xml')
- ..createSync(recursive: true)
- ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
- when(androidProject.appManifestFile).thenReturn(androidManifest);
+ when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v1);
await injectPlugins(flutterProject);
@@ -179,13 +157,7 @@
testUsingContext('Registrant uses new embedding if app uses new embedding', () async {
when(flutterProject.isModule).thenReturn(false);
-
- final File androidManifest = flutterProject.directory
- .childDirectory('android')
- .childFile('AndroidManifest.xml')
- ..createSync(recursive: true)
- ..writeAsStringSync(kAndroidManifestUsingNewEmbedding);
- when(androidProject.appManifestFile).thenReturn(androidManifest);
+ when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v2);
await injectPlugins(flutterProject);
@@ -204,13 +176,7 @@
testUsingContext('Registrant uses shim for plugins using old embedding if app uses new embedding', () async {
when(flutterProject.isModule).thenReturn(false);
-
- final File androidManifest = flutterProject.directory
- .childDirectory('android')
- .childFile('AndroidManifest.xml')
- ..createSync(recursive: true)
- ..writeAsStringSync(kAndroidManifestUsingNewEmbedding);
- when(androidProject.appManifestFile).thenReturn(androidManifest);
+ when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v2);
final Directory pluginUsingJavaAndNewEmbeddingDir =
fs.systemTempDirectory.createTempSync('flutter_plugin_using_java_and_new_embedding_dir.');
@@ -301,13 +267,7 @@
testUsingContext('exits the tool if an app uses the v1 embedding and a plugin only supports the v2 embedding', () async {
when(flutterProject.isModule).thenReturn(false);
-
- final File androidManifest = flutterProject.directory
- .childDirectory('android')
- .childFile('AndroidManifest.xml')
- ..createSync(recursive: true)
- ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
- when(androidProject.appManifestFile).thenReturn(androidManifest);
+ when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v1);
final Directory pluginUsingJavaAndNewEmbeddingDir =
fs.systemTempDirectory.createTempSync('flutter_plugin_using_java_and_new_embedding_dir.');
@@ -352,13 +312,7 @@
testUsingContext('allows app use a plugin that supports v1 and v2 embedding', () async {
when(flutterProject.isModule).thenReturn(false);
-
- final File androidManifest = flutterProject.directory
- .childDirectory('android')
- .childFile('AndroidManifest.xml')
- ..createSync(recursive: true)
- ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
- when(androidProject.appManifestFile).thenReturn(androidManifest);
+ when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v1);
final Directory pluginUsingJavaAndNewEmbeddingDir =
fs.systemTempDirectory.createTempSync('flutter_plugin_using_java_and_new_embedding_dir.');
@@ -406,13 +360,7 @@
testUsingContext('Registrant doesn\'t use new embedding if app doesn\'t use new embedding', () async {
when(flutterProject.isModule).thenReturn(false);
-
- final File androidManifest = flutterProject.directory
- .childDirectory('android')
- .childFile('AndroidManifest.xml')
- ..createSync(recursive: true)
- ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
- when(androidProject.appManifestFile).thenReturn(androidManifest);
+ when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v1);
await injectPlugins(flutterProject);
@@ -431,13 +379,7 @@
testUsingContext('Registrant uses old embedding in module project', () async {
when(flutterProject.isModule).thenReturn(true);
-
- final File androidManifest = flutterProject.directory
- .childDirectory('android')
- .childFile('AndroidManifest.xml')
- ..createSync(recursive: true)
- ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
- when(androidProject.appManifestFile).thenReturn(androidManifest);
+ when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v1);
await injectPlugins(flutterProject);
@@ -456,13 +398,7 @@
testUsingContext('Registrant uses new embedding if module uses new embedding', () async {
when(flutterProject.isModule).thenReturn(true);
-
- final File androidManifest = flutterProject.directory
- .childDirectory('android')
- .childFile('AndroidManifest.xml')
- ..createSync(recursive: true)
- ..writeAsStringSync(kAndroidManifestUsingNewEmbedding);
- when(androidProject.appManifestFile).thenReturn(androidManifest);
+ when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v2);
await injectPlugins(flutterProject);
@@ -481,13 +417,7 @@
testUsingContext('Registrant doesn\'t use new embedding if module doesn\'t use new embedding', () async {
when(flutterProject.isModule).thenReturn(true);
-
- final File androidManifest = flutterProject.directory
- .childDirectory('android')
- .childFile('AndroidManifest.xml')
- ..createSync(recursive: true)
- ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
- when(androidProject.appManifestFile).thenReturn(androidManifest);
+ when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v1);
await injectPlugins(flutterProject);
@@ -522,14 +452,6 @@
when(flutterProject.isModule).thenReturn(true);
when(featureFlags.isWebEnabled).thenReturn(true);
- // injectPlugins will crash if there is no AndroidManifest
- final File androidManifest = flutterProject.directory
- .childDirectory('android')
- .childFile('AndroidManifest.xml')
- ..createSync(recursive: true)
- ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
- when(androidProject.appManifestFile).thenReturn(androidManifest);
-
final Directory webPluginWithNestedFile =
fs.systemTempDirectory.createTempSync('web_plugin_with_nested');
webPluginWithNestedFile.childFile('pubspec.yaml').writeAsStringSync('''