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

Unified Diff: runtime/observatory/lib/src/elements/script_inset.dart

Issue 1590353002: Only show breakpoints at possible breakpoint positions in Observatory. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: runtime/observatory/lib/src/elements/script_inset.dart
diff --git a/runtime/observatory/lib/src/elements/script_inset.dart b/runtime/observatory/lib/src/elements/script_inset.dart
index a2a6d5157c2ad866e212b1942f1b1fbf309688ee..241078d6a954181c5034facd74abbf184c234623 100644
--- a/runtime/observatory/lib/src/elements/script_inset.dart
+++ b/runtime/observatory/lib/src/elements/script_inset.dart
@@ -386,6 +386,7 @@ class ScriptInsetElement extends ObservatoryElement {
Map<int, List<ServiceMap>> _rangeMap = {};
Set _callSites = new Set<CallSite>();
+ Set _possibleBreakpointLines = new Set<int>();
var annotations = [];
var annotationsCursor;
@@ -434,6 +435,9 @@ class ScriptInsetElement extends ObservatoryElement {
}
void _onScroll(event) {
+ if (_refreshButton == null) {
+ return;
+ }
var currentTop = _refreshButton.style.top;
var newTop = _refreshButtonTop();
if (currentTop != newTop) {
@@ -532,7 +536,9 @@ class ScriptInsetElement extends ObservatoryElement {
// Build _rangeMap and _callSites from a source report.
Future _refreshSourceReport() async {
var sourceReport = await script.isolate.getSourceReport(
- [Isolate.kCallSitesReport], script, startPos, endPos);
+ [Isolate.kCallSitesReport, Isolate.kPossibleBreakpointsReport],
+ script, startPos, endPos);
+ _possibleBreakpointLines = getPossibleBreakpointLines(sourceReport, script);
_rangeMap.clear();
_callSites.clear();
for (var range in sourceReport['ranges']) {
@@ -546,10 +552,12 @@ class ScriptInsetElement extends ObservatoryElement {
rangeList.add(range);
}
}
- var rangeCallSites = range['callSites'];
- if (rangeCallSites != null) {
- for (var callSiteMap in rangeCallSites) {
- _callSites.add(new CallSite.fromMap(callSiteMap, script));
+ if (range['compiled']) {
+ var rangeCallSites = range['callSites'];
+ if (rangeCallSites != null) {
+ for (var callSiteMap in rangeCallSites) {
+ _callSites.add(new CallSite.fromMap(callSiteMap, script));
+ }
}
}
}
@@ -993,37 +1001,41 @@ class ScriptInsetElement extends ObservatoryElement {
}
Element lineBreakpointElement(ScriptLine line) {
- var e = new DivElement();
- var busy = false;
- if (line == null || !line.possibleBpt) {
- e.classes.add("emptyBreakpoint");
+ if (line == null || !_possibleBreakpointLines.contains(line.line)) {
+ var e = new DivElement();
Cutch 2016/01/15 21:06:02 Why move the var e = new DivElement() into the bra
turnidge 2016/01/15 22:41:39 Done.
e.classes.add('noCopy');
+ e.classes.add("emptyBreakpoint");
e.text = nbsp;
return e;
}
+
+ var e = new DivElement();
e.text = 'B';
- update() {
+ var busy = false;
+ void update() {
e.classes.clear();
e.classes.add('noCopy');
-
- if (!line.possibleBpt) {
- e.classes.add("emptyBreakpoint");
- e.text = nbsp;
- } else if (busy) {
+ if (busy) {
e.classes.add("busyBreakpoint");
- } else {
- if (line.breakpoints != null) {
- if (line.breakpointResolved) {
- e.classes.add("resolvedBreakpoint");
- } else {
- e.classes.add("unresolvedBreakpoint");
+ } else if (line.breakpoints != null) {
+ bool resolved = false;
+ for (var bpt in line.breakpoints) {
+ if (bpt.resolved) {
+ resolved = true;
+ break;
}
+ }
+ if (resolved) {
+ e.classes.add("resolvedBreakpoint");
} else {
- e.classes.add("possibleBreakpoint");
+ e.classes.add("unresolvedBreakpoint");
}
+ } else {
+ e.classes.add("possibleBreakpoint");
}
}
- line.changes.listen((_) => update());
+
+ line.changes.listen((_) => update);
Cutch 2016/01/15 21:06:02 update()
turnidge 2016/01/15 22:41:38 Done.
e.onClick.listen((event) {
if (busy) {
return;

Powered by Google App Engine
This is Rietveld 408576698