Skip to content

Commit 4f54e46

Browse files
authored
v1.12.13+hotfix.2 cherry-picks (flutter#46055)
* flutter/engine@6955b06 Cherry-picks for 1.12.13 * flutter/engine@3e6d6bc add pointer data santizing in flutter web engine * 09126ab Enable Android embedding v2 on the beta, dev and stable channel * 4c95bbd Re-enable hostonly tests on non-master branches * 066a992 Ensure that docker tag is legal * 4484ae4 [flutter_tool] Do not continue with a no-op 'upgrade'
1 parent 5b07015 commit 4f54e46

File tree

7 files changed

+104
-17
lines changed

7 files changed

+104
-17
lines changed

.cirrus.yml

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,6 @@ task:
229229
- dart --enable-asserts ./dev/bots/test.dart
230230

231231
- name: hostonly_devicelab_tests-0-linux
232-
only_if: "$CIRRUS_PR != '' || $CIRRUS_BRANCH == 'master'" # https://github.com/flutter/flutter/issues/45453
233232
environment:
234233
# Some of the host-only devicelab tests are pretty involved and need a lot of RAM.
235234
CPU: 2
@@ -238,7 +237,6 @@ task:
238237
- dart --enable-asserts ./dev/bots/test.dart
239238

240239
- name: hostonly_devicelab_tests-1-linux
241-
only_if: "$CIRRUS_PR != '' || $CIRRUS_BRANCH == 'master'" # https://github.com/flutter/flutter/issues/45453
242240
environment:
243241
# Some of the host-only devicelab tests are pretty involved and need a lot of RAM.
244242
CPU: 2
@@ -247,7 +245,6 @@ task:
247245
- dart --enable-asserts ./dev/bots/test.dart
248246

249247
- name: hostonly_devicelab_tests-2-linux
250-
only_if: "$CIRRUS_PR != '' || $CIRRUS_BRANCH == 'master'" # https://github.com/flutter/flutter/issues/45453
251248
environment:
252249
# Some of the host-only devicelab tests are pretty involved and need a lot of RAM.
253250
CPU: 2
@@ -256,7 +253,6 @@ task:
256253
- dart --enable-asserts ./dev/bots/test.dart
257254

258255
- name: hostonly_devicelab_tests-3_last-linux
259-
only_if: "$CIRRUS_PR != '' || $CIRRUS_BRANCH == 'master'" # https://github.com/flutter/flutter/issues/45453
260256
environment:
261257
# Some of the host-only devicelab tests are pretty involved and need a lot of RAM.
262258
CPU: 2
@@ -403,22 +399,22 @@ task:
403399
- dart --enable-asserts dev\bots\test.dart
404400

405401
- name: hostonly_devicelab_tests-0-windows
406-
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || ($CIRRUS_PR == '' && $CIRRUS_BRANCH == 'master')" # https://github.com/flutter/flutter/issues/41941 https://github.com/flutter/flutter/issues/45453
402+
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || $CIRRUS_PR == ''" # https://github.com/flutter/flutter/issues/41941
407403
script:
408404
- dart --enable-asserts ./dev/bots/test.dart
409405

410406
- name: hostonly_devicelab_tests-1-windows
411-
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || ($CIRRUS_PR == '' && $CIRRUS_BRANCH == 'master')" # https://github.com/flutter/flutter/issues/41941 https://github.com/flutter/flutter/issues/45453
407+
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || $CIRRUS_PR == ''" # https://github.com/flutter/flutter/issues/41941
412408
script:
413409
- dart --enable-asserts ./dev/bots/test.dart
414410

415411
- name: hostonly_devicelab_tests-2-windows
416-
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || ($CIRRUS_PR == '' && $CIRRUS_BRANCH == 'master')" # https://github.com/flutter/flutter/issues/41941 https://github.com/flutter/flutter/issues/45453
412+
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || $CIRRUS_PR == ''" # https://github.com/flutter/flutter/issues/41941
417413
script:
418414
- dart --enable-asserts ./dev/bots/test.dart
419415

420416
- name: hostonly_devicelab_tests-3_last-windows
421-
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || ($CIRRUS_PR == '' && $CIRRUS_BRANCH == 'master')" # https://github.com/flutter/flutter/issues/41941 https://github.com/flutter/flutter/issues/45453
417+
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || $CIRRUS_PR == ''" # https://github.com/flutter/flutter/issues/41941
422418
script:
423419
- dart --enable-asserts ./dev/bots/test.dart
424420

@@ -516,25 +512,25 @@ task:
516512
- dart --enable-asserts ./dev/bots/test.dart
517513

518514
- name: hostonly_devicelab_tests-0-macos
519-
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || ($CIRRUS_PR == '' && $CIRRUS_BRANCH == 'master')" # https://github.com/flutter/flutter/issues/41941 https://github.com/flutter/flutter/issues/45453
515+
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || $CIRRUS_PR == ''" # https://github.com/flutter/flutter/issues/41941
520516
script:
521517
- ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
522518
- dart --enable-asserts ./dev/bots/test.dart
523519

524520
- name: hostonly_devicelab_tests-1-macos
525-
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || ($CIRRUS_PR == '' && $CIRRUS_BRANCH == 'master')" # https://github.com/flutter/flutter/issues/41941 https://github.com/flutter/flutter/issues/45453
521+
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || $CIRRUS_PR == ''" # https://github.com/flutter/flutter/issues/41941
526522
script:
527523
- ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
528524
- dart --enable-asserts ./dev/bots/test.dart
529525

530526
- name: hostonly_devicelab_tests-2-macos
531-
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || ($CIRRUS_PR == '' && $CIRRUS_BRANCH == 'master')" # https://github.com/flutter/flutter/issues/41941 https://github.com/flutter/flutter/issues/45453
527+
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || $CIRRUS_PR == ''" # https://github.com/flutter/flutter/issues/41941
532528
script:
533529
- ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
534530
- dart --enable-asserts ./dev/bots/test.dart
535531

536532
- name: hostonly_devicelab_tests-3_last-macos
537-
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || ($CIRRUS_PR == '' && $CIRRUS_BRANCH == 'master')" # https://github.com/flutter/flutter/issues/41941 https://github.com/flutter/flutter/issues/45453
533+
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/internal/**') || $CIRRUS_PR == ''" # https://github.com/flutter/flutter/issues/41941
538534
script:
539535
- ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
540536
- dart --enable-asserts ./dev/bots/test.dart

bin/internal/engine.version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
c1e322b685a81c11c16bddd22282925b7d0272e8
1+
6955b06cedb2425f4363f10642c9b0e63e496af0

dev/ci/docker_linux/docker_build.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
TAG="${CIRRUS_TAG:-latest}"
44

5+
# Convert "+" to "-" to make hotfix tags legal Docker tag names.
6+
# See https://docs.docker.com/engine/reference/commandline/tag/
7+
TAG=${TAG/+/-}
8+
59
# pull to make sure we are not rebuilding for nothing
610
sudo docker pull "gcr.io/flutter-cirrus/build-flutter-image:$TAG"
711

packages/flutter_tools/lib/src/commands/upgrade.dart

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,13 @@ class UpgradeCommandRunner {
122122
}
123123
await resetChanges(gitTagVersion);
124124
await upgradeChannel(flutterVersion);
125-
await attemptFastForward();
126-
await flutterUpgradeContinue();
125+
final bool alreadyUpToDate = await attemptFastForward(flutterVersion);
126+
if (alreadyUpToDate) {
127+
// If the upgrade was a no op, then do not continue with the second half.
128+
printTrace('Flutter is already up to date on channel ${flutterVersion.channel}');
129+
} else {
130+
await flutterUpgradeContinue();
131+
}
127132
}
128133

129134
Future<void> flutterUpgradeContinue() async {
@@ -234,7 +239,10 @@ class UpgradeCommandRunner {
234239
///
235240
/// If there haven't been any hot fixes or local changes, this is equivalent
236241
/// to a fast-forward.
237-
Future<void> attemptFastForward() async {
242+
///
243+
/// If the fast forward lands us on the same channel and revision, then
244+
/// returns true, otherwise returns false.
245+
Future<bool> attemptFastForward(FlutterVersion oldFlutterVersion) async {
238246
final int code = await processUtils.stream(
239247
<String>['git', 'pull', '--ff'],
240248
workingDirectory: Cache.flutterRoot,
@@ -243,6 +251,17 @@ class UpgradeCommandRunner {
243251
if (code != 0) {
244252
throwToolExit(null, exitCode: code);
245253
}
254+
255+
// Check if the upgrade did anything.
256+
bool alreadyUpToDate = false;
257+
try {
258+
final FlutterVersion newFlutterVersion = FlutterVersion();
259+
alreadyUpToDate = newFlutterVersion.channel == oldFlutterVersion.channel &&
260+
newFlutterVersion.frameworkRevision == oldFlutterVersion.frameworkRevision;
261+
} catch (e) {
262+
printTrace('Failed to determine FlutterVersion after upgrade fast-forward: $e');
263+
}
264+
return alreadyUpToDate;
246265
}
247266

248267
/// Update the engine repository and precache all artifacts.

packages/flutter_tools/lib/src/features.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,22 @@ const Feature flutterAndroidEmbeddingV2Feature = Feature(
141141
name: 'flutter create generates projects using the Android embedding V2',
142142
environmentOverride: 'ENABLE_ANDROID_EMBEDDING_V2',
143143
configSetting: 'enable-android-embedding-v2',
144+
beta: FeatureChannelSetting(
145+
available: true,
146+
enabledByDefault: true,
147+
),
148+
dev: FeatureChannelSetting(
149+
available: true,
150+
enabledByDefault: true,
151+
),
144152
master: FeatureChannelSetting(
145153
available: true,
146154
enabledByDefault: true,
147155
),
156+
stable: FeatureChannelSetting(
157+
available: true,
158+
enabledByDefault: true,
159+
),
148160
);
149161

150162
/// The [Feature] for using the incremental compiler instead of build runner.

packages/flutter_tools/test/commands.shard/permeable/upgrade_test.dart

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,30 @@ void main() {
121121
Platform: () => fakePlatform,
122122
});
123123

124+
testUsingContext('Doesn\'t continue on known tag, dev branch, no force, already up-to-date', () async {
125+
fakeCommandRunner.alreadyUpToDate = true;
126+
final Future<FlutterCommandResult> result = fakeCommandRunner.runCommand(
127+
false,
128+
false,
129+
gitTagVersion,
130+
flutterVersion,
131+
);
132+
expect(await result, null);
133+
verifyNever(processManager.start(
134+
<String>[
135+
fs.path.join('bin', 'flutter'),
136+
'upgrade',
137+
'--continue',
138+
'--no-version-check',
139+
],
140+
environment: anyNamed('environment'),
141+
workingDirectory: anyNamed('workingDirectory'),
142+
));
143+
}, overrides: <Type, Generator>{
144+
ProcessManager: () => processManager,
145+
Platform: () => fakePlatform,
146+
});
147+
124148
testUsingContext('verifyUpstreamConfigured', () async {
125149
when(processManager.run(
126150
<String>['git', 'rev-parse', '@{u}'],
@@ -288,6 +312,8 @@ void main() {
288312
class FakeUpgradeCommandRunner extends UpgradeCommandRunner {
289313
bool willHaveUncomittedChanges = false;
290314

315+
bool alreadyUpToDate = false;
316+
291317
@override
292318
Future<void> verifyUpstreamConfigured() async {}
293319

@@ -301,7 +327,7 @@ class FakeUpgradeCommandRunner extends UpgradeCommandRunner {
301327
Future<void> upgradeChannel(FlutterVersion flutterVersion) async {}
302328

303329
@override
304-
Future<void> attemptFastForward() async {}
330+
Future<bool> attemptFastForward(FlutterVersion flutterVersion) async => alreadyUpToDate;
305331

306332
@override
307333
Future<void> precacheArtifacts() async {}

packages/flutter_tools/test/general.shard/features_test.dart

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,36 @@ void main() {
432432

433433
expect(featureFlags.isWindowsEnabled, false);
434434
}));
435+
436+
group('isAndroidEmbeddingV2Enabled', () {
437+
test('is enabled on beta', () => testbed.run(() {
438+
when(mockFlutterVerion.channel).thenReturn('beta');
439+
when<bool>(mockFlutterConfig.getValue('enable-android-embedding-v2') as bool).thenReturn(true);
440+
441+
expect(featureFlags.isAndroidEmbeddingV2Enabled, true);
442+
}));
443+
444+
test('is enabled on dev', () => testbed.run(() {
445+
when(mockFlutterVerion.channel).thenReturn('dev');
446+
when<bool>(mockFlutterConfig.getValue('enable-android-embedding-v2') as bool).thenReturn(true);
447+
448+
expect(featureFlags.isAndroidEmbeddingV2Enabled, true);
449+
}));
450+
451+
test('is enabled on master', () => testbed.run(() {
452+
when(mockFlutterVerion.channel).thenReturn('master');
453+
when<bool>(mockFlutterConfig.getValue('enable-android-embedding-v2') as bool).thenReturn(true);
454+
455+
expect(featureFlags.isAndroidEmbeddingV2Enabled, true);
456+
}));
457+
458+
test('is enabled on stable', () => testbed.run(() {
459+
when(mockFlutterVerion.channel).thenReturn('stable');
460+
when<bool>(mockFlutterConfig.getValue('enable-android-embedding-v2') as bool).thenReturn(true);
461+
462+
expect(featureFlags.isAndroidEmbeddingV2Enabled, true);
463+
}));
464+
});
435465
});
436466
}
437467

0 commit comments

Comments
 (0)