diff --git a/packages/flutter/lib/rendering.dart b/packages/flutter/lib/rendering.dart index b0029c160fc..a00a220681c 100644 --- a/packages/flutter/lib/rendering.dart +++ b/packages/flutter/lib/rendering.dart @@ -55,6 +55,7 @@ export 'src/rendering/proxy_box.dart'; export 'src/rendering/proxy_sliver.dart'; export 'src/rendering/rotated_box.dart'; export 'src/rendering/selection.dart'; +export 'src/rendering/service_extensions.dart'; export 'src/rendering/shifted_box.dart'; export 'src/rendering/sliver.dart'; export 'src/rendering/sliver_fill.dart'; diff --git a/packages/flutter/lib/src/rendering/binding.dart b/packages/flutter/lib/src/rendering/binding.dart index 23196536a81..a9e01960638 100644 --- a/packages/flutter/lib/src/rendering/binding.dart +++ b/packages/flutter/lib/src/rendering/binding.dart @@ -14,6 +14,7 @@ import 'box.dart'; import 'debug.dart'; import 'mouse_tracker.dart'; import 'object.dart'; +import 'service_extensions.dart'; import 'view.dart'; export 'package:flutter/gestures.dart' show HitTestResult; @@ -63,7 +64,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture assert(() { // these service extensions only work in debug mode registerBoolServiceExtension( - name: 'invertOversizedImages', + name: RenderingServiceExtensions.invertOversizedImages.name, getter: () async => debugInvertOversizedImages, setter: (bool value) async { if (debugInvertOversizedImages != value) { @@ -74,7 +75,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture }, ); registerBoolServiceExtension( - name: 'debugPaint', + name: RenderingServiceExtensions.debugPaint.name, getter: () async => debugPaintSizeEnabled, setter: (bool value) { if (debugPaintSizeEnabled == value) { @@ -85,7 +86,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture }, ); registerBoolServiceExtension( - name: 'debugPaintBaselinesEnabled', + name: RenderingServiceExtensions.debugPaintBaselinesEnabled.name, getter: () async => debugPaintBaselinesEnabled, setter: (bool value) { if (debugPaintBaselinesEnabled == value) { @@ -96,7 +97,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture }, ); registerBoolServiceExtension( - name: 'repaintRainbow', + name: RenderingServiceExtensions.repaintRainbow.name, getter: () async => debugRepaintRainbowEnabled, setter: (bool value) { final bool repaint = debugRepaintRainbowEnabled && !value; @@ -108,7 +109,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture }, ); registerServiceExtension( - name: 'debugDumpLayerTree', + name: RenderingServiceExtensions.debugDumpLayerTree.name, callback: (Map parameters) async { final String data = RendererBinding.instance.renderView.debugLayer?.toStringDeep() ?? 'Layer tree unavailable.'; return { @@ -117,7 +118,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture }, ); registerBoolServiceExtension( - name: 'debugDisableClipLayers', + name: RenderingServiceExtensions.debugDisableClipLayers.name, getter: () async => debugDisableClipLayers, setter: (bool value) { if (debugDisableClipLayers == value) { @@ -128,7 +129,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture }, ); registerBoolServiceExtension( - name: 'debugDisablePhysicalShapeLayers', + name: RenderingServiceExtensions.debugDisablePhysicalShapeLayers.name, getter: () async => debugDisablePhysicalShapeLayers, setter: (bool value) { if (debugDisablePhysicalShapeLayers == value) { @@ -139,7 +140,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture }, ); registerBoolServiceExtension( - name: 'debugDisableOpacityLayers', + name: RenderingServiceExtensions.debugDisableOpacityLayers.name, getter: () async => debugDisableOpacityLayers, setter: (bool value) { if (debugDisableOpacityLayers == value) { @@ -155,7 +156,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture if (!kReleaseMode) { // these service extensions work in debug or profile mode registerServiceExtension( - name: 'debugDumpRenderTree', + name: RenderingServiceExtensions.debugDumpRenderTree.name, callback: (Map parameters) async { final String data = RendererBinding.instance.renderView.toStringDeep(); return { @@ -164,7 +165,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture }, ); registerServiceExtension( - name: 'debugDumpSemanticsTreeInTraversalOrder', + name: RenderingServiceExtensions.debugDumpSemanticsTreeInTraversalOrder.name, callback: (Map parameters) async { return { 'data': _generateSemanticsTree(DebugSemanticsDumpOrder.traversalOrder), @@ -172,7 +173,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture }, ); registerServiceExtension( - name: 'debugDumpSemanticsTreeInInverseHitTestOrder', + name: RenderingServiceExtensions.debugDumpSemanticsTreeInInverseHitTestOrder.name, callback: (Map parameters) async { return { 'data': _generateSemanticsTree(DebugSemanticsDumpOrder.inverseHitTest), @@ -180,7 +181,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture }, ); registerBoolServiceExtension( - name: 'profileRenderObjectPaints', + name: RenderingServiceExtensions.profileRenderObjectPaints.name, getter: () async => debugProfilePaintsEnabled, setter: (bool value) async { if (debugProfilePaintsEnabled != value) { @@ -189,7 +190,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture }, ); registerBoolServiceExtension( - name: 'profileRenderObjectLayouts', + name: RenderingServiceExtensions.profileRenderObjectLayouts.name, getter: () async => debugProfileLayoutsEnabled, setter: (bool value) async { if (debugProfileLayoutsEnabled != value) { diff --git a/packages/flutter/lib/src/rendering/debug.dart b/packages/flutter/lib/src/rendering/debug.dart index 88f1cd4875a..2879bac5a6a 100644 --- a/packages/flutter/lib/src/rendering/debug.dart +++ b/packages/flutter/lib/src/rendering/debug.dart @@ -94,7 +94,7 @@ bool debugPrintLayouts = false; /// this on in your unit tests for additional validations. bool debugCheckIntrinsicSizes = false; -/// Adds [dart:developer.Timeline] events for every [RenderObject] layout. +/// Adds [Timeline] events for every [RenderObject] layout. /// /// The timing information this flag exposes is not representative of the actual /// cost of layout, because the overhead of adding timeline events is @@ -120,7 +120,7 @@ bool debugCheckIntrinsicSizes = false; /// debugging information related to [RenderObject] layouts. bool debugProfileLayoutsEnabled = false; -/// Adds [dart:developer.Timeline] events for every [RenderObject] painted. +/// Adds [Timeline] events for every [RenderObject] painted. /// /// The timing information this flag exposes is not representative of actual /// paints, because the overhead of adding timeline events is significant diff --git a/packages/flutter/lib/src/rendering/service_extensions.dart b/packages/flutter/lib/src/rendering/service_extensions.dart new file mode 100644 index 00000000000..99d6da35097 --- /dev/null +++ b/packages/flutter/lib/src/rendering/service_extensions.dart @@ -0,0 +1,153 @@ +// Copyright 2014 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. + +/// Service extension constants for the rendering library. +/// +/// These constants will be used when registering service extensions in the +/// framework, and they will also be used by tools and services that call these +/// service extensions. +/// +/// The String value for each of these extension names should be accessed by +/// calling the `.name` property on the enum value. +enum RenderingServiceExtensions { + /// Name of service extension that, when called, will toggle whether the + /// framework will color invert and horizontally flip images that have been + /// decoded to a size taking at least [debugImageOverheadAllowance] bytes more + /// than necessary. + /// + /// See also: + /// + /// * [debugInvertOversizedImages], which is the flag that this service + /// extension exposes. + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + invertOversizedImages, + + /// Name of service extension that, when called, will toggle whether each + /// [RenderBox] will paint a box around its bounds as well as additional boxes + /// showing construction lines. + /// + /// See also: + /// + /// * [debugPaintSizeEnabled], which is the flag that this service extension + /// exposes. + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + debugPaint, + + /// Name of service extension that, when called, will toggle whether each + /// [RenderBox] will paint a line at each of its baselines. + /// + /// See also: + /// + /// * [debugPaintBaselinesEnabled], which is the flag that this service + /// extension exposes. + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + debugPaintBaselinesEnabled, + + /// Name of service extension that, when called, will toggle whether a rotating + /// set of colors will be overlaid on the device when repainting layers in debug + /// mode. + /// + /// See also: + /// + /// * [debugRepaintRainbowEnabled], which is the flag that this service + /// extension exposes. + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + repaintRainbow, + + /// Name of service extension that, when called, will dump a [String] + /// representation of the layer tree to console. + /// + /// See also: + /// + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + debugDumpLayerTree, + + + /// Name of service extension that, when called, will toggle whether all + /// clipping effects from the layer tree will be ignored. + /// + /// See also: + /// + /// * [debugDisableClipLayers], which is the flag that this service extension + /// exposes. + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + debugDisableClipLayers, + + /// Name of service extension that, when called, will toggle whether all + /// physical modeling effects from the layer tree will be ignored. + /// + /// See also: + /// + /// * [debugDisablePhysicalShapeLayers], which is the flag that this service + /// extension exposes. + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + debugDisablePhysicalShapeLayers, + + /// Name of service extension that, when called, will toggle whether all opacity + /// effects from the layer tree will be ignored. + /// + /// See also: + /// + /// * [debugDisableOpacityLayers], which is the flag that this service extension + /// exposes. + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + debugDisableOpacityLayers, + + /// Name of service extension that, when called, will dump a [String] + /// representation of the render tree to console. + /// + /// See also: + /// + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + debugDumpRenderTree, + + /// Name of service extension that, when called, will dump a [String] + /// representation of the semantics tree (in traversal order) to console. + /// + /// See also: + /// + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + debugDumpSemanticsTreeInTraversalOrder, + + /// Name of service extension that, when called, will dump a [String] + /// representation of the semantics tree (in inverse hit test order) to console. + /// + /// See also: + /// + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + debugDumpSemanticsTreeInInverseHitTestOrder, + + /// Name of service extension that, when called, will toggle whether [Timeline] + /// events are added for every [RenderObject] painted. + /// + /// See also: + /// + /// * [debugProfilePaintsEnabled], which is the flag that this service extension + /// exposes. + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + profileRenderObjectPaints, + + /// Name of service extension that, when called, will toggle whether [Timeline] + /// events are added for every [RenderObject] laid out. + /// + /// See also: + /// + /// * [debugProfileLayoutsEnabled], which is the flag that this service + /// extension exposes. + /// * [RendererBinding.initServiceExtensions], where the service extension is + /// registered. + profileRenderObjectLayouts, +} diff --git a/packages/flutter/test/foundation/service_extensions_test.dart b/packages/flutter/test/foundation/service_extensions_test.dart index 50b89b39fe6..2ba427bcb90 100644 --- a/packages/flutter/test/foundation/service_extensions_test.dart +++ b/packages/flutter/test/foundation/service_extensions_test.dart @@ -219,7 +219,7 @@ void main() { test('Service extensions - debugDumpRenderTree', () async { await binding.doFrame(); - final Map result = await binding.testExtension('debugDumpRenderTree', {}); + final Map result = await binding.testExtension(RenderingServiceExtensions.debugDumpRenderTree.name, {}); expect(result, { 'data': matches( @@ -236,7 +236,7 @@ void main() { test('Service extensions - debugDumpLayerTree', () async { await binding.doFrame(); - final Map result = await binding.testExtension('debugDumpLayerTree', {}); + final Map result = await binding.testExtension(RenderingServiceExtensions.debugDumpLayerTree.name, {}); expect(result, { 'data': matches( @@ -259,7 +259,7 @@ void main() { test('Service extensions - debugDumpSemanticsTreeInTraversalOrder', () async { await binding.doFrame(); - final Map result = await binding.testExtension('debugDumpSemanticsTreeInTraversalOrder', {}); + final Map result = await binding.testExtension(RenderingServiceExtensions.debugDumpSemanticsTreeInTraversalOrder.name, {}); expect(result, { 'data': 'Semantics not generated.\n' @@ -271,7 +271,7 @@ void main() { test('Service extensions - debugDumpSemanticsTreeInInverseHitTestOrder', () async { await binding.doFrame(); - final Map result = await binding.testExtension('debugDumpSemanticsTreeInInverseHitTestOrder', {}); + final Map result = await binding.testExtension(RenderingServiceExtensions.debugDumpSemanticsTreeInInverseHitTestOrder.name, {}); expect(result, { 'data': 'Semantics not generated.\n' @@ -290,12 +290,12 @@ void main() { expect(binding.frameScheduled, isFalse); expect(debugPaintSizeEnabled, false); - result = await binding.testExtension('debugPaint', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugPaint.name, {}); expect(result, {'enabled': 'false'}); expect(debugPaintSizeEnabled, false); expect(extensionChangedEvents, isEmpty); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('debugPaint', {'enabled': 'true'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.debugPaint.name, {'enabled': 'true'}); completed = false; pendingResult.whenComplete(() { completed = true; }); await binding.flushMicrotasks(); @@ -312,12 +312,12 @@ void main() { extensionChangedEvent = extensionChangedEvents.last; expect(extensionChangedEvent['extension'], 'ext.flutter.debugPaint'); expect(extensionChangedEvent['value'], 'true'); - result = await binding.testExtension('debugPaint', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugPaint.name, {}); expect(result, {'enabled': 'true'}); expect(debugPaintSizeEnabled, true); expect(extensionChangedEvents.length, 1); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('debugPaint', {'enabled': 'false'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.debugPaint.name, {'enabled': 'false'}); await binding.flushMicrotasks(); expect(binding.frameScheduled, isTrue); await binding.doFrame(); @@ -329,7 +329,7 @@ void main() { extensionChangedEvent = extensionChangedEvents.last; expect(extensionChangedEvent['extension'], 'ext.flutter.debugPaint'); expect(extensionChangedEvent['value'], 'false'); - result = await binding.testExtension('debugPaint', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugPaint.name, {}); expect(result, {'enabled': 'false'}); expect(debugPaintSizeEnabled, false); expect(extensionChangedEvents.length, 2); @@ -343,11 +343,11 @@ void main() { expect(binding.frameScheduled, isFalse); expect(debugPaintBaselinesEnabled, false); - result = await binding.testExtension('debugPaintBaselinesEnabled', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugPaintBaselinesEnabled.name, {}); expect(result, {'enabled': 'false'}); expect(debugPaintBaselinesEnabled, false); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('debugPaintBaselinesEnabled', {'enabled': 'true'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.debugPaintBaselinesEnabled.name, {'enabled': 'true'}); completed = false; pendingResult.whenComplete(() { completed = true; }); await binding.flushMicrotasks(); @@ -360,11 +360,11 @@ void main() { result = await pendingResult; expect(result, {'enabled': 'true'}); expect(debugPaintBaselinesEnabled, true); - result = await binding.testExtension('debugPaintBaselinesEnabled', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugPaintBaselinesEnabled.name, {}); expect(result, {'enabled': 'true'}); expect(debugPaintBaselinesEnabled, true); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('debugPaintBaselinesEnabled', {'enabled': 'false'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.debugPaintBaselinesEnabled.name, {'enabled': 'false'}); await binding.flushMicrotasks(); expect(binding.frameScheduled, isTrue); await binding.doFrame(); @@ -372,7 +372,7 @@ void main() { result = await pendingResult; expect(result, {'enabled': 'false'}); expect(debugPaintBaselinesEnabled, false); - result = await binding.testExtension('debugPaintBaselinesEnabled', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugPaintBaselinesEnabled.name, {}); expect(result, {'enabled': 'false'}); expect(debugPaintBaselinesEnabled, false); expect(binding.frameScheduled, isFalse); @@ -385,12 +385,12 @@ void main() { expect(binding.frameScheduled, isFalse); expect(debugInvertOversizedImages, false); - result = await binding.testExtension('invertOversizedImages', {}); + result = await binding.testExtension(RenderingServiceExtensions.invertOversizedImages.name, {}); expect(result, {'enabled': 'false'}); expect(debugInvertOversizedImages, false); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('invertOversizedImages', {'enabled': 'true'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.invertOversizedImages.name, {'enabled': 'true'}); completed = false; pendingResult.whenComplete(() { completed = true; }); await binding.flushMicrotasks(); @@ -404,12 +404,12 @@ void main() { expect(result, {'enabled': 'true'}); expect(debugInvertOversizedImages, true); - result = await binding.testExtension('invertOversizedImages', {}); + result = await binding.testExtension(RenderingServiceExtensions.invertOversizedImages.name, {}); expect(result, {'enabled': 'true'}); expect(debugInvertOversizedImages, true); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('invertOversizedImages', {'enabled': 'false'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.invertOversizedImages.name, {'enabled': 'false'}); await binding.flushMicrotasks(); expect(binding.frameScheduled, isTrue); await binding.doFrame(); @@ -418,7 +418,7 @@ void main() { expect(result, {'enabled': 'false'}); expect(debugInvertOversizedImages, false); - result = await binding.testExtension('invertOversizedImages', {}); + result = await binding.testExtension(RenderingServiceExtensions.invertOversizedImages.name, {}); expect(result, {'enabled': 'false'}); expect(debugInvertOversizedImages, false); expect(binding.frameScheduled, isFalse); @@ -488,23 +488,23 @@ void main() { expect(binding.frameScheduled, isFalse); expect(debugProfileBuildsEnabled, false); - result = await binding.testExtension('profileRenderObjectPaints', {}); + result = await binding.testExtension(RenderingServiceExtensions.profileRenderObjectPaints.name, {}); expect(result, {'enabled': 'false'}); expect(debugProfilePaintsEnabled, false); - result = await binding.testExtension('profileRenderObjectPaints', {'enabled': 'true'}); + result = await binding.testExtension(RenderingServiceExtensions.profileRenderObjectPaints.name, {'enabled': 'true'}); expect(result, {'enabled': 'true'}); expect(debugProfilePaintsEnabled, true); - result = await binding.testExtension('profileRenderObjectPaints', {}); + result = await binding.testExtension(RenderingServiceExtensions.profileRenderObjectPaints.name, {}); expect(result, {'enabled': 'true'}); expect(debugProfilePaintsEnabled, true); - result = await binding.testExtension('profileRenderObjectPaints', {'enabled': 'false'}); + result = await binding.testExtension(RenderingServiceExtensions.profileRenderObjectPaints.name, {'enabled': 'false'}); expect(result, {'enabled': 'false'}); expect(debugProfilePaintsEnabled, false); - result = await binding.testExtension('profileRenderObjectPaints', {}); + result = await binding.testExtension(RenderingServiceExtensions.profileRenderObjectPaints.name, {}); expect(result, {'enabled': 'false'}); expect(debugProfilePaintsEnabled, false); @@ -517,23 +517,23 @@ void main() { expect(binding.frameScheduled, isFalse); expect(debugProfileLayoutsEnabled, false); - result = await binding.testExtension('profileRenderObjectLayouts', {}); + result = await binding.testExtension(RenderingServiceExtensions.profileRenderObjectLayouts.name, {}); expect(result, {'enabled': 'false'}); expect(debugProfileLayoutsEnabled, false); - result = await binding.testExtension('profileRenderObjectLayouts', {'enabled': 'true'}); + result = await binding.testExtension(RenderingServiceExtensions.profileRenderObjectLayouts.name, {'enabled': 'true'}); expect(result, {'enabled': 'true'}); expect(debugProfileLayoutsEnabled, true); - result = await binding.testExtension('profileRenderObjectLayouts', {}); + result = await binding.testExtension(RenderingServiceExtensions.profileRenderObjectLayouts.name, {}); expect(result, {'enabled': 'true'}); expect(debugProfileLayoutsEnabled, true); - result = await binding.testExtension('profileRenderObjectLayouts', {'enabled': 'false'}); + result = await binding.testExtension(RenderingServiceExtensions.profileRenderObjectLayouts.name, {'enabled': 'false'}); expect(result, {'enabled': 'false'}); expect(debugProfileLayoutsEnabled, false); - result = await binding.testExtension('profileRenderObjectLayouts', {}); + result = await binding.testExtension(RenderingServiceExtensions.profileRenderObjectLayouts.name, {}); expect(result, {'enabled': 'false'}); expect(debugProfileLayoutsEnabled, false); @@ -674,11 +674,11 @@ void main() { expect(binding.frameScheduled, isFalse); expect(debugRepaintRainbowEnabled, false); - result = await binding.testExtension('repaintRainbow', {}); + result = await binding.testExtension(RenderingServiceExtensions.repaintRainbow.name, {}); expect(result, {'enabled': 'false'}); expect(debugRepaintRainbowEnabled, false); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('repaintRainbow', {'enabled': 'true'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.repaintRainbow.name, {'enabled': 'true'}); completed = false; pendingResult.whenComplete(() { completed = true; }); await binding.flushMicrotasks(); @@ -687,11 +687,11 @@ void main() { result = await pendingResult; expect(result, {'enabled': 'true'}); expect(debugRepaintRainbowEnabled, true); - result = await binding.testExtension('repaintRainbow', {}); + result = await binding.testExtension(RenderingServiceExtensions.repaintRainbow.name, {}); expect(result, {'enabled': 'true'}); expect(debugRepaintRainbowEnabled, true); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('repaintRainbow', {'enabled': 'false'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.repaintRainbow.name, {'enabled': 'false'}); completed = false; pendingResult.whenComplete(() { completed = true; }); await binding.flushMicrotasks(); @@ -704,7 +704,7 @@ void main() { result = await pendingResult; expect(result, {'enabled': 'false'}); expect(debugRepaintRainbowEnabled, false); - result = await binding.testExtension('repaintRainbow', {}); + result = await binding.testExtension(RenderingServiceExtensions.repaintRainbow.name, {}); expect(result, {'enabled': 'false'}); expect(debugRepaintRainbowEnabled, false); expect(binding.frameScheduled, isFalse); @@ -717,11 +717,11 @@ void main() { expect(binding.frameScheduled, isFalse); expect(debugDisableClipLayers, false); - result = await binding.testExtension('debugDisableClipLayers', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugDisableClipLayers.name, {}); expect(result, {'enabled': 'false'}); expect(debugDisableClipLayers, false); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('debugDisableClipLayers', {'enabled': 'true'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.debugDisableClipLayers.name, {'enabled': 'true'}); completed = false; pendingResult.whenComplete(() { completed = true; }); await binding.flushMicrotasks(); @@ -734,11 +734,11 @@ void main() { result = await pendingResult; expect(result, {'enabled': 'true'}); expect(debugDisableClipLayers, true); - result = await binding.testExtension('debugDisableClipLayers', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugDisableClipLayers.name, {}); expect(result, {'enabled': 'true'}); expect(debugDisableClipLayers, true); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('debugDisableClipLayers', {'enabled': 'false'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.debugDisableClipLayers.name, {'enabled': 'false'}); await binding.flushMicrotasks(); expect(binding.frameScheduled, isTrue); await binding.doFrame(); @@ -746,7 +746,7 @@ void main() { result = await pendingResult; expect(result, {'enabled': 'false'}); expect(debugDisableClipLayers, false); - result = await binding.testExtension('debugDisableClipLayers', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugDisableClipLayers.name, {}); expect(result, {'enabled': 'false'}); expect(debugDisableClipLayers, false); expect(binding.frameScheduled, isFalse); @@ -759,11 +759,11 @@ void main() { expect(binding.frameScheduled, isFalse); expect(debugDisablePhysicalShapeLayers, false); - result = await binding.testExtension('debugDisablePhysicalShapeLayers', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugDisablePhysicalShapeLayers.name, {}); expect(result, {'enabled': 'false'}); expect(debugDisablePhysicalShapeLayers, false); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('debugDisablePhysicalShapeLayers', {'enabled': 'true'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.debugDisablePhysicalShapeLayers.name, {'enabled': 'true'}); completed = false; pendingResult.whenComplete(() { completed = true; }); await binding.flushMicrotasks(); @@ -776,11 +776,11 @@ void main() { result = await pendingResult; expect(result, {'enabled': 'true'}); expect(debugDisablePhysicalShapeLayers, true); - result = await binding.testExtension('debugDisablePhysicalShapeLayers', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugDisablePhysicalShapeLayers.name, {}); expect(result, {'enabled': 'true'}); expect(debugDisablePhysicalShapeLayers, true); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('debugDisablePhysicalShapeLayers', {'enabled': 'false'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.debugDisablePhysicalShapeLayers.name, {'enabled': 'false'}); await binding.flushMicrotasks(); expect(binding.frameScheduled, isTrue); await binding.doFrame(); @@ -788,7 +788,7 @@ void main() { result = await pendingResult; expect(result, {'enabled': 'false'}); expect(debugDisablePhysicalShapeLayers, false); - result = await binding.testExtension('debugDisablePhysicalShapeLayers', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugDisablePhysicalShapeLayers.name, {}); expect(result, {'enabled': 'false'}); expect(debugDisablePhysicalShapeLayers, false); expect(binding.frameScheduled, isFalse); @@ -801,11 +801,11 @@ void main() { expect(binding.frameScheduled, isFalse); expect(debugDisableOpacityLayers, false); - result = await binding.testExtension('debugDisableOpacityLayers', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugDisableOpacityLayers.name, {}); expect(result, {'enabled': 'false'}); expect(debugDisableOpacityLayers, false); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('debugDisableOpacityLayers', {'enabled': 'true'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.debugDisableOpacityLayers.name, {'enabled': 'true'}); completed = false; pendingResult.whenComplete(() { completed = true; }); await binding.flushMicrotasks(); @@ -818,11 +818,11 @@ void main() { result = await pendingResult; expect(result, {'enabled': 'true'}); expect(debugDisableOpacityLayers, true); - result = await binding.testExtension('debugDisableOpacityLayers', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugDisableOpacityLayers.name, {}); expect(result, {'enabled': 'true'}); expect(debugDisableOpacityLayers, true); expect(binding.frameScheduled, isFalse); - pendingResult = binding.testExtension('debugDisableOpacityLayers', {'enabled': 'false'}); + pendingResult = binding.testExtension(RenderingServiceExtensions.debugDisableOpacityLayers.name, {'enabled': 'false'}); await binding.flushMicrotasks(); expect(binding.frameScheduled, isTrue); await binding.doFrame(); @@ -830,7 +830,7 @@ void main() { result = await pendingResult; expect(result, {'enabled': 'false'}); expect(debugDisableOpacityLayers, false); - result = await binding.testExtension('debugDisableOpacityLayers', {}); + result = await binding.testExtension(RenderingServiceExtensions.debugDisableOpacityLayers.name, {}); expect(result, {'enabled': 'false'}); expect(debugDisableOpacityLayers, false); expect(binding.frameScheduled, isFalse);