Register flutterVersion service in flutter_tools. (#39524)

* Register getFlutterVersion service in flutter_tools.

* Add short revision ids to response.

* Rename method and remove obsolete comments.

* Fix broken test by adding sendPeerNotifications flag.

* Implement mockPeer.sendNotification.
diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart
index a3de239..03a8ef3 100644
--- a/packages/flutter_tools/lib/src/vmservice.dart
+++ b/packages/flutter_tools/lib/src/vmservice.dart
@@ -20,6 +20,7 @@
 import 'base/utils.dart';
 import 'convert.dart' show base64;
 import 'globals.dart';
+import 'version.dart';
 import 'vmservice_record_replay.dart';
 
 /// Override `WebSocketConnector` in [context] to use a different constructor
@@ -138,8 +139,6 @@
         }
       });
 
-      // If the Flutter Engine doesn't support service registration this will
-      // have no effect
       _peer.sendNotification('registerService', <String, String>{
         'service': 'reloadSources',
         'alias': 'Flutter Tools',
@@ -164,14 +163,25 @@
         }
       });
 
-      // If the Flutter Engine doesn't support service registration this will
-      // have no effect
       _peer.sendNotification('registerService', <String, String>{
         'service': 'hotRestart',
         'alias': 'Flutter Tools',
       });
     }
 
+    _peer.registerMethod('flutterVersion', (rpc.Parameters params) async {
+      final FlutterVersion version = FlutterVersion();
+      final Map<String, Object> versionJson = version.toJson();
+      versionJson['frameworkRevisionShort'] = version.frameworkRevisionShort;
+      versionJson['engineRevisionShort'] = version.engineRevisionShort;
+      return versionJson;
+    });
+
+    _peer.sendNotification('registerService', <String, String>{
+      'service': 'flutterVersion',
+      'alias': 'Flutter Tools',
+    });
+
     if (compileExpression != null) {
       _peer.registerMethod('compileExpression', (rpc.Parameters params) async {
         final String isolateId = params['isolateId'].asString;