| Index: runtime/observatory/lib/src/service/object.dart
|
| diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart
|
| index 07970072c01e48b8f475a2f4934daab3fa4a69f8..2944d0ca0fcef93f6cd044379c35b18dc0a2157b 100644
|
| --- a/runtime/observatory/lib/src/service/object.dart
|
| +++ b/runtime/observatory/lib/src/service/object.dart
|
| @@ -1147,6 +1147,7 @@ class Isolate extends ServiceObjectOwner {
|
| @observable bool loading = true;
|
| @observable bool runnable = false;
|
| @observable bool ioEnabled = false;
|
| + @observable bool reloading = false;
|
|
|
| final List<String> extensionRPCs = new List<String>();
|
|
|
| @@ -1190,6 +1191,22 @@ class Isolate extends ServiceObjectOwner {
|
| return invokeRpc('getSourceReport', params);
|
| }
|
|
|
| + Future<ServiceMap> reloadSources() {
|
| + return invokeRpc('_reloadSources', {}).then((_) {
|
| + reloading = true;
|
| + });
|
| + }
|
| +
|
| + void _handleIsolateReloadEvent(ServiceEvent event) {
|
| + reloading = false;
|
| + if (event.reloadError != null) {
|
| + // Failure.
|
| + print('Reload failed: ${event.reloadError}');
|
| + } else {
|
| + _cache.clear();
|
| + }
|
| + }
|
| +
|
| /// Fetches and builds the class hierarchy for this isolate. Returns the
|
| /// Object class object.
|
| Future<Class> getClassHierarchy() {
|
| @@ -1495,7 +1512,9 @@ class Isolate extends ServiceObjectOwner {
|
| case ServiceEvent.kInspect:
|
| // Handled elsewhere.
|
| break;
|
| -
|
| + case ServiceEvent.kIsolateReload:
|
| + _handleIsolateReloadEvent(event);
|
| + break;
|
| case ServiceEvent.kBreakpointAdded:
|
| _addBreakpoint(event.breakpoint);
|
| break;
|
| @@ -1819,6 +1838,7 @@ class ServiceEvent extends ServiceObject {
|
| static const kIsolateRunnable = 'IsolateRunnable';
|
| static const kIsolateExit = 'IsolateExit';
|
| static const kIsolateUpdate = 'IsolateUpdate';
|
| + static const kIsolateReload = 'IsolateReload';
|
| static const kServiceExtensionAdded = 'ServiceExtensionAdded';
|
| static const kPauseStart = 'PauseStart';
|
| static const kPauseExit = 'PauseExit';
|
| @@ -1850,6 +1870,7 @@ class ServiceEvent extends ServiceObject {
|
| @observable Frame topFrame;
|
| @observable String extensionRPC;
|
| @observable Instance exception;
|
| + @observable Instance reloadError;
|
| @observable bool atAsyncSuspension;
|
| @observable ServiceObject inspectee;
|
| @observable ByteData data;
|
| @@ -1921,6 +1942,7 @@ class ServiceEvent extends ServiceObject {
|
| if (map['count'] != null) {
|
| count = map['count'];
|
| }
|
| + reloadError = map['reloadError'];
|
| if (map['_debuggerSettings'] != null &&
|
| map['_debuggerSettings']['_exceptions'] != null) {
|
| exceptions = map['_debuggerSettings']['_exceptions'];
|
| @@ -2853,6 +2875,7 @@ class Script extends HeapObject {
|
| final lines = new ObservableList<ScriptLine>();
|
| @observable String uri;
|
| @observable String kind;
|
| + @observable DateTime loadTime;
|
| @observable int firstTokenPos;
|
| @observable int lastTokenPos;
|
| @observable int lineOffset;
|
| @@ -2955,6 +2978,8 @@ class Script extends HeapObject {
|
| return;
|
| }
|
| _loaded = true;
|
| + int loadTimeMillis = map['_loadTime'];
|
| + loadTime = new DateTime.fromMillisecondsSinceEpoch(loadTimeMillis);
|
| lineOffset = map['lineOffset'];
|
| columnOffset = map['columnOffset'];
|
| _parseTokenPosTable(map['tokenPosTable']);
|
|
|