|  | // Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | part of dart._vmservice; | 
|  |  | 
|  | class Asset { | 
|  | final String name; | 
|  | final Uint8List data; | 
|  |  | 
|  | Asset(this.name, this.data); | 
|  |  | 
|  | String get mimeType { | 
|  | var extensionStart = name.lastIndexOf('.'); | 
|  | var extension = name.substring(extensionStart + 1); | 
|  | switch (extension) { | 
|  | case 'html': | 
|  | return 'text/html; charset=UTF-8'; | 
|  | case 'dart': | 
|  | return 'application/dart; charset=UTF-8'; | 
|  | case 'js': | 
|  | return 'application/javascript; charset=UTF-8'; | 
|  | case 'css': | 
|  | return 'text/css; charset=UTF-8'; | 
|  | case 'gif': | 
|  | return 'image/gif'; | 
|  | case 'png': | 
|  | return 'image/png'; | 
|  | case 'jpg': | 
|  | return 'image/jpeg'; | 
|  | case 'jpeg': | 
|  | return 'image/jpeg'; | 
|  | case 'svg': | 
|  | return 'image/svg+xml'; | 
|  | default: | 
|  | return 'text/plain'; | 
|  | } | 
|  | } | 
|  |  | 
|  | static Map<String, Asset> request() { | 
|  | Uint8List tarBytes = _requestAssets(); | 
|  | if (tarBytes == null) { | 
|  | return null; | 
|  | } | 
|  | List assetList = _decodeAssets(tarBytes); | 
|  | Map<String, Asset> assets = new HashMap<String, Asset>(); | 
|  | for (int i = 0; i < assetList.length; i += 2) { | 
|  | var a = new Asset(assetList[i], assetList[i + 1]); | 
|  | assets[a.name] = a; | 
|  | } | 
|  | return assets; | 
|  | } | 
|  |  | 
|  | String toString() => '$name ($mimeType)'; | 
|  | } | 
|  |  | 
|  | List _decodeAssets(Uint8List data) native "VMService_DecodeAssets"; | 
|  |  | 
|  | Map<String, Asset> _assets; | 
|  | Map<String, Asset> get assets { | 
|  | if (_assets == null) { | 
|  | try { | 
|  | _assets = Asset.request(); | 
|  | } catch (e) { | 
|  | print('Could not load Observatory assets: $e'); | 
|  | } | 
|  | } | 
|  | return _assets; | 
|  | } |