Move service extension to correct binding so images are repainted after enabling/disabling, update test (#68793)

* Move service extension to correct binding so images are repainted after enabling/disabling, update test

* Update binding.dart
This commit is contained in:
Dan Field 2020-10-22 13:34:21 -07:00 committed by GitHub
parent 37042fdb08
commit 4af674285b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 14 deletions

View File

@ -59,6 +59,17 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture
assert(() { assert(() {
// these service extensions only work in debug mode // these service extensions only work in debug mode
registerBoolServiceExtension(
name: 'invertOversizedImages',
getter: () async => debugInvertOversizedImages,
setter: (bool value) async {
if (debugInvertOversizedImages != value) {
debugInvertOversizedImages = value;
return _forceRepaint();
}
return Future<void>.value();
},
);
registerBoolServiceExtension( registerBoolServiceExtension(
name: 'debugPaint', name: 'debugPaint',
getter: () async => debugPaintSizeEnabled, getter: () async => debugPaintSizeEnabled,

View File

@ -460,18 +460,6 @@ mixin WidgetsBinding on BindingBase, ServicesBinding, SchedulerBinding, GestureB
} }
assert(() { assert(() {
registerBoolServiceExtension(
name: 'invertOversizedImages',
getter: () async => debugInvertOversizedImages,
setter: (bool value) async {
if (debugInvertOversizedImages != value) {
debugInvertOversizedImages = value;
return _forceRebuild();
}
return Future<void>.value();
},
);
registerBoolServiceExtension( registerBoolServiceExtension(
name: 'debugAllowBanner', name: 'debugAllowBanner',
getter: () => Future<bool>.value(WidgetsApp.debugAllowBannerOverride), getter: () => Future<bool>.value(WidgetsApp.debugAllowBannerOverride),

View File

@ -399,21 +399,44 @@ void main() {
test('Service extensions - invertOversizedImages', () async { test('Service extensions - invertOversizedImages', () async {
Map<String, dynamic> result; Map<String, dynamic> result;
Future<Map<String, dynamic>> pendingResult;
bool completed;
expect(binding.frameScheduled, isFalse); expect(binding.frameScheduled, isFalse);
expect(debugInvertOversizedImages, false); expect(debugInvertOversizedImages, false);
result = await binding.testExtension('invertOversizedImages', <String, String>{}); result = await binding.testExtension('invertOversizedImages', <String, String>{});
expect(result, <String, String>{'enabled': 'false'}); expect(result, <String, String>{'enabled': 'false'});
expect(debugInvertOversizedImages, false); expect(debugInvertOversizedImages, false);
result = await binding.testExtension('invertOversizedImages', <String, String>{'enabled': 'true'}); expect(binding.frameScheduled, isFalse);
pendingResult = binding.testExtension('invertOversizedImages', <String, String>{'enabled': 'true'});
completed = false;
pendingResult.whenComplete(() { completed = true; });
await binding.flushMicrotasks();
expect(binding.frameScheduled, isTrue);
expect(completed, isFalse);
await binding.doFrame();
await binding.flushMicrotasks();
expect(completed, isTrue);
expect(binding.frameScheduled, isFalse);
result = await pendingResult;
expect(result, <String, String>{'enabled': 'true'}); expect(result, <String, String>{'enabled': 'true'});
expect(debugInvertOversizedImages, true); expect(debugInvertOversizedImages, true);
result = await binding.testExtension('invertOversizedImages', <String, String>{}); result = await binding.testExtension('invertOversizedImages', <String, String>{});
expect(result, <String, String>{'enabled': 'true'}); expect(result, <String, String>{'enabled': 'true'});
expect(debugInvertOversizedImages, true); expect(debugInvertOversizedImages, true);
result = await binding.testExtension('invertOversizedImages', <String, String>{'enabled': 'false'}); expect(binding.frameScheduled, isFalse);
pendingResult = binding.testExtension('invertOversizedImages', <String, String>{'enabled': 'false'});
await binding.flushMicrotasks();
expect(binding.frameScheduled, isTrue);
await binding.doFrame();
expect(binding.frameScheduled, isFalse);
result = await pendingResult;
expect(result, <String, String>{'enabled': 'false'}); expect(result, <String, String>{'enabled': 'false'});
expect(debugInvertOversizedImages, false); expect(debugInvertOversizedImages, false);
result = await binding.testExtension('invertOversizedImages', <String, String>{}); result = await binding.testExtension('invertOversizedImages', <String, String>{});
expect(result, <String, String>{'enabled': 'false'}); expect(result, <String, String>{'enabled': 'false'});
expect(debugInvertOversizedImages, false); expect(debugInvertOversizedImages, false);