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

Side by Side Diff: runtime/observatory/lib/src/elements/script_inset.dart

Issue 1312763010: Support column-based breakpoints in the VM and Observatory. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: hausner review Created 5 years, 3 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
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 library script_inset_element; 5 library script_inset_element;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:html'; 8 import 'dart:html';
9 import 'observatory_element.dart'; 9 import 'observatory_element.dart';
10 import 'service_ref.dart'; 10 import 'service_ref.dart';
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 element.title = "Current execution"; 114 element.title = "Current execution";
115 } 115 }
116 } 116 }
117 117
118 class BreakpointAnnotation extends Annotation { 118 class BreakpointAnnotation extends Annotation {
119 Breakpoint bpt; 119 Breakpoint bpt;
120 int priority = 1; 120 int priority = 1;
121 121
122 BreakpointAnnotation(this.bpt) { 122 BreakpointAnnotation(this.bpt) {
123 var script = bpt.location.script; 123 var script = bpt.location.script;
124 var pos = bpt.location.tokenPos; 124 if (bpt.location.tokenPos != null) {
125 line = script.tokenToLine(pos); 125 var pos = bpt.location.tokenPos;
126 columnStart = script.tokenToCol(pos) - 1; // tokenToCol is 1-origin. 126 line = script.tokenToLine(pos);
127 columnStart = script.tokenToCol(pos) - 1; // tokenToCol is 1-origin.
128 } else {
129 line = bpt.location.line;
130 columnStart = bpt.location.column;
131 if (columnStart == null) {
132 columnStart = 0;
133 }
134 }
127 var length = script.guessTokenLength(line, columnStart); 135 var length = script.guessTokenLength(line, columnStart);
128 if (length == null) { 136 if (length == null) {
129 length = 1; 137 length = 1;
130 } 138 }
131 columnStop = columnStart + length; 139 columnStop = columnStart + length;
132 } 140 }
133 141
134 void applyStyleTo(element) { 142 void applyStyleTo(element) {
135 if (element == null) { 143 if (element == null) {
136 return; // TODO(rmacnak): Handling overlapping annotations. 144 return; // TODO(rmacnak): Handling overlapping annotations.
137 } 145 }
138 var script = bpt.location.script; 146 var script = bpt.location.script;
139 var pos = bpt.location.tokenPos; 147 var pos = bpt.location.tokenPos;
140 int line = script.tokenToLine(pos); 148 int line = script.tokenToLine(pos);
141 int column = script.tokenToCol(pos); 149 int column = script.tokenToCol(pos);
142 element.classes.add("breakAnnotation"); 150 if (bpt.resolved) {
151 element.classes.add("resolvedBreakAnnotation");
152 } else {
153 element.classes.add("unresolvedBreakAnnotation");
154 }
143 element.title = "Breakpoint ${bpt.number} at ${line}:${column}"; 155 element.title = "Breakpoint ${bpt.number} at ${line}:${column}";
144 } 156 }
145 } 157 }
146 158
147 class LibraryAnnotation extends Annotation { 159 class LibraryAnnotation extends Annotation {
148 Library target; 160 Library target;
149 String url; 161 String url;
150 int priority = 2; 162 int priority = 2;
151 163
152 LibraryAnnotation(this.target, this.url); 164 LibraryAnnotation(this.target, this.url);
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 _updateTask.queue(); 453 _updateTask.queue();
442 } 454 }
443 455
444 void variablesChanged(oldValue) { 456 void variablesChanged(oldValue) {
445 _updateTask.queue(); 457 _updateTask.queue();
446 } 458 }
447 459
448 Element a(String text) => new AnchorElement()..text = text; 460 Element a(String text) => new AnchorElement()..text = text;
449 Element span(String text) => new SpanElement()..text = text; 461 Element span(String text) => new SpanElement()..text = text;
450 462
463 Element hitsCurrent(Element element) {
464 element.classes.add('hitsCurrent');
465 element.title = "";
466 return element;
467 }
451 Element hitsUnknown(Element element) { 468 Element hitsUnknown(Element element) {
452 element.classes.add('hitsNone'); 469 element.classes.add('hitsNone');
453 element.title = ""; 470 element.title = "";
454 return element; 471 return element;
455 } 472 }
456 Element hitsNotExecuted(Element element) { 473 Element hitsNotExecuted(Element element) {
457 element.classes.add('hitsNotExecuted'); 474 element.classes.add('hitsNotExecuted');
458 element.title = "Line did not execute"; 475 element.title = "Line did not execute";
459 return element; 476 return element;
460 } 477 }
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
923 }); 940 });
924 update(); 941 update();
925 return e; 942 return e;
926 } 943 }
927 944
928 Element lineNumberElement(ScriptLine line) { 945 Element lineNumberElement(ScriptLine line) {
929 var lineNumber = line == null ? "..." : line.line; 946 var lineNumber = line == null ? "..." : line.line;
930 var e = span("$nbsp$lineNumber$nbsp"); 947 var e = span("$nbsp$lineNumber$nbsp");
931 e.classes.add('noCopy'); 948 e.classes.add('noCopy');
932 949
933 if ((line == null) || (line.hits == null)) { 950 if (lineNumber == _currentLine) {
951 hitsCurrent(e);
952 } else if ((line == null) || (line.hits == null)) {
934 hitsUnknown(e); 953 hitsUnknown(e);
935 } else if (line.hits == 0) { 954 } else if (line.hits == 0) {
936 hitsNotExecuted(e); 955 hitsNotExecuted(e);
937 } else { 956 } else {
938 hitsExecuted(e); 957 hitsExecuted(e);
939 } 958 }
940 959
941 return e; 960 return e;
942 } 961 }
943 962
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
994 class SourceInsetElement extends PolymerElement { 1013 class SourceInsetElement extends PolymerElement {
995 SourceInsetElement.created() : super.created(); 1014 SourceInsetElement.created() : super.created();
996 1015
997 @published SourceLocation location; 1016 @published SourceLocation location;
998 @published String height = null; 1017 @published String height = null;
999 @published int currentPos; 1018 @published int currentPos;
1000 @published bool inDebuggerContext = false; 1019 @published bool inDebuggerContext = false;
1001 @published ObservableList variables; 1020 @published ObservableList variables;
1002 } 1021 }
1003 1022
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/elements/debugger.dart ('k') | runtime/observatory/lib/src/elements/script_inset.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698