From 30429b2f3d016ad17c3060b5440a83ba1b6d44fd Mon Sep 17 00:00:00 2001 From: Audrius Karosevicius Date: Fri, 4 Oct 2019 20:11:32 +0300 Subject: [PATCH 1/6] Migrate path_provider to the new embedding --- .../path_provider/android/gradle.properties | 2 + .../pathprovider/PathProviderPlugin.java | 25 ++++++++ .../PathProviderMethodCallHandler.java | 61 +++++++++++++++++++ .../pathprovider/PathProviderPlugin.java | 54 +--------------- .../android/app/src/main/AndroidManifest.xml | 31 +++++++--- .../pathproviderexample/MainActivity.java | 13 ++++ .../example/android/gradle.properties | 1 + 7 files changed, 128 insertions(+), 59 deletions(-) create mode 100644 packages/path_provider/android/src/main/java/dev/flutter/plugins/pathprovider/PathProviderPlugin.java create mode 100644 packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderMethodCallHandler.java create mode 100644 packages/path_provider/example/android/app/src/main/java/dev/flutter/plugins/pathproviderexample/MainActivity.java diff --git a/packages/path_provider/android/gradle.properties b/packages/path_provider/android/gradle.properties index 8bd86f680510..08f2b5f91bff 100644 --- a/packages/path_provider/android/gradle.properties +++ b/packages/path_provider/android/gradle.properties @@ -1 +1,3 @@ org.gradle.jvmargs=-Xmx1536M +android.enableJetifier=true +android.useAndroidX=true diff --git a/packages/path_provider/android/src/main/java/dev/flutter/plugins/pathprovider/PathProviderPlugin.java b/packages/path_provider/android/src/main/java/dev/flutter/plugins/pathprovider/PathProviderPlugin.java new file mode 100644 index 000000000000..d7c97ad23e6b --- /dev/null +++ b/packages/path_provider/android/src/main/java/dev/flutter/plugins/pathprovider/PathProviderPlugin.java @@ -0,0 +1,25 @@ +// Copyright 2019 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 dev.flutter.plugins.pathprovider; + +import io.flutter.embedding.engine.plugins.FlutterPlugin; +import io.flutter.plugin.common.MethodChannel; +import io.flutter.plugins.pathprovider.PathProviderMethodCallHandler; + +public class PathProviderPlugin implements FlutterPlugin { + @Override + public void onAttachedToEngine(FlutterPluginBinding binding) { + + MethodChannel channel = + new MethodChannel( + binding.getFlutterEngine().getDartExecutor(), "plugins.flutter.io/path_provider"); + PathProviderMethodCallHandler handler = + new PathProviderMethodCallHandler(binding.getApplicationContext()); + channel.setMethodCallHandler(handler); + } + + @Override + public void onDetachedFromEngine(FlutterPluginBinding flutterPluginBinding) {} +} diff --git a/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderMethodCallHandler.java b/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderMethodCallHandler.java new file mode 100644 index 000000000000..ba5829f2ed8a --- /dev/null +++ b/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderMethodCallHandler.java @@ -0,0 +1,61 @@ +// Copyright 2019 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 io.flutter.plugins.pathprovider; + +import android.content.Context; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel.MethodCallHandler; +import io.flutter.plugin.common.MethodChannel.Result; +import io.flutter.util.PathUtils; +import java.io.File; + +public class PathProviderMethodCallHandler implements MethodCallHandler { + + private final Context context; + + public PathProviderMethodCallHandler(Context context) { + this.context = context; + } + + @Override + public void onMethodCall(MethodCall call, Result result) { + switch (call.method) { + case "getTemporaryDirectory": + result.success(getPathProviderTemporaryDirectory()); + break; + case "getApplicationDocumentsDirectory": + result.success(getPathProviderApplicationDocumentsDirectory()); + break; + case "getStorageDirectory": + result.success(getPathProviderStorageDirectory()); + break; + case "getApplicationSupportDirectory": + result.success(getApplicationSupportDirectory()); + break; + default: + result.notImplemented(); + } + } + + private String getPathProviderTemporaryDirectory() { + return context.getCacheDir().getPath(); + } + + private String getApplicationSupportDirectory() { + return PathUtils.getFilesDir(context); + } + + private String getPathProviderApplicationDocumentsDirectory() { + return PathUtils.getDataDirectory(context); + } + + private String getPathProviderStorageDirectory() { + final File dir = context.getExternalFilesDir(null); + if (dir == null) { + return null; + } + return dir.getAbsolutePath(); + } +} diff --git a/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java b/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java index 271236be060a..8f501cdedc2e 100644 --- a/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java +++ b/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java @@ -4,65 +4,15 @@ package io.flutter.plugins.pathprovider; -import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; -import io.flutter.plugin.common.MethodChannel.MethodCallHandler; -import io.flutter.plugin.common.MethodChannel.Result; import io.flutter.plugin.common.PluginRegistry.Registrar; -import io.flutter.util.PathUtils; -import java.io.File; -public class PathProviderPlugin implements MethodCallHandler { - private final Registrar mRegistrar; +public class PathProviderPlugin { public static void registerWith(Registrar registrar) { MethodChannel channel = new MethodChannel(registrar.messenger(), "plugins.flutter.io/path_provider"); - PathProviderPlugin instance = new PathProviderPlugin(registrar); + PathProviderMethodCallHandler instance = new PathProviderMethodCallHandler(registrar.context()); channel.setMethodCallHandler(instance); } - - private PathProviderPlugin(Registrar registrar) { - this.mRegistrar = registrar; - } - - @Override - public void onMethodCall(MethodCall call, Result result) { - switch (call.method) { - case "getTemporaryDirectory": - result.success(getPathProviderTemporaryDirectory()); - break; - case "getApplicationDocumentsDirectory": - result.success(getPathProviderApplicationDocumentsDirectory()); - break; - case "getStorageDirectory": - result.success(getPathProviderStorageDirectory()); - break; - case "getApplicationSupportDirectory": - result.success(getApplicationSupportDirectory()); - break; - default: - result.notImplemented(); - } - } - - private String getPathProviderTemporaryDirectory() { - return mRegistrar.context().getCacheDir().getPath(); - } - - private String getApplicationSupportDirectory() { - return PathUtils.getFilesDir(mRegistrar.context()); - } - - private String getPathProviderApplicationDocumentsDirectory() { - return PathUtils.getDataDirectory(mRegistrar.context()); - } - - private String getPathProviderStorageDirectory() { - final File dir = mRegistrar.context().getExternalFilesDir(null); - if (dir == null) { - return null; - } - return dir.getAbsolutePath(); - } } diff --git a/packages/path_provider/example/android/app/src/main/AndroidManifest.xml b/packages/path_provider/example/android/app/src/main/AndroidManifest.xml index 793c13b6e612..860111496406 100644 --- a/packages/path_provider/example/android/app/src/main/AndroidManifest.xml +++ b/packages/path_provider/example/android/app/src/main/AndroidManifest.xml @@ -3,13 +3,30 @@ - - + + + + + + + + diff --git a/packages/path_provider/example/android/app/src/main/java/dev/flutter/plugins/pathproviderexample/MainActivity.java b/packages/path_provider/example/android/app/src/main/java/dev/flutter/plugins/pathproviderexample/MainActivity.java new file mode 100644 index 000000000000..4a2f5d53e40c --- /dev/null +++ b/packages/path_provider/example/android/app/src/main/java/dev/flutter/plugins/pathproviderexample/MainActivity.java @@ -0,0 +1,13 @@ +package dev.flutter.plugins.pathproviderexample; + +import dev.flutter.plugins.pathprovider.PathProviderPlugin; +import io.flutter.embedding.android.FlutterActivity; +import io.flutter.embedding.engine.FlutterEngine; + +public class MainActivity extends FlutterActivity { + @Override + public void configureFlutterEngine(FlutterEngine flutterEngine) { + super.configureFlutterEngine(flutterEngine); + flutterEngine.getPlugins().add(new PathProviderPlugin()); + } +} diff --git a/packages/path_provider/example/android/gradle.properties b/packages/path_provider/example/android/gradle.properties index 8bd86f680510..7be3d8b46841 100644 --- a/packages/path_provider/example/android/gradle.properties +++ b/packages/path_provider/example/android/gradle.properties @@ -1 +1,2 @@ org.gradle.jvmargs=-Xmx1536M +android.enableR8=true From 030e640890d56f439237a28e2a941d821a38cd3b Mon Sep 17 00:00:00 2001 From: Audrius Karosevicius Date: Mon, 14 Oct 2019 09:40:54 +0300 Subject: [PATCH 2/6] Making activity with embeddingV2 as main launcher --- packages/path_provider/CHANGELOG.md | 5 +++++ .../pathprovider/PathProviderPlugin.java | 6 ++--- .../PathProviderMethodCallHandler.java | 3 ++- .../android/app/src/main/AndroidManifest.xml | 22 +++++++++---------- .../pathproviderexample/MainActivity.java | 13 ----------- .../EmbeddingV1Activity.java | 18 +++++++++++++++ .../pathproviderexample/MainActivity.java | 13 +++++------ .../example/android/gradle.properties | 2 ++ 8 files changed, 46 insertions(+), 36 deletions(-) delete mode 100644 packages/path_provider/example/android/app/src/main/java/dev/flutter/plugins/pathproviderexample/MainActivity.java create mode 100644 packages/path_provider/example/android/app/src/main/java/io/flutter/plugins/pathproviderexample/EmbeddingV1Activity.java diff --git a/packages/path_provider/CHANGELOG.md b/packages/path_provider/CHANGELOG.md index 3bab2b1b53bf..a220d66fb87d 100644 --- a/packages/path_provider/CHANGELOG.md +++ b/packages/path_provider/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.3.2 + +* Support the v2 Android embedder. +* Migrate to using the new e2e test binding. + ## 1.3.1 * Define clang module for iOS. diff --git a/packages/path_provider/android/src/main/java/dev/flutter/plugins/pathprovider/PathProviderPlugin.java b/packages/path_provider/android/src/main/java/dev/flutter/plugins/pathprovider/PathProviderPlugin.java index d7c97ad23e6b..28ddc85c97d4 100644 --- a/packages/path_provider/android/src/main/java/dev/flutter/plugins/pathprovider/PathProviderPlugin.java +++ b/packages/path_provider/android/src/main/java/dev/flutter/plugins/pathprovider/PathProviderPlugin.java @@ -4,14 +4,14 @@ package dev.flutter.plugins.pathprovider; +import androidx.annotation.NonNull; import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.plugin.common.MethodChannel; import io.flutter.plugins.pathprovider.PathProviderMethodCallHandler; public class PathProviderPlugin implements FlutterPlugin { @Override - public void onAttachedToEngine(FlutterPluginBinding binding) { - + public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) { MethodChannel channel = new MethodChannel( binding.getFlutterEngine().getDartExecutor(), "plugins.flutter.io/path_provider"); @@ -21,5 +21,5 @@ public void onAttachedToEngine(FlutterPluginBinding binding) { } @Override - public void onDetachedFromEngine(FlutterPluginBinding flutterPluginBinding) {} + public void onDetachedFromEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {} } diff --git a/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderMethodCallHandler.java b/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderMethodCallHandler.java index ba5829f2ed8a..d7897035e4c4 100644 --- a/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderMethodCallHandler.java +++ b/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderMethodCallHandler.java @@ -5,6 +5,7 @@ package io.flutter.plugins.pathprovider; import android.content.Context; +import androidx.annotation.NonNull; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel.MethodCallHandler; import io.flutter.plugin.common.MethodChannel.Result; @@ -20,7 +21,7 @@ public PathProviderMethodCallHandler(Context context) { } @Override - public void onMethodCall(MethodCall call, Result result) { + public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { switch (call.method) { case "getTemporaryDirectory": result.success(getPathProviderTemporaryDirectory()); diff --git a/packages/path_provider/example/android/app/src/main/AndroidManifest.xml b/packages/path_provider/example/android/app/src/main/AndroidManifest.xml index 860111496406..321e0f0c4b76 100644 --- a/packages/path_provider/example/android/app/src/main/AndroidManifest.xml +++ b/packages/path_provider/example/android/app/src/main/AndroidManifest.xml @@ -1,26 +1,24 @@ - + + android:label="path_provider_example" + tools:ignore="GoogleAppIndexingWarning"> - - - - - + android:windowSoftInputMode="adjustResize" /> - - + + diff --git a/packages/path_provider/example/android/app/src/main/java/dev/flutter/plugins/pathproviderexample/MainActivity.java b/packages/path_provider/example/android/app/src/main/java/dev/flutter/plugins/pathproviderexample/MainActivity.java deleted file mode 100644 index 4a2f5d53e40c..000000000000 --- a/packages/path_provider/example/android/app/src/main/java/dev/flutter/plugins/pathproviderexample/MainActivity.java +++ /dev/null @@ -1,13 +0,0 @@ -package dev.flutter.plugins.pathproviderexample; - -import dev.flutter.plugins.pathprovider.PathProviderPlugin; -import io.flutter.embedding.android.FlutterActivity; -import io.flutter.embedding.engine.FlutterEngine; - -public class MainActivity extends FlutterActivity { - @Override - public void configureFlutterEngine(FlutterEngine flutterEngine) { - super.configureFlutterEngine(flutterEngine); - flutterEngine.getPlugins().add(new PathProviderPlugin()); - } -} diff --git a/packages/path_provider/example/android/app/src/main/java/io/flutter/plugins/pathproviderexample/EmbeddingV1Activity.java b/packages/path_provider/example/android/app/src/main/java/io/flutter/plugins/pathproviderexample/EmbeddingV1Activity.java new file mode 100644 index 000000000000..b9eb224d0d03 --- /dev/null +++ b/packages/path_provider/example/android/app/src/main/java/io/flutter/plugins/pathproviderexample/EmbeddingV1Activity.java @@ -0,0 +1,18 @@ +// Copyright 2017 The Chromium 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 io.flutter.plugins.pathproviderexample; + +import android.os.Bundle; +import io.flutter.app.FlutterActivity; +import io.flutter.plugins.GeneratedPluginRegistrant; + +public class EmbeddingV1Activity extends FlutterActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + GeneratedPluginRegistrant.registerWith(this); + } +} diff --git a/packages/path_provider/example/android/app/src/main/java/io/flutter/plugins/pathproviderexample/MainActivity.java b/packages/path_provider/example/android/app/src/main/java/io/flutter/plugins/pathproviderexample/MainActivity.java index 9bd248e435b4..9f819158b3ec 100644 --- a/packages/path_provider/example/android/app/src/main/java/io/flutter/plugins/pathproviderexample/MainActivity.java +++ b/packages/path_provider/example/android/app/src/main/java/io/flutter/plugins/pathproviderexample/MainActivity.java @@ -4,15 +4,14 @@ package io.flutter.plugins.pathproviderexample; -import android.os.Bundle; -import io.flutter.app.FlutterActivity; -import io.flutter.plugins.GeneratedPluginRegistrant; +import dev.flutter.plugins.pathprovider.PathProviderPlugin; +import io.flutter.embedding.android.FlutterActivity; +import io.flutter.embedding.engine.FlutterEngine; public class MainActivity extends FlutterActivity { - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - GeneratedPluginRegistrant.registerWith(this); + public void configureFlutterEngine(FlutterEngine flutterEngine) { + super.configureFlutterEngine(flutterEngine); + flutterEngine.getPlugins().add(new PathProviderPlugin()); } } diff --git a/packages/path_provider/example/android/gradle.properties b/packages/path_provider/example/android/gradle.properties index 7be3d8b46841..db69c65482ce 100644 --- a/packages/path_provider/example/android/gradle.properties +++ b/packages/path_provider/example/android/gradle.properties @@ -1,2 +1,4 @@ org.gradle.jvmargs=-Xmx1536M +android.enableJetifier=false +android.useAndroidX=true android.enableR8=true From 2d0de32767e3afda0f8f226e86d8d6914f239933 Mon Sep 17 00:00:00 2001 From: Audrius Karosevicius Date: Wed, 16 Oct 2019 13:11:24 +0300 Subject: [PATCH 3/6] Add TODO comment --- .../io/flutter/plugins/pathproviderexample/MainActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/path_provider/example/android/app/src/main/java/io/flutter/plugins/pathproviderexample/MainActivity.java b/packages/path_provider/example/android/app/src/main/java/io/flutter/plugins/pathproviderexample/MainActivity.java index 9f819158b3ec..0f757eb339f2 100644 --- a/packages/path_provider/example/android/app/src/main/java/io/flutter/plugins/pathproviderexample/MainActivity.java +++ b/packages/path_provider/example/android/app/src/main/java/io/flutter/plugins/pathproviderexample/MainActivity.java @@ -12,6 +12,8 @@ public class MainActivity extends FlutterActivity { @Override public void configureFlutterEngine(FlutterEngine flutterEngine) { super.configureFlutterEngine(flutterEngine); + // TODO(jackson): Remove this once v2 of GeneratedPluginRegistrant rolls to stable. + // https://github.com/flutter/flutter/issues/42694 flutterEngine.getPlugins().add(new PathProviderPlugin()); } } From 3e905311cc5db7b669ec26d28b2b8f62f5e71460 Mon Sep 17 00:00:00 2001 From: Audrius Karosevicius Date: Wed, 16 Oct 2019 13:21:59 +0300 Subject: [PATCH 4/6] Adding lifecycle deps workaround --- packages/path_provider/android/build.gradle | 25 +++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/packages/path_provider/android/build.gradle b/packages/path_provider/android/build.gradle index 191930fee299..b5f8221c0543 100644 --- a/packages/path_provider/android/build.gradle +++ b/packages/path_provider/android/build.gradle @@ -45,3 +45,28 @@ android { disable 'InvalidPackage' } } + +// TODO(amirh): Remove this hack once androidx.lifecycle is included on stable. https://github.com/flutter/flutter/issues/42348 +afterEvaluate { + def containsEmbeddingDependencies = false + for (def configuration : configurations.all) { + for (def dependency : configuration.dependencies) { + if (dependency.group == 'io.flutter' && + dependency.name.startsWith('flutter_embedding') && + dependency.isTransitive()) + { + containsEmbeddingDependencies = true + break + } + } + } + if (!containsEmbeddingDependencies) { + android { + dependencies { + def lifecycle_version = "2.1.0" + api "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" + api "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" + } + } + } +} From b746aedc6cfca64bf073a87abdaad066cd8339c0 Mon Sep 17 00:00:00 2001 From: Audrius Karosevicius Date: Wed, 16 Oct 2019 13:54:36 +0300 Subject: [PATCH 5/6] Adding e2e tests --- .../example/android/app/build.gradle | 4 ++-- .../EmbeddingV1ActivityTest.java | 19 +++++++++++++++++++ .../pathproviderexample/MainActivityTest.java | 15 +++++++++++++++ packages/path_provider/example/pubspec.yaml | 1 + ...h_provider.dart => path_provider_e2e.dart} | 6 ++---- ..._test.dart => path_provider_e2e_test.dart} | 4 +++- 6 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 packages/path_provider/example/android/app/src/androidTest/java/io/flutter/plugins/pathproviderexample/EmbeddingV1ActivityTest.java create mode 100644 packages/path_provider/example/android/app/src/androidTest/java/io/flutter/plugins/pathproviderexample/MainActivityTest.java rename packages/path_provider/example/test_driver/{path_provider.dart => path_provider_e2e.dart} (91%) rename packages/path_provider/example/test_driver/{path_provider_test.dart => path_provider_e2e_test.dart} (75%) diff --git a/packages/path_provider/example/android/app/build.gradle b/packages/path_provider/example/android/app/build.gradle index 2ca6a7a4add3..c8efe0aeae96 100644 --- a/packages/path_provider/example/android/app/build.gradle +++ b/packages/path_provider/example/android/app/build.gradle @@ -55,6 +55,6 @@ flutter { dependencies { testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.1.1' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + androidTestImplementation 'androidx.test:runner:1.2.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' } diff --git a/packages/path_provider/example/android/app/src/androidTest/java/io/flutter/plugins/pathproviderexample/EmbeddingV1ActivityTest.java b/packages/path_provider/example/android/app/src/androidTest/java/io/flutter/plugins/pathproviderexample/EmbeddingV1ActivityTest.java new file mode 100644 index 000000000000..1ce0d1050e1a --- /dev/null +++ b/packages/path_provider/example/android/app/src/androidTest/java/io/flutter/plugins/pathproviderexample/EmbeddingV1ActivityTest.java @@ -0,0 +1,19 @@ +// Copyright 2019, the Chromium project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +package io.flutter.plugins.pathproviderexample; + +import static org.junit.Assert.*; + +import androidx.test.rule.ActivityTestRule; +import dev.flutter.plugins.e2e.FlutterRunner; +import org.junit.Rule; +import org.junit.runner.RunWith; + +@RunWith(FlutterRunner.class) +public class EmbeddingV1ActivityTest { + @Rule + public ActivityTestRule rule = + new ActivityTestRule<>(EmbeddingV1Activity.class); +} diff --git a/packages/path_provider/example/android/app/src/androidTest/java/io/flutter/plugins/pathproviderexample/MainActivityTest.java b/packages/path_provider/example/android/app/src/androidTest/java/io/flutter/plugins/pathproviderexample/MainActivityTest.java new file mode 100644 index 000000000000..bb37ccacd29e --- /dev/null +++ b/packages/path_provider/example/android/app/src/androidTest/java/io/flutter/plugins/pathproviderexample/MainActivityTest.java @@ -0,0 +1,15 @@ +// Copyright 2019, the Chromium project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +package io.flutter.plugins.pathproviderexample; + +import androidx.test.rule.ActivityTestRule; +import dev.flutter.plugins.e2e.FlutterRunner; +import org.junit.Rule; +import org.junit.runner.RunWith; + +@RunWith(FlutterRunner.class) +public class MainActivityTest { + @Rule public ActivityTestRule rule = new ActivityTestRule<>(MainActivity.class); +} diff --git a/packages/path_provider/example/pubspec.yaml b/packages/path_provider/example/pubspec.yaml index 9daa92b8c22e..ac976b4f3997 100644 --- a/packages/path_provider/example/pubspec.yaml +++ b/packages/path_provider/example/pubspec.yaml @@ -7,6 +7,7 @@ dependencies: path_provider: path: ../ uuid: "^1.0.0" + e2e: "^0.2.1" dev_dependencies: flutter_driver: diff --git a/packages/path_provider/example/test_driver/path_provider.dart b/packages/path_provider/example/test_driver/path_provider_e2e.dart similarity index 91% rename from packages/path_provider/example/test_driver/path_provider.dart rename to packages/path_provider/example/test_driver/path_provider_e2e.dart index 8438965f9646..2066b8724c3b 100644 --- a/packages/path_provider/example/test_driver/path_provider.dart +++ b/packages/path_provider/example/test_driver/path_provider_e2e.dart @@ -5,15 +5,13 @@ import 'dart:async'; import 'dart:io'; -import 'package:flutter_driver/driver_extension.dart'; +import 'package:e2e/e2e.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:path_provider/path_provider.dart'; import 'package:uuid/uuid.dart'; void main() { - final Completer allTestsCompleter = Completer(); - enableFlutterDriverExtension(handler: (_) => allTestsCompleter.future); - tearDownAll(() => allTestsCompleter.complete(null)); + E2EWidgetsFlutterBinding.ensureInitialized(); test('getTemporaryDirectory', () async { final Directory result = await getTemporaryDirectory(); diff --git a/packages/path_provider/example/test_driver/path_provider_test.dart b/packages/path_provider/example/test_driver/path_provider_e2e_test.dart similarity index 75% rename from packages/path_provider/example/test_driver/path_provider_test.dart rename to packages/path_provider/example/test_driver/path_provider_e2e_test.dart index b0d3305cd652..b88b8c4f81b2 100644 --- a/packages/path_provider/example/test_driver/path_provider_test.dart +++ b/packages/path_provider/example/test_driver/path_provider_e2e_test.dart @@ -8,6 +8,8 @@ import 'package:flutter_driver/flutter_driver.dart'; Future main() async { final FlutterDriver driver = await FlutterDriver.connect(); - await driver.requestData(null, timeout: const Duration(minutes: 1)); + final String result = + await driver.requestData(null, timeout: const Duration(minutes: 1)); driver.close(); + exit(result == 'pass' ? 0 : 1); } From 06f572bd40d29a9cf998d201922ab518fde66553 Mon Sep 17 00:00:00 2001 From: Audrius Karosevicius Date: Wed, 16 Oct 2019 15:40:18 +0300 Subject: [PATCH 6/6] fix missing import --- .../example/test_driver/path_provider_e2e_test.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/path_provider/example/test_driver/path_provider_e2e_test.dart b/packages/path_provider/example/test_driver/path_provider_e2e_test.dart index b88b8c4f81b2..2e5c27fd402e 100644 --- a/packages/path_provider/example/test_driver/path_provider_e2e_test.dart +++ b/packages/path_provider/example/test_driver/path_provider_e2e_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'dart:async'; +import 'dart:io'; import 'package:flutter_driver/flutter_driver.dart';