31 FlutterJNI mockFlutterJNI = mock(FlutterJNI.class);
32 FlutterJNI flutterJNI = mock(FlutterJNI.class);
34 when(flutterJNI.isAttached()).thenAnswer(invocation -> jniAttached);
35 doAnswer(invocation -> jniAttached =
true).when(flutterJNI).attachToNative();
37 FlutterLoader flutterLoader =
new FlutterLoader(mockFlutterJNI);
41 new FlutterEngine(ApplicationProvider.getApplicationContext(), flutterLoader, flutterJNI);
45 PluginThatAccessesAssets plugin =
new PluginThatAccessesAssets();
46 flutterEngine.getPlugins().add(plugin);
49 assertEquals(
"flutter_assets/fake_asset.jpg", plugin.getAssetPathBasedOnName());
51 "flutter_assets/packages/fakepackage/fake_asset.jpg",
52 plugin.getAssetPathBasedOnNameAndPackage());
53 assertEquals(
"flutter_assets/some/path/fake_asset.jpg", plugin.getAssetPathBasedOnSubpath());
55 "flutter_assets/packages/fakepackage/some/path/fake_asset.jpg",
56 plugin.getAssetPathBasedOnSubpathAndPackage());
59 private static class PluginThatAccessesAssets
implements FlutterPlugin {
60 private String assetPathBasedOnName;
61 private String assetPathBasedOnNameAndPackage;
62 private String assetPathBasedOnSubpath;
63 private String assetPathBasedOnSubpathAndPackage;
65 public String getAssetPathBasedOnName() {
66 return assetPathBasedOnName;
69 public String getAssetPathBasedOnNameAndPackage() {
70 return assetPathBasedOnNameAndPackage;
73 public String getAssetPathBasedOnSubpath() {
74 return assetPathBasedOnSubpath;
77 public String getAssetPathBasedOnSubpathAndPackage() {
78 return assetPathBasedOnSubpathAndPackage;
82 public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
83 assetPathBasedOnName = binding.getFlutterAssets().getAssetFilePathByName(
"fake_asset.jpg");
85 assetPathBasedOnNameAndPackage =
86 binding.getFlutterAssets().getAssetFilePathByName(
"fake_asset.jpg",
"fakepackage");
88 assetPathBasedOnSubpath =
89 binding.getFlutterAssets().getAssetFilePathByName(
"some/path/fake_asset.jpg");
91 assetPathBasedOnSubpathAndPackage =
94 .getAssetFilePathByName(
"some/path/fake_asset.jpg",
"fakepackage");
98 public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {}