diff --git a/dev/devicelab/lib/tasks/new_gallery.dart b/dev/devicelab/lib/tasks/new_gallery.dart index 87f23b05db..7c63dfbcb5 100644 --- a/dev/devicelab/lib/tasks/new_gallery.dart +++ b/dev/devicelab/lib/tasks/new_gallery.dart @@ -17,6 +17,7 @@ class NewGalleryPerfTest extends PerfTest { 'test_driver/transitions_perf.dart', timelineFileName, dartDefine: dartDefine, - createPlatforms: ['android', 'ios', 'web'] + createPlatforms: ['android', 'ios', 'web'], + enableMergedPlatformThread: true, ); } diff --git a/dev/devicelab/lib/tasks/perf_tests.dart b/dev/devicelab/lib/tasks/perf_tests.dart index 411108c31d..1b2db67833 100644 --- a/dev/devicelab/lib/tasks/perf_tests.dart +++ b/dev/devicelab/lib/tasks/perf_tests.dart @@ -60,6 +60,7 @@ TaskFunction createUiKitViewScrollPerfTest({bool? enableImpeller}) { testDriver: 'test_driver/scroll_perf_test.dart', needsFullTimeline: false, enableImpeller: enableImpeller, + enableMergedPlatformThread: true, ).run; } @@ -809,10 +810,11 @@ Map _average(List> results, int iterations } /// Opens the file at testDirectory + 'ios/Runner/Info.plist' -/// and adds the following entry to the application. -/// -/// -void _disablePartialRepaint(String testDirectory) { +/// and adds additional manifest settings. +void _updateManifestSettings(String testDirectory, { + required bool disablePartialRepaint, + required bool platformThreadMerged +}) { final String manifestPath = path.join( testDirectory, 'ios', 'Runner', 'Info.plist'); final File file = File(manifestPath); @@ -824,7 +826,10 @@ void _disablePartialRepaint(String testDirectory) { final String xmlStr = file.readAsStringSync(); final XmlDocument xmlDoc = XmlDocument.parse(xmlStr); final List<(String, String)> keyPairs = <(String, String)>[ - ('FLTDisablePartialRepaint', 'true'), + if (disablePartialRepaint) + ('FLTDisablePartialRepaint', disablePartialRepaint.toString()), + if (platformThreadMerged) + ('FLTEnableMergedPlatformUIThread', platformThreadMerged.toString()) ]; final XmlElement applicationNode = @@ -1222,6 +1227,7 @@ class PerfTest { this.enableImpeller, this.forceOpenGLES, this.disablePartialRepaint = false, + this.enableMergedPlatformThread = false, this.createPlatforms = const [], }): _resultFilename = resultFilename; @@ -1242,6 +1248,7 @@ class PerfTest { this.enableImpeller, this.forceOpenGLES, this.disablePartialRepaint = false, + this.enableMergedPlatformThread = false, this.createPlatforms = const [], }) : saveTraceFile = false, timelineFileName = null, _resultFilename = resultFilename; @@ -1285,6 +1292,9 @@ class PerfTest { /// Whether partial repaint functionality should be disabled (iOS only). final bool disablePartialRepaint; + /// Whether the UI thread should be the platform thread. + final bool enableMergedPlatformThread; + /// Number of seconds to time out the test after, allowing debug callbacks to run. final int? timeoutSeconds; @@ -1380,9 +1390,13 @@ class PerfTest { _addOpenGLESToManifest(testDirectory); } } - if (disablePartialRepaint) { + if (disablePartialRepaint || enableMergedPlatformThread) { changedPlist = true; - _disablePartialRepaint(testDirectory); + _updateManifestSettings( + testDirectory, + disablePartialRepaint: disablePartialRepaint, + platformThreadMerged: enableMergedPlatformThread + ); } final List options = [