OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of vmservice_io; | 5 part of vmservice_io; |
6 | 6 |
7 final bool silentObservatory = | 7 final bool silentObservatory = |
8 const bool.fromEnvironment('SILENT_OBSERVATORY'); | 8 const bool.fromEnvironment('SILENT_OBSERVATORY'); |
9 | 9 |
10 void serverPrint(String s) { | 10 void serverPrint(String s) { |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 // This is a cross origin attempt to connect | 226 // This is a cross origin attempt to connect |
227 request.response.close(); | 227 request.response.close(); |
228 return; | 228 return; |
229 } | 229 } |
230 if (request.method == 'PUT') { | 230 if (request.method == 'PUT') { |
231 // PUT requests are forwarded to DevFS for processing. | 231 // PUT requests are forwarded to DevFS for processing. |
232 | 232 |
233 List fsNameList; | 233 List fsNameList; |
234 List fsPathList; | 234 List fsPathList; |
235 List fsPathBase64List; | 235 List fsPathBase64List; |
| 236 List fsUriBase64List; |
236 Object fsName; | 237 Object fsName; |
237 Object fsPath; | 238 Object fsPath; |
| 239 Object fsUri; |
238 | 240 |
239 try { | 241 try { |
240 // Extract the fs name and fs path from the request headers. | 242 // Extract the fs name and fs path from the request headers. |
241 fsNameList = request.headers['dev_fs_name']; | 243 fsNameList = request.headers['dev_fs_name']; |
242 fsName = fsNameList[0]; | 244 fsName = fsNameList[0]; |
243 | 245 |
244 fsPathList = request.headers['dev_fs_path']; | 246 // Prefer Uri encoding first. |
245 fsPathBase64List = request.headers['dev_fs_path_b64']; | 247 fsUriBase64List = request.headers['dev_fs_uri_b64']; |
246 // If the 'dev_fs_path_b64' header field was sent, use that instead. | 248 if ((fsUriBase64List != null) && (fsUriBase64List.length > 0)) { |
247 if ((fsPathBase64List != null) && (fsPathBase64List.length > 0)) { | 249 String decodedFsUri = UTF8.decode(BASE64.decode(fsUriBase64List[0])); |
248 fsPath = UTF8.decode(BASE64.decode(fsPathBase64List[0])); | 250 fsUri = Uri.parse(decodedFsUri); |
249 } else { | 251 } |
250 fsPath = fsPathList[0]; | 252 |
| 253 // Fallback to path encoding. |
| 254 if (fsUri == null) { |
| 255 fsPathList = request.headers['dev_fs_path']; |
| 256 fsPathBase64List = request.headers['dev_fs_path_b64']; |
| 257 // If the 'dev_fs_path_b64' header field was sent, use that instead. |
| 258 if ((fsPathBase64List != null) && (fsPathBase64List.length > 0)) { |
| 259 fsPath = UTF8.decode(BASE64.decode(fsPathBase64List[0])); |
| 260 } else { |
| 261 fsPath = fsPathList[0]; |
| 262 } |
251 } | 263 } |
252 } catch (e) { /* ignore */ } | 264 } catch (e) { /* ignore */ } |
253 | 265 |
254 String result; | 266 String result; |
255 try { | 267 try { |
256 result = await _service.devfs.handlePutStream( | 268 result = await _service.devfs.handlePutStream( |
257 fsName, | 269 fsName, |
258 fsPath, | 270 fsPath, |
| 271 fsUri, |
259 request.transform(GZIP.decoder)); | 272 request.transform(GZIP.decoder)); |
260 } catch (e) { /* ignore */ } | 273 } catch (e) { /* ignore */ } |
261 | 274 |
262 if (result != null) { | 275 if (result != null) { |
263 request.response.headers.contentType = | 276 request.response.headers.contentType = |
264 HttpRequestClient.jsonContentType; | 277 HttpRequestClient.jsonContentType; |
265 request.response.write(result); | 278 request.response.write(result); |
266 } | 279 } |
267 request.response.close(); | 280 request.response.close(); |
268 return; | 281 return; |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 _notifyServerState(""); | 383 _notifyServerState(""); |
371 onServerAddressChange(null); | 384 onServerAddressChange(null); |
372 return this; | 385 return this; |
373 }); | 386 }); |
374 } | 387 } |
375 | 388 |
376 } | 389 } |
377 | 390 |
378 void _notifyServerState(String uri) | 391 void _notifyServerState(String uri) |
379 native "VMServiceIO_NotifyServerState"; | 392 native "VMServiceIO_NotifyServerState"; |
OLD | NEW |