Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Side by Side Diff: runtime/observatory/lib/src/app/location_manager.dart

Issue 1120133002: Rework error handling in the service protocol and in Observatory. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: fix tests Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of app; 5 part of app;
6 6
7 class LocationManager extends Observable { 7 class LocationManager extends Observable {
8 final _defaultPath = '/vm'; 8 final _defaultPath = '/vm';
9 9
10 final ObservatoryApplication _app; 10 final ObservatoryApplication _app;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 /// Add [url] to the browser history. 75 /// Add [url] to the browser history.
76 _addToBrowserHistory(String url) { 76 _addToBrowserHistory(String url) {
77 window.history.pushState(url, document.title, url); 77 window.history.pushState(url, document.title, url);
78 } 78 }
79 79
80 /// Notify the current page that something has changed. 80 /// Notify the current page that something has changed.
81 _visit() { 81 _visit() {
82 runZoned(() => _app._visit(_uri, internalArguments), 82 runZoned(() => _app._visit(_uri, internalArguments),
83 onError: (e, st) { 83 onError: (e, st) {
84 if (e is IsolateNotFound) { 84 if (e is IsolateNotFound) {
85 var newPath = _app.vm == null ? '/vm-connect' : '/isolate-reconnect'; 85 var newPath = ((_app.vm == null || _app.vm.isDisconnected)
86 ? '/vm-connect' : '/isolate-reconnect');
86 var parameters = {}; 87 var parameters = {};
87 parameters.addAll(_uri.queryParameters); 88 parameters.addAll(_uri.queryParameters);
88 parameters['originalPath'] = _uri.path; 89 parameters['originalPath'] = _uri.path;
89 parameters['originalIsolateId'] = parameters['isolateId']; 90 parameters['originalIsolateId'] = parameters['isolateId'];
90 var generatedUri = new Uri(path: newPath, queryParameters: parameters); 91 var generatedUri = new Uri(path: newPath, queryParameters: parameters);
91 go(makeLink(generatedUri.toString()), true); 92 go(makeLink(generatedUri.toString()), true);
92 return; 93 return;
93 } 94 }
94 throw e; 95 // Surface any uncaught exceptions.
96 _app.handleException(e, st);
95 }); 97 });
96 } 98 }
97 99
98 /// Navigate to [url]. 100 /// Navigate to [url].
99 void go(String url, [bool addToBrowserHistory = true]) { 101 void go(String url, [bool addToBrowserHistory = true]) {
100 if ((url != makeLink('/vm-connect')) && _app.vm == null) { 102 if ((url != makeLink('/vm-connect')) &&
103 (_app.vm == null || _app.vm.isDisconnected)) {
101 if (!window.confirm('Connection with VM has been lost. ' 104 if (!window.confirm('Connection with VM has been lost. '
102 'Proceeding will lose current page.')) { 105 'Proceeding will lose current page.')) {
103 return; 106 return;
104 } 107 }
105 url = makeLink('/vm-connect/'); 108 url = makeLink('/vm-connect');
106 } 109 }
110
111 if (url == makeLink('/vm-connect')) {
112 // When we go to the vm-connect page, drop all notifications.
113 _app.notifications.clear();
114 }
115
107 if (addToBrowserHistory) { 116 if (addToBrowserHistory) {
108 _addToBrowserHistory(url); 117 _addToBrowserHistory(url);
109 } 118 }
110 _updateApplicationLocation(url); 119 _updateApplicationLocation(url);
111 _visit(); 120 _visit();
112 } 121 }
113 122
114 /// Starting with the current uri path and queryParameters, update 123 /// Starting with the current uri path and queryParameters, update
115 /// queryParameters present in [updateParameters], then generate a new uri 124 /// queryParameters present in [updateParameters], then generate a new uri
116 /// and navigate to that. 125 /// and navigate to that.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 // let browser handle. 160 // let browser handle.
152 return; 161 return;
153 } 162 }
154 event.preventDefault(); 163 event.preventDefault();
155 // 'currentTarget' is the dom element that would process the event. 164 // 'currentTarget' is the dom element that would process the event.
156 // If we use 'target' we might get an <em> element or somesuch. 165 // If we use 'target' we might get an <em> element or somesuch.
157 var target = event.currentTarget; 166 var target = event.currentTarget;
158 go(target.attributes['href']); 167 go(target.attributes['href']);
159 } 168 }
160 } 169 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/app/application.dart ('k') | runtime/observatory/lib/src/elements/action_link.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698