| Index: runtime/observatory/lib/src/app/location_manager.dart
|
| diff --git a/runtime/observatory/lib/src/app/location_manager.dart b/runtime/observatory/lib/src/app/location_manager.dart
|
| index 17b6c8c4057b6e10a29df38e58989f458e23fd65..e055c72e9179002254b4316b8edaa4612985ccb4 100644
|
| --- a/runtime/observatory/lib/src/app/location_manager.dart
|
| +++ b/runtime/observatory/lib/src/app/location_manager.dart
|
| @@ -82,7 +82,8 @@ class LocationManager extends Observable {
|
| runZoned(() => _app._visit(_uri, internalArguments),
|
| onError: (e, st) {
|
| if (e is IsolateNotFound) {
|
| - var newPath = _app.vm == null ? '/vm-connect' : '/isolate-reconnect';
|
| + var newPath = ((_app.vm == null || _app.vm.isDisconnected)
|
| + ? '/vm-connect' : '/isolate-reconnect');
|
| var parameters = {};
|
| parameters.addAll(_uri.queryParameters);
|
| parameters['originalPath'] = _uri.path;
|
| @@ -91,18 +92,24 @@ class LocationManager extends Observable {
|
| go(makeLink(generatedUri.toString()), true);
|
| return;
|
| }
|
| - throw e;
|
| + // Surface any uncaught exceptions.
|
| + _app.handleException(e, st);
|
| });
|
| }
|
|
|
| /// Navigate to [url].
|
| void go(String url, [bool addToBrowserHistory = true]) {
|
| - if ((url != makeLink('/vm-connect')) && _app.vm == null) {
|
| + if ((uri.toString() != 'vm-connect') &&
|
| + (url != makeLink('/vm-connect')) &&
|
| + (_app.vm == null ||_app.vm.isDisconnected)) {
|
| if (!window.confirm('Connection with VM has been lost. '
|
| 'Proceeding will lose current page.')) {
|
| return;
|
| }
|
| - url = makeLink('/vm-connect/');
|
| + url = makeLink('/vm-connect');
|
| +
|
| + // TODO(turnidge): This should be made more general.
|
| + _app.notifications.clear();
|
| }
|
| if (addToBrowserHistory) {
|
| _addToBrowserHistory(url);
|
|
|