blob: d5772e2b52b45a1efac03fd120f0207d61686065 [file] [log] [blame]
// 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;
}