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

Side by Side Diff: runtime/observatory/lib/src/service/object.dart

Issue 2343183002: Fix service test websocket error edge case (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « no previous file | runtime/observatory/tests/service/test_helper.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 service; 5 part of service;
6 6
7 // Some value smaller than the object ring, so requesting a large array 7 // Some value smaller than the object ring, so requesting a large array
8 // doesn't result in an expired ref because the elements lapped it in the 8 // doesn't result in an expired ref because the elements lapped it in the
9 // object ring. 9 // object ring.
10 const int kDefaultFieldLimit = 100; 10 const int kDefaultFieldLimit = 100;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 70
71 /// A NetworkRpcException is used to indicate that an rpc has 71 /// A NetworkRpcException is used to indicate that an rpc has
72 /// been canceled due to network error. 72 /// been canceled due to network error.
73 class NetworkRpcException extends RpcException 73 class NetworkRpcException extends RpcException
74 implements M.ConnectionException { 74 implements M.ConnectionException {
75 NetworkRpcException(String message) : super(message); 75 NetworkRpcException(String message) : super(message);
76 76
77 String toString() => 'NetworkRpcException(${message})'; 77 String toString() => 'NetworkRpcException(${message})';
78 } 78 }
79 79
80 Future<ServiceObject> ignoreNetworkErrors(
81 Object error, [ServiceObject resultOnNetworkError = null]) {
82 if (error is NetworkRpcException) {
83 return new Future.value(resultOnNetworkError);
84 }
85 return new Future.error(error);
86 }
87
80 class MalformedResponseRpcException extends RpcException { 88 class MalformedResponseRpcException extends RpcException {
81 MalformedResponseRpcException(String message, this.response) : super(message); 89 MalformedResponseRpcException(String message, this.response) : super(message);
82 90
83 Map response; 91 Map response;
84 92
85 String toString() => 'MalformedResponseRpcException(${message})'; 93 String toString() => 'MalformedResponseRpcException(${message})';
86 } 94 }
87 95
88 class FakeVMRpcException extends RpcException { 96 class FakeVMRpcException extends RpcException {
89 FakeVMRpcException(String message) : super(message); 97 FakeVMRpcException(String message) : super(message);
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 void _update(Map map, bool mapIsRef) { 401 void _update(Map map, bool mapIsRef) {
394 if (map['class'] != null) { 402 if (map['class'] != null) {
395 // Sent with refs for some types. Load it if available, but don't clobber 403 // Sent with refs for some types. Load it if available, but don't clobber
396 // it with null for kinds that only send if for full responses. 404 // it with null for kinds that only send if for full responses.
397 clazz = map['class']; 405 clazz = map['class'];
398 } 406 }
399 407
400 // Load the full class object if the isolate is runnable. 408 // Load the full class object if the isolate is runnable.
401 if (clazz != null) { 409 if (clazz != null) {
402 if (clazz.isolate.runnable) { 410 if (clazz.isolate.runnable) {
403 clazz.load(); 411 // No one awaits on this request so we silence any network errors
412 // that occur here but forward other errors.
413 clazz.load().catchError((error) => ignoreNetworkErrors(error, clazz));
404 } 414 }
405 } 415 }
406 416
407 if (mapIsRef) { 417 if (mapIsRef) {
408 return; 418 return;
409 } 419 }
410 size = map['size']; 420 size = map['size'];
411 } 421 }
412 } 422 }
413 423
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
853 } 863 }
854 864
855 Future<ServiceObject> getFlagList() { 865 Future<ServiceObject> getFlagList() {
856 return invokeRpc('getFlagList', {}); 866 return invokeRpc('getFlagList', {});
857 } 867 }
858 868
859 Future<ServiceObject> _streamListen(String streamId) { 869 Future<ServiceObject> _streamListen(String streamId) {
860 Map params = { 870 Map params = {
861 'streamId': streamId, 871 'streamId': streamId,
862 }; 872 };
863 return invokeRpc('streamListen', params).catchError((e) { 873 // Ignore network errors on stream listen.
864 // Ignore network errors on stream listen. 874 return invokeRpc('streamListen', params).catchError(
865 if (e is NetworkRpcException) { 875 (e) => ignoreNetworkErrors(e));
866 return null;
867 }
868 });
869 } 876 }
870 877
871 Future<ServiceObject> _streamCancel(String streamId) { 878 Future<ServiceObject> _streamCancel(String streamId) {
872 Map params = { 879 Map params = {
873 'streamId': streamId, 880 'streamId': streamId,
874 }; 881 };
875 return invokeRpc('streamCancel', params).catchError((e) { 882 // Ignore network errors on stream cancel.
876 // Ignore network errors on stream cancel. 883 return invokeRpc('streamCancel', params).catchError(
877 if (e is NetworkRpcException) { 884 (e) => ignoreNetworkErrors(e));
878 return null;
879 }
880 });
881 } 885 }
882 886
883 // A map from stream id to event stream state. 887 // A map from stream id to event stream state.
884 Map<String, _EventStreamState> _eventStreams = {}; 888 Map<String, _EventStreamState> _eventStreams = {};
885 889
886 // Well-known stream ids. 890 // Well-known stream ids.
887 static const kVMStream = 'VM'; 891 static const kVMStream = 'VM';
888 static const kIsolateStream = 'Isolate'; 892 static const kIsolateStream = 'Isolate';
889 static const kTimelineStream = 'Timeline'; 893 static const kTimelineStream = 'Timeline';
890 static const kDebugStream = 'Debug'; 894 static const kDebugStream = 'Debug';
(...skipping 3464 matching lines...) Expand 10 before | Expand all | Expand 10 after
4355 var v = list[i]; 4359 var v = list[i];
4356 if ((v is Map) && _isServiceMap(v)) { 4360 if ((v is Map) && _isServiceMap(v)) {
4357 list[i] = owner.getFromMap(v); 4361 list[i] = owner.getFromMap(v);
4358 } else if (v is List) { 4362 } else if (v is List) {
4359 _upgradeList(v, owner); 4363 _upgradeList(v, owner);
4360 } else if (v is Map) { 4364 } else if (v is Map) {
4361 _upgradeMap(v, owner); 4365 _upgradeMap(v, owner);
4362 } 4366 }
4363 } 4367 }
4364 } 4368 }
OLDNEW
« no previous file with comments | « no previous file | runtime/observatory/tests/service/test_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698