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

Side by Side Diff: tools/dom/templates/html/impl/impl_Geolocation.darttemplate

Issue 14196003: Change StreamController constructor. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments and rebase. Created 7 years, 8 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
« no previous file with comments | « tests/lib/async/stream_state_helper.dart ('k') | no next file » | 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 $LIBRARYNAME; 5 part of $LIBRARYNAME;
6 6
7 @DocsEditable 7 @DocsEditable
8 $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC { 8 $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
9 9
10 @DomName('Geolocation.getCurrentPosition') 10 @DomName('Geolocation.getCurrentPosition')
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 if (timeout != null) { 47 if (timeout != null) {
48 options['timeout'] = timeout.inMilliseconds; 48 options['timeout'] = timeout.inMilliseconds;
49 } 49 }
50 if (maximumAge != null) { 50 if (maximumAge != null) {
51 options['maximumAge'] = maximumAge.inMilliseconds; 51 options['maximumAge'] = maximumAge.inMilliseconds;
52 } 52 }
53 53
54 int watchId; 54 int watchId;
55 var controller; 55 var controller;
56 controller = new StreamController<Geoposition>( 56 controller = new StreamController<Geoposition>(
57 onSubscriptionStateChange: () { 57 onListen: () {
58 if (controller.hasListener) { 58 assert(watchId == null);
59 assert(watchId == null); 59 watchId = $dom_watchPosition(
60 watchId = $dom_watchPosition( 60 (position) {
61 (position) { 61 controller.add(_ensurePosition(position));
62 controller.add(_ensurePosition(position)); 62 },
63 }, 63 (error) {
64 (error) { 64 controller.addError(error);
65 controller.addError(error); 65 },
66 }, 66 options);
67 options); 67 },
68 } else { 68 onCancel: () {
69 assert(watchId != null); 69 assert(watchId != null);
70 $dom_clearWatch(watchId); 70 $dom_clearWatch(watchId);
71 }
72 }); 71 });
73 72
74 return controller.stream; 73 return controller.stream;
75 } 74 }
76 75
77 Geoposition _ensurePosition(domPosition) { 76 Geoposition _ensurePosition(domPosition) {
78 $if DART2JS 77 $if DART2JS
79 try { 78 try {
80 // Firefox may throw on this. 79 // Firefox may throw on this.
81 if (domPosition is Geoposition) { 80 if (domPosition is Geoposition) {
(...skipping 17 matching lines...) Expand all
99 class _GeopositionWrapper implements Geoposition { 98 class _GeopositionWrapper implements Geoposition {
100 var _ptr; 99 var _ptr;
101 _GeopositionWrapper(this._ptr); 100 _GeopositionWrapper(this._ptr);
102 101
103 Coordinates get coords => JS('Coordinates', '#.coords', _ptr); 102 Coordinates get coords => JS('Coordinates', '#.coords', _ptr);
104 int get timestamp => JS('int', '#.timestamp', _ptr); 103 int get timestamp => JS('int', '#.timestamp', _ptr);
105 } 104 }
106 $endif 105 $endif
107 106
108 107
OLDNEW
« no previous file with comments | « tests/lib/async/stream_state_helper.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698