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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sources/JavaScriptSourceFrame.js

Issue 2742653003: [DevTools] chaotic green dots displacement fix (Closed)
Patch Set: addressed comments Created 3 years, 9 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 | « no previous file | 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 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 } 588 }
589 } 589 }
590 590
591 _showContinueToLocations() { 591 _showContinueToLocations() {
592 var executionContext = UI.context.flavor(SDK.ExecutionContext); 592 var executionContext = UI.context.flavor(SDK.ExecutionContext);
593 if (!executionContext) 593 if (!executionContext)
594 return; 594 return;
595 var callFrame = UI.context.flavor(SDK.DebuggerModel.CallFrame); 595 var callFrame = UI.context.flavor(SDK.DebuggerModel.CallFrame);
596 if (!callFrame) 596 if (!callFrame)
597 return; 597 return;
598 if (this._clearContinueToLocationsTimer) {
599 clearTimeout(this._clearContinueToLocationsTimer);
600 delete this._clearContinueToLocationsTimer;
601 }
598 var localScope = callFrame.localScope(); 602 var localScope = callFrame.localScope();
599 if (!localScope) 603 if (!localScope) {
604 this.textEditor.operation(clearExistingLocations.bind(this));
600 return; 605 return;
606 }
601 var start = localScope.startLocation(); 607 var start = localScope.startLocation();
602 var end = localScope.endLocation(); 608 var end = localScope.endLocation();
603 var debuggerModel = callFrame.debuggerModel; 609 var debuggerModel = callFrame.debuggerModel;
604 var executionLocation = callFrame.location(); 610 var executionLocation = callFrame.location();
605 debuggerModel.getPossibleBreakpoints(start, end, true) 611 debuggerModel.getPossibleBreakpoints(start, end, true)
606 .then(locations => this.textEditor.operation(renderLocations.bind(this, locations))); 612 .then(locations => this.textEditor.operation(renderLocations.bind(this, locations)));
607 613
608 if (this._clearContinueToLocationsTimer) {
609 clearTimeout(this._clearContinueToLocationsTimer);
610 delete this._clearContinueToLocationsTimer;
611 }
612
613 /** 614 /**
614 * @param {!Array<!SDK.DebuggerModel.BreakLocation>} locations 615 * @param {!Array<!SDK.DebuggerModel.BreakLocation>} locations
615 * @this {Sources.JavaScriptSourceFrame} 616 * @this {Sources.JavaScriptSourceFrame}
616 */ 617 */
617 function renderLocations(locations) { 618 function renderLocations(locations) {
618 var bookmarks = this.textEditor.bookmarks( 619 clearExistingLocations.call(this);
619 this.textEditor.fullRange(), Sources.JavaScriptSourceFrame.continueToL ocationDecorationSymbol);
620 bookmarks.map(bookmark => bookmark.clear());
621
622 for (var location of locations) { 620 for (var location of locations) {
623 var icon; 621 var icon;
624 var isCurrent = location.lineNumber === executionLocation.lineNumber && 622 var isCurrent = location.lineNumber === executionLocation.lineNumber &&
625 location.columnNumber === executionLocation.columnNumber; 623 location.columnNumber === executionLocation.columnNumber;
626 if (!isCurrent || (location.type !== SDK.DebuggerModel.BreakLocationType .Call && 624 if (!isCurrent || (location.type !== SDK.DebuggerModel.BreakLocationType .Call &&
627 location.type !== SDK.DebuggerModel.BreakLocationType .Return)) { 625 location.type !== SDK.DebuggerModel.BreakLocationType .Return)) {
628 icon = UI.Icon.create('smallicon-green-arrow'); 626 icon = UI.Icon.create('smallicon-green-arrow');
629 icon.addEventListener('click', location.continueToLocation.bind(locati on)); 627 icon.addEventListener('click', location.continueToLocation.bind(locati on));
630 } else if (location.type === SDK.DebuggerModel.BreakLocationType.Call) { 628 } else if (location.type === SDK.DebuggerModel.BreakLocationType.Call) {
631 icon = UI.Icon.create('smallicon-step-in'); 629 icon = UI.Icon.create('smallicon-step-in');
632 icon.addEventListener('click', () => { 630 icon.addEventListener('click', () => {
633 debuggerModel.scheduleStepIntoAsync(); 631 debuggerModel.scheduleStepIntoAsync();
634 debuggerModel.stepInto(); 632 debuggerModel.stepInto();
635 }); 633 });
636 } else if (location.type === SDK.DebuggerModel.BreakLocationType.Return) { 634 } else if (location.type === SDK.DebuggerModel.BreakLocationType.Return) {
637 icon = UI.Icon.create('smallicon-step-out'); 635 icon = UI.Icon.create('smallicon-step-out');
638 icon.addEventListener('click', () => { 636 icon.addEventListener('click', () => {
639 debuggerModel.stepOut(); 637 debuggerModel.stepOut();
640 }); 638 });
641 } 639 }
642 icon.classList.add('cm-continue-to-location'); 640 icon.classList.add('cm-continue-to-location');
643 icon.addEventListener('mousemove', hidePopoverAndConsumeEvent.bind(this) ); 641 icon.addEventListener('mousemove', hidePopoverAndConsumeEvent.bind(this) );
644 this.textEditor.addBookmark( 642 this.textEditor.addBookmark(
645 location.lineNumber, location.columnNumber, icon, 643 location.lineNumber, location.columnNumber, icon,
646 Sources.JavaScriptSourceFrame.continueToLocationDecorationSymbol); 644 Sources.JavaScriptSourceFrame.continueToLocationDecorationSymbol);
647 } 645 }
648 } 646 }
649 647
650 /** 648 /**
649 * @this {Sources.JavaScriptSourceFrame}
650 */
651 function clearExistingLocations() {
652 var bookmarks = this.textEditor.bookmarks(
653 this.textEditor.fullRange(), Sources.JavaScriptSourceFrame.continueToL ocationDecorationSymbol);
654 bookmarks.map(bookmark => bookmark.clear());
655 }
656
657 /**
651 * @param {!Event} event 658 * @param {!Event} event
652 * @this {Sources.JavaScriptSourceFrame} 659 * @this {Sources.JavaScriptSourceFrame}
653 */ 660 */
654 function hidePopoverAndConsumeEvent(event) { 661 function hidePopoverAndConsumeEvent(event) {
655 event.consume(true); 662 event.consume(true);
656 this._popoverHelper.hidePopover(); 663 this._popoverHelper.hidePopover();
657 } 664 }
658 } 665 }
659 666
660 /** 667 /**
(...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after
1463 return; 1470 return;
1464 this.bookmark.clear(); 1471 this.bookmark.clear();
1465 this.bookmark = null; 1472 this.bookmark = null;
1466 } 1473 }
1467 }; 1474 };
1468 1475
1469 Sources.JavaScriptSourceFrame.BreakpointDecoration.bookmarkSymbol = Symbol('book mark'); 1476 Sources.JavaScriptSourceFrame.BreakpointDecoration.bookmarkSymbol = Symbol('book mark');
1470 Sources.JavaScriptSourceFrame.BreakpointDecoration._elementSymbolForTest = Symbo l('element'); 1477 Sources.JavaScriptSourceFrame.BreakpointDecoration._elementSymbolForTest = Symbo l('element');
1471 1478
1472 Sources.JavaScriptSourceFrame.continueToLocationDecorationSymbol = Symbol('bookm ark'); 1479 Sources.JavaScriptSourceFrame.continueToLocationDecorationSymbol = Symbol('bookm ark');
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698