Skip to content

Commit 2e6ef6d

Browse files
committed
Revert "Started using FlutterEngineGroups by default on Android (flutter#37822)"
This reverts commit 47a358c. This commit caused a regression in the entrypoint_dart_registrant test.
1 parent cac228a commit 2e6ef6d

11 files changed

+16
-126
lines changed

shell/platform/android/io/flutter/embedding/android/FlutterActivity.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,7 @@
149149
*
150150
* <pre>{@code
151151
* // Create and pre-warm a FlutterEngine.
152-
* FlutterEngineGroup group = new FlutterEngineGroup(context);
153-
* FlutterEngine flutterEngine = group.createAndRunDefaultEngine(context);
152+
* FlutterEngine flutterEngine = new FlutterEngine(context);
154153
* flutterEngine.getDartExecutor().executeDartEntrypoint(DartEntrypoint.createDefault());
155154
*
156155
* // Cache the pre-warmed FlutterEngine in the FlutterEngineCache.

shell/platform/android/io/flutter/embedding/android/FlutterActivityAndFragmentDelegate.java

+5-17
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ public interface DelegateFactory {
9090
private boolean isFirstFrameRendered;
9191
private boolean isAttached;
9292
private Integer previousVisibility;
93-
@Nullable private FlutterEngineGroup engineGroup;
9493

9594
@NonNull
9695
private final FlutterUiDisplayListener flutterUiDisplayListener =
@@ -110,15 +109,8 @@ public void onFlutterUiNoLongerDisplayed() {
110109
};
111110

112111
FlutterActivityAndFragmentDelegate(@NonNull Host host) {
113-
this(host, null);
114-
}
115-
116-
FlutterActivityAndFragmentDelegate(@NonNull Host host, @Nullable FlutterEngineGroup engineGroup) {
117112
this.host = host;
118113
this.isFirstFrameRendered = false;
119-
if (engineGroup != null) {
120-
this.engineGroup = engineGroup;
121-
}
122114
}
123115

124116
/**
@@ -306,16 +298,12 @@ void onAttach(@NonNull Context context) {
306298
TAG,
307299
"No preferred FlutterEngine was provided. Creating a new FlutterEngine for"
308300
+ " this FlutterFragment.");
309-
310-
FlutterEngineGroup group =
311-
engineGroup == null
312-
? new FlutterEngineGroup(host.getContext(), host.getFlutterShellArgs().toArray())
313-
: engineGroup;
314301
flutterEngine =
315-
group.createAndRunEngine(
316-
new FlutterEngineGroup.Options(host.getContext())
317-
.setAutomaticallyRegisterPlugins(false)
318-
.setWaitForRestorationData(host.shouldRestoreAndSaveState()));
302+
new FlutterEngine(
303+
host.getContext(),
304+
host.getFlutterShellArgs().toArray(),
305+
/*automaticallyRegisterPlugins=*/ false,
306+
/*willProvideRestorationData=*/ host.shouldRestoreAndSaveState());
319307
isFlutterEngineFromHost = false;
320308
}
321309

shell/platform/android/io/flutter/embedding/android/FlutterFragment.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@
7979
*
8080
* <pre>{@code
8181
* // Create and pre-warm a FlutterEngine.
82-
* FlutterEngineGroup group = new FlutterEngineGroup(context);
83-
* FlutterEngine flutterEngine = group.createAndRunDefaultEngine(context);
82+
* FlutterEngine flutterEngine = new FlutterEngine(context);
8483
* flutterEngine
8584
* .getDartExecutor()
8685
* .executeDartEntrypoint(DartEntrypoint.createDefault());

shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java

+1-24
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import android.content.res.AssetManager;
1010
import androidx.annotation.NonNull;
1111
import androidx.annotation.Nullable;
12-
import androidx.annotation.VisibleForTesting;
1312
import io.flutter.FlutterInjector;
1413
import io.flutter.Log;
1514
import io.flutter.embedding.engine.dart.DartExecutor;
@@ -280,27 +279,6 @@ public FlutterEngine(
280279
@Nullable String[] dartVmArgs,
281280
boolean automaticallyRegisterPlugins,
282281
boolean waitForRestorationData) {
283-
this(
284-
context,
285-
flutterLoader,
286-
flutterJNI,
287-
platformViewsController,
288-
dartVmArgs,
289-
automaticallyRegisterPlugins,
290-
waitForRestorationData,
291-
null);
292-
}
293-
294-
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
295-
public FlutterEngine(
296-
@NonNull Context context,
297-
@Nullable FlutterLoader flutterLoader,
298-
@NonNull FlutterJNI flutterJNI,
299-
@NonNull PlatformViewsController platformViewsController,
300-
@Nullable String[] dartVmArgs,
301-
boolean automaticallyRegisterPlugins,
302-
boolean waitForRestorationData,
303-
@Nullable FlutterEngineGroup group) {
304282
AssetManager assetManager;
305283
try {
306284
assetManager = context.createPackageContext(context.getPackageName(), 0).getAssets();
@@ -369,8 +347,7 @@ public FlutterEngine(
369347
this.platformViewsController.onAttachedToJNI();
370348

371349
this.pluginRegistry =
372-
new FlutterEngineConnectionRegistry(
373-
context.getApplicationContext(), this, flutterLoader, group);
350+
new FlutterEngineConnectionRegistry(context.getApplicationContext(), this, flutterLoader);
374351

375352
localizationPlugin.sendLocalesToFlutter(context.getResources().getConfiguration());
376353

shell/platform/android/io/flutter/embedding/engine/FlutterEngineConnectionRegistry.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,7 @@
9797
FlutterEngineConnectionRegistry(
9898
@NonNull Context appContext,
9999
@NonNull FlutterEngine flutterEngine,
100-
@NonNull FlutterLoader flutterLoader,
101-
@Nullable FlutterEngineGroup group) {
100+
@NonNull FlutterLoader flutterLoader) {
102101
this.flutterEngine = flutterEngine;
103102
pluginBinding =
104103
new FlutterPlugin.FlutterPluginBinding(
@@ -107,8 +106,7 @@
107106
flutterEngine.getDartExecutor(),
108107
flutterEngine.getRenderer(),
109108
flutterEngine.getPlatformViewsController().getRegistry(),
110-
new DefaultFlutterAssets(flutterLoader),
111-
group);
109+
new DefaultFlutterAssets(flutterLoader));
112110
}
113111

114112
public void destroy() {

shell/platform/android/io/flutter/embedding/engine/FlutterEngineGroup.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,7 @@ public void onEngineWillDestroy() {
210210
platformViewsController, // PlatformViewsController.
211211
null, // String[]. The Dart VM has already started, this arguments will have no effect.
212212
automaticallyRegisterPlugins, // boolean.
213-
waitForRestorationData, // boolean.
214-
this);
213+
waitForRestorationData); // boolean.
215214
}
216215

217216
/** Options that control how a FlutterEngine should be created. */

shell/platform/android/io/flutter/embedding/engine/plugins/FlutterPlugin.java

+1-21
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66

77
import android.content.Context;
88
import androidx.annotation.NonNull;
9-
import androidx.annotation.Nullable;
109
import androidx.lifecycle.Lifecycle;
1110
import io.flutter.embedding.engine.FlutterEngine;
12-
import io.flutter.embedding.engine.FlutterEngineGroup;
1311
import io.flutter.plugin.common.BinaryMessenger;
1412
import io.flutter.plugin.platform.PlatformViewRegistry;
1513
import io.flutter.view.TextureRegistry;
@@ -109,23 +107,20 @@ class FlutterPluginBinding {
109107
private final TextureRegistry textureRegistry;
110108
private final PlatformViewRegistry platformViewRegistry;
111109
private final FlutterAssets flutterAssets;
112-
private final FlutterEngineGroup group;
113110

114111
public FlutterPluginBinding(
115112
@NonNull Context applicationContext,
116113
@NonNull FlutterEngine flutterEngine,
117114
@NonNull BinaryMessenger binaryMessenger,
118115
@NonNull TextureRegistry textureRegistry,
119116
@NonNull PlatformViewRegistry platformViewRegistry,
120-
@NonNull FlutterAssets flutterAssets,
121-
@Nullable FlutterEngineGroup group) {
117+
@NonNull FlutterAssets flutterAssets) {
122118
this.applicationContext = applicationContext;
123119
this.flutterEngine = flutterEngine;
124120
this.binaryMessenger = binaryMessenger;
125121
this.textureRegistry = textureRegistry;
126122
this.platformViewRegistry = platformViewRegistry;
127123
this.flutterAssets = flutterAssets;
128-
this.group = group;
129124
}
130125

131126
@NonNull
@@ -162,21 +157,6 @@ public PlatformViewRegistry getPlatformViewRegistry() {
162157
public FlutterAssets getFlutterAssets() {
163158
return flutterAssets;
164159
}
165-
166-
/**
167-
* Accessor for the {@link FlutterEngineGroup} used to create the {@link FlutterEngine} for the
168-
* app.
169-
*
170-
* <p>This is useful in the rare case that a plugin has to spawn its own engine (for example,
171-
* running an engine the background). The result is nullable since old versions of Flutter and
172-
* custom setups may not have used a {@link FlutterEngineGroup}. Failing to use this when it is
173-
* available will result in suboptimal performance and odd behaviors related to Dart isolate
174-
* groups.
175-
*/
176-
@Nullable
177-
public FlutterEngineGroup getEngineGroup() {
178-
return group;
179-
}
180160
}
181161

182162
/** Provides Flutter plugins with access to Flutter asset information. */

shell/platform/android/io/flutter/embedding/engine/plugins/shim/ShimPluginRegistry.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@
2525
*
2626
* <pre>
2727
* // Create the FlutterEngine that will back the Flutter UI.
28-
* FlutterEngineGroup group = new FlutterEngineGroup(context);
29-
* FlutterEngine flutterEngine = group.createAndRunDefaultEngine(context);
28+
* FlutterEngine flutterEngine = new FlutterEngine(context);
3029
*
3130
* // Create a ShimPluginRegistry and wrap the FlutterEngine with the shim.
3231
* ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(flutterEngine, platformViewsController);

shell/platform/android/test/io/flutter/embedding/android/FlutterActivityAndFragmentDelegateTest.java

-16
Original file line numberDiff line numberDiff line change
@@ -1159,22 +1159,6 @@ public void itDoesNotDelayTheFirstDrawWhenRequestedAndWithAProvidedSplashScreen(
11591159
assertNull(delegate.activePreDrawListener);
11601160
}
11611161

1162-
@Test
1163-
public void usesFlutterEngineGroup() {
1164-
FlutterEngineGroup mockEngineGroup = mock(FlutterEngineGroup.class);
1165-
when(mockEngineGroup.createAndRunEngine(any(FlutterEngineGroup.Options.class)))
1166-
.thenReturn(mockFlutterEngine);
1167-
FlutterActivityAndFragmentDelegate.Host host =
1168-
mock(FlutterActivityAndFragmentDelegate.Host.class);
1169-
when(mockHost.getContext()).thenReturn(ctx);
1170-
1171-
FlutterActivityAndFragmentDelegate delegate =
1172-
new FlutterActivityAndFragmentDelegate(mockHost, mockEngineGroup);
1173-
delegate.onAttach(ctx);
1174-
FlutterEngine engineUnderTest = delegate.getFlutterEngine();
1175-
assertEquals(engineUnderTest, mockFlutterEngine);
1176-
}
1177-
11781162
/**
11791163
* Creates a mock {@link io.flutter.embedding.engine.FlutterEngine}.
11801164
*

shell/platform/android/test/io/flutter/embedding/engine/FlutterEngineConnectionRegistryTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public void itDoesNotRegisterTheSamePluginTwice() {
4040
FakeFlutterPlugin fakePlugin2 = new FakeFlutterPlugin();
4141

4242
FlutterEngineConnectionRegistry registry =
43-
new FlutterEngineConnectionRegistry(context, flutterEngine, flutterLoader, null);
43+
new FlutterEngineConnectionRegistry(context, flutterEngine, flutterLoader);
4444

4545
// Verify that the registry doesn't think it contains our plugin yet.
4646
assertFalse(registry.has(fakePlugin1.getClass()));
@@ -86,7 +86,7 @@ public void activityResultListenerCanBeRemovedFromListener() {
8686

8787
// Set up the environment to get the required internal data
8888
FlutterEngineConnectionRegistry registry =
89-
new FlutterEngineConnectionRegistry(context, flutterEngine, flutterLoader, null);
89+
new FlutterEngineConnectionRegistry(context, flutterEngine, flutterLoader);
9090
FakeActivityAwareFlutterPlugin fakePlugin = new FakeActivityAwareFlutterPlugin();
9191
registry.add(fakePlugin);
9292
registry.attachToActivity(appComponent, lifecycle);
@@ -129,7 +129,7 @@ public void softwareRendering() {
129129

130130
// Test attachToActivity with an Activity that has no Intent.
131131
FlutterEngineConnectionRegistry registry =
132-
new FlutterEngineConnectionRegistry(context, flutterEngine, flutterLoader, null);
132+
new FlutterEngineConnectionRegistry(context, flutterEngine, flutterLoader);
133133
registry.attachToActivity(appComponent, mock(Lifecycle.class));
134134
verify(platformViewsController).setSoftwareRendering(false);
135135

shell/platform/android/test/io/flutter/embedding/engine/FlutterEngineTest.java

-33
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,8 @@
2525
import io.flutter.FlutterInjector;
2626
import io.flutter.embedding.engine.FlutterEngine;
2727
import io.flutter.embedding.engine.FlutterEngine.EngineLifecycleListener;
28-
import io.flutter.embedding.engine.FlutterEngineGroup;
2928
import io.flutter.embedding.engine.FlutterJNI;
3029
import io.flutter.embedding.engine.loader.FlutterLoader;
31-
import io.flutter.embedding.engine.plugins.FlutterPlugin;
32-
import io.flutter.embedding.engine.plugins.PluginRegistry;
3330
import io.flutter.plugin.platform.PlatformViewsController;
3431
import io.flutter.plugins.GeneratedPluginRegistrant;
3532
import java.util.List;
@@ -326,34 +323,4 @@ public void itComesWithARunningDartExecutorIfJNIIsAlreadyAttached() throws NameN
326323

327324
assertTrue(engineUnderTest.getDartExecutor().isExecutingDart());
328325
}
329-
330-
@Test
331-
public void passesEngineGroupToPlugins() throws NameNotFoundException {
332-
Context packageContext = mock(Context.class);
333-
334-
when(mockContext.createPackageContext(any(), anyInt())).thenReturn(packageContext);
335-
when(flutterJNI.isAttached()).thenReturn(true);
336-
337-
FlutterEngineGroup mockGroup = mock(FlutterEngineGroup.class);
338-
339-
FlutterEngine engineUnderTest =
340-
new FlutterEngine(
341-
mockContext,
342-
mock(FlutterLoader.class),
343-
flutterJNI,
344-
new PlatformViewsController(),
345-
/*dartVmArgs=*/ new String[] {},
346-
/*automaticallyRegisterPlugins=*/ false,
347-
/*waitForRestorationData=*/ false,
348-
mockGroup);
349-
350-
PluginRegistry registry = engineUnderTest.getPlugins();
351-
FlutterPlugin mockPlugin = mock(FlutterPlugin.class);
352-
ArgumentCaptor<FlutterPlugin.FlutterPluginBinding> pluginBindingCaptor =
353-
ArgumentCaptor.forClass(FlutterPlugin.FlutterPluginBinding.class);
354-
registry.add(mockPlugin);
355-
verify(mockPlugin).onAttachedToEngine(pluginBindingCaptor.capture());
356-
assertNotNull(pluginBindingCaptor.getValue());
357-
assertEquals(mockGroup, pluginBindingCaptor.getValue().getEngineGroup());
358-
}
359326
}

0 commit comments

Comments
 (0)