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

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

Issue 35663003: Companion CL to support $0, $1, $2 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: PTAL Created 7 years, 1 month 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 | « sdk/lib/js/dartium/js_dartium.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 html; 5 part of html;
6 6
7 class _ConsoleVariables { 7 class _ConsoleVariables {
8 Map<String, Object> _data = new Map<String, Object>(); 8 Map<String, Object> _data = new Map<String, Object>();
9 9
10 /** 10 /**
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 static _ConsoleVariables _consoleTempVariables = new _ConsoleVariables(); 160 static _ConsoleVariables _consoleTempVariables = new _ConsoleVariables();
161 161
162 /** 162 /**
163 * Header passed in from the Dartium Developer Tools when an expression is 163 * Header passed in from the Dartium Developer Tools when an expression is
164 * evaluated in the console as opposed to the watch window or another context 164 * evaluated in the console as opposed to the watch window or another context
165 * that does not expect REPL support. 165 * that does not expect REPL support.
166 */ 166 */
167 static const _CONSOLE_API_SUPPORT_HEADER = 167 static const _CONSOLE_API_SUPPORT_HEADER =
168 'with ((this && this.console && this.console._commandLineAPI) || {}) {\n'; 168 'with ((this && this.console && this.console._commandLineAPI) || {}) {\n';
169 169
170 static bool expectsConsoleApi(String expression) {
171 return expression.indexOf(_CONSOLE_API_SUPPORT_HEADER) == 0;;
172 }
173
170 /** 174 /**
171 * Takes an [expression] and a list of [local] variable and returns an 175 * Takes an [expression] and a list of [local] variable and returns an
172 * expression for a closure with a body matching the original expression 176 * expression for a closure with a body matching the original expression
173 * where locals are passed in as arguments. Returns a list containing the 177 * where locals are passed in as arguments. Returns a list containing the
174 * String expression for the closure and the list of arguments that should 178 * String expression for the closure and the list of arguments that should
175 * be passed to it. The expression should then be evaluated using 179 * be passed to it. The expression should then be evaluated using
176 * Dart_EvaluateExpr which will generate a closure that should be invoked 180 * Dart_EvaluateExpr which will generate a closure that should be invoked
177 * with the list of arguments passed to this method. 181 * with the list of arguments passed to this method.
178 * 182 *
179 * For example: 183 * For example:
(...skipping 24 matching lines...) Expand all
204 // 'this' needs to be handled by calling Dart_EvaluateExpr with 208 // 'this' needs to be handled by calling Dart_EvaluateExpr with
205 // 'this' as the target rather than by passing it as an argument. 209 // 'this' as the target rather than by passing it as an argument.
206 if (arg == 'this') return; 210 if (arg == 'this') return;
207 if (args.isNotEmpty) { 211 if (args.isNotEmpty) {
208 sb.write(", "); 212 sb.write(", ");
209 } 213 }
210 sb.write("final $arg"); 214 sb.write("final $arg");
211 args[arg] = value; 215 args[arg] = value;
212 } 216 }
213 217
214 if (expression.indexOf(_CONSOLE_API_SUPPORT_HEADER) == 0) { 218 if (expectsConsoleApi(expression)) {
215 expression = expression.substring(expression.indexOf('\n') + 1); 219 expression = expression.substring(expression.indexOf('\n') + 1);
216 expression = expression.substring(0, expression.lastIndexOf('\n')); 220 expression = expression.substring(0, expression.lastIndexOf('\n'));
217 221
218 addArg("\$consoleVariables", _consoleTempVariables); 222 addArg("\$consoleVariables", _consoleTempVariables);
219 223
220 // FIXME: use a real Dart tokenizer. The following regular expressions 224 // FIXME: use a real Dart tokenizer. The following regular expressions
221 // only allow setting variables at the immediate start of the expression 225 // only allow setting variables at the immediate start of the expression
222 // to limit the number of edge cases we have to handle. 226 // to limit the number of edge cases we have to handle.
223 227
224 // Match expressions that start with "var x" 228 // Match expressions that start with "var x"
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 _scheduleImmediateHelper._schedule(callback); 585 _scheduleImmediateHelper._schedule(callback);
582 }; 586 };
583 587
584 get _pureIsolateScheduleImmediateClosure => ((void callback()) => 588 get _pureIsolateScheduleImmediateClosure => ((void callback()) =>
585 throw new UnimplementedError("scheduleMicrotask in background isolates " 589 throw new UnimplementedError("scheduleMicrotask in background isolates "
586 "are not supported in the browser")); 590 "are not supported in the browser"));
587 591
588 void _initializeCustomElement(Element e) { 592 void _initializeCustomElement(Element e) {
589 _Utils.initializeCustomElement(e); 593 _Utils.initializeCustomElement(e);
590 } 594 }
OLDNEW
« no previous file with comments | « sdk/lib/js/dartium/js_dartium.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698