Fix restart/reload benchmark synchronization (#11282)

Changes introduced in
https://github.com/flutter/engine/commit/8ba522eeae35d8c70ada3c7b8e200ca2274f4f95
has removed from the `_flutter.listViews` the thread synchronization
side effect used during benchmarks.

The thread synchronization is restored via the new
`_flutter.flushUIThreadTasks` RPC.

Fixes https://github.com/flutter/flutter/issues/11241

Related https://github.com/flutter/engine/pull/3898
diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart
index 51300a6..e908bf0 100644
--- a/packages/flutter_tools/lib/src/run_hot.dart
+++ b/packages/flutter_tools/lib/src/run_hot.dart
@@ -153,7 +153,6 @@
       // Measure time to perform a hot restart.
       printStatus('Benchmarking hot restart');
       await restart(fullRestart: true);
-      await refreshViews();
       // TODO(johnmccutchan): Modify script entry point.
       printStatus('Benchmarking hot reload');
       // Measure time to perform a hot reload.
@@ -313,6 +312,11 @@
                           deviceEntryUri,
                           devicePackagesUri,
                           deviceAssetsDirectoryUri);
+      if (benchmarkMode) {
+        for (FlutterDevice device in flutterDevices)
+          for (FlutterView view in device.views)
+            await view.flushUIThreadTasks();
+      }
     }
   }
 
diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart
index 8aea4b3..9b255ce 100644
--- a/packages/flutter_tools/lib/src/vmservice.dart
+++ b/packages/flutter_tools/lib/src/vmservice.dart
@@ -1230,6 +1230,10 @@
 
   bool get hasIsolate => _uiIsolate != null;
 
+  Future<Null> flushUIThreadTasks() async {
+    await owner.vm.invokeRpcRaw('_flutter.flushUIThreadTasks');
+  }
+
   @override
   String toString() => id;
 }