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

Side by Side Diff: tools/dom/src/native_DOMImplementation.dart

Issue 13185006: Redirect pure isolate print to helper isolate. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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
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 html; 5 part of html;
6 6
7 class _Utils { 7 class _Utils {
8 static double dateTimeToDouble(DateTime dateTime) => 8 static double dateTimeToDouble(DateTime dateTime) =>
9 dateTime.millisecondsSinceEpoch.toDouble(); 9 dateTime.millisecondsSinceEpoch.toDouble();
10 static DateTime doubleToDateTime(double dateTime) { 10 static DateTime doubleToDateTime(double dateTime) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 51
52 static bool isMap(obj) => obj is Map; 52 static bool isMap(obj) => obj is Map;
53 53
54 static Map createMap() => {}; 54 static Map createMap() => {};
55 55
56 static makeUnimplementedError(String fileName, int lineNo) { 56 static makeUnimplementedError(String fileName, int lineNo) {
57 return new UnsupportedError('[info: $fileName:$lineNo]'); 57 return new UnsupportedError('[info: $fileName:$lineNo]');
58 } 58 }
59 59
60 static window() native "Utils_window"; 60 static window() native "Utils_window";
61 static print(String message) native "Utils_print";
62 static forwardingPrint(String message) native "Utils_forwardingPrint"; 61 static forwardingPrint(String message) native "Utils_forwardingPrint";
63 static void spawnDomFunction(Function topLevelFunction, int replyTo) native "U tils_spawnDomFunction"; 62 static void spawnDomFunction(Function topLevelFunction, int replyTo) native "U tils_spawnDomFunction";
64 static int _getNewIsolateId() native "Utils_getNewIsolateId"; 63 static int _getNewIsolateId() native "Utils_getNewIsolateId";
65 static bool shadowRootSupported(Document document) native "Utils_shadowRootSup ported"; 64 static bool shadowRootSupported(Document document) native "Utils_shadowRootSup ported";
66 } 65 }
67 66
68 class _NPObject extends NativeFieldWrapperClass1 { 67 class _NPObject extends NativeFieldWrapperClass1 {
69 _NPObject.internal(); 68 _NPObject.internal();
70 static _NPObject retrieve(String key) native "NPObject_retrieve"; 69 static _NPObject retrieve(String key) native "NPObject_retrieve";
71 property(String propertyName) native "NPObject_property"; 70 property(String propertyName) native "NPObject_property";
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 String putIfAbsent(String key, String ifAbsent()) => Maps.putIfAbsent(this, ke y, ifAbsent); 124 String putIfAbsent(String key, String ifAbsent()) => Maps.putIfAbsent(this, ke y, ifAbsent);
126 String remove(String key) native "DOMStringMap_remove_Callback"; 125 String remove(String key) native "DOMStringMap_remove_Callback";
127 void clear() => Maps.clear(this); 126 void clear() => Maps.clear(this);
128 void forEach(void f(String key, String value)) => Maps.forEach(this, f); 127 void forEach(void f(String key, String value)) => Maps.forEach(this, f);
129 Collection<String> get keys native "DOMStringMap_getKeys_Callback"; 128 Collection<String> get keys native "DOMStringMap_getKeys_Callback";
130 Collection<String> get values => Maps.getValues(this); 129 Collection<String> get values => Maps.getValues(this);
131 int get length => Maps.length(this); 130 int get length => Maps.length(this);
132 bool get isEmpty => Maps.isEmpty(this); 131 bool get isEmpty => Maps.isEmpty(this);
133 } 132 }
134 133
135 get _printClosure => (s) { 134 final Future<SendPort> _HELPER_ISOLATE_PORT =
136 try { 135 spawnDomFunction(_helperIsolateMain);
137 window.console.log(s); 136
138 } catch (_) { 137 final _TIMER_REGISTRY = new Map<SendPort, Timer>();
139 _Utils.print(s); 138
140 } 139 const _NEW_TIMER = 'NEW_TIMER';
140 const _CANCEL_TIMER = 'CANCEL_TIMER';
141 const _TIMER_PING = 'TIMER_PING';
142 const _PRINT = 'PRINT';
143
144 _helperIsolateMain() {
145 port.receive((msg, replyTo) {
146 final cmd = msg[0];
147 if (cmd == _NEW_TIMER) {
148 final duration = new Duration(milliseconds: msg[1]);
149 bool periodic = msg[2];
150 final callback = () { replyTo.send(_TIMER_PING); };
151 _TIMER_REGISTRY[replyTo] = periodic ?
152 new Timer.periodic(duration, callback) :
153 new Timer(duration, callback);
154 } else if (cmd == _CANCEL_TIMER) {
155 _TIMER_REGISTRY.remove(replyTo).cancel();
156 } else if (cmd == _PRINT) {
157 final message = msg[1];
158 // TODO(antonm): we need somehow identify those isolates.
159 print('[From isolate] $message');
vsm 2013/03/29 14:14:54 We have the id we're using for interop (_Utils._ge
Anton Muhin 2013/03/29 16:14:33 Sorry, no, I do not immediately now. Ideally we s
160 }
161 });
162 }
163
164 final _printClosure = window.console.log;
vsm 2013/03/29 14:14:54 Is there a way at the Dart-level to programmatical
Anton Muhin 2013/03/29 16:14:33 Not right now. We can expose it via Utils, but I
165 final _pureIsolatePrintClosure = (s) {
166 _HELPER_ISOLATE_PORT.then((sendPort) {
167 sendPort.send([_PRINT, s]);
168 });
141 }; 169 };
142 170
143 final _forwardingPrintClosure = _Utils.forwardingPrint; 171 final _forwardingPrintClosure = _Utils.forwardingPrint;
OLDNEW
« sdk/lib/html/dart2js/html_dart2js.dart ('K') | « tools/dom/src/Timer.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698