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

Side by Side Diff: tool/input_sdk/patch/async_patch.dart

Issue 1953153002: Update dart:async to match the Dart repo. (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Created 4 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
« no previous file with comments | « tool/input_sdk/lib/async/zone.dart ('k') | tool/sdk_expected_errors.txt » ('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) 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 // Patch file for the dart:async library. 5 // Patch file for the dart:async library.
6 6
7 import 'dart:_js_helper' show 7 import 'dart:_js_helper' show
8 patch, 8 patch,
9 Primitives; 9 Primitives,
10 convertDartClosureToJS;
vsm 2016/05/05 21:23:40 Note - this is just identity on the first arg in D
Bob Nystrom 2016/05/05 22:03:46 Done.
10 import 'dart:_isolate_helper' show 11 import 'dart:_isolate_helper' show
11 IsolateNatives, 12 IsolateNatives,
12 TimerImpl, 13 TimerImpl,
13 leaveJsAsync, 14 leaveJsAsync,
14 enterJsAsync, 15 enterJsAsync,
15 isWorker; 16 isWorker;
16 17
17 import 'dart:_foreign_helper' show JS; 18 import 'dart:_foreign_helper' show JS;
18 19
19 @patch 20 @patch
20 class _AsyncRun { 21 class _AsyncRun {
21 @patch 22 @patch
22 static void _scheduleImmediate(void callback()) { 23 static void _scheduleImmediate(void callback()) {
23 scheduleImmediateClosure(callback); 24 _scheduleImmediateClosure(callback);
24 } 25 }
25 26
26 // Lazily initialized. 27 // Lazily initialized.
27 static final Function scheduleImmediateClosure = 28 static final Function _scheduleImmediateClosure =
28 _initializeScheduleImmediate(); 29 _initializeScheduleImmediate();
29 30
30 static Function _initializeScheduleImmediate() { 31 static Function _initializeScheduleImmediate() {
32 // TODO(rnystrom): Not needed by dev_compiler.
33 // requiresPreamble();
31 if (JS('', 'self.scheduleImmediate') != null) { 34 if (JS('', 'self.scheduleImmediate') != null) {
32 return _scheduleImmediateJsOverride; 35 return _scheduleImmediateJsOverride;
33 } 36 }
34 if (JS('', 'self.MutationObserver') != null && 37 if (JS('', 'self.MutationObserver') != null &&
35 JS('', 'self.document') != null) { 38 JS('', 'self.document') != null) {
36 // Use mutationObservers. 39 // Use mutationObservers.
37 var div = JS('', 'self.document.createElement("div")'); 40 var div = JS('', 'self.document.createElement("div")');
38 var span = JS('', 'self.document.createElement("span")'); 41 var span = JS('', 'self.document.createElement("span")');
39 var storedCallback; 42 var storedCallback;
40 43
41 internalCallback(_) { 44 internalCallback(_) {
42 leaveJsAsync(); 45 leaveJsAsync();
43 var f = storedCallback; 46 var f = storedCallback;
44 storedCallback = null; 47 storedCallback = null;
45 f(); 48 f();
46 }; 49 };
47 50
48 var observer = JS('', 'new self.MutationObserver(#)', internalCallback); 51 var observer = JS('', 'new self.MutationObserver(#)',
52 convertDartClosureToJS(internalCallback, 1));
49 JS('', '#.observe(#, { childList: true })', 53 JS('', '#.observe(#, { childList: true })',
50 observer, div); 54 observer, div);
51 55
52 return (void callback()) { 56 return (void callback()) {
53 assert(storedCallback == null); 57 assert(storedCallback == null);
54 enterJsAsync(); 58 enterJsAsync();
55 storedCallback = callback; 59 storedCallback = callback;
56 // Because of a broken shadow-dom polyfill we have to change the 60 // Because of a broken shadow-dom polyfill we have to change the
57 // children instead a cheap property. 61 // children instead a cheap property.
58 // See https://github.com/Polymer/ShadowDOM/issues/468 62 // See https://github.com/Polymer/ShadowDOM/issues/468
59 JS('', '#.firstChild ? #.removeChild(#): #.appendChild(#)', 63 JS('', '#.firstChild ? #.removeChild(#): #.appendChild(#)',
60 div, div, span, div, span); 64 div, div, span, div, span);
61 }; 65 };
62 } else if (JS('', 'self.setImmediate') != null) { 66 } else if (JS('', 'self.setImmediate') != null) {
63 return _scheduleImmediateWithSetImmediate; 67 return _scheduleImmediateWithSetImmediate;
64 } 68 }
65 // TODO(20055): We should use DOM promises when available. 69 // TODO(20055): We should use DOM promises when available.
66 return _scheduleImmediateWithTimer; 70 return _scheduleImmediateWithTimer;
67 } 71 }
68 72
69 static void _scheduleImmediateJsOverride(void callback()) { 73 static void _scheduleImmediateJsOverride(void callback()) {
70 internalCallback() { 74 internalCallback() {
71 leaveJsAsync(); 75 leaveJsAsync();
72 callback(); 76 callback();
73 }; 77 };
74 enterJsAsync(); 78 enterJsAsync();
75 JS('void', 'self.scheduleImmediate(#)', internalCallback); 79 JS('void', 'self.scheduleImmediate(#)',
80 convertDartClosureToJS(internalCallback, 0));
76 } 81 }
77 82
78 static void _scheduleImmediateWithSetImmediate(void callback()) { 83 static void _scheduleImmediateWithSetImmediate(void callback()) {
79 internalCallback() { 84 internalCallback() {
80 leaveJsAsync(); 85 leaveJsAsync();
81 callback(); 86 callback();
82 }; 87 };
83 enterJsAsync(); 88 enterJsAsync();
84 JS('void', 'self.setImmediate(#)', internalCallback); 89 JS('void', 'self.setImmediate(#)',
90 convertDartClosureToJS(internalCallback, 0));
85 } 91 }
86 92
87 static void _scheduleImmediateWithTimer(void callback()) { 93 static void _scheduleImmediateWithTimer(void callback()) {
88 Timer._createTimer(Duration.ZERO, callback); 94 Timer._createTimer(Duration.ZERO, callback);
89 } 95 }
90 } 96 }
91 97
92 @patch 98 @patch
93 class DeferredLibrary { 99 class DeferredLibrary {
94 @patch 100 @patch
(...skipping 14 matching lines...) Expand all
109 115
110 @patch 116 @patch
111 static Timer _createPeriodicTimer(Duration duration, 117 static Timer _createPeriodicTimer(Duration duration,
112 void callback(Timer timer)) { 118 void callback(Timer timer)) {
113 int milliseconds = duration.inMilliseconds; 119 int milliseconds = duration.inMilliseconds;
114 if (milliseconds < 0) milliseconds = 0; 120 if (milliseconds < 0) milliseconds = 0;
115 return new TimerImpl.periodic(milliseconds, callback); 121 return new TimerImpl.periodic(milliseconds, callback);
116 } 122 }
117 } 123 }
118 124
119 bool get _hasDocument => JS('String', 'typeof document') == 'object'; 125 @patch
126 void _rethrow(Object error, StackTrace stackTrace) {
127 // TODO(rnystrom): Not needed by dev_compiler.
128 // error = wrapException(error);
129 JS("void", "#.stack = #", error, stackTrace.toString());
130 JS("void", "throw #", error);
131 }
OLDNEW
« no previous file with comments | « tool/input_sdk/lib/async/zone.dart ('k') | tool/sdk_expected_errors.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698