| Index: runtime/observatory/lib/src/elements/debugger.dart
|
| diff --git a/runtime/observatory/lib/src/elements/debugger.dart b/runtime/observatory/lib/src/elements/debugger.dart
|
| index 8c817e558ca7654289e0253479038c6f65a1c5bc..8b91efffe5b35548afe24bb75b7924feafcf80b1 100644
|
| --- a/runtime/observatory/lib/src/elements/debugger.dart
|
| +++ b/runtime/observatory/lib/src/elements/debugger.dart
|
| @@ -34,8 +34,7 @@ import 'package:logging/logging.dart';
|
| abstract class DebuggerCommand extends Command {
|
| ObservatoryDebugger debugger;
|
|
|
| - DebuggerCommand(this.debugger, name, children)
|
| - : super(name, children);
|
| + DebuggerCommand(this.debugger, name, children) : super(name, children);
|
|
|
| String get helpShort;
|
| String get helpLong;
|
| @@ -44,9 +43,10 @@ abstract class DebuggerCommand extends Command {
|
| // TODO(turnidge): Rewrite HelpCommand so that it is a general utility
|
| // provided by the cli library.
|
| class HelpCommand extends DebuggerCommand {
|
| - HelpCommand(Debugger debugger) : super(debugger, 'help', [
|
| - new HelpHotkeysCommand(debugger),
|
| - ]);
|
| + HelpCommand(Debugger debugger)
|
| + : super(debugger, 'help', [
|
| + new HelpHotkeysCommand(debugger),
|
| + ]);
|
|
|
| String _nameAndAlias(Command cmd) {
|
| if (cmd.alias == null) {
|
| @@ -65,7 +65,7 @@ class HelpCommand extends DebuggerCommand {
|
| con.print('List of commands:\n');
|
| for (var command in commands) {
|
| con.print('${_nameAndAlias(command).padRight(12)} '
|
| - '- ${command.helpShort}');
|
| + '- ${command.helpShort}');
|
| }
|
| con.print(
|
| "\nFor more information on a specific command type 'help <command>'\n"
|
| @@ -101,7 +101,7 @@ class HelpCommand extends DebuggerCommand {
|
| con.print('Subcommands:\n');
|
| for (var subCommand in subCommands) {
|
| con.print(' ${subCommand.fullName.padRight(16)} '
|
| - '- ${subCommand.helpShort}');
|
| + '- ${subCommand.helpShort}');
|
| }
|
| con.print('');
|
| }
|
| @@ -116,7 +116,8 @@ class HelpCommand extends DebuggerCommand {
|
| return new Future.value(result);
|
| }
|
|
|
| - String helpShort = 'List commands or provide details about a specific command';
|
| + String helpShort =
|
| + 'List commands or provide details about a specific command';
|
|
|
| String helpLong =
|
| 'List commands or provide details about a specific command.\n'
|
| @@ -131,28 +132,27 @@ class HelpHotkeysCommand extends DebuggerCommand {
|
| Future run(List<String> args) {
|
| var con = debugger.console;
|
| con.print("List of hotkeys:\n"
|
| - "\n"
|
| - "[TAB] - complete a command\n"
|
| - "[Up Arrow] - history previous\n"
|
| - "[Down Arrow] - history next\n"
|
| - "\n"
|
| - "[Page Up] - move up one frame\n"
|
| - "[Page Down] - move down one frame\n"
|
| - "\n"
|
| - "[F7] - continue execution of the current isolate\n"
|
| - "[Ctrl ;] - pause execution of the current isolate\n"
|
| - "\n"
|
| - "[F8] - toggle breakpoint at current location\n"
|
| - "[F9] - next\n"
|
| - "[F10] - step\n"
|
| - "\n");
|
| + "\n"
|
| + "[TAB] - complete a command\n"
|
| + "[Up Arrow] - history previous\n"
|
| + "[Down Arrow] - history next\n"
|
| + "\n"
|
| + "[Page Up] - move up one frame\n"
|
| + "[Page Down] - move down one frame\n"
|
| + "\n"
|
| + "[F7] - continue execution of the current isolate\n"
|
| + "[Ctrl ;] - pause execution of the current isolate\n"
|
| + "\n"
|
| + "[F8] - toggle breakpoint at current location\n"
|
| + "[F9] - next\n"
|
| + "[F10] - step\n"
|
| + "\n");
|
| return new Future.value(null);
|
| }
|
|
|
| String helpShort = 'Provide a list of hotkeys';
|
|
|
| - String helpLong =
|
| - 'Provide a list of key hotkeys.\n'
|
| + String helpLong = 'Provide a list of key hotkeys.\n'
|
| '\n'
|
| 'Syntax: help hotkeys\n';
|
| }
|
| @@ -172,20 +172,19 @@ class PrintCommand extends DebuggerCommand {
|
| return;
|
| }
|
| var expression = args.join('');
|
| - var response = await debugger.isolate.evalFrame(debugger.currentFrame,
|
| - expression);
|
| + var response =
|
| + await debugger.isolate.evalFrame(debugger.currentFrame, expression);
|
| if (response is S.DartError) {
|
| debugger.console.print(response.message);
|
| } else {
|
| - debugger.console.print('= ', newline:false);
|
| + debugger.console.print('= ', newline: false);
|
| debugger.console.printRef(debugger.isolate, response, debugger.instances);
|
| }
|
| }
|
|
|
| String helpShort = 'Evaluate and print an expression in the current frame';
|
|
|
| - String helpLong =
|
| - 'Evaluate and print an expression in the current frame.\n'
|
| + String helpLong = 'Evaluate and print an expression in the current frame.\n'
|
| '\n'
|
| 'Syntax: print <expression>\n'
|
| ' p <expression>\n';
|
| @@ -217,8 +216,7 @@ class DownCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Move down one or more frames (hotkey: [Page Down])';
|
|
|
| - String helpLong =
|
| - 'Move down one or more frames.\n'
|
| + String helpLong = 'Move down one or more frames.\n'
|
| '\n'
|
| 'Hotkey: [Page Down]\n'
|
| '\n'
|
| @@ -252,8 +250,7 @@ class UpCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Move up one or more frames (hotkey: [Page Up])';
|
|
|
| - String helpLong =
|
| - 'Move up one or more frames.\n'
|
| + String helpLong = 'Move up one or more frames.\n'
|
| '\n'
|
| 'Hotkey: [Page Up]\n'
|
| '\n'
|
| @@ -289,8 +286,7 @@ class FrameCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Set the current frame';
|
|
|
| - String helpLong =
|
| - 'Set the current frame.\n'
|
| + String helpLong = 'Set the current frame.\n'
|
| '\n'
|
| 'Syntax: frame <number>\n'
|
| ' f <count>\n';
|
| @@ -305,8 +301,7 @@ class PauseCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Pause the isolate (hotkey: [Ctrl ;])';
|
|
|
| - String helpLong =
|
| - 'Pause the isolate.\n'
|
| + String helpLong = 'Pause the isolate.\n'
|
| '\n'
|
| 'Hotkey: [Ctrl ;]\n'
|
| '\n'
|
| @@ -324,8 +319,7 @@ class ContinueCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Resume execution of the isolate (hotkey: [F7])';
|
|
|
| - String helpLong =
|
| - 'Continue running the isolate.\n'
|
| + String helpLong = 'Continue running the isolate.\n'
|
| '\n'
|
| 'Hotkey: [F7]\n'
|
| '\n'
|
| @@ -362,8 +356,7 @@ class SyncNextCommand extends DebuggerCommand {
|
| return debugger.syncNext();
|
| }
|
|
|
| - String helpShort =
|
| - 'Run until return/unwind to current activation.';
|
| + String helpShort = 'Run until return/unwind to current activation.';
|
|
|
| String helpLong =
|
| 'Continue running the isolate until control returns to the current '
|
| @@ -379,8 +372,7 @@ class AsyncNextCommand extends DebuggerCommand {
|
| return debugger.asyncNext();
|
| }
|
|
|
| - String helpShort =
|
| - 'Step over await or yield';
|
| + String helpShort = 'Step over await or yield';
|
|
|
| String helpLong =
|
| 'Continue running the isolate until control returns to the current '
|
| @@ -422,8 +414,7 @@ class ClsCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Clear the console';
|
|
|
| - String helpLong =
|
| - 'Clear the console.\n'
|
| + String helpLong = 'Clear the console.\n'
|
| '\n'
|
| 'Syntax: cls\n';
|
| }
|
| @@ -433,8 +424,7 @@ class LogCommand extends DebuggerCommand {
|
|
|
| Future run(List<String> args) async {
|
| if (args.length == 0) {
|
| - debugger.console.print(
|
| - 'Current log level: '
|
| + debugger.console.print('Current log level: '
|
| '${debugger._consolePrinter._minimumLogLevel.name}');
|
| return new Future.value(null);
|
| }
|
| @@ -476,8 +466,7 @@ class LogCommand extends DebuggerCommand {
|
| return new Future.value(result);
|
| }
|
|
|
| - String helpShort =
|
| - 'Control which log messages are displayed';
|
| + String helpShort = 'Control which log messages are displayed';
|
|
|
| String helpLong =
|
| 'Get or set the minimum log level that should be displayed.\n'
|
| @@ -504,11 +493,11 @@ class FinishCommand extends DebuggerCommand {
|
| if (debugger.isolatePaused()) {
|
| var event = debugger.isolate.pauseEvent;
|
| if (event is M.PauseStartEvent) {
|
| - debugger.console.print(
|
| - "Type 'continue' [F7] or 'step' [F10] to start the isolate");
|
| + debugger.console
|
| + .print("Type 'continue' [F7] or 'step' [F10] to start the isolate");
|
| return new Future.value(null);
|
| }
|
| - if (event is M.PauseExitEvent) {
|
| + if (event is M.PauseExitEvent) {
|
| debugger.console.print("Type 'continue' [F7] to exit the isolate");
|
| return new Future.value(null);
|
| }
|
| @@ -529,19 +518,22 @@ class FinishCommand extends DebuggerCommand {
|
| }
|
|
|
| class SetCommand extends DebuggerCommand {
|
| - SetCommand(Debugger debugger)
|
| - : super(debugger, 'set', []);
|
| + SetCommand(Debugger debugger) : super(debugger, 'set', []);
|
|
|
| static var _boeValues = ['All', 'None', 'Unhandled'];
|
| static var _boolValues = ['false', 'true'];
|
|
|
| static var _options = {
|
| - 'break-on-exception': [_boeValues,
|
| - _setBreakOnException,
|
| - (debugger, _) => debugger.breakOnException],
|
| - 'up-is-down': [_boolValues,
|
| - _setUpIsDown,
|
| - (debugger, _) => debugger.upIsDown],
|
| + 'break-on-exception': [
|
| + _boeValues,
|
| + _setBreakOnException,
|
| + (debugger, _) => debugger.breakOnException
|
| + ],
|
| + 'up-is-down': [
|
| + _boolValues,
|
| + _setUpIsDown,
|
| + (debugger, _) => debugger.upIsDown
|
| + ],
|
| };
|
|
|
| static Future _setBreakOnException(debugger, name, value) async {
|
| @@ -630,11 +622,9 @@ class SetCommand extends DebuggerCommand {
|
| return new Future.value(result);
|
| }
|
|
|
| - String helpShort =
|
| - 'Set a debugger option';
|
| + String helpShort = 'Set a debugger option';
|
|
|
| - String helpLong =
|
| - 'Set a debugger option.\n'
|
| + String helpLong = 'Set a debugger option.\n'
|
| '\n'
|
| 'Known options:\n'
|
| ' break-on-exception # Should the debugger break on exceptions?\n'
|
| @@ -661,7 +651,7 @@ class BreakCommand extends DebuggerCommand {
|
| if (loc.function != null) {
|
| try {
|
| await debugger.isolate.addBreakpointAtEntry(loc.function);
|
| - } on S.ServerRpcException catch(e) {
|
| + } on S.ServerRpcException catch (e) {
|
| if (e.code == S.ServerRpcException.kCannotAddBreakpoint) {
|
| debugger.console.print('Unable to set breakpoint at ${loc}');
|
| } else {
|
| @@ -673,13 +663,13 @@ class BreakCommand extends DebuggerCommand {
|
| var script = loc.script;
|
| await script.load();
|
| if (loc.line < 1 || loc.line > script.lines.length) {
|
| - debugger.console.print(
|
| - 'line number must be in range [1,${script.lines.length}]');
|
| + debugger.console
|
| + .print('line number must be in range [1,${script.lines.length}]');
|
| return;
|
| }
|
| try {
|
| await debugger.isolate.addBreakpoint(script, loc.line, loc.col);
|
| - } on S.ServerRpcException catch(e) {
|
| + } on S.ServerRpcException catch (e) {
|
| if (e.code == S.ServerRpcException.kCannotAddBreakpoint) {
|
| debugger.console.print('Unable to set breakpoint at ${loc}');
|
| } else {
|
| @@ -703,8 +693,7 @@ class BreakCommand extends DebuggerCommand {
|
| String helpShort = 'Add a breakpoint by source location or function name'
|
| ' (hotkey: [F8])';
|
|
|
| - String helpLong =
|
| - 'Add a breakpoint by source location or function name.\n'
|
| + String helpLong = 'Add a breakpoint by source location or function name.\n'
|
| '\n'
|
| 'Hotkey: [F8]\n'
|
| '\n'
|
| @@ -747,16 +736,15 @@ class ClearCommand extends DebuggerCommand {
|
| return;
|
| }
|
| if (loc.function != null) {
|
| - debugger.console.print(
|
| - 'Ignoring breakpoint at $loc: '
|
| + debugger.console.print('Ignoring breakpoint at $loc: '
|
| 'Clearing function breakpoints not yet implemented');
|
| return;
|
| }
|
|
|
| var script = loc.script;
|
| if (loc.line < 1 || loc.line > script.lines.length) {
|
| - debugger.console.print(
|
| - 'line number must be in range [1,${script.lines.length}]');
|
| + debugger.console
|
| + .print('line number must be in range [1,${script.lines.length}]');
|
| return;
|
| }
|
| var lineInfo = script.getLine(loc.line);
|
| @@ -791,8 +779,7 @@ class ClearCommand extends DebuggerCommand {
|
| String helpShort = 'Remove a breakpoint by source location or function name'
|
| ' (hotkey: [F8])';
|
|
|
| - String helpLong =
|
| - 'Remove a breakpoint by source location or function name.\n'
|
| + String helpLong = 'Remove a breakpoint by source location or function name.\n'
|
| '\n'
|
| 'Hotkey: [F8]\n'
|
| '\n'
|
| @@ -854,8 +841,7 @@ class DeleteCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Remove a breakpoint by breakpoint id';
|
|
|
| - String helpLong =
|
| - 'Remove a breakpoint by breakpoint id.\n'
|
| + String helpLong = 'Remove a breakpoint by breakpoint id.\n'
|
| '\n'
|
| 'Syntax: delete <bp-id>\n'
|
| ' delete <bp-id> <bp-id> ...\n';
|
| @@ -875,19 +861,16 @@ class InfoBreakpointsCommand extends DebuggerCommand {
|
| var bpId = bpt.number;
|
| var locString = await bpt.location.toUserString();
|
| if (!bpt.resolved) {
|
| - debugger.console.print(
|
| - 'Future breakpoint ${bpId} at ${locString}');
|
| + debugger.console.print('Future breakpoint ${bpId} at ${locString}');
|
| } else {
|
| - debugger.console.print(
|
| - 'Breakpoint ${bpId} at ${locString}');
|
| + debugger.console.print('Breakpoint ${bpId} at ${locString}');
|
| }
|
| }
|
| }
|
|
|
| String helpShort = 'List all breakpoints';
|
|
|
| - String helpLong =
|
| - 'List all breakpoints.\n'
|
| + String helpLong = 'List all breakpoints.\n'
|
| '\n'
|
| 'Syntax: info breakpoints\n';
|
| }
|
| @@ -906,18 +889,18 @@ class InfoFrameCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Show current frame';
|
|
|
| - String helpLong =
|
| - 'Show current frame.\n'
|
| + String helpLong = 'Show current frame.\n'
|
| '\n'
|
| 'Syntax: info frame\n';
|
| }
|
|
|
| class IsolateCommand extends DebuggerCommand {
|
| - IsolateCommand(Debugger debugger) : super(debugger, 'isolate', [
|
| - new IsolateListCommand(debugger),
|
| - new IsolateNameCommand(debugger),
|
| - new IsolateReloadCommand(debugger),
|
| - ]) {
|
| + IsolateCommand(Debugger debugger)
|
| + : super(debugger, 'isolate', [
|
| + new IsolateListCommand(debugger),
|
| + new IsolateNameCommand(debugger),
|
| + new IsolateReloadCommand(debugger),
|
| + ]) {
|
| alias = 'i';
|
| }
|
|
|
| @@ -927,7 +910,7 @@ class IsolateCommand extends DebuggerCommand {
|
| return new Future.value(null);
|
| }
|
| var arg = args[0].trim();
|
| - var num = int.parse(arg, onError:(_) => null);
|
| + var num = int.parse(arg, onError: (_) => null);
|
|
|
| var candidate;
|
| for (var isolate in debugger.vm.isolates) {
|
| @@ -936,8 +919,7 @@ class IsolateCommand extends DebuggerCommand {
|
| break;
|
| } else if (arg == isolate.name) {
|
| if (candidate != null) {
|
| - debugger.console.print(
|
| - "Isolate identifier '${arg}' is ambiguous: "
|
| + debugger.console.print("Isolate identifier '${arg}' is ambiguous: "
|
| 'use the isolate number instead');
|
| return new Future.value(null);
|
| }
|
| @@ -975,10 +957,10 @@ class IsolateCommand extends DebuggerCommand {
|
| }
|
| return new Future.value(result);
|
| }
|
| +
|
| String helpShort = 'Switch, list, rename, or reload isolates';
|
|
|
| - String helpLong =
|
| - 'Switch the current isolate.\n'
|
| + String helpLong = 'Switch the current isolate.\n'
|
| '\n'
|
| 'Syntax: isolate <number>\n'
|
| ' isolate <name>\n';
|
| @@ -1001,8 +983,7 @@ class IsolateListCommand extends DebuggerCommand {
|
|
|
| Future run(List<String> args) async {
|
| if (debugger.vm == null) {
|
| - debugger.console.print(
|
| - "Internal error: vm has not been set");
|
| + debugger.console.print("Internal error: vm has not been set");
|
| return;
|
| }
|
|
|
| @@ -1020,26 +1001,25 @@ class IsolateListCommand extends DebuggerCommand {
|
| maxNameLen = max(maxNameLen, isolate.name.length);
|
| }
|
| debugger.console.print("${'ID'.padLeft(maxIdLen, ' ')} "
|
| - "${'ORIGIN'.padLeft(maxIdLen, ' ')} "
|
| - "${'NAME'.padRight(maxNameLen, ' ')} "
|
| - "${'STATE'.padRight(maxRunStateLen, ' ')} "
|
| - "CURRENT");
|
| + "${'ORIGIN'.padLeft(maxIdLen, ' ')} "
|
| + "${'NAME'.padRight(maxNameLen, ' ')} "
|
| + "${'STATE'.padRight(maxRunStateLen, ' ')} "
|
| + "CURRENT");
|
| for (var isolate in debugger.vm.isolates) {
|
| String current = (isolate == debugger.isolate ? '*' : '');
|
| - debugger.console.print(
|
| - "${isolate.number.toString().padLeft(maxIdLen, ' ')} "
|
| - "${isolate.originNumber.toString().padLeft(maxIdLen, ' ')} "
|
| - "${isolate.name.padRight(maxNameLen, ' ')} "
|
| - "${_isolateRunState(isolate).padRight(maxRunStateLen, ' ')} "
|
| - "${current}");
|
| + debugger.console
|
| + .print("${isolate.number.toString().padLeft(maxIdLen, ' ')} "
|
| + "${isolate.originNumber.toString().padLeft(maxIdLen, ' ')} "
|
| + "${isolate.name.padRight(maxNameLen, ' ')} "
|
| + "${_isolateRunState(isolate).padRight(maxRunStateLen, ' ')} "
|
| + "${current}");
|
| }
|
| debugger.console.newline();
|
| }
|
|
|
| String helpShort = 'List all isolates';
|
|
|
| - String helpLong =
|
| - 'List all isolates.\n'
|
| + String helpLong = 'List all isolates.\n'
|
| '\n'
|
| 'Syntax: isolate list\n';
|
| }
|
| @@ -1057,8 +1037,7 @@ class IsolateNameCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Rename the current isolate';
|
|
|
| - String helpLong =
|
| - 'Rename the current isolate.\n'
|
| + String helpLong = 'Rename the current isolate.\n'
|
| '\n'
|
| 'Syntax: isolate name <name>\n';
|
| }
|
| @@ -1079,16 +1058,17 @@ class IsolateReloadCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Reload the sources for the current isolate.';
|
|
|
| - String helpLong =
|
| - 'Reload the sources for the current isolate.\n'
|
| + String helpLong = 'Reload the sources for the current isolate.\n'
|
| '\n'
|
| 'Syntax: reload\n';
|
| }
|
|
|
| class InfoCommand extends DebuggerCommand {
|
| - InfoCommand(Debugger debugger) : super(debugger, 'info', [
|
| - new InfoBreakpointsCommand(debugger),
|
| - new InfoFrameCommand(debugger)]);
|
| + InfoCommand(Debugger debugger)
|
| + : super(debugger, 'info', [
|
| + new InfoBreakpointsCommand(debugger),
|
| + new InfoFrameCommand(debugger)
|
| + ]);
|
|
|
| Future run(List<String> args) {
|
| debugger.console.print("'info' expects a subcommand (see 'help info')");
|
| @@ -1097,8 +1077,7 @@ class InfoCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Show information on a variety of topics';
|
|
|
| - String helpLong =
|
| - 'Show information on a variety of topics.\n'
|
| + String helpLong = 'Show information on a variety of topics.\n'
|
| '\n'
|
| 'Syntax: info <subcommand>\n';
|
| }
|
| @@ -1112,26 +1091,26 @@ class RefreshStackCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Refresh isolate stack';
|
|
|
| - String helpLong =
|
| - 'Refresh isolate stack.\n'
|
| + String helpLong = 'Refresh isolate stack.\n'
|
| '\n'
|
| 'Syntax: refresh stack\n';
|
| }
|
|
|
| class RefreshCommand extends DebuggerCommand {
|
| - RefreshCommand(Debugger debugger) : super(debugger, 'refresh', [
|
| - new RefreshStackCommand(debugger),
|
| - ]);
|
| + RefreshCommand(Debugger debugger)
|
| + : super(debugger, 'refresh', [
|
| + new RefreshStackCommand(debugger),
|
| + ]);
|
|
|
| Future run(List<String> args) {
|
| - debugger.console.print("'refresh' expects a subcommand (see 'help refresh')");
|
| + debugger.console
|
| + .print("'refresh' expects a subcommand (see 'help refresh')");
|
| return new Future.value(null);
|
| }
|
|
|
| String helpShort = 'Refresh debugging information of various sorts';
|
|
|
| - String helpLong =
|
| - 'Refresh debugging information of various sorts.\n'
|
| + String helpLong = 'Refresh debugging information of various sorts.\n'
|
| '\n'
|
| 'Syntax: refresh <subcommand>\n';
|
| }
|
| @@ -1160,21 +1139,20 @@ class VmListCommand extends DebuggerCommand {
|
| }
|
|
|
| debugger.console.print("${'ADDRESS'.padRight(maxAddrLen, ' ')} "
|
| - "${'NAME'.padRight(maxNameLen, ' ')} "
|
| - "CURRENT");
|
| + "${'NAME'.padRight(maxNameLen, ' ')} "
|
| + "CURRENT");
|
| for (var vm in vmList) {
|
| String current = (vm == debugger.vm ? '*' : '');
|
| - debugger.console.print(
|
| - "${vm.target.networkAddress.padRight(maxAddrLen, ' ')} "
|
| - "${vm.name.padRight(maxNameLen, ' ')} "
|
| - "${current}");
|
| + debugger.console
|
| + .print("${vm.target.networkAddress.padRight(maxAddrLen, ' ')} "
|
| + "${vm.name.padRight(maxNameLen, ' ')} "
|
| + "${current}");
|
| }
|
| }
|
|
|
| String helpShort = 'List all connected Dart virtual machines';
|
|
|
| - String helpLong =
|
| - 'List all connected Dart virtual machines..\n'
|
| + String helpLong = 'List all connected Dart virtual machines..\n'
|
| '\n'
|
| 'Syntax: vm list\n';
|
| }
|
| @@ -1196,8 +1174,7 @@ class VmNameCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Rename the current Dart virtual machine';
|
|
|
| - String helpLong =
|
| - 'Rename the current Dart virtual machine.\n'
|
| + String helpLong = 'Rename the current Dart virtual machine.\n'
|
| '\n'
|
| 'Syntax: vm name <name>\n';
|
| }
|
| @@ -1224,18 +1201,18 @@ class VmRestartCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Restart a Dart virtual machine';
|
|
|
| - String helpLong =
|
| - 'Restart a Dart virtual machine.\n'
|
| + String helpLong = 'Restart a Dart virtual machine.\n'
|
| '\n'
|
| 'Syntax: vm restart\n';
|
| }
|
|
|
| class VmCommand extends DebuggerCommand {
|
| - VmCommand(Debugger debugger) : super(debugger, 'vm', [
|
| - new VmListCommand(debugger),
|
| - new VmNameCommand(debugger),
|
| - new VmRestartCommand(debugger),
|
| - ]);
|
| + VmCommand(Debugger debugger)
|
| + : super(debugger, 'vm', [
|
| + new VmListCommand(debugger),
|
| + new VmNameCommand(debugger),
|
| + new VmRestartCommand(debugger),
|
| + ]);
|
|
|
| Future run(List<String> args) async {
|
| debugger.console.print("'vm' expects a subcommand (see 'help vm')");
|
| @@ -1243,8 +1220,7 @@ class VmCommand extends DebuggerCommand {
|
|
|
| String helpShort = 'Manage a Dart virtual machine';
|
|
|
| - String helpLong =
|
| - 'Manage a Dart virtual machine.\n'
|
| + String helpLong = 'Manage a Dart virtual machine.\n'
|
| '\n'
|
| 'Syntax: vm <subcommand>\n';
|
| }
|
| @@ -1271,7 +1247,7 @@ class _ConsoleStreamPrinter {
|
| // any pending output, even if it is not newline-terminated.
|
| if ((_savedIsolate != null && isolateName != _savedIsolate) ||
|
| (_savedStream != null && streamName != _savedStream)) {
|
| - flush();
|
| + flush();
|
| }
|
| String data;
|
| bool hasNewline;
|
| @@ -1283,7 +1259,7 @@ class _ConsoleStreamPrinter {
|
| hasNewline = data.endsWith('\n');
|
| }
|
| if (_savedLine != null) {
|
| - data = _savedLine + data;
|
| + data = _savedLine + data;
|
| _savedIsolate = null;
|
| _savedStream = null;
|
| _savedLine = null;
|
| @@ -1333,7 +1309,7 @@ class ObservatoryDebugger extends Debugger {
|
| DebuggerStackElement stackElement;
|
| S.ServiceMap stack;
|
| final S.Isolate isolate;
|
| - String breakOnException = "none"; // Last known setting.
|
| + String breakOnException = "none"; // Last known setting.
|
|
|
| int get currentFrame => _currentFrame;
|
|
|
| @@ -1346,6 +1322,7 @@ class ObservatoryDebugger extends Debugger {
|
| stackElement.setCurrentFrame(value);
|
| }
|
| }
|
| +
|
| int _currentFrame = null;
|
|
|
| bool get upIsDown => _upIsDown;
|
| @@ -1353,6 +1330,7 @@ class ObservatoryDebugger extends Debugger {
|
| settings.set('up-is-down', value);
|
| _upIsDown = value;
|
| }
|
| +
|
| bool _upIsDown;
|
|
|
| void upFrame(int count) {
|
| @@ -1378,28 +1356,28 @@ class ObservatoryDebugger extends Debugger {
|
| ObservatoryDebugger(this.isolate) {
|
| _loadSettings();
|
| cmd = new RootCommand([
|
| - new AsyncNextCommand(this),
|
| - new BreakCommand(this),
|
| - new ClearCommand(this),
|
| - new ClsCommand(this),
|
| - new ContinueCommand(this),
|
| - new DeleteCommand(this),
|
| - new DownCommand(this),
|
| - new FinishCommand(this),
|
| - new FrameCommand(this),
|
| - new HelpCommand(this),
|
| - new InfoCommand(this),
|
| - new IsolateCommand(this),
|
| - new LogCommand(this),
|
| - new PauseCommand(this),
|
| - new PrintCommand(this),
|
| - new RefreshCommand(this),
|
| - new SetCommand(this),
|
| - new SmartNextCommand(this),
|
| - new StepCommand(this),
|
| - new SyncNextCommand(this),
|
| - new UpCommand(this),
|
| - new VmCommand(this),
|
| + new AsyncNextCommand(this),
|
| + new BreakCommand(this),
|
| + new ClearCommand(this),
|
| + new ClsCommand(this),
|
| + new ContinueCommand(this),
|
| + new DeleteCommand(this),
|
| + new DownCommand(this),
|
| + new FinishCommand(this),
|
| + new FrameCommand(this),
|
| + new HelpCommand(this),
|
| + new InfoCommand(this),
|
| + new IsolateCommand(this),
|
| + new LogCommand(this),
|
| + new PauseCommand(this),
|
| + new PrintCommand(this),
|
| + new RefreshCommand(this),
|
| + new SetCommand(this),
|
| + new SmartNextCommand(this),
|
| + new StepCommand(this),
|
| + new SyncNextCommand(this),
|
| + new UpCommand(this),
|
| + new VmCommand(this),
|
| ], _history);
|
| _consolePrinter = new _ConsoleStreamPrinter(this);
|
| }
|
| @@ -1412,11 +1390,11 @@ class ObservatoryDebugger extends Debugger {
|
|
|
| void init() {
|
| console.printBold('Debugging isolate isolate ${isolate.number} '
|
| - '\'${isolate.name}\' ');
|
| + '\'${isolate.name}\' ');
|
| console.printBold('Type \'h\' for help');
|
| // Wait a bit and if polymer still hasn't set up the isolate,
|
| // report this to the user.
|
| - new Timer(const Duration(seconds:1), () {
|
| + new Timer(const Duration(seconds: 1), () {
|
| if (isolate == null) {
|
| reportStatus();
|
| }
|
| @@ -1471,7 +1449,7 @@ class ObservatoryDebugger extends Debugger {
|
|
|
| void warnOutOfDate() {
|
| // Wait a bit, then tell the user that the stack may be out of date.
|
| - new Timer(const Duration(seconds:2), () {
|
| + new Timer(const Duration(seconds: 2), () {
|
| if (!isolatePaused()) {
|
| stackElement.isSampled = true;
|
| }
|
| @@ -1528,18 +1506,18 @@ class ObservatoryDebugger extends Debugger {
|
| }
|
| console.print(error.message);
|
| console.newline();
|
| - if (event is M.PauseExceptionEvent &&
|
| + if (event is M.PauseExceptionEvent &&
|
| (error.exception.isStackOverflowError ||
|
| - error.exception.isOutOfMemoryError)) {
|
| + error.exception.isOutOfMemoryError)) {
|
| console.printBold(
|
| 'When an unhandled stack overflow or OOM exception occurs, the VM '
|
| 'has run out of memory and cannot keep the stack alive while '
|
| 'paused.');
|
| } else {
|
| console.printBold("Type 'set break-on-exception Unhandled' to pause the"
|
| - " isolate when an unhandled exception occurs.");
|
| + " isolate when an unhandled exception occurs.");
|
| console.printBold("You can make this the default by running with "
|
| - "--pause-isolates-on-unhandled-exceptions");
|
| + "--pause-isolates-on-unhandled-exceptions");
|
| }
|
| }
|
|
|
| @@ -1547,17 +1525,14 @@ class ObservatoryDebugger extends Debugger {
|
| if (event is M.NoneEvent) {
|
| console.print("Paused until embedder makes the isolate runnable.");
|
| } else if (event is M.PauseStartEvent) {
|
| - console.print(
|
| - "Paused at isolate start "
|
| + console.print("Paused at isolate start "
|
| "(type 'continue' [F7] or 'step' [F10] to start the isolate')");
|
| } else if (event is M.PauseExitEvent) {
|
| - console.print(
|
| - "Paused at isolate exit "
|
| + console.print("Paused at isolate exit "
|
| "(type 'continue' or [F7] to exit the isolate')");
|
| _reportIsolateError(isolate, event);
|
| } else if (event is M.PauseExceptionEvent) {
|
| - console.print(
|
| - "Paused at an unhandled exception "
|
| + console.print("Paused at an unhandled exception "
|
| "(type 'continue' or [F7] to exit the isolate')");
|
| _reportIsolateError(isolate, event);
|
| } else if (stack['frames'].length > 0) {
|
| @@ -1566,15 +1541,14 @@ class ObservatoryDebugger extends Debugger {
|
| script.load().then((_) {
|
| var line = script.tokenToLine(frame.location.tokenPos);
|
| var col = script.tokenToCol(frame.location.tokenPos);
|
| - if ((event is M.PauseBreakpointEvent) &&
|
| - (event.breakpoint != null)) {
|
| - var bpId = event.breakpoint.number;
|
| - console.print('Paused at breakpoint ${bpId} at '
|
| - '${script.name}:${line}:${col}');
|
| + if ((event is M.PauseBreakpointEvent) && (event.breakpoint != null)) {
|
| + var bpId = event.breakpoint.number;
|
| + console.print('Paused at breakpoint ${bpId} at '
|
| + '${script.name}:${line}:${col}');
|
| } else if ((event is M.PauseExceptionEvent) &&
|
| - (event.exception != null)) {
|
| + (event.exception != null)) {
|
| console.print('Paused due to exception at '
|
| - '${script.name}:${line}:${col}');
|
| + '${script.name}:${line}:${col}');
|
| // This seems to be missing if we are paused-at-exception after
|
| // paused-at-isolate-exit. Maybe we shutdown part of the debugger too
|
| // soon?
|
| @@ -1585,7 +1559,7 @@ class ObservatoryDebugger extends Debugger {
|
| });
|
| } else {
|
| console.print("Paused in message loop (type 'continue' or [F7] "
|
| - "to resume processing messages)");
|
| + "to resume processing messages)");
|
| }
|
| }
|
|
|
| @@ -1611,16 +1585,14 @@ class ObservatoryDebugger extends Debugger {
|
| var bpId = bpt.number;
|
| var locString = await bpt.location.toUserString();
|
| if (bpt.resolved) {
|
| - console.print(
|
| - 'Breakpoint ${bpId} ${verb} at ${locString}');
|
| + console.print('Breakpoint ${bpId} ${verb} at ${locString}');
|
| } else {
|
| - console.print(
|
| - 'Future breakpoint ${bpId} ${verb} at ${locString}');
|
| + console.print('Future breakpoint ${bpId} ${verb} at ${locString}');
|
| }
|
| }
|
|
|
| void onEvent(S.ServiceEvent event) {
|
| - switch(event.kind) {
|
| + switch (event.kind) {
|
| case S.ServiceEvent.kVMUpdate:
|
| var vm = event.owner;
|
| console.print("VM ${vm.target.networkAddress} renamed to '${vm.name}'");
|
| @@ -1629,8 +1601,7 @@ class ObservatoryDebugger extends Debugger {
|
| case S.ServiceEvent.kIsolateStart:
|
| {
|
| var iso = event.owner;
|
| - console.print(
|
| - "Isolate ${iso.number} '${iso.name}' has been created");
|
| + console.print("Isolate ${iso.number} '${iso.name}' has been created");
|
| }
|
| break;
|
|
|
| @@ -1639,7 +1610,7 @@ class ObservatoryDebugger extends Debugger {
|
| var iso = event.owner;
|
| if (iso == isolate) {
|
| console.print("The current isolate ${iso.number} '${iso.name}' "
|
| - "has exited");
|
| + "has exited");
|
| var isolates = vm.isolates;
|
| if (isolates.length > 0) {
|
| var newIsolate = isolates.first;
|
| @@ -1648,8 +1619,7 @@ class ObservatoryDebugger extends Debugger {
|
| new AnchorElement(href: Uris.vm()).click();
|
| }
|
| } else {
|
| - console.print(
|
| - "Isolate ${iso.number} '${iso.name}' has exited");
|
| + console.print("Isolate ${iso.number} '${iso.name}' has exited");
|
| }
|
| }
|
| break;
|
| @@ -1790,7 +1760,7 @@ class ObservatoryDebugger extends Debugger {
|
| }).catchError((e, s) {
|
| if (e is S.NetworkRpcException) {
|
| console.printRed('Unable to execute command because the connection '
|
| - 'to the VM has been closed');
|
| + 'to the VM has been closed');
|
| } else {
|
| if (s != null) {
|
| console.printRed('Internal error: $e\n$s');
|
| @@ -1821,8 +1791,8 @@ class ObservatoryDebugger extends Debugger {
|
| Future resume() {
|
| if (isolatePaused()) {
|
| return isolate.resume().then((_) {
|
| - warnOutOfDate();
|
| - });
|
| + warnOutOfDate();
|
| + });
|
| } else {
|
| console.print('The program must be paused');
|
| return new Future.value(null);
|
| @@ -1851,7 +1821,6 @@ class ObservatoryDebugger extends Debugger {
|
| return new Future.value(null);
|
| }
|
|
|
| -
|
| Future smartNext() async {
|
| if (isolatePaused()) {
|
| var event = isolate.pauseEvent;
|
| @@ -1882,7 +1851,8 @@ class ObservatoryDebugger extends Debugger {
|
| if (isolatePaused()) {
|
| var event = isolate.pauseEvent;
|
| if (event is M.PauseStartEvent) {
|
| - console.print("Type 'continue' [F7] or 'step' [F10] to start the isolate");
|
| + console
|
| + .print("Type 'continue' [F7] or 'step' [F10] to start the isolate");
|
| return null;
|
| }
|
| if (event is M.PauseExitEvent) {
|
| @@ -1911,14 +1881,14 @@ class ObservatoryDebugger extends Debugger {
|
| }
|
| }
|
|
|
| -class DebuggerPageElement extends HtmlElement implements Renderable {
|
| - static const tag = const Tag<DebuggerPageElement>('debugger-page',
|
| - dependencies: const [
|
| - NavTopMenuElement.tag,
|
| - NavVMMenuElement.tag,
|
| - NavIsolateMenuElement.tag,
|
| - NavNotifyElement.tag,
|
| - ]);
|
| +class DebuggerPageElement extends HtmlElement implements Renderable {
|
| + static const tag =
|
| + const Tag<DebuggerPageElement>('debugger-page', dependencies: const [
|
| + NavTopMenuElement.tag,
|
| + NavVMMenuElement.tag,
|
| + NavIsolateMenuElement.tag,
|
| + NavNotifyElement.tag,
|
| + ]);
|
|
|
| S.Isolate _isolate;
|
| ObservatoryDebugger _debugger;
|
| @@ -1926,10 +1896,8 @@ class DebuggerPageElement extends HtmlElement implements Renderable {
|
| M.ScriptRepository _scripts;
|
| M.EventRepository _events;
|
|
|
| - factory DebuggerPageElement(S.Isolate isolate,
|
| - M.InstanceRepository instances,
|
| - M.ScriptRepository scripts,
|
| - M.EventRepository events) {
|
| + factory DebuggerPageElement(S.Isolate isolate, M.InstanceRepository instances,
|
| + M.ScriptRepository scripts, M.EventRepository events) {
|
| assert(isolate != null);
|
| assert(instances != null);
|
| assert(scripts != null);
|
| @@ -1965,14 +1933,15 @@ class DebuggerPageElement extends HtmlElement implements Renderable {
|
| super.attached();
|
|
|
| final stackDiv = new DivElement()..classes = ['stack'];
|
| - final stackElement = new DebuggerStackElement(_isolate, _debugger, stackDiv,
|
| - _instances, _scripts,
|
| - _events);
|
| + final stackElement = new DebuggerStackElement(
|
| + _isolate, _debugger, stackDiv, _instances, _scripts, _events);
|
| stackDiv.children = [stackElement];
|
| - final consoleDiv = new DivElement()..classes = ['console']
|
| + final consoleDiv = new DivElement()
|
| + ..classes = ['console']
|
| ..children = [consoleElement];
|
| final commandElement = new DebuggerInputElement(_isolate, _debugger);
|
| - final commandDiv = new DivElement()..classes = ['commandline']
|
| + final commandDiv = new DivElement()
|
| + ..classes = ['commandline']
|
| ..children = [commandElement];
|
|
|
| children = [
|
| @@ -1981,10 +1950,11 @@ class DebuggerPageElement extends HtmlElement implements Renderable {
|
| new NavVMMenuElement(app.vm, app.events, queue: app.queue),
|
| new NavIsolateMenuElement(_isolate, app.events, queue: app.queue),
|
| navMenu('debugger'),
|
| - new NavNotifyElement(app.notifications, notifyOnPause: false,
|
| - queue: app.queue)
|
| + new NavNotifyElement(app.notifications,
|
| + notifyOnPause: false, queue: app.queue)
|
| ]),
|
| - new DivElement()..classes = ['variable']
|
| + new DivElement()
|
| + ..classes = ['variable']
|
| ..children = [
|
| stackDiv,
|
| new DivElement()
|
| @@ -2032,7 +2002,7 @@ class DebuggerPageElement extends HtmlElement implements Renderable {
|
| _logSubscriptionFuture =
|
| app.vm.listenEventStream(S.Isolate.kLoggingStream, _debugger.onEvent);
|
| // Turn on the periodic poll timer for this page.
|
| - _timer = new Timer.periodic(const Duration(milliseconds:100), (_) {
|
| + _timer = new Timer.periodic(const Duration(milliseconds: 100), (_) {
|
| _debugger.flushStdio();
|
| });
|
|
|
| @@ -2087,6 +2057,7 @@ class DebuggerStackElement extends HtmlElement implements Renderable {
|
| _isSampled.classes.toggle('hidden');
|
| }
|
| }
|
| +
|
| DivElement _hasStack;
|
| bool get hasStack => _hasStack.classes.contains('hidden');
|
| set hasStack(bool value) {
|
| @@ -2094,6 +2065,7 @@ class DebuggerStackElement extends HtmlElement implements Renderable {
|
| _hasStack.classes.toggle('hidden');
|
| }
|
| }
|
| +
|
| DivElement _hasMessages;
|
| bool get hasMessages => _hasMessages.classes.contains('hidden');
|
| set hasMessages(bool value) {
|
| @@ -2101,17 +2073,19 @@ class DebuggerStackElement extends HtmlElement implements Renderable {
|
| _hasMessages.classes.toggle('hidden');
|
| }
|
| }
|
| +
|
| UListElement _frameList;
|
| UListElement _messageList;
|
| int currentFrame;
|
| ObservatoryDebugger _debugger;
|
|
|
| - factory DebuggerStackElement(S.Isolate isolate,
|
| - ObservatoryDebugger debugger,
|
| - Element scroller,
|
| - M.InstanceRepository instances,
|
| - M.ScriptRepository scripts,
|
| - M.EventRepository events) {
|
| + factory DebuggerStackElement(
|
| + S.Isolate isolate,
|
| + ObservatoryDebugger debugger,
|
| + Element scroller,
|
| + M.InstanceRepository instances,
|
| + M.ScriptRepository scripts,
|
| + M.EventRepository events) {
|
| assert(isolate != null);
|
| assert(debugger != null);
|
| assert(scroller != null);
|
| @@ -2129,11 +2103,12 @@ class DebuggerStackElement extends HtmlElement implements Renderable {
|
| var btnPause;
|
| var btnRefresh;
|
| e.children = [
|
| - e._isSampled = new DivElement()..classes = ['sampledMessage', 'hidden']
|
| + e._isSampled = new DivElement()
|
| + ..classes = ['sampledMessage', 'hidden']
|
| ..children = [
|
| new SpanElement()
|
| ..text = 'The program is not paused. '
|
| - 'The stack trace below may be out of date.',
|
| + 'The stack trace below may be out of date.',
|
| new BRElement(),
|
| new BRElement(),
|
| btnPause = new ButtonElement()
|
| @@ -2142,8 +2117,7 @@ class DebuggerStackElement extends HtmlElement implements Renderable {
|
| btnPause.disabled = true;
|
| try {
|
| await debugger.isolate.pause();
|
| - }
|
| - finally {
|
| + } finally {
|
| btnPause.disabled = false;
|
| }
|
| }),
|
| @@ -2153,8 +2127,7 @@ class DebuggerStackElement extends HtmlElement implements Renderable {
|
| btnRefresh.disabled = true;
|
| try {
|
| await debugger.refreshStack();
|
| - }
|
| - finally {
|
| + } finally {
|
| btnRefresh.disabled = false;
|
| }
|
| }),
|
| @@ -2162,11 +2135,13 @@ class DebuggerStackElement extends HtmlElement implements Renderable {
|
| new BRElement(),
|
| new HRElement()..classes = ['splitter']
|
| ],
|
| - e._hasStack = new DivElement()..classes = ['noStack', 'hidden']
|
| + e._hasStack = new DivElement()
|
| + ..classes = ['noStack', 'hidden']
|
| ..text = 'No stack',
|
| e._frameList = new UListElement()..classes = ['list-group'],
|
| new HRElement(),
|
| - e._hasMessages = new DivElement()..classes = ['noMessages', 'hidden']
|
| + e._hasMessages = new DivElement()
|
| + ..classes = ['noMessages', 'hidden']
|
| ..text = 'No pending messages',
|
| e._messageList = new UListElement()..classes = ['messageList']
|
| ];
|
| @@ -2178,13 +2153,9 @@ class DebuggerStackElement extends HtmlElement implements Renderable {
|
| }
|
|
|
| _addFrame(List frameList, S.Frame frameInfo) {
|
| - final frameElement = new DebuggerFrameElement(_isolate,
|
| - frameInfo,
|
| - _scroller,
|
| - _instances,
|
| - _scripts,
|
| - _events,
|
| - queue: app.queue);
|
| + final frameElement = new DebuggerFrameElement(
|
| + _isolate, frameInfo, _scroller, _instances, _scripts, _events,
|
| + queue: app.queue);
|
|
|
| if (frameInfo.index == currentFrame) {
|
| frameElement.setCurrent(true);
|
| @@ -2200,12 +2171,9 @@ class DebuggerStackElement extends HtmlElement implements Renderable {
|
| }
|
|
|
| _addMessage(List messageList, S.ServiceMessage messageInfo) {
|
| - final messageElement = new DebuggerMessageElement(_isolate,
|
| - messageInfo,
|
| - _instances,
|
| - _scripts,
|
| - _events,
|
| - queue: app.queue);
|
| + final messageElement = new DebuggerMessageElement(
|
| + _isolate, messageInfo, _instances, _scripts, _events,
|
| + queue: app.queue);
|
|
|
| var li = new LIElement();
|
| li.classes.add('list-group-item');
|
| @@ -2251,7 +2219,7 @@ class DebuggerStackElement extends HtmlElement implements Renderable {
|
| if (frameElements.length < newFrames.length) {
|
| // Add new frames to the top of stack.
|
| newCount = newFrames.length - frameElements.length;
|
| - for (int i = newCount-1; i >= 0; i--) {
|
| + for (int i = newCount - 1; i >= 0; i--) {
|
| _addFrame(frameElements, newFrames[i]);
|
| }
|
| }
|
| @@ -2361,13 +2329,14 @@ class DebuggerFrameElement extends HtmlElement implements Renderable {
|
| });
|
| }
|
|
|
| - factory DebuggerFrameElement(M.Isolate isolate,
|
| - S.Frame frame,
|
| - Element scroller,
|
| - M.InstanceRepository instances,
|
| - M.ScriptRepository scripts,
|
| - M.EventRepository events,
|
| - {RenderingQueue queue}) {
|
| + factory DebuggerFrameElement(
|
| + M.Isolate isolate,
|
| + S.Frame frame,
|
| + Element scroller,
|
| + M.InstanceRepository instances,
|
| + M.ScriptRepository scripts,
|
| + M.EventRepository events,
|
| + {RenderingQueue queue}) {
|
| assert(isolate != null);
|
| assert(frame != null);
|
| assert(scroller != null);
|
| @@ -2421,50 +2390,70 @@ class DebuggerFrameElement extends HtmlElement implements Renderable {
|
| }
|
| ButtonElement collapseButton;
|
| content.addAll([
|
| - new DivElement()..classes = ['frameDetails']
|
| + new DivElement()
|
| + ..classes = ['frameDetails']
|
| ..children = [
|
| - new DivElement()..classes = ['flex-row-wrap']
|
| + new DivElement()
|
| + ..classes = ['flex-row-wrap']
|
| ..children = [
|
| - new DivElement()..classes = ['flex-item-script']
|
| - ..children = _frame.function?.location == null ? const []
|
| - : [
|
| - new SourceInsetElement(_isolate,
|
| - _frame.function.location, _scripts, _instances,
|
| - _events, currentPos: _frame.location.tokenPos,
|
| - variables: _frame.variables, inDebuggerContext: true,
|
| - queue: _r.queue)
|
| - ],
|
| - new DivElement()..classes = ['flex-item-vars']
|
| + new DivElement()
|
| + ..classes = ['flex-item-script']
|
| + ..children = _frame.function?.location == null
|
| + ? const []
|
| + : [
|
| + new SourceInsetElement(
|
| + _isolate,
|
| + _frame.function.location,
|
| + _scripts,
|
| + _instances,
|
| + _events,
|
| + currentPos: _frame.location.tokenPos,
|
| + variables: _frame.variables,
|
| + inDebuggerContext: true,
|
| + queue: _r.queue)
|
| + ],
|
| + new DivElement()
|
| + ..classes = ['flex-item-vars']
|
| ..children = [
|
| _varsDiv = new DivElement()
|
| ..classes = ['memberList', 'frameVars']
|
| ..children = ([
|
| - new DivElement()..classes = ['memberItem']
|
| - ..children = homeMethodName == null ? const []
|
| - : [
|
| - new DivElement()..classes = ['memberName']
|
| - ..text = homeMethodName,
|
| - new DivElement()..classes = ['memberName']
|
| - ..children = [
|
| - anyRef(_isolate, homeMethod.dartOwner,
|
| - _instances, queue: _r.queue)
|
| + new DivElement()
|
| + ..classes = ['memberItem']
|
| + ..children = homeMethodName == null
|
| + ? const []
|
| + : [
|
| + new DivElement()
|
| + ..classes = ['memberName']
|
| + ..text = homeMethodName,
|
| + new DivElement()
|
| + ..classes = ['memberName']
|
| + ..children = [
|
| + anyRef(_isolate, homeMethod.dartOwner,
|
| + _instances,
|
| + queue: _r.queue)
|
| + ]
|
| ]
|
| - ]
|
| - ]..addAll(_frame.variables.map((v) =>
|
| - new DivElement()..classes = ['memberItem']
|
| - ..children = [
|
| - new DivElement()..classes = ['memberName']
|
| - ..text = v.name,
|
| - new DivElement()..classes = ['memberName']
|
| + ]
|
| + ..addAll(_frame.variables
|
| + .map((v) => new DivElement()
|
| + ..classes = ['memberItem']
|
| ..children = [
|
| - anyRef(_isolate, v['value'], _instances,
|
| - queue: _r.queue)
|
| - ]
|
| - ]
|
| - ).toList()))
|
| + new DivElement()
|
| + ..classes = ['memberName']
|
| + ..text = v.name,
|
| + new DivElement()
|
| + ..classes = ['memberName']
|
| + ..children = [
|
| + anyRef(_isolate, v['value'], _instances,
|
| + queue: _r.queue)
|
| + ]
|
| + ])
|
| + .toList()))
|
| ]
|
| ],
|
| - new DivElement()..classes = ['frameContractor']
|
| + new DivElement()
|
| + ..classes = ['frameContractor']
|
| ..children = [
|
| collapseButton = new ButtonElement()
|
| ..onClick.listen((e) async {
|
| @@ -2472,9 +2461,7 @@ class DebuggerFrameElement extends HtmlElement implements Renderable {
|
| await _toggleExpand();
|
| collapseButton.disabled = false;
|
| })
|
| - ..children = [
|
| - iconExpandLess.clone(true)
|
| - ]
|
| + ..children = [iconExpandLess.clone(true)]
|
| ]
|
| ]
|
| ]);
|
| @@ -2484,35 +2471,39 @@ class DebuggerFrameElement extends HtmlElement implements Renderable {
|
|
|
| List<Element> _createHeader() {
|
| final content = [
|
| - new DivElement()..classes = ['frameSummaryText']
|
| + new DivElement()
|
| + ..classes = ['frameSummaryText']
|
| ..children = [
|
| - new DivElement()..classes = ['frameId']
|
| + new DivElement()
|
| + ..classes = ['frameId']
|
| ..text = 'Frame ${_frame.index}',
|
| new SpanElement()
|
| - ..children = _frame.function == null ? const []
|
| - : [
|
| - new FunctionRefElement(_isolate, _frame.function,
|
| - queue: _r.queue)
|
| - ],
|
| + ..children = _frame.function == null
|
| + ? const []
|
| + : [
|
| + new FunctionRefElement(_isolate, _frame.function,
|
| + queue: _r.queue)
|
| + ],
|
| new SpanElement()..text = ' ( ',
|
| new SpanElement()
|
| - ..children = _frame.function?.location == null ? const []
|
| - : [
|
| - new SourceLinkElement(_isolate, _frame.function.location,
|
| - _scripts,
|
| - queue: _r.queue)
|
| - ],
|
| + ..children = _frame.function?.location == null
|
| + ? const []
|
| + : [
|
| + new SourceLinkElement(
|
| + _isolate, _frame.function.location, _scripts,
|
| + queue: _r.queue)
|
| + ],
|
| new SpanElement()..text = ' )'
|
| ]
|
| ];
|
| if (!_expanded) {
|
| - content.add(new DivElement()..classes = ['frameExpander']
|
| - ..children = [
|
| - iconExpandMore.clone(true)
|
| - ]);
|
| + content.add(new DivElement()
|
| + ..classes = ['frameExpander']
|
| + ..children = [iconExpandMore.clone(true)]);
|
| }
|
| return [
|
| - new DivElement()..classes = ['frameSummary']
|
| + new DivElement()
|
| + ..classes = ['frameSummary']
|
| ..children = content
|
| ];
|
| }
|
| @@ -2641,12 +2632,13 @@ class DebuggerMessageElement extends HtmlElement implements Renderable {
|
|
|
| bool _expanded = false;
|
|
|
| - factory DebuggerMessageElement(S.Isolate isolate,
|
| - S.ServiceMessage message,
|
| - M.InstanceRepository instances,
|
| - M.ScriptRepository scripts,
|
| - M.EventRepository events,
|
| - {RenderingQueue queue}) {
|
| + factory DebuggerMessageElement(
|
| + S.Isolate isolate,
|
| + S.ServiceMessage message,
|
| + M.InstanceRepository instances,
|
| + M.ScriptRepository scripts,
|
| + M.EventRepository events,
|
| + {RenderingQueue queue}) {
|
| assert(isolate != null);
|
| assert(message != null);
|
| assert(instances != null);
|
| @@ -2692,45 +2684,53 @@ class DebuggerMessageElement extends HtmlElement implements Renderable {
|
| ButtonElement collapseButton;
|
| ButtonElement previewButton;
|
| content.addAll([
|
| - new DivElement()..classes = ['messageDetails']
|
| + new DivElement()
|
| + ..classes = ['messageDetails']
|
| ..children = [
|
| - new DivElement()..classes = ['flex-row-wrap']
|
| + new DivElement()
|
| + ..classes = ['flex-row-wrap']
|
| ..children = [
|
| - new DivElement()..classes = ['flex-item-script']
|
| - ..children = _message.handler == null ? const []
|
| - : [
|
| - new SourceInsetElement(_isolate,
|
| - _message.handler.location,
|
| - _scripts,
|
| - _instances,
|
| - _events,
|
| - inDebuggerContext: true,
|
| - queue: _r.queue)
|
| - ],
|
| - new DivElement()..classes = ['flex-item-vars']
|
| + new DivElement()
|
| + ..classes = ['flex-item-script']
|
| + ..children = _message.handler == null
|
| + ? const []
|
| + : [
|
| + new SourceInsetElement(
|
| + _isolate,
|
| + _message.handler.location,
|
| + _scripts,
|
| + _instances,
|
| + _events,
|
| + inDebuggerContext: true,
|
| + queue: _r.queue)
|
| + ],
|
| + new DivElement()
|
| + ..classes = ['flex-item-vars']
|
| ..children = [
|
| - new DivElement()..classes = ['memberItem']
|
| + new DivElement()
|
| + ..classes = ['memberItem']
|
| ..children = [
|
| new DivElement()..classes = ['memberName'],
|
| - new DivElement()..classes = ['memberValue']
|
| + new DivElement()
|
| + ..classes = ['memberValue']
|
| ..children = ([
|
| previewButton = new ButtonElement()
|
| ..text = 'preview'
|
| ..onClick.listen((_) {
|
| previewButton.disabled = true;
|
| -
|
| })
|
| - ]..addAll(
|
| - _preview == null ? const []
|
| - : [
|
| - anyRef(_isolate, _preview, _instances,
|
| - queue: _r.queue)
|
| - ]
|
| - ))
|
| + ]
|
| + ..addAll(_preview == null
|
| + ? const []
|
| + : [
|
| + anyRef(_isolate, _preview, _instances,
|
| + queue: _r.queue)
|
| + ]))
|
| ]
|
| ]
|
| ],
|
| - new DivElement()..classes = ['messageContractor']
|
| + new DivElement()
|
| + ..classes = ['messageContractor']
|
| ..children = [
|
| collapseButton = new ButtonElement()
|
| ..onClick.listen((e) async {
|
| @@ -2738,9 +2738,7 @@ class DebuggerMessageElement extends HtmlElement implements Renderable {
|
| await _toggleExpand();
|
| collapseButton.disabled = false;
|
| })
|
| - ..children = [
|
| - iconExpandLess.clone(true)
|
| - ]
|
| + ..children = [iconExpandLess.clone(true)]
|
| ]
|
| ]
|
| ]);
|
| @@ -2756,34 +2754,38 @@ class DebuggerMessageElement extends HtmlElement implements Renderable {
|
|
|
| List<Element> _createHeader() {
|
| final content = [
|
| - new DivElement()..classes = ['messageSummaryText']
|
| + new DivElement()
|
| + ..classes = ['messageSummaryText']
|
| ..children = [
|
| - new DivElement()..classes = ['messageId']
|
| + new DivElement()
|
| + ..classes = ['messageId']
|
| ..text = 'message ${_message.index}',
|
| new SpanElement()
|
| - ..children = _message.handler == null ? const []
|
| - : [
|
| - new FunctionRefElement(_isolate, _message.handler,
|
| - queue: _r.queue)
|
| - ],
|
| + ..children = _message.handler == null
|
| + ? const []
|
| + : [
|
| + new FunctionRefElement(_isolate, _message.handler,
|
| + queue: _r.queue)
|
| + ],
|
| new SpanElement()..text = ' ( ',
|
| new SpanElement()
|
| - ..children = _message.location == null ? const []
|
| - : [
|
| - new SourceLinkElement(_isolate, _message.location, _scripts,
|
| - queue: _r.queue)
|
| - ],
|
| + ..children = _message.location == null
|
| + ? const []
|
| + : [
|
| + new SourceLinkElement(_isolate, _message.location, _scripts,
|
| + queue: _r.queue)
|
| + ],
|
| new SpanElement()..text = ' )'
|
| ]
|
| ];
|
| if (!_expanded) {
|
| - content.add(new DivElement()..classes = ['messageExpander']
|
| - ..children = [
|
| - iconExpandMore.clone(true)
|
| - ]);
|
| + content.add(new DivElement()
|
| + ..classes = ['messageExpander']
|
| + ..children = [iconExpandMore.clone(true)]);
|
| }
|
| return [
|
| - new DivElement()..classes = ['messageSummary']
|
| + new DivElement()
|
| + ..classes = ['messageSummary']
|
| ..children = content
|
| ];
|
| }
|
| @@ -2835,9 +2837,7 @@ class DebuggerConsoleElement extends HtmlElement implements Renderable {
|
|
|
| factory DebuggerConsoleElement() {
|
| final DebuggerConsoleElement e = document.createElement(tag.name);
|
| - e.children = [
|
| - new BRElement()
|
| - ];
|
| + e.children = [new BRElement()];
|
| return e;
|
| }
|
|
|
| @@ -2853,7 +2853,7 @@ class DebuggerConsoleElement extends HtmlElement implements Renderable {
|
| // scrollTop -> how far is an element scrolled (from 0 to scrollHeight).
|
| final distanceFromBottom =
|
| container.scrollHeight - container.clientHeight - container.scrollTop;
|
| - const threshold = 2; // 2 pixel slop.
|
| + const threshold = 2; // 2 pixel slop.
|
| return distanceFromBottom <= threshold;
|
| }
|
|
|
| @@ -2874,7 +2874,7 @@ class DebuggerConsoleElement extends HtmlElement implements Renderable {
|
| }
|
| }
|
|
|
| - void print(String line, { bool newline:true }) {
|
| + void print(String line, {bool newline: true}) {
|
| var span = new SpanElement();
|
| span.classes.add('normal');
|
| span.appendText(line);
|
| @@ -2884,7 +2884,7 @@ class DebuggerConsoleElement extends HtmlElement implements Renderable {
|
| _append(span);
|
| }
|
|
|
| - void printBold(String line, { bool newline:true }) {
|
| + void printBold(String line, {bool newline: true}) {
|
| var span = new SpanElement();
|
| span.classes.add('bold');
|
| span.appendText(line);
|
| @@ -2894,7 +2894,7 @@ class DebuggerConsoleElement extends HtmlElement implements Renderable {
|
| _append(span);
|
| }
|
|
|
| - void printRed(String line, { bool newline:true }) {
|
| + void printRed(String line, {bool newline: true}) {
|
| var span = new SpanElement();
|
| span.classes.add('red');
|
| span.appendText(line);
|
| @@ -2918,10 +2918,10 @@ class DebuggerConsoleElement extends HtmlElement implements Renderable {
|
| }
|
| }
|
|
|
| - void printRef(S.Isolate isolate, S.Instance ref,
|
| - M.InstanceRepository instances,{ bool newline:true }) {
|
| - _append(new InstanceRefElement(isolate, ref, instances,
|
| - queue: app.queue));
|
| + void printRef(
|
| + S.Isolate isolate, S.Instance ref, M.InstanceRepository instances,
|
| + {bool newline: true}) {
|
| + _append(new InstanceRefElement(isolate, ref, instances, queue: app.queue));
|
| if (newline) {
|
| this.newline();
|
| }
|
| @@ -2948,11 +2948,10 @@ class DebuggerInputElement extends HtmlElement implements Renderable {
|
| S.Isolate _isolate;
|
| ObservatoryDebugger _debugger;
|
| bool _busy = false;
|
| - final _modalPromptDiv = new DivElement()
|
| - ..classes = ['modalPrompt', 'hidden'];
|
| + final _modalPromptDiv = new DivElement()..classes = ['modalPrompt', 'hidden'];
|
| final _textBox = new TextInputElement()
|
| - ..classes = ['textBox']
|
| - ..autofocus = true;
|
| + ..classes = ['textBox']
|
| + ..autofocus = true;
|
| String get modalPrompt => _modalPromptDiv.text;
|
| set modalPrompt(String value) {
|
| if (_modalPromptDiv.text == '') {
|
| @@ -2963,17 +2962,15 @@ class DebuggerInputElement extends HtmlElement implements Renderable {
|
| _modalPromptDiv.classes.add('hidden');
|
| }
|
| }
|
| +
|
| String get text => _textBox.value;
|
| set text(String value) => _textBox.value = value;
|
| var modalCallback = null;
|
|
|
| - factory DebuggerInputElement(S.Isolate isolate,
|
| - ObservatoryDebugger debugger) {
|
| + factory DebuggerInputElement(
|
| + S.Isolate isolate, ObservatoryDebugger debugger) {
|
| final DebuggerInputElement e = document.createElement(tag.name);
|
| - e.children = [
|
| - e._modalPromptDiv,
|
| - e._textBox
|
| - ];
|
| + e.children = [e._modalPromptDiv, e._textBox];
|
| e._textBox.select();
|
| e._textBox.onKeyDown.listen(e._onKeyDown);
|
| return e;
|
| @@ -3120,75 +3117,83 @@ class DebuggerInputElement extends HtmlElement implements Renderable {
|
| }
|
|
|
| final SvgSvgElement iconExpandLess = new SvgSvgElement()
|
| - ..setAttribute('width', '24')
|
| - ..setAttribute('height', '24')
|
| - ..children = [
|
| - new PolygonElement()
|
| - ..setAttribute('points', '12,8 6,14 7.4,15.4 12,10.8 16.6,15.4 18,14 ')
|
| - ];
|
| + ..setAttribute('width', '24')
|
| + ..setAttribute('height', '24')
|
| + ..children = [
|
| + new PolygonElement()
|
| + ..setAttribute('points', '12,8 6,14 7.4,15.4 12,10.8 16.6,15.4 18,14 ')
|
| + ];
|
|
|
| final SvgSvgElement iconExpandMore = new SvgSvgElement()
|
| - ..setAttribute('width', '24')
|
| - ..setAttribute('height', '24')
|
| - ..children = [
|
| - new PolygonElement()
|
| - ..setAttribute('points', '16.6,8.6 12,13.2 7.4,8.6 6,10 12,16 18,10 ')
|
| - ];
|
| + ..setAttribute('width', '24')
|
| + ..setAttribute('height', '24')
|
| + ..children = [
|
| + new PolygonElement()
|
| + ..setAttribute('points', '16.6,8.6 12,13.2 7.4,8.6 6,10 12,16 18,10 ')
|
| + ];
|
|
|
| final SvgSvgElement iconChevronRight = new SvgSvgElement()
|
| - ..setAttribute('width', '24')
|
| - ..setAttribute('height', '24')
|
| - ..children = [
|
| - new PathElement()
|
| - ..setAttribute('d', 'M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z')
|
| - ];
|
| + ..setAttribute('width', '24')
|
| + ..setAttribute('height', '24')
|
| + ..children = [
|
| + new PathElement()
|
| + ..setAttribute('d', 'M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z')
|
| + ];
|
|
|
| final SvgSvgElement iconChevronLeft = new SvgSvgElement()
|
| - ..setAttribute('width', '24')
|
| - ..setAttribute('height', '24')
|
| - ..children = [
|
| - new PathElement()
|
| - ..setAttribute('d', 'M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z')
|
| - ];
|
| + ..setAttribute('width', '24')
|
| + ..setAttribute('height', '24')
|
| + ..children = [
|
| + new PathElement()
|
| + ..setAttribute('d', 'M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z')
|
| + ];
|
|
|
| final SvgSvgElement iconHorizontalThreeDot = new SvgSvgElement()
|
| - ..setAttribute('width', '24')
|
| - ..setAttribute('height', '24')
|
| - ..children = [
|
| - new PathElement()
|
| - ..setAttribute('d', 'M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 '
|
| - '2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 '
|
| - '2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 '
|
| - '2-2-.9-2-2-2z')
|
| - ];
|
| + ..setAttribute('width', '24')
|
| + ..setAttribute('height', '24')
|
| + ..children = [
|
| + new PathElement()
|
| + ..setAttribute(
|
| + 'd',
|
| + 'M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 '
|
| + '2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 '
|
| + '2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 '
|
| + '2-2-.9-2-2-2z')
|
| + ];
|
|
|
| final SvgSvgElement iconVerticalThreeDot = new SvgSvgElement()
|
| - ..setAttribute('width', '24')
|
| - ..setAttribute('height', '24')
|
| - ..children = [
|
| - new PathElement()
|
| - ..setAttribute('d', 'M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 '
|
| - '2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 '
|
| - '2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 '
|
| - '2-.9 2-2-.9-2-2-2z')
|
| - ];
|
| + ..setAttribute('width', '24')
|
| + ..setAttribute('height', '24')
|
| + ..children = [
|
| + new PathElement()
|
| + ..setAttribute(
|
| + 'd',
|
| + 'M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 '
|
| + '2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 '
|
| + '2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 '
|
| + '2-.9 2-2-.9-2-2-2z')
|
| + ];
|
|
|
| final SvgSvgElement iconInfo = new SvgSvgElement()
|
| - ..setAttribute('width', '24')
|
| - ..setAttribute('height', '24')
|
| - ..children = [
|
| - new PathElement()
|
| - ..setAttribute('d', 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 '
|
| - '10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z')
|
| - ];
|
| + ..setAttribute('width', '24')
|
| + ..setAttribute('height', '24')
|
| + ..children = [
|
| + new PathElement()
|
| + ..setAttribute(
|
| + 'd',
|
| + 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 '
|
| + '10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z')
|
| + ];
|
|
|
| final SvgSvgElement iconInfoOutline = new SvgSvgElement()
|
| - ..setAttribute('width', '24')
|
| - ..setAttribute('height', '24')
|
| - ..children = [
|
| - new PathElement()
|
| - ..setAttribute('d', 'M11 17h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 '
|
| - '10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 '
|
| - '0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 '
|
| - '9h2V7h-2v2z')
|
| - ];
|
| + ..setAttribute('width', '24')
|
| + ..setAttribute('height', '24')
|
| + ..children = [
|
| + new PathElement()
|
| + ..setAttribute(
|
| + 'd',
|
| + 'M11 17h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 '
|
| + '10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 '
|
| + '0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 '
|
| + '9h2V7h-2v2z')
|
| + ];
|
|
|