Implement VmService instead of adding extension methods
diff --git a/packages/flutter_tools/lib/src/commands/screenshot.dart b/packages/flutter_tools/lib/src/commands/screenshot.dart index 937dfe2..8f7d4d1c 100644 --- a/packages/flutter_tools/lib/src/commands/screenshot.dart +++ b/packages/flutter_tools/lib/src/commands/screenshot.dart
@@ -130,7 +130,7 @@ Future<bool> runSkia(File outputFile) async { final Uri observatoryUri = Uri.parse(stringArg(_kObservatoryUri)); - final vm_service.VmService vmService = await connectToVmService(observatoryUri); + final FlutterVmService vmService = await connectToVmService(observatoryUri); final vm_service.Response skp = await vmService.screenshotSkp(); if (skp == null) { globals.printError( @@ -154,7 +154,7 @@ Future<bool> runRasterizer(File outputFile) async { final Uri observatoryUri = Uri.parse(stringArg(_kObservatoryUri)); - final vm_service.VmService vmService = await connectToVmService(observatoryUri); + final FlutterVmService vmService = await connectToVmService(observatoryUri); final vm_service.Response response = await vmService.screenshot(); if (response == null) { globals.printError(
diff --git a/packages/flutter_tools/lib/src/devfs.dart b/packages/flutter_tools/lib/src/devfs.dart index 5c6f98e..5988151 100644 --- a/packages/flutter_tools/lib/src/devfs.dart +++ b/packages/flutter_tools/lib/src/devfs.dart
@@ -224,7 +224,7 @@ class _DevFSHttpWriter implements DevFSWriter { _DevFSHttpWriter( this.fsName, - vm_service.VmService serviceProtocol, { + FlutterVmService serviceProtocol, { @required OperatingSystemUtils osUtils, @required HttpClient httpClient, @required Logger logger, @@ -370,7 +370,7 @@ /// /// Failed uploads are retried after [uploadRetryThrottle] duration, defaults to 500ms. DevFS( - vm_service.VmService serviceProtocol, + FlutterVmService serviceProtocol, this.fsName, this.rootDirectory, { @required OperatingSystemUtils osUtils, @@ -392,7 +392,7 @@ : context.get<HttpClientFactory>()()) ); - final vm_service.VmService _vmService; + final FlutterVmService _vmService; final _DevFSHttpWriter _httpWriter; final Logger _logger; final FileSystem _fileSystem;
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart index cbbf9e5..6057796 100644 --- a/packages/flutter_tools/lib/src/device.dart +++ b/packages/flutter_tools/lib/src/device.dart
@@ -7,7 +7,6 @@ import 'package:meta/meta.dart'; import 'package:process/process.dart'; -import 'package:vm_service/vm_service.dart' as vm_service; import 'android/android_device_discovery.dart'; import 'android/android_sdk.dart'; @@ -43,6 +42,7 @@ import 'project.dart'; import 'tester/flutter_tester.dart'; import 'version.dart'; +import 'vmservice.dart'; import 'web/web_device.dart'; import 'windows/windows_device.dart'; import 'windows/windows_workflow.dart'; @@ -1028,7 +1028,7 @@ /// Some logs can be obtained from a VM service stream. /// Set this after the VM services are connected. - vm_service.VmService connectedVMService; + FlutterVmService connectedVMService; @override String toString() => name; @@ -1058,7 +1058,7 @@ int appPid; @override - vm_service.VmService connectedVMService; + FlutterVmService connectedVMService; @override Stream<String> get logLines => const Stream<String>.empty();
diff --git a/packages/flutter_tools/lib/src/drive/drive_service.dart b/packages/flutter_tools/lib/src/drive/drive_service.dart index b9f7bff..9607bbe 100644 --- a/packages/flutter_tools/lib/src/drive/drive_service.dart +++ b/packages/flutter_tools/lib/src/drive/drive_service.dart
@@ -125,7 +125,7 @@ Device _device; ApplicationPackage _applicationPackage; String _vmServiceUri; - vm_service.VmService _vmService; + FlutterVmService _vmService; @override Future<void> start(
diff --git a/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart b/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart index 7824ebb..55f3fd8 100644 --- a/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart +++ b/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
@@ -5,7 +5,6 @@ import 'dart:async'; import 'package:meta/meta.dart'; -import 'package:vm_service/vm_service.dart' as vm_service; import '../application_package.dart'; import '../artifacts.dart'; @@ -48,7 +47,7 @@ final String _ipv6Loopback = InternetAddress.loopbackIPv6.address; // Enables testing the fuchsia isolate discovery -Future<vm_service.VmService> _kDefaultFuchsiaIsolateDiscoveryConnector(Uri uri) { +Future<FlutterVmService> _kDefaultFuchsiaIsolateDiscoveryConnector(Uri uri) { return connectToVmService(uri); } @@ -695,7 +694,7 @@ // netstat shows that the local port is actually being used on the IPv6 // loopback (::1). final Uri uri = Uri.parse('http://[$_ipv6Loopback]:$port'); - final vm_service.VmService vmService = await connectToVmService(uri); + final FlutterVmService vmService = await connectToVmService(uri); final List<FlutterView> flutterViews = await vmService.getFlutterViews(); for (final FlutterView flutterView in flutterViews) { if (flutterView.uiIsolate == null) { @@ -738,11 +737,11 @@ ]); static const Duration _pollDuration = Duration(seconds: 10); - final Map<int, vm_service.VmService> _ports = <int, vm_service.VmService>{}; + final Map<int, FlutterVmService> _ports = <int, FlutterVmService>{}; final FuchsiaDevice _device; final String _isolateName; final Completer<Uri> _foundUri = Completer<Uri>(); - final Future<vm_service.VmService> Function(Uri) _vmServiceConnector; + final Future<FlutterVmService> Function(Uri) _vmServiceConnector; final Future<void> Function(Device, Uri, bool) _ddsStarter; // whether to only poll once. final bool _pollOnce; @@ -778,7 +777,7 @@ Future<void> _findIsolate() async { final List<int> ports = await _device.servicePorts(); for (final int port in ports) { - vm_service.VmService service; + FlutterVmService service; if (_ports.containsKey(port)) { service = _ports[port]; } else {
diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart index 720e61b..dfa40cc 100644 --- a/packages/flutter_tools/lib/src/ios/devices.dart +++ b/packages/flutter_tools/lib/src/ios/devices.dart
@@ -658,18 +658,18 @@ Stream<String> get logLines => _linesController.stream; @override - vm_service.VmService get connectedVMService => _connectedVMService; - vm_service.VmService _connectedVMService; + FlutterVmService get connectedVMService => _connectedVMService; + FlutterVmService _connectedVMService; @override - set connectedVMService(vm_service.VmService connectedVmService) { + set connectedVMService(FlutterVmService connectedVmService) { _listenToUnifiedLoggingEvents(connectedVmService); _connectedVMService = connectedVmService; } static const int minimumUniversalLoggingSdkVersion = 13; - Future<void> _listenToUnifiedLoggingEvents(vm_service.VmService connectedVmService) async { + Future<void> _listenToUnifiedLoggingEvents(FlutterVmService connectedVmService) async { if (_majorSdkVersion < minimumUniversalLoggingSdkVersion) { return; }
diff --git a/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart b/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart index 2e1d911..98ac44c 100644 --- a/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart +++ b/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart
@@ -120,8 +120,10 @@ WipConnection _wipConnection; ChromiumLauncher _chromiumLauncher; - vmservice.VmService get _vmService => - _connectionResult?.debugConnection?.vmService; + FlutterVmService get _vmService => _flutterVmService ??= FlutterVmService.fromVmService( + _connectionResult?.debugConnection?.vmService, + ); + FlutterVmService _flutterVmService; @override bool get canHotRestart { @@ -812,7 +814,7 @@ _connectionResult.appConnection.runMain(); } else { StreamSubscription<void> resumeSub; - resumeSub = _connectionResult.debugConnection.vmService.onDebugEvent + resumeSub = _vmService.onDebugEvent .listen((vmservice.Event event) { if (event.type == vmservice.EventKind.kResume) { _connectionResult.appConnection.runMain();
diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart index 005ac07..ca348a1 100644 --- a/packages/flutter_tools/lib/src/resident_runner.dart +++ b/packages/flutter_tools/lib/src/resident_runner.dart
@@ -192,7 +192,7 @@ DevFSWriter devFSWriter; Stream<Uri> observatoryUris; - vm_service.VmService vmService; + FlutterVmService vmService; DevFS devFS; ApplicationPackage package; List<String> fileSystemRoots; @@ -234,7 +234,7 @@ globals.printTrace('Connecting to service protocol: $observatoryUri'); isWaitingForVm = true; bool existingDds = false; - vm_service.VmService service; + FlutterVmService service; if (!disableDds) { void handleError(Exception e, StackTrace st) { globals.printTrace('Fail to connect to service protocol: $observatoryUri: $e'); @@ -300,7 +300,7 @@ if (!existingDds) device.dds.done.whenComplete(() => throw Exception('DDS shut down too early')), ] - ) as vm_service.VmService; + ) as FlutterVmService; } on Exception catch (exception) { globals.printTrace('Fail to connect to service protocol: $observatoryUri: $exception'); if (!completer.isCompleted && !_isListeningForObservatoryUri) { @@ -366,12 +366,12 @@ stackTrace: stackTrace, ); }) - .timeout(timeoutDelay, onTimeout: () { + .timeout(timeoutDelay, onTimeout: () async { // TODO(jonahwilliams): this only seems to fail on CI in the // flutter_attach_android_test. This log should help verify this // is where the tool is getting stuck. globals.logger.printTrace('error: vm service shutdown failed'); - return device.stopApp(package, userIdentifier: userIdentifier); + await device.stopApp(package, userIdentifier: userIdentifier); }); } @@ -1324,7 +1324,7 @@ } Future<void> _callConnectedVmServiceExtension(FlutterDevice device) async { - if (device.vmService.httpAddress != null || device.vmService.wsAddress != null) { + if (device.vmService?.httpAddress != null || device.vmService?.wsAddress != null) { final Uri uri = device.vmService.httpAddress ?? device.vmService.wsAddress; await waitForExtension(device.vmService, 'ext.flutter.connectedVmServiceUri'); try { @@ -1455,7 +1455,7 @@ } @visibleForTesting -Future<void> waitForExtension(vm_service.VmService vmService, String extension) async { +Future<void> waitForExtension(FlutterVmService vmService, String extension) async { final Completer<void> completer = Completer<void>(); try { await vmService.streamListen(vm_service.EventStreams.kExtension);
diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart index 5bc1af0..36461d8 100644 --- a/packages/flutter_tools/lib/src/run_hot.dart +++ b/packages/flutter_tools/lib/src/run_hot.dart
@@ -832,7 +832,7 @@ await _evictDirtyAssets(); // Check if any isolates are paused and reassemble those that aren't. - final Map<FlutterView, vm_service.VmService> reassembleViews = <FlutterView, vm_service.VmService>{}; + final Map<FlutterView, FlutterVmService> reassembleViews = <FlutterView, FlutterVmService>{}; final List<Future<void>> reassembleFutures = <Future<void>>[]; String serviceEventKind; int pausedIsolatesFound = 0;
diff --git a/packages/flutter_tools/lib/src/test/coverage_collector.dart b/packages/flutter_tools/lib/src/test/coverage_collector.dart index c8beed6..1bd1612 100644 --- a/packages/flutter_tools/lib/src/test/coverage_collector.dart +++ b/packages/flutter_tools/lib/src/test/coverage_collector.dart
@@ -192,7 +192,7 @@ Future<void> handleTestTimedOut(ProcessEvent event) async { } } -Future<vm_service.VmService> _defaultConnect(Uri serviceUri) { +Future<FlutterVmService> _defaultConnect(Uri serviceUri) { return connectToVmService( serviceUri, compression: CompressionOptions.compressionOff); } @@ -200,16 +200,16 @@ Future<Map<String, dynamic>> collect(Uri serviceUri, bool Function(String) libraryPredicate, { bool waitPaused = false, String debugName, - Future<vm_service.VmService> Function(Uri) connector = _defaultConnect, + Future<FlutterVmService> Function(Uri) connector = _defaultConnect, }) async { - final vm_service.VmService vmService = await connector(serviceUri); + final FlutterVmService vmService = await connector(serviceUri); final Map<String, dynamic> result = await _getAllCoverage( vmService, libraryPredicate); vmService.dispose(); return result; } -Future<Map<String, dynamic>> _getAllCoverage(vm_service.VmService service, bool Function(String) libraryPredicate) async { +Future<Map<String, dynamic>> _getAllCoverage(FlutterVmService service, bool Function(String) libraryPredicate) async { final vm_service.VM vm = await service.getVM(); final List<Map<String, dynamic>> coverage = <Map<String, dynamic>>[]; for (final vm_service.IsolateRef isolateRef in vm.isolates) {
diff --git a/packages/flutter_tools/lib/src/test/flutter_platform.dart b/packages/flutter_tools/lib/src/test/flutter_platform.dart index be3b216..a972620 100644 --- a/packages/flutter_tools/lib/src/test/flutter_platform.dart +++ b/packages/flutter_tools/lib/src/test/flutter_platform.dart
@@ -10,7 +10,6 @@ import 'package:package_config/package_config.dart'; import 'package:stream_channel/stream_channel.dart'; import 'package:test_core/src/platform.dart'; // ignore: implementation_imports -import 'package:vm_service/vm_service.dart' as vm_service; import '../base/common.dart'; import '../base/file_system.dart'; @@ -501,9 +500,9 @@ } { globals.printTrace('Connecting to service protocol: $processObservatoryUri'); - final Future<vm_service.VmService> localVmService = connectToVmService(processObservatoryUri, + final Future<FlutterVmService> localVmService = connectToVmService(processObservatoryUri, compileExpression: _compileExpressionService); - unawaited(localVmService.then((vm_service.VmService vmservice) { + unawaited(localVmService.then((FlutterVmService vmservice) { globals.printTrace('Successfully connected to service protocol: $processObservatoryUri'); })); }
diff --git a/packages/flutter_tools/lib/src/tracing.dart b/packages/flutter_tools/lib/src/tracing.dart index 9c6a64a..dcd661e 100644 --- a/packages/flutter_tools/lib/src/tracing.dart +++ b/packages/flutter_tools/lib/src/tracing.dart
@@ -28,7 +28,7 @@ static const String firstUsefulFrameEventName = kFirstFrameRasterizedEventName; - final vm_service.VmService vmService; + final FlutterVmService vmService; final Logger _logger; Future<void> startTracing() async { @@ -91,7 +91,7 @@ /// Download the startup trace information from the given observatory client and /// store it to build/start_up_info.json. -Future<void> downloadStartupTrace(vm_service.VmService vmService, { +Future<void> downloadStartupTrace(FlutterVmService vmService, { bool awaitFirstFrame = true, @required Logger logger, @required Directory output,
diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index 9e45e55..1050a0a 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart
@@ -144,7 +144,7 @@ /// Override `VMServiceConnector` in [context] to return a different VMService /// from [VMService.connect] (used by tests). -typedef VMServiceConnector = Future<vm_service.VmService> Function(Uri httpUri, { +typedef VMServiceConnector = Future<FlutterVmService> Function(Uri httpUri, { ReloadSources reloadSources, Restart restart, CompileExpression compileExpression, @@ -154,33 +154,30 @@ Device device, }); -final Expando<Uri> _httpAddressExpando = Expando<Uri>(); -final Expando<Uri> _wsAddressExpando = Expando<Uri>(); - -void setHttpAddress(Uri uri, vm_service.VmService vmService) { +void setHttpAddress(Uri uri, FlutterVmService vmService) { if(vmService == null) { return; } - _httpAddressExpando[vmService] = uri; + vmService._httpAddress = uri; } -void setWsAddress(Uri uri, vm_service.VmService vmService) { +void setWsAddress(Uri uri, FlutterVmService vmService) { if(vmService == null) { return; } - _wsAddressExpando[vmService] = uri; + vmService._wsAddress = uri; } /// A connection to the Dart VM Service. -vm_service.VmService setUpVmService( +FlutterVmService setUpVmService( ReloadSources reloadSources, Restart restart, CompileExpression compileExpression, Device device, GetSkSLMethod skSLMethod, PrintStructuredErrorLogMethod printStructuredErrorLogMethod, - vm_service.VmService vmService + FlutterVmService vmService ) { if (reloadSources != null) { vmService.registerServiceCallback('reloadSources', (Map<String, dynamic> params) async { @@ -290,7 +287,7 @@ /// protocol itself. /// /// See: https://github.com/dart-lang/sdk/commit/df8bf384eb815cf38450cb50a0f4b62230fba217 -Future<vm_service.VmService> connectToVmService( +Future<FlutterVmService> connectToVmService( Uri httpUri, { ReloadSources reloadSources, Restart restart, @@ -312,7 +309,7 @@ ); } -Future<vm_service.VmService> _connect( +Future<FlutterVmService> _connect( Uri httpUri, { ReloadSources reloadSources, Restart restart, @@ -324,7 +321,7 @@ }) async { final Uri wsUri = httpUri.replace(scheme: 'ws', path: globals.fs.path.join(httpUri.path, 'ws')); final io.WebSocket channel = await _openChannel(wsUri.toString(), compression: compression); - final vm_service.VmService delegateService = vm_service.VmService( + final FlutterVmService delegateService = FlutterVmService( channel, channel.add, log: null, @@ -333,7 +330,7 @@ }, ); - final vm_service.VmService service = setUpVmService( + final FlutterVmService service = setUpVmService( reloadSources, restart, compileExpression, @@ -342,8 +339,8 @@ printStructuredErrorLogMethod, delegateService, ); - _httpAddressExpando[service] = httpUri; - _wsAddressExpando[service] = wsUri; + service._httpAddress = httpUri; + service._wsAddress = wsUri; // This call is to ensure we are able to establish a connection instead of // keeping on trucking and failing farther down the process. @@ -412,10 +409,454 @@ } /// Flutter specific VM Service functionality. -extension FlutterVmService on vm_service.VmService { - Uri get wsAddress => this != null ? _wsAddressExpando[this] : null; +class FlutterVmService implements vm_service.VmService { - Uri get httpAddress => this != null ? _httpAddressExpando[this] : null; + FlutterVmService( + Stream<dynamic> /*String|List<int>*/ inStream, + void writeMessage(String message), { + vm_service.Log log, + vm_service.DisposeHandler disposeHandler, + Future<void> streamClosed, + }) : _delegate = vm_service.VmService( + inStream, + writeMessage, + log: log, + disposeHandler: disposeHandler, + streamClosed: streamClosed, + ); + + FlutterVmService.fromVmService(vm_service.VmService delegate) : + _delegate = delegate; + + final vm_service.VmService _delegate; + + Uri _wsAddress; + Uri _httpAddress; + + Uri get wsAddress => _wsAddress; + + Uri get httpAddress => _httpAddress; + + @override + Stream<vm_service.Event> onEvent(String streamId) => _delegate.onEvent(streamId); + + @override + Stream<vm_service.Event> get onVMEvent => _delegate.onVMEvent; + + @override + Stream<vm_service.Event> get onIsolateEvent => _delegate.onIsolateEvent; + + @override + Stream<vm_service.Event> get onDebugEvent => _delegate.onDebugEvent; + + @override + Stream<vm_service.Event> get onGCEvent => _delegate.onGCEvent; + + @override + Stream<vm_service.Event> get onExtensionEvent => _delegate.onExtensionEvent; + + @override + Stream<vm_service.Event> get onTimelineEvent => _delegate.onTimelineEvent; + + @override + Stream<vm_service.Event> get onLoggingEvent => _delegate.onLoggingEvent; + + @override + Stream<vm_service.Event> get onServiceEvent => _delegate.onServiceEvent; + + @override + Stream<vm_service.Event> get onHeapSnapshotEvent => _delegate.onHeapSnapshotEvent; + + @override + Stream<vm_service.Event> get onStdoutEvent => _delegate.onStdoutEvent; + + @override + Stream<vm_service.Event> get onStderrEvent => _delegate.onStderrEvent; + + @override + Future<vm_service.Breakpoint> addBreakpoint( + String isolateId, + String scriptId, + int line, { + int column, + }) => _delegate.addBreakpoint(isolateId, scriptId, line, column: column); + + @override + Future<vm_service.Breakpoint> addBreakpointWithScriptUri( + String isolateId, + String scriptUri, + int line, { + int column, + }) => _delegate.addBreakpointWithScriptUri( + isolateId, + scriptUri, + line, + column: column, + ); + + @override + Future<vm_service.Breakpoint> addBreakpointAtEntry( + String isolateId, + String functionId, + ) => _delegate.addBreakpointAtEntry(isolateId, functionId); + + @override + Future<vm_service.Success> clearCpuSamples(String isolateId) => + _delegate.clearCpuSamples(isolateId); + + @override + Future<vm_service.Success> clearVMTimeline() => _delegate.clearVMTimeline(); + + @override + Future<vm_service.Response> invoke( + String isolateId, + String targetId, + String selector, + List<String> argumentIds, { + bool disableBreakpoints, + }) => _delegate.invoke( + isolateId, + targetId, + selector, + argumentIds, + disableBreakpoints: disableBreakpoints, + ); + + @override + Future<vm_service.Response> evaluate( + String isolateId, + String targetId, + String expression, { + Map<String, String> scope, + bool disableBreakpoints, + }) => _delegate.evaluate( + isolateId, + targetId, + expression, + scope: scope, + disableBreakpoints: disableBreakpoints, + ); + + @override + Future<vm_service.Response> evaluateInFrame( + String isolateId, + int frameIndex, + String expression, { + Map<String, String> scope, + bool disableBreakpoints, + }) => _delegate.evaluateInFrame( + isolateId, + frameIndex, + expression, + scope: scope, + disableBreakpoints: disableBreakpoints, + ); + + @override + Future<vm_service.AllocationProfile> getAllocationProfile( + String isolateId, { + bool reset, + bool gc, + }) => _delegate.getAllocationProfile( + isolateId, + reset: reset, + gc: gc, + ); + + @override + Future<vm_service.ClassList> getClassList(String isolateId) => + _delegate.getClassList( + isolateId, + ); + + @override + Future<vm_service.CpuSamples> getCpuSamples( + String isolateId, + int timeOriginMicros, + int timeExtentMicros, + ) => _delegate.getCpuSamples( + isolateId, + timeOriginMicros, + timeExtentMicros, + ); + + @override + Future<vm_service.FlagList> getFlagList() => _delegate.getFlagList(); + + @override + Future<vm_service.InboundReferences> getInboundReferences( + String isolateId, + String targetId, + int limit, + ) => _delegate.getInboundReferences( + isolateId, + targetId, + limit, + ); + + + @override + Future<vm_service.InstanceSet> getInstances( + String isolateId, + String objectId, + int limit, + ) => _delegate.getInstances( + isolateId, + objectId, + limit, + ); + + @override + Future<vm_service.Isolate> getIsolate( + String isolateId, + ) => _delegate.getIsolate( + isolateId, + ); + + @override + Future<vm_service.IsolateGroup> getIsolateGroup( + String isolateGroupId, + ) => _delegate.getIsolateGroup( + isolateGroupId, + ); + + @override + Future<vm_service.MemoryUsage> getMemoryUsage( + String isolateId, + ) => _delegate.getMemoryUsage( + isolateId, + ); + + @override + Future<vm_service.MemoryUsage> getIsolateGroupMemoryUsage( + String isolateGroupId, + ) => _delegate.getIsolateGroupMemoryUsage( + isolateGroupId, + ); + + @override + Future<vm_service.ScriptList> getScripts( + String isolateId, + ) => _delegate.getScripts(isolateId); + + @override + Future<vm_service.Obj> getObject( + String isolateId, + String objectId, { + int offset, + int count, + }) => _delegate.getObject( + isolateId, + objectId, + offset: offset, + count: count, + ); + + @override + Future<vm_service.PortList> getPorts( + String isolateId, + ) => _delegate.getPorts( + isolateId, + ); + + @override + Future<vm_service.RetainingPath> getRetainingPath( + String isolateId, + String targetId, + int limit, + ) => _delegate.getRetainingPath( + isolateId, + targetId, + limit, + ); + + @override + Future<vm_service.ProcessMemoryUsage> getProcessMemoryUsage() => + _delegate.getProcessMemoryUsage(); + + @override + Future<vm_service.Stack> getStack( + String isolateId, { + int limit, + }) => _delegate.getStack( + isolateId, + limit: limit, + ); + + @override + Future<vm_service.ProtocolList> getSupportedProtocols() => + _delegate.getSupportedProtocols(); + + @override + Future<vm_service.SourceReport> getSourceReport( + String isolateId, + /*List<SourceReportKind>*/ + List<String> reports, { + String scriptId, + int tokenPos, + int endTokenPos, + bool forceCompile, + }) => _delegate.getSourceReport( + isolateId, + reports, + scriptId: scriptId, + tokenPos: tokenPos, + endTokenPos: endTokenPos, + forceCompile: forceCompile, + ); + + @override + Future<vm_service.Version> getVersion() => _delegate.getVersion(); + + @override + Future<vm_service.VM> getVM() => _delegate.getVM(); + + @override + Future<vm_service.Timeline> getVMTimeline({ + int timeOriginMicros, + int timeExtentMicros, + }) => _delegate.getVMTimeline( + timeOriginMicros: timeOriginMicros, + timeExtentMicros: timeExtentMicros, + ); + + @override + Future<vm_service.TimelineFlags> getVMTimelineFlags() => _delegate.getVMTimelineFlags(); + + @override + Future<vm_service.Timestamp> getVMTimelineMicros() => _delegate.getVMTimelineMicros(); + + @override + Future<vm_service.Success> pause(String isolateId) => _delegate.pause(isolateId); + + @override + Future<vm_service.Success> kill(String isolateId) => _delegate.kill(isolateId); + + @override + Future<vm_service.Success> registerService(String service, String alias) => + _delegate.registerService(service, alias); + + @override + Future<vm_service.ReloadReport> reloadSources( + String isolateId, { + bool force, + bool pause, + String rootLibUri, + String packagesUri, + }) => _delegate.reloadSources( + isolateId, + force: force, + pause: pause, + rootLibUri: rootLibUri, + packagesUri: packagesUri, + ); + + @override + Future<vm_service.Success> removeBreakpoint(String isolateId, String breakpointId) => + _delegate.removeBreakpoint(isolateId, breakpointId); + + @override + Future<vm_service.Success> requestHeapSnapshot(String isolateId) => + _delegate.requestHeapSnapshot(isolateId); + + @override + Future<vm_service.Success> resume( + String isolateId, { + /*StepOption*/ String step, + int frameIndex, + }) => _delegate.resume( + isolateId, + step: step, + frameIndex: frameIndex, + ); + + @override + Future<vm_service.Success> setExceptionPauseMode( + String isolateId, + /*ExceptionPauseMode*/ String mode, + ) => _delegate.setExceptionPauseMode( + isolateId, + mode, + ); + + @override + Future<vm_service.Response> setFlag(String name, String value) => + _delegate.setFlag(name, value); + + @override + Future<vm_service.Success> setLibraryDebuggable( + String isolateId, + String libraryId, + bool isDebuggable, + ) => _delegate.setLibraryDebuggable( + isolateId, + libraryId, + isDebuggable, + ); + + @override + Future<vm_service.Success> setName(String isolateId, String name) => + _delegate.setName(isolateId, name); + + @override + Future<vm_service.Success> setVMName(String name) => _delegate.setVMName(name); + + @override + Future<vm_service.Success> setVMTimelineFlags(List<String> recordedStreams) => + _delegate.setVMTimelineFlags(recordedStreams); + + @override + Future<vm_service.Success> streamCancel(String streamId) => + _delegate.streamCancel(streamId); + + @override + Future<vm_service.Success> streamListen(String streamId) => + _delegate.streamListen(streamId); + + @override + Future<vm_service.Response> callMethod( + String method, { + String isolateId, + Map<dynamic, dynamic> args, + }) => _delegate.callMethod( + method, + isolateId: isolateId, + args: args, + ); + + /// Invoke a specific service protocol extension method. + /// + /// See https://api.dart.dev/stable/dart-developer/dart-developer-library.html. + @override + Future<vm_service.Response> callServiceExtension( + String method, { + String isolateId, + Map<dynamic, dynamic> args, + }) => _delegate.callServiceExtension( + method, + isolateId: isolateId, + args: args, + ); + + @override + Stream<String> get onSend => _delegate.onSend; + + @override + Stream<String> get onReceive => _delegate.onReceive; + + @override + void dispose() => _delegate.dispose(); + + @override + Future<void> get onDone => _delegate.onDone; + + @override + void registerServiceCallback(String service, vm_service.ServiceCallback cb) => + _delegate.registerServiceCallback(service, cb); + + + // Flutter specific methods follow. + Future<vm_service.Response> callMethodWrapper( String method, {
diff --git a/packages/flutter_tools/test/general.shard/drive/drive_service_test.dart b/packages/flutter_tools/test/general.shard/drive/drive_service_test.dart index 24265fb..e15cda7 100644 --- a/packages/flutter_tools/test/general.shard/drive/drive_service_test.dart +++ b/packages/flutter_tools/test/general.shard/drive/drive_service_test.dart
@@ -362,7 +362,7 @@ FlutterDriverService setUpDriverService({ Logger logger, ProcessManager processManager, - vm_service.VmService vmService, + FlutterVmService vmService, }) { logger ??= BufferLogger.test(); return FlutterDriverService(
diff --git a/packages/flutter_tools/test/general.shard/ios/ios_device_logger_test.dart b/packages/flutter_tools/test/general.shard/ios/ios_device_logger_test.dart index f866c85..cb7c7d6 100644 --- a/packages/flutter_tools/test/general.shard/ios/ios_device_logger_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/ios_device_logger_test.dart
@@ -12,6 +12,7 @@ import 'package:flutter_tools/src/ios/devices.dart'; import 'package:flutter_tools/src/ios/ios_deploy.dart'; import 'package:flutter_tools/src/ios/mac.dart'; +import 'package:flutter_tools/src/vmservice.dart'; import 'package:mockito/mockito.dart'; import 'package:vm_service/vm_service.dart'; @@ -325,5 +326,5 @@ }); } -class MockVmService extends Mock implements VmService {} +class MockVmService extends Mock implements FlutterVmService {} class MockIOSDeployDebugger extends Mock implements IOSDeployDebugger {}
diff --git a/packages/flutter_tools/test/general.shard/resident_runner_test.dart b/packages/flutter_tools/test/general.shard/resident_runner_test.dart index 85fb96c..8ff03fb 100644 --- a/packages/flutter_tools/test/general.shard/resident_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_runner_test.dart
@@ -3126,7 +3126,7 @@ class MockFlutterDevice extends Mock implements FlutterDevice {} class MockDartDevelopmentService extends Mock implements DartDevelopmentService {} -class MockVMService extends Mock implements vm_service.VmService {} +class MockVMService extends Mock implements FlutterVmService {} class MockDevFS extends Mock implements DevFS {} class MockDevice extends Mock implements Device {} class MockDeviceLogReader extends Mock implements DeviceLogReader {}
diff --git a/packages/flutter_tools/test/general.shard/vmservice_test.dart b/packages/flutter_tools/test/general.shard/vmservice_test.dart index 2edce09..70de59e 100644 --- a/packages/flutter_tools/test/general.shard/vmservice_test.dart +++ b/packages/flutter_tools/test/general.shard/vmservice_test.dart
@@ -218,7 +218,7 @@ testWithoutContext('setAssetDirectory forwards arguments correctly', () async { final Completer<String> completer = Completer<String>(); - final vm_service.VmService vmService = vm_service.VmService( + final FlutterVmService vmService = FlutterVmService( const Stream<String>.empty(), completer.complete, ); @@ -243,7 +243,7 @@ testWithoutContext('getSkSLs forwards arguments correctly', () async { final Completer<String> completer = Completer<String>(); - final vm_service.VmService vmService = vm_service.VmService( + final FlutterVmService vmService = FlutterVmService( const Stream<String>.empty(), completer.complete, ); @@ -264,7 +264,7 @@ testWithoutContext('flushUIThreadTasks forwards arguments correctly', () async { final Completer<String> completer = Completer<String>(); - final vm_service.VmService vmService = vm_service.VmService( + final FlutterVmService vmService = FlutterVmService( const Stream<String>.empty(), completer.complete, ); @@ -447,13 +447,6 @@ expect(fakeVmServiceHost.hasRemainingExpectations, false); }); - testWithoutContext('expandos are null safe', () { - vm_service.VmService vmService; - - expect(vmService.httpAddress, null); - expect(vmService.wsAddress, null); - }); - testWithoutContext('Can process log events from the vm service', () { final vm_service.Event event = vm_service.Event( bytes: base64.encode(utf8.encode('Hello There\n')), @@ -466,7 +459,7 @@ } class MockDevice extends Mock implements Device {} -class MockVMService extends Mock implements vm_service.VmService {} +class MockVMService extends Mock implements FlutterVmService {} class MockFlutterVersion extends Mock implements FlutterVersion { @override Map<String, Object> toJson() => const <String, Object>{'Mock': 'Version'};
diff --git a/packages/flutter_tools/test/src/common.dart b/packages/flutter_tools/test/src/common.dart index 53a8419..f36b4b7 100644 --- a/packages/flutter_tools/test/src/common.dart +++ b/packages/flutter_tools/test/src/common.dart
@@ -23,6 +23,7 @@ import 'package:flutter_tools/src/runner/flutter_command.dart'; import 'package:flutter_tools/src/runner/flutter_command_runner.dart'; import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/vmservice.dart'; import 'package:meta/meta.dart'; import 'package:fake_async/fake_async.dart'; import 'package:test_api/test_api.dart' as test_package show TypeMatcher, test; // ignore: deprecated_member_use @@ -285,7 +286,7 @@ FakeVmServiceHost({ @required List<VmServiceExpectation> requests, }) : _requests = requests { - _vmService = vm_service.VmService( + _vmService = FlutterVmService( _input.stream, _output.add, ); @@ -328,8 +329,8 @@ final StreamController<String> _input = StreamController<String>(); final StreamController<String> _output = StreamController<String>(); - vm_service.VmService get vmService => _vmService; - vm_service.VmService _vmService; + FlutterVmService get vmService => _vmService; + FlutterVmService _vmService; bool get hasRemainingExpectations => _requests.isNotEmpty;