Chromium Code Reviews| Index: runtime/bin/vmservice/observatory/lib/src/service/object.dart |
| diff --git a/runtime/bin/vmservice/observatory/lib/src/service/object.dart b/runtime/bin/vmservice/observatory/lib/src/service/object.dart |
| index d1bad5f5cfbba99a9d9af8b62ad71f2831d6c61f..5db56bd3b840c44ea59d0e90732d06279f71f224 100644 |
| --- a/runtime/bin/vmservice/observatory/lib/src/service/object.dart |
| +++ b/runtime/bin/vmservice/observatory/lib/src/service/object.dart |
| @@ -34,6 +34,17 @@ abstract class ServiceObject extends Observable { |
| @reflectable String get serviceType => _serviceType; |
| String _serviceType; |
| + bool get isBool => serviceType == 'Bool'; |
| + bool get isDouble => serviceType == 'Double'; |
| + bool get isError => serviceType == 'Error'; |
| + bool get isInstance => serviceType == 'Instance'; |
| + bool get isInt => serviceType == 'Smi' || serviceType == 'Mint' || serviceType == 'Bigint'; |
| + bool get isList => serviceType == 'GrowableObjectArray' || serviceType == 'Array'; |
| + bool get isNull => serviceType == 'Null' && id == 'objects/null'; |
| + bool get isPsuedoNull => serviceType == 'Null' && id != 'objects/null'; |
| + bool get isString => serviceType == 'String'; |
| + bool get isType => serviceType == 'Type'; |
|
Cutch
2014/08/28 14:46:05
Should these be on Instance and not ServiceObject?
rmacnak
2014/08/28 19:41:05
I think it makes sense to ask these questions of a
|
| + |
| /// The complete service url of this object. |
| @reflectable String get link => _owner.relativeLink(_id); |
| @@ -82,6 +93,19 @@ abstract class ServiceObject extends Observable { |
| case 'Function': |
| obj = new ServiceFunction._empty(owner); |
| break; |
| + case 'Array': |
| + case 'Bigint': |
| + case 'Bool': |
| + case 'Double': |
| + case 'GrowableObjectArray': |
| + case 'Instance': |
| + case 'Mint': |
| + case 'Null': |
| + case 'Smi': |
| + case 'String': |
| + case 'Type': |
| + obj = new Instance._empty(owner); |
| + break; |
| case 'Isolate': |
| obj = new Isolate._empty(owner.vm); |
| break; |
| @@ -1115,7 +1139,7 @@ class DartError extends ServiceObject { |
| @observable String kind; |
| @observable String message; |
| - @observable ServiceMap exception; |
| + @observable Instance exception; |
| @observable ServiceMap stacktrace; |
| void _update(ObservableMap map, bool mapIsRef) { |
| @@ -1395,6 +1419,54 @@ class Class extends ServiceObject with Coverage { |
| String toString() => 'Class($vmName)'; |
| } |
| +class Instance extends ServiceObject { |
| + @observable Class clazz; |
| + @observable String valueAsString; |
| + @observable int size; |
| + @observable ServiceFunction closureFunc; // If a closure. |
| + @observable String name; // If a Type. |
| + |
| + @observable var type_class; |
|
Cutch
2014/08/28 14:46:05
typeClass
rmacnak
2014/08/28 19:41:05
Fixed
|
| + @observable var length; |
| + @observable var fields; |
| + @observable var nativeFields; |
| + @observable var elements; |
| + @observable var user_name; |
|
Cutch
2014/08/28 14:46:05
userName
rmacnak
2014/08/28 19:41:05
Fixed
|
| + |
| + bool get isClosure => closureFunc != null; |
| + |
| + Instance._empty(ServiceObjectOwner owner) : super._empty(owner); |
| + |
| + void _update(ObservableMap map, bool mapIsRef) { |
| + // Extract full properties. |
| + _upgradeCollection(map, isolate); |
| + |
| + clazz = map['class']; |
| + valueAsString = map['valueAsString']; |
| + size = map['size']; |
| + closureFunc = map['closureFunc']; |
| + name = map['name']; |
| + |
| + if (mapIsRef) { |
| + return; |
| + } |
| + |
| + nativeFields = map['nativeFields']; |
| + fields = map['fields']; |
| + length = map['length']; |
| + elements = map['elements']; |
| + type_class = map['type_class']; |
| + user_name = map['user_name']; |
| + |
| + // We are fully loaded. |
| + _loaded = true; |
| + } |
| + |
| + String get shortName => valueAsString != null ? valueAsString : 'a ${clazz.name}'; |
| + |
| + String toString() => 'Instance($shortName)'; |
| +} |
| + |
| // TODO(koda): Sync this with VM. |
| class FunctionKind { |
| final String _strValue; |
| @@ -2221,8 +2293,7 @@ class Socket extends ServiceObject { |
| // Convert any ServiceMaps representing a null instance into an actual null. |
| _convertNull(obj) { |
| - if (obj is ServiceMap && |
| - obj.serviceType == 'Null') { |
| + if (obj.isNull) { |
| return null; |
| } |
| return obj; |