Transfer URIs instead of platform-dependent file paths (#8701)

diff --git a/bin/internal/engine.version b/bin/internal/engine.version
index 726c5f6..5668fc2 100644
--- a/bin/internal/engine.version
+++ b/bin/internal/engine.version
@@ -1 +1 @@
-6e54f5e31f084d2e54a510959f68b89e4d2fdffd
+e0c702e35300b7fdef975b9929df25e112fa9eda
diff --git a/packages/flutter_tools/lib/src/devfs.dart b/packages/flutter_tools/lib/src/devfs.dart
index 2388723..bd25b91 100644
--- a/packages/flutter_tools/lib/src/devfs.dart
+++ b/packages/flutter_tools/lib/src/devfs.dart
@@ -199,8 +199,7 @@
         '_writeDevFSFile',
         params: <String, dynamic> {
           'fsName': fsName,
-          // TODO(goderbauer): transfer real Uri (instead of file path) when remote end supports it
-          'path': deviceUri.toFilePath(windows: false),
+          'uri': deviceUri.toString(),
           'fileContents': fileContents
         },
       );
@@ -268,9 +267,8 @@
       final HttpClientRequest request = await _client.putUrl(httpAddress);
       request.headers.removeAll(HttpHeaders.ACCEPT_ENCODING);
       request.headers.add('dev_fs_name', fsName);
-      // TODO(goderbauer): transfer real Uri (instead of file path) when remote end supports it
-      request.headers.add('dev_fs_path_b64',
-                          BASE64.encode(UTF8.encode(deviceUri.toFilePath(windows: false))));
+      request.headers.add('dev_fs_uri_b64',
+                          BASE64.encode(UTF8.encode(deviceUri.toString())));
       final Stream<List<int>> contents = content.contentsAsCompressedStream();
       await request.addStream(contents);
       final HttpClientResponse response = await request.close();
diff --git a/packages/flutter_tools/test/devfs_test.dart b/packages/flutter_tools/test/devfs_test.dart
index 5fe961e..b0dd82b 100644
--- a/packages/flutter_tools/test/devfs_test.dart
+++ b/packages/flutter_tools/test/devfs_test.dart
@@ -299,7 +299,7 @@
     _httpAddress = Uri.parse('http://127.0.0.1:${_server.port}');
     _server.listen((HttpRequest request) {
       final String fsName = request.headers.value('dev_fs_name');
-      final String devicePath = UTF8.decode(BASE64.decode(request.headers.value('dev_fs_path_b64')));
+      final String devicePath = UTF8.decode(BASE64.decode(request.headers.value('dev_fs_uri_b64')));
       messages.add('writeFile $fsName $devicePath');
       request.drain<List<int>>().then<Null>((List<int> value) {
         request.response