[ci] Continue .cirrus.yml alignment with flutter/plugins (#2832)
* Enable more repo checks
* Remove Android from Pigeon iOS test app
* Add various mostly-no-op tasks
* Remove unused Java generation in ObjC test
diff --git a/.cirrus.yml b/.cirrus.yml
index 05cf7e9..8443fdb 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -107,6 +107,7 @@
# has been fixed, this can be removed and there can just be a single
# run with --require-excerpts and no exclusions.
- ./script/tool_runner.sh readme-check --require-excerpts --exclude=script/configs/temp_exclude_excerpt.yaml
+ dependabot_script: $PLUGIN_TOOL_COMMAND dependabot-check
version_script:
# For pre-submit, pass the PR labels to the script to allow for
# check overrides.
@@ -119,6 +120,14 @@
- ./script/tool_runner.sh version-check --check-for-missing-changes --pr-labels="$CIRRUS_PR_LABELS"
- fi
publishable_script: ./script/tool_runner.sh publish-check --allow-pre-release
+ federated_safety_script:
+ # This check is only meaningful for PRs, as it validates changes
+ # rather than state.
+ - if [[ $CIRRUS_PR == "" ]]; then
+ - ./script/tool_runner.sh federation-safety-check
+ - else
+ - echo "Only run in presubmit"
+ - fi
- name: dart_unit_tests
env:
matrix:
@@ -220,6 +229,19 @@
CHANNEL: "master"
CHANNEL: "stable"
<< : *BUILD_ALL_PACKAGES_APP_TEMPLATE
+ - name: linux-platform_tests
+ # Don't run full platform tests on both channels in pre-submit.
+ skip: $CIRRUS_PR != '' && $CHANNEL == 'stable'
+ env:
+ matrix:
+ CHANNEL: "master"
+ CHANNEL: "stable"
+ build_script:
+ - ./script/tool_runner.sh build-examples --linux
+ native_test_script:
+ - xvfb-run ./script/tool_runner.sh native-test --linux --no-integration
+ drive_script:
+ - xvfb-run ./script/tool_runner.sh drive-examples --linux
# Heavy-workload Linux tasks.
# These use machines with more CPUs and memory, so will reduce parallelization
@@ -251,8 +273,16 @@
# extension_google_sign_in_as_googleapis_auth is currently not building, see
# https://github.com/flutter/flutter/issues/89301
- ./script/tool_runner.sh build-examples --apk --exclude=extension_google_sign_in_as_googleapis_auth
+ lint_script:
+ - ./script/tool_runner.sh lint-android # must come after build-examples
native_unit_test_scipt:
- ./script/tool_runner.sh native-test --android --no-integration
+ # Upload the full lint results to Cirrus to display in the results UI.
+ always:
+ android-lint_artifacts:
+ path: "**/reports/lint-results-debug.xml"
+ type: text/xml
+ format: android-lint
- name: android-build_all_packages
env:
BUILD_ALL_ARGS: "apk"
@@ -290,25 +320,13 @@
- cd ../..
- flutter packages get
- dart testing/web_benchmarks_test.dart
- ### Linux desktop tasks ###
- - name: linux-platform_tests
- # Don't run full platform tests on both channels in pre-submit.
- skip: $CIRRUS_PR != '' && $CHANNEL == 'stable'
- env:
- matrix:
- CHANNEL: "master"
- CHANNEL: "stable"
- build_script:
- - ./script/tool_runner.sh build-examples --linux
- native_test_script:
- - ./script/tool_runner.sh native-test --linux --no-integration
+# ARM macOS tasks.
task:
<< : *FLUTTER_UPGRADE_TEMPLATE
<< : *MACOS_ARM_TEMPLATE
matrix:
- name: macos-custom_package_tests
- # Run on macOS x64 image with Java runtime installed.
env:
PATH: $PATH:/usr/local/bin
matrix:
@@ -340,6 +358,16 @@
- ./script/tool_runner.sh build-examples --ios
native_test_script:
- ./script/tool_runner.sh native-test --ios --ios-destination "platform=iOS Simulator,name=iPhone 13,OS=latest"
+ drive_script:
+ # `drive-examples` contains integration tests, which changes the UI of the application.
+ # This UI change sometimes affects `xctest`.
+ # So we run `drive-examples` after `native-test`; changing the order will result ci failure.
+ - ./script/tool_runner.sh drive-examples --ios
+ xcode_analyze_script:
+ - ./script/tool_runner.sh xcode-analyze --ios
+ xcode_analyze_deprecation_script:
+ # Ensure we don't accidentally introduce deprecated code.
+ - ./script/tool_runner.sh xcode-analyze --ios --ios-min-version=13.0
### iOS tasks ###
- name: ios-build_all_packages
env:
@@ -359,8 +387,15 @@
PATH: $PATH:/usr/local/bin
build_script:
- ./script/tool_runner.sh build-examples --macos
+ xcode_analyze_script:
+ - ./script/tool_runner.sh xcode-analyze --macos
+ xcode_analyze_deprecation_script:
+ # Ensure we don't accidentally introduce deprecated code.
+ - ./script/tool_runner.sh xcode-analyze --macos --macos-min-version=12.3
native_test_script:
- ./script/tool_runner.sh native-test --macos
+ drive_script:
+ - ./script/tool_runner.sh drive-examples --macos
# Intel macOS tasks.
task:
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 9576c20..9d38afb 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -22,3 +22,170 @@
labels:
- "team"
- "team: infra"
+
+ - package-ecosystem: "gradle"
+ directory: "/packages/animations/example/android/app"
+ commit-message:
+ prefix: "[animations]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/dynamic_layouts/example/android/app"
+ commit-message:
+ prefix: "[dynamic_lyts]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/extension_google_sign_in_as_googleapis_auth/example/android/app"
+ commit-message:
+ prefix: "[ext_sign_in]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/flutter_adaptive_scaffold/example/android/app"
+ commit-message:
+ prefix: "[scaffold]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/flutter_markdown/example/android/app"
+ commit-message:
+ prefix: "[markdown]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/go_router/example/android/app"
+ commit-message:
+ prefix: "[go_router]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/imitation_game/imitation_tests/smiley/flutter/smiley/android/app"
+ commit-message:
+ prefix: "[imitation]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/palette_generator/example/android/app"
+ commit-message:
+ prefix: "[palette_gen]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/pigeon/platform_tests/test_plugin/android"
+ commit-message:
+ prefix: "[pigeon]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "com.android.tools.build:gradle"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - dependency-name: "junit:junit"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - dependency-name: "org.mockito:*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - dependency-name: "androidx.test:*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - dependency-name: "org.robolectric:*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/pigeon/platform_tests/test_plugin/example/android/app"
+ commit-message:
+ prefix: "[pigeon]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/pigeon/platform_tests/alternate_language_test_plugin/android"
+ commit-message:
+ prefix: "[pigeon]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "com.android.tools.build:gradle"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - dependency-name: "junit:junit"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - dependency-name: "org.mockito:*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - dependency-name: "androidx.test:*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - dependency-name: "org.robolectric:*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/pigeon/platform_tests/alternate_language_test_plugin/example/android/app"
+ commit-message:
+ prefix: "[pigeon]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/rfw/example/hello/android/app"
+ commit-message:
+ prefix: "[rfw]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/rfw/example/local/android/app"
+ commit-message:
+ prefix: "[rfw]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
+ - package-ecosystem: "gradle"
+ directory: "/packages/rfw/example/remote/android/app"
+ commit-message:
+ prefix: "[rfw]"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-minor", "version-update:semver-patch"]
diff --git a/packages/pigeon/e2e_tests/test_objc/android/.project b/packages/pigeon/e2e_tests/test_objc/android/.project
deleted file mode 100644
index a4124be..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>android</name>
- <comment>Project android created by Buildship.</comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.buildship.core.gradleprojectbuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.buildship.core.gradleprojectnature</nature>
- </natures>
- <filteredResources>
- <filter>
- <id>1654625234632</id>
- <name></name>
- <type>30</type>
- <matcher>
- <id>org.eclipse.core.resources.regexFilterMatcher</id>
- <arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
- </matcher>
- </filter>
- </filteredResources>
-</projectDescription>
diff --git a/packages/pigeon/e2e_tests/test_objc/android/.settings/org.eclipse.buildship.core.prefs b/packages/pigeon/e2e_tests/test_objc/android/.settings/org.eclipse.buildship.core.prefs
deleted file mode 100644
index 861b6d8..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/.settings/org.eclipse.buildship.core.prefs
+++ /dev/null
@@ -1,13 +0,0 @@
-arguments=
-auto.sync=false
-build.scans.enabled=false
-connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
-connection.project.dir=
-eclipse.preferences.version=1
-gradle.user.home=
-java.home=/Library/Java/JavaVirtualMachines/jdk-11.0.4.jdk/Contents/Home
-jvm.arguments=
-offline.mode=false
-override.workspace.settings=true
-show.console.view=true
-show.executions.view=true
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/.classpath b/packages/pigeon/e2e_tests/test_objc/android/app/.classpath
deleted file mode 100644
index 4a04201..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/.classpath
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11/"/>
- <classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
- <classpathentry kind="output" path="bin/default"/>
-</classpath>
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/.project b/packages/pigeon/e2e_tests/test_objc/android/app/.project
deleted file mode 100644
index 52248e4..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>app</name>
- <comment>Project app created by Buildship.</comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.buildship.core.gradleprojectbuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.buildship.core.gradleprojectnature</nature>
- </natures>
- <filteredResources>
- <filter>
- <id>1654625234643</id>
- <name></name>
- <type>30</type>
- <matcher>
- <id>org.eclipse.core.resources.regexFilterMatcher</id>
- <arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
- </matcher>
- </filter>
- </filteredResources>
-</projectDescription>
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/.settings/org.eclipse.buildship.core.prefs b/packages/pigeon/e2e_tests/test_objc/android/app/.settings/org.eclipse.buildship.core.prefs
deleted file mode 100644
index b1886ad..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/.settings/org.eclipse.buildship.core.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-connection.project.dir=..
-eclipse.preferences.version=1
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/build.gradle b/packages/pigeon/e2e_tests/test_objc/android/app/build.gradle
deleted file mode 100644
index 3a0b81e..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/build.gradle
+++ /dev/null
@@ -1,67 +0,0 @@
-def localProperties = new Properties()
-def localPropertiesFile = rootProject.file('local.properties')
-if (localPropertiesFile.exists()) {
- localPropertiesFile.withReader('UTF-8') { reader ->
- localProperties.load(reader)
- }
-}
-
-def flutterRoot = localProperties.getProperty('flutter.sdk')
-if (flutterRoot == null) {
- throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
-}
-
-def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
-if (flutterVersionCode == null) {
- flutterVersionCode = '1'
-}
-
-def flutterVersionName = localProperties.getProperty('flutter.versionName')
-if (flutterVersionName == null) {
- flutterVersionName = '1.0'
-}
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
-
-android {
- compileSdkVersion 31
-
- sourceSets {
- main.java.srcDirs += 'src/main/kotlin'
- }
-
- lintOptions {
- disable 'InvalidPackage'
- }
-
- defaultConfig {
- // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
- applicationId "com.example.test_objc"
- minSdkVersion 16
- targetSdkVersion 28
- versionCode flutterVersionCode.toInteger()
- versionName flutterVersionName
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- }
-
- buildTypes {
- release {
- // TODO: Add your own signing config for the release build.
- // Signing with the debug keys for now, so `flutter run --release` works.
- signingConfig signingConfigs.debug
- }
- }
-}
-
-flutter {
- source '../..'
-}
-
-dependencies {
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test:runner:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
-}
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/src/debug/AndroidManifest.xml b/packages/pigeon/e2e_tests/test_objc/android/app/src/debug/AndroidManifest.xml
deleted file mode 100644
index 8172dab..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/src/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.test_objc">
- <!-- Flutter needs it to communicate with the running application
- to allow setting breakpoints, to provide hot reload, etc.
- -->
- <uses-permission android:name="android.permission.INTERNET"/>
-</manifest>
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/AndroidManifest.xml b/packages/pigeon/e2e_tests/test_objc/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index e692be3..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.test_objc">
- <application
- android:name="${applicationName}"
- android:label="test_objc"
- android:icon="@mipmap/ic_launcher">
- <activity
- android:name=".MainActivity"
- android:launchMode="singleTop"
- android:theme="@style/LaunchTheme"
- android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
- android:hardwareAccelerated="true"
- android:windowSoftInputMode="adjustResize">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- <category android:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- </activity>
- <!-- Don't delete the meta-data below.
- This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
- <meta-data
- android:name="flutterEmbedding"
- android:value="2" />
- </application>
-</manifest>
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/java/io/flutter/plugins/Pigeon.java b/packages/pigeon/e2e_tests/test_objc/android/app/src/main/java/io/flutter/plugins/Pigeon.java
deleted file mode 100644
index bc7fe87..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/java/io/flutter/plugins/Pigeon.java
+++ /dev/null
@@ -1,501 +0,0 @@
-// 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.
-//
-// Autogenerated from Pigeon (v4.0.2), do not edit directly.
-// See also: https://pub.dev/packages/pigeon
-
-package dev.flutter.aaclarke.pigeon;
-
-import android.util.Log;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import io.flutter.plugin.common.BasicMessageChannel;
-import io.flutter.plugin.common.BinaryMessenger;
-import io.flutter.plugin.common.MessageCodec;
-import io.flutter.plugin.common.StandardMessageCodec;
-import java.io.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-/** Generated class from Pigeon. */
-@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression"})
-public class MessagePigeon {
-
- public enum MessageRequestState {
- PENDING(0),
- SUCCESS(1),
- FAILURE(2);
-
- private int index;
-
- private MessageRequestState(final int index) {
- this.index = index;
- }
- }
-
- /** Generated class from Pigeon that represents data sent in messages. */
- public static class MessageSearchRequest {
- private @Nullable String query;
-
- public @Nullable String getQuery() {
- return query;
- }
-
- public void setQuery(@Nullable String setterArg) {
- this.query = setterArg;
- }
-
- private @Nullable Long anInt;
-
- public @Nullable Long getAnInt() {
- return anInt;
- }
-
- public void setAnInt(@Nullable Long setterArg) {
- this.anInt = setterArg;
- }
-
- private @Nullable Boolean aBool;
-
- public @Nullable Boolean getABool() {
- return aBool;
- }
-
- public void setABool(@Nullable Boolean setterArg) {
- this.aBool = setterArg;
- }
-
- public static final class Builder {
- private @Nullable String query;
-
- public @NonNull Builder setQuery(@Nullable String setterArg) {
- this.query = setterArg;
- return this;
- }
-
- private @Nullable Long anInt;
-
- public @NonNull Builder setAnInt(@Nullable Long setterArg) {
- this.anInt = setterArg;
- return this;
- }
-
- private @Nullable Boolean aBool;
-
- public @NonNull Builder setABool(@Nullable Boolean setterArg) {
- this.aBool = setterArg;
- return this;
- }
-
- public @NonNull MessageSearchRequest build() {
- MessageSearchRequest pigeonReturn = new MessageSearchRequest();
- pigeonReturn.setQuery(query);
- pigeonReturn.setAnInt(anInt);
- pigeonReturn.setABool(aBool);
- return pigeonReturn;
- }
- }
-
- @NonNull
- Map<String, Object> toMap() {
- Map<String, Object> toMapResult = new HashMap<>();
- toMapResult.put("query", query);
- toMapResult.put("anInt", anInt);
- toMapResult.put("aBool", aBool);
- return toMapResult;
- }
-
- static @NonNull MessageSearchRequest fromMap(@NonNull Map<String, Object> map) {
- MessageSearchRequest pigeonResult = new MessageSearchRequest();
- Object query = map.get("query");
- pigeonResult.setQuery((String) query);
- Object anInt = map.get("anInt");
- pigeonResult.setAnInt(
- (anInt == null) ? null : ((anInt instanceof Integer) ? (Integer) anInt : (Long) anInt));
- Object aBool = map.get("aBool");
- pigeonResult.setABool((Boolean) aBool);
- return pigeonResult;
- }
- }
-
- /** Generated class from Pigeon that represents data sent in messages. */
- public static class MessageSearchReply {
- private @Nullable String result;
-
- public @Nullable String getResult() {
- return result;
- }
-
- public void setResult(@Nullable String setterArg) {
- this.result = setterArg;
- }
-
- private @Nullable String error;
-
- public @Nullable String getError() {
- return error;
- }
-
- public void setError(@Nullable String setterArg) {
- this.error = setterArg;
- }
-
- private @Nullable MessageRequestState state;
-
- public @Nullable MessageRequestState getState() {
- return state;
- }
-
- public void setState(@Nullable MessageRequestState setterArg) {
- this.state = setterArg;
- }
-
- public static final class Builder {
- private @Nullable String result;
-
- public @NonNull Builder setResult(@Nullable String setterArg) {
- this.result = setterArg;
- return this;
- }
-
- private @Nullable String error;
-
- public @NonNull Builder setError(@Nullable String setterArg) {
- this.error = setterArg;
- return this;
- }
-
- private @Nullable MessageRequestState state;
-
- public @NonNull Builder setState(@Nullable MessageRequestState setterArg) {
- this.state = setterArg;
- return this;
- }
-
- public @NonNull MessageSearchReply build() {
- MessageSearchReply pigeonReturn = new MessageSearchReply();
- pigeonReturn.setResult(result);
- pigeonReturn.setError(error);
- pigeonReturn.setState(state);
- return pigeonReturn;
- }
- }
-
- @NonNull
- Map<String, Object> toMap() {
- Map<String, Object> toMapResult = new HashMap<>();
- toMapResult.put("result", result);
- toMapResult.put("error", error);
- toMapResult.put("state", state == null ? null : state.index);
- return toMapResult;
- }
-
- static @NonNull MessageSearchReply fromMap(@NonNull Map<String, Object> map) {
- MessageSearchReply pigeonResult = new MessageSearchReply();
- Object result = map.get("result");
- pigeonResult.setResult((String) result);
- Object error = map.get("error");
- pigeonResult.setError((String) error);
- Object state = map.get("state");
- pigeonResult.setState(state == null ? null : MessageRequestState.values()[(int) state]);
- return pigeonResult;
- }
- }
-
- /** Generated class from Pigeon that represents data sent in messages. */
- public static class MessageNested {
- private @Nullable MessageSearchRequest request;
-
- public @Nullable MessageSearchRequest getRequest() {
- return request;
- }
-
- public void setRequest(@Nullable MessageSearchRequest setterArg) {
- this.request = setterArg;
- }
-
- public static final class Builder {
- private @Nullable MessageSearchRequest request;
-
- public @NonNull Builder setRequest(@Nullable MessageSearchRequest setterArg) {
- this.request = setterArg;
- return this;
- }
-
- public @NonNull MessageNested build() {
- MessageNested pigeonReturn = new MessageNested();
- pigeonReturn.setRequest(request);
- return pigeonReturn;
- }
- }
-
- @NonNull
- Map<String, Object> toMap() {
- Map<String, Object> toMapResult = new HashMap<>();
- toMapResult.put("request", (request == null) ? null : request.toMap());
- return toMapResult;
- }
-
- static @NonNull MessageNested fromMap(@NonNull Map<String, Object> map) {
- MessageNested pigeonResult = new MessageNested();
- Object request = map.get("request");
- pigeonResult.setRequest(
- (request == null) ? null : MessageSearchRequest.fromMap((Map) request));
- return pigeonResult;
- }
- }
-
- private static class MessageApiCodec extends StandardMessageCodec {
- public static final MessageApiCodec INSTANCE = new MessageApiCodec();
-
- private MessageApiCodec() {}
-
- @Override
- protected Object readValueOfType(byte type, ByteBuffer buffer) {
- switch (type) {
- case (byte) 128:
- return MessageSearchReply.fromMap((Map<String, Object>) readValue(buffer));
-
- case (byte) 129:
- return MessageSearchRequest.fromMap((Map<String, Object>) readValue(buffer));
-
- default:
- return super.readValueOfType(type, buffer);
- }
- }
-
- @Override
- protected void writeValue(ByteArrayOutputStream stream, Object value) {
- if (value instanceof MessageSearchReply) {
- stream.write(128);
- writeValue(stream, ((MessageSearchReply) value).toMap());
- } else if (value instanceof MessageSearchRequest) {
- stream.write(129);
- writeValue(stream, ((MessageSearchRequest) value).toMap());
- } else {
- super.writeValue(stream, value);
- }
- }
- }
-
- /** Generated interface from Pigeon that represents a handler of messages from Flutter. */
- public interface MessageApi {
- void initialize();
-
- @NonNull
- MessageSearchReply search(@NonNull MessageSearchRequest request);
-
- /** The codec used by MessageApi. */
- static MessageCodec<Object> getCodec() {
- return MessageApiCodec.INSTANCE;
- }
-
- /** Sets up an instance of `MessageApi` to handle messages through the `binaryMessenger`. */
- static void setup(BinaryMessenger binaryMessenger, MessageApi api) {
- {
- BasicMessageChannel<Object> channel =
- new BasicMessageChannel<>(
- binaryMessenger, "dev.flutter.pigeon.MessageApi.initialize", getCodec());
- if (api != null) {
- channel.setMessageHandler(
- (message, reply) -> {
- Map<String, Object> wrapped = new HashMap<>();
- try {
- api.initialize();
- wrapped.put("result", null);
- } catch (Error | RuntimeException exception) {
- wrapped.put("error", wrapError(exception));
- }
- reply.reply(wrapped);
- });
- } else {
- channel.setMessageHandler(null);
- }
- }
- {
- BasicMessageChannel<Object> channel =
- new BasicMessageChannel<>(
- binaryMessenger, "dev.flutter.pigeon.MessageApi.search", getCodec());
- if (api != null) {
- channel.setMessageHandler(
- (message, reply) -> {
- Map<String, Object> wrapped = new HashMap<>();
- try {
- ArrayList<Object> args = (ArrayList<Object>) message;
- MessageSearchRequest requestArg = (MessageSearchRequest) args.get(0);
- if (requestArg == null) {
- throw new NullPointerException("requestArg unexpectedly null.");
- }
- MessageSearchReply output = api.search(requestArg);
- wrapped.put("result", output);
- } catch (Error | RuntimeException exception) {
- wrapped.put("error", wrapError(exception));
- }
- reply.reply(wrapped);
- });
- } else {
- channel.setMessageHandler(null);
- }
- }
- }
- }
-
- private static class MessageNestedApiCodec extends StandardMessageCodec {
- public static final MessageNestedApiCodec INSTANCE = new MessageNestedApiCodec();
-
- private MessageNestedApiCodec() {}
-
- @Override
- protected Object readValueOfType(byte type, ByteBuffer buffer) {
- switch (type) {
- case (byte) 128:
- return MessageNested.fromMap((Map<String, Object>) readValue(buffer));
-
- case (byte) 129:
- return MessageSearchReply.fromMap((Map<String, Object>) readValue(buffer));
-
- case (byte) 130:
- return MessageSearchRequest.fromMap((Map<String, Object>) readValue(buffer));
-
- default:
- return super.readValueOfType(type, buffer);
- }
- }
-
- @Override
- protected void writeValue(ByteArrayOutputStream stream, Object value) {
- if (value instanceof MessageNested) {
- stream.write(128);
- writeValue(stream, ((MessageNested) value).toMap());
- } else if (value instanceof MessageSearchReply) {
- stream.write(129);
- writeValue(stream, ((MessageSearchReply) value).toMap());
- } else if (value instanceof MessageSearchRequest) {
- stream.write(130);
- writeValue(stream, ((MessageSearchRequest) value).toMap());
- } else {
- super.writeValue(stream, value);
- }
- }
- }
-
- /** Generated interface from Pigeon that represents a handler of messages from Flutter. */
- public interface MessageNestedApi {
- @NonNull
- MessageSearchReply search(@NonNull MessageNested nested);
-
- /** The codec used by MessageNestedApi. */
- static MessageCodec<Object> getCodec() {
- return MessageNestedApiCodec.INSTANCE;
- }
-
- /**
- * Sets up an instance of `MessageNestedApi` to handle messages through the `binaryMessenger`.
- */
- static void setup(BinaryMessenger binaryMessenger, MessageNestedApi api) {
- {
- BasicMessageChannel<Object> channel =
- new BasicMessageChannel<>(
- binaryMessenger, "dev.flutter.pigeon.MessageNestedApi.search", getCodec());
- if (api != null) {
- channel.setMessageHandler(
- (message, reply) -> {
- Map<String, Object> wrapped = new HashMap<>();
- try {
- ArrayList<Object> args = (ArrayList<Object>) message;
- MessageNested nestedArg = (MessageNested) args.get(0);
- if (nestedArg == null) {
- throw new NullPointerException("nestedArg unexpectedly null.");
- }
- MessageSearchReply output = api.search(nestedArg);
- wrapped.put("result", output);
- } catch (Error | RuntimeException exception) {
- wrapped.put("error", wrapError(exception));
- }
- reply.reply(wrapped);
- });
- } else {
- channel.setMessageHandler(null);
- }
- }
- }
- }
-
- private static class MessageFlutterSearchApiCodec extends StandardMessageCodec {
- public static final MessageFlutterSearchApiCodec INSTANCE = new MessageFlutterSearchApiCodec();
-
- private MessageFlutterSearchApiCodec() {}
-
- @Override
- protected Object readValueOfType(byte type, ByteBuffer buffer) {
- switch (type) {
- case (byte) 128:
- return MessageSearchReply.fromMap((Map<String, Object>) readValue(buffer));
-
- case (byte) 129:
- return MessageSearchRequest.fromMap((Map<String, Object>) readValue(buffer));
-
- default:
- return super.readValueOfType(type, buffer);
- }
- }
-
- @Override
- protected void writeValue(ByteArrayOutputStream stream, Object value) {
- if (value instanceof MessageSearchReply) {
- stream.write(128);
- writeValue(stream, ((MessageSearchReply) value).toMap());
- } else if (value instanceof MessageSearchRequest) {
- stream.write(129);
- writeValue(stream, ((MessageSearchRequest) value).toMap());
- } else {
- super.writeValue(stream, value);
- }
- }
- }
-
- /** Generated class from Pigeon that represents Flutter messages that can be called from Java. */
- public static class MessageFlutterSearchApi {
- private final BinaryMessenger binaryMessenger;
-
- public MessageFlutterSearchApi(BinaryMessenger argBinaryMessenger) {
- this.binaryMessenger = argBinaryMessenger;
- }
-
- public interface Reply<T> {
- void reply(T reply);
- }
-
- static MessageCodec<Object> getCodec() {
- return MessageFlutterSearchApiCodec.INSTANCE;
- }
-
- public void search(
- @NonNull MessageSearchRequest requestArg, Reply<MessageSearchReply> callback) {
- BasicMessageChannel<Object> channel =
- new BasicMessageChannel<>(
- binaryMessenger, "dev.flutter.pigeon.MessageFlutterSearchApi.search", getCodec());
- channel.send(
- new ArrayList<Object>(Arrays.asList(requestArg)),
- channelReply -> {
- @SuppressWarnings("ConstantConditions")
- MessageSearchReply output = (MessageSearchReply) channelReply;
- callback.reply(output);
- });
- }
- }
-
- private static Map<String, Object> wrapError(Throwable exception) {
- Map<String, Object> errorMap = new HashMap<>();
- errorMap.put("message", exception.toString());
- errorMap.put("code", exception.getClass().getSimpleName());
- errorMap.put(
- "details",
- "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception));
- return errorMap;
- }
-}
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/kotlin/com/example/test_objc/MainActivity.kt b/packages/pigeon/e2e_tests/test_objc/android/app/src/main/kotlin/com/example/test_objc/MainActivity.kt
deleted file mode 100644
index c860c3d..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/kotlin/com/example/test_objc/MainActivity.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-package com.example.test_objc
-
-import androidx.annotation.NonNull;
-import io.flutter.embedding.android.FlutterActivity
-import io.flutter.embedding.engine.FlutterEngine
-import io.flutter.plugins.GeneratedPluginRegistrant
-
-class MainActivity: FlutterActivity() {
- override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
- GeneratedPluginRegistrant.registerWith(flutterEngine);
- }
-}
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/drawable/launch_background.xml b/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/drawable/launch_background.xml
deleted file mode 100644
index 304732f..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/drawable/launch_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Modify this file to customize your launch splash screen -->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:drawable="@android:color/white" />
-
- <!-- You can insert your own image assets here -->
- <!-- <item>
- <bitmap
- android:gravity="center"
- android:src="@mipmap/launch_image" />
- </item> -->
-</layer-list>
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index db77bb4..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 17987b7..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 09d4391..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index d5f1c8d..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 4d6372e..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/values/styles.xml b/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/values/styles.xml
deleted file mode 100644
index 00fa441..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
- <!-- Show a splash screen on the activity. Automatically removed when
- Flutter draws its first frame -->
- <item name="android:windowBackground">@drawable/launch_background</item>
- </style>
-</resources>
diff --git a/packages/pigeon/e2e_tests/test_objc/android/app/src/profile/AndroidManifest.xml b/packages/pigeon/e2e_tests/test_objc/android/app/src/profile/AndroidManifest.xml
deleted file mode 100644
index 8172dab..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/app/src/profile/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.test_objc">
- <!-- Flutter needs it to communicate with the running application
- to allow setting breakpoints, to provide hot reload, etc.
- -->
- <uses-permission android:name="android.permission.INTERNET"/>
-</manifest>
diff --git a/packages/pigeon/e2e_tests/test_objc/android/build.gradle b/packages/pigeon/e2e_tests/test_objc/android/build.gradle
deleted file mode 100644
index 2092f9d..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/build.gradle
+++ /dev/null
@@ -1,31 +0,0 @@
-buildscript {
- ext.kotlin_version = '1.6.0'
- repositories {
- google()
- mavenCentral()
- }
-
- dependencies {
- classpath 'com.android.tools.build:gradle:3.5.0'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- }
-}
-
-allprojects {
- repositories {
- google()
- mavenCentral()
- }
-}
-
-rootProject.buildDir = '../build'
-subprojects {
- project.buildDir = "${rootProject.buildDir}/${project.name}"
-}
-subprojects {
- project.evaluationDependsOn(':app')
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
diff --git a/packages/pigeon/e2e_tests/test_objc/android/gradle.properties b/packages/pigeon/e2e_tests/test_objc/android/gradle.properties
deleted file mode 100644
index 38c8d45..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/gradle.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-org.gradle.jvmargs=-Xmx1536M
-android.enableR8=true
-android.useAndroidX=true
-android.enableJetifier=true
diff --git a/packages/pigeon/e2e_tests/test_objc/android/gradle/wrapper/gradle-wrapper.properties b/packages/pigeon/e2e_tests/test_objc/android/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 296b146..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Fri Jun 23 08:50:38 CEST 2017
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/packages/pigeon/e2e_tests/test_objc/android/settings.gradle b/packages/pigeon/e2e_tests/test_objc/android/settings.gradle
deleted file mode 100644
index 5a2f14f..0000000
--- a/packages/pigeon/e2e_tests/test_objc/android/settings.gradle
+++ /dev/null
@@ -1,15 +0,0 @@
-include ':app'
-
-def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
-
-def plugins = new Properties()
-def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
-if (pluginsFile.exists()) {
- pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
-}
-
-plugins.each { name, path ->
- def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
- include ":$name"
- project(":$name").projectDir = pluginDirectory
-}
diff --git a/packages/pigeon/run_tests.sh b/packages/pigeon/run_tests.sh
index 9bfc9ab..02e82c4 100755
--- a/packages/pigeon/run_tests.sh
+++ b/packages/pigeon/run_tests.sh
@@ -252,13 +252,11 @@
DARTLE_H="e2e_tests/test_objc/ios/Runner/dartle.h"
DARTLE_M="e2e_tests/test_objc/ios/Runner/dartle.m"
DARTLE_DART="e2e_tests/test_objc/lib/dartle.dart"
- PIGEON_JAVA="e2e_tests/test_objc/android/app/src/main/java/io/flutter/plugins/Pigeon.java"
$run_pigeon \
--input pigeons/message.dart \
--dart_out $DARTLE_DART \
--objc_header_out $DARTLE_H \
--objc_source_out $DARTLE_M \
- --java_out $PIGEON_JAVA
dart format $DARTLE_DART
pushd $PWD