diff --git a/packages/flutter/lib/src/rendering/binding.dart b/packages/flutter/lib/src/rendering/binding.dart index de3326f7cf..e43f817d68 100644 --- a/packages/flutter/lib/src/rendering/binding.dart +++ b/packages/flutter/lib/src/rendering/binding.dart @@ -24,8 +24,11 @@ abstract class Renderer extends Scheduler _instance = this; ui.window.onMetricsChanged = handleMetricsChanged; initRenderView(); + assert(() { + initServiceExtensions(); + return true; + }); addPersistentFrameCallback(_handlePersistentFrameCallback); - initServiceExtensions(); } static Renderer _instance; diff --git a/packages/flutter/lib/src/rendering/debug.dart b/packages/flutter/lib/src/rendering/debug.dart index 71138f2483..7e3338f2f8 100644 --- a/packages/flutter/lib/src/rendering/debug.dart +++ b/packages/flutter/lib/src/rendering/debug.dart @@ -5,7 +5,7 @@ import 'dart:async'; import 'dart:collection'; import 'dart:convert' show JSON; -import 'dart:developer'; +import 'dart:developer' as developer; import 'dart:ui' as ui; import 'package:flutter/painting.dart'; @@ -67,15 +67,13 @@ void initServiceExtensions() { _extensionsInitialized = true; assert(() { - registerExtension('flutter', _flutter); - // TODO: Expose debugDumpApp(). - // TODO: Expose StatisticsOverlay. - registerExtension('flutter.debugPaint', _debugPaint); - registerExtension('flutter.timeDilation', _timeDilation); + developer.registerExtension('flutter', _flutter); + developer.registerExtension('flutter.debugPaint', _debugPaint); + developer.registerExtension('flutter.timeDilation', _timeDilation); // Emit an info level log message; this tells the debugger that the Flutter // service extensions are registered. - log('Flutter initialized', name: 'flutter', level: 800); + developer.log('Flutter initialized', name: 'flutter', level: 800); return true; }); @@ -83,15 +81,20 @@ void initServiceExtensions() { /// Just respond to the request. Clients can use the existence of this call to /// know that the debug client is a Flutter app. -Future _flutter(String method, Map parameters) { - String result = JSON.encode({ 'type': '_extensionType', 'method': method }); - return new Future.value(new ServiceExtensionResponse.result(result)); +Future _flutter(String method, Map parameters) { + return new Future.value( + new developer.ServiceExtensionResponse.result(JSON.encode({ + 'type': '_extensionType', + 'method': method + })) + ); } /// Toggle the [debugPaintSizeEnabled] setting. -Future _debugPaint(String method, Map parameters) { +Future _debugPaint(String method, Map parameters) { if (parameters.containsKey('enabled')) { - // TODO: This is a work around for a VM bug: sdk/25208 - all params are coerced to strings. + // TODO(devoncarew): This is a work around for a VM bug: sdk/25208 - all + // params are coerced to strings. debugPaintSizeEnabled = parameters['enabled'].toString() == 'true'; // Redraw everything - mark the world as dirty. @@ -100,21 +103,22 @@ Future _debugPaint(String method, Map child.markNeedsPaint(); child.visitChildren(visitor); }; - Renderer.instance.renderView.visitChildren(visitor); + Renderer.instance?.renderView?.visitChildren(visitor); } - String result = JSON.encode({ - 'type': '_extensionType', - 'method': method, - 'enabled': debugPaintSizeEnabled - }); - return new Future.value(new ServiceExtensionResponse.result(result)); + return new Future.value( + new developer.ServiceExtensionResponse.result(JSON.encode({ + 'type': '_extensionType', + 'method': method, + 'enabled': debugPaintSizeEnabled + })) + ); } /// Manipulate the scheduler's [timeDilation] field. -Future _timeDilation(String method, Map parameters) { +Future _timeDilation(String method, Map parameters) { if (parameters.containsKey('timeDilation')) { - // TODO: Workaround for https://github.com/dart-lang/sdk/issues/25208. + // TODO(devoncarew): Workaround for https://github.com/dart-lang/sdk/issues/25208. dynamic param = parameters['timeDilation']; if (param is String) { param = double.parse(param); @@ -126,12 +130,13 @@ Future _timeDilation(String method, Map.value(new ServiceExtensionResponse.result(result)); + return new Future.value( + new developer.ServiceExtensionResponse.result(JSON.encode({ + 'type': '_extensionType', + 'method': method, + 'timeDilation': '$timeDilation' + })) + ); } /// Prints a message to the console, which you can access using the "flutter"