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

Side by Side Diff: Source/devtools/front_end/source_frame/SourceFrame.js

Issue 1264133002: Devtools: [WIP] Implement enhanced devtools extension language APIs Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Modify override dropdown to apply to console completions & transpile Created 5 years, 4 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 /* 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 582 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 var messageBucket = this._rowMessageBuckets[lineNumber]; 593 var messageBucket = this._rowMessageBuckets[lineNumber];
594 if (!messageBucket) 594 if (!messageBucket)
595 return; 595 return;
596 messageBucket.removeMessage(message); 596 messageBucket.removeMessage(message);
597 if (!messageBucket.uniqueMessagesCount()) { 597 if (!messageBucket.uniqueMessagesCount()) {
598 messageBucket.detachFromEditor(); 598 messageBucket.detachFromEditor();
599 delete this._rowMessageBuckets[lineNumber]; 599 delete this._rowMessageBuckets[lineNumber];
600 } 600 }
601 }, 601 },
602 602
603 populateLineGutterContextMenu: function(contextMenu, lineNumber) 603 /**
604 * @return {!Array<!WebInspector.SourceFrameMessage>}
605 */
606 getMessagesFromSource: function()
wes 2015/08/14 00:55:05 This is marked for removal.
604 { 607 {
608 var ret = [];
609 for (var line in this._rowMessageBuckets) {
610 if (this._rowMessageBuckets.hasOwnProperty(line)) {
611 var bucket = this._rowMessageBuckets[line];
612 ret.concat(bucket._messages);
613 }
614 }
615 return ret;
605 }, 616 },
606 617
607 populateTextAreaContextMenu: function(contextMenu, lineNumber, columnNumber) 618 setMessagesForSource: function(messages) {
608 { 619 this.clearMessages();
620 for (var index = 0; index < messages.length; index++) {
621 var message = messages[index];
622 this.addMessageToSource(message);
623 }
609 }, 624 },
610 625
611 /** 626 /**
627 * @return {!Promise}
628 */
629 populateLineGutterContextMenu: function(contextMenu, lineNumber)
630 {
631 return Promise.resolve();
632 },
633
634 /**
635 * @return {!Promise}
636 */
637 populateTextAreaContextMenu: function(contextMenu, lineNumber, columnNumber)
638 {
639 return Promise.resolve();
640 },
641
642 /**
612 * @param {?WebInspector.TextRange} from 643 * @param {?WebInspector.TextRange} from
613 * @param {?WebInspector.TextRange} to 644 * @param {?WebInspector.TextRange} to
614 */ 645 */
615 onJumpToPosition: function(from, to) 646 onJumpToPosition: function(from, to)
616 { 647 {
617 this.dispatchEventToListeners(WebInspector.SourceFrame.Events.JumpHappen ed, { 648 this.dispatchEventToListeners(WebInspector.SourceFrame.Events.JumpHappen ed, {
618 from: from, 649 from: from,
619 to: to 650 to: to
620 }); 651 });
621 }, 652 },
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 e.consume(true); 708 e.consume(true);
678 }, 709 },
679 710
680 __proto__: WebInspector.VBox.prototype 711 __proto__: WebInspector.VBox.prototype
681 } 712 }
682 713
683 /** 714 /**
684 * @constructor 715 * @constructor
685 * @param {string} messageText 716 * @param {string} messageText
686 * @param {!WebInspector.SourceFrameMessage.Level} level 717 * @param {!WebInspector.SourceFrameMessage.Level} level
687 * @param {number} lineNumber 718 * @param {{line: number, column: (number|undefined)}} start
688 * @param {number=} columnNumber 719 * @param {{line: number, column: (number|undefined)}} end
689 */ 720 */
690 WebInspector.SourceFrameMessage = function(messageText, level, lineNumber, colum nNumber) 721 WebInspector.SourceFrameMessage = function(messageText, level, start, end)
691 { 722 {
692 this._messageText = messageText; 723 this._messageText = messageText;
693 this._level = level; 724 this._level = level;
694 this._lineNumber = lineNumber; 725 this._start = {
695 this._columnNumber = columnNumber; 726 line: start.line,
727 column: start.column
728 };
729 this._end = {
730 line: end.line,
731 column: end.column
732 };
696 } 733 }
697 734
698 /** 735 /**
699 * @enum {string} 736 * @enum {string}
700 */ 737 */
701 WebInspector.SourceFrameMessage.Level = { 738 WebInspector.SourceFrameMessage.Level = {
702 Error: "Error", 739 Error: "Error",
703 Warning: "Warning" 740 Warning: "Warning"
704 } 741 }
705 742
706 /** 743 /**
707 * @param {!WebInspector.ConsoleMessage} consoleMessage 744 * @param {!WebInspector.ConsoleMessage} consoleMessage
708 * @param {number} lineNumber 745 * @param {number} lineNumber
709 * @param {number} columnNumber 746 * @param {number} columnNumber
710 * @return {!WebInspector.SourceFrameMessage} 747 * @return {!WebInspector.SourceFrameMessage}
711 */ 748 */
712 WebInspector.SourceFrameMessage.fromConsoleMessage = function(consoleMessage, li neNumber, columnNumber) 749 WebInspector.SourceFrameMessage.fromConsoleMessage = function(consoleMessage, li neNumber, columnNumber)
713 { 750 {
714 console.assert(consoleMessage.level === WebInspector.ConsoleMessage.MessageL evel.Error || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel. Warning); 751 console.assert(consoleMessage.level === WebInspector.ConsoleMessage.MessageL evel.Error || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel. Warning);
715 var level = consoleMessage.level === WebInspector.ConsoleMessage.MessageLeve l.Error ? WebInspector.SourceFrameMessage.Level.Error : WebInspector.SourceFrame Message.Level.Warning; 752 var level = consoleMessage.level === WebInspector.ConsoleMessage.MessageLeve l.Error ? WebInspector.SourceFrameMessage.Level.Error : WebInspector.SourceFrame Message.Level.Warning;
716 return new WebInspector.SourceFrameMessage(consoleMessage.messageText, level , lineNumber, columnNumber); 753 var location = {line: lineNumber, column: columnNumber};
754 return new WebInspector.SourceFrameMessage(consoleMessage.messageText, level , location, location);
717 } 755 }
718 756
719 WebInspector.SourceFrameMessage.prototype = { 757 WebInspector.SourceFrameMessage.prototype = {
720 /** 758 /**
721 * @return {string} 759 * @return {string}
722 */ 760 */
723 messageText: function() 761 messageText: function()
724 { 762 {
725 return this._messageText; 763 return this._messageText;
726 }, 764 },
727 765
728 /** 766 /**
729 * @return {!WebInspector.SourceFrameMessage.Level} 767 * @return {!WebInspector.SourceFrameMessage.Level}
730 */ 768 */
731 level: function() 769 level: function()
732 { 770 {
733 return this._level; 771 return this._level;
734 }, 772 },
735 773
736 /** 774 /**
775 * @return {{line: number, column: (number|undefined)}}
776 */
777 start: function() {
778 return this._start;
779 },
780
781 /**
782 * @return {{line: number, column: (number|undefined)}}
783 */
784 end: function() {
785 return this._end;
786 },
787
788 /**
737 * @return {number} 789 * @return {number}
738 */ 790 */
739 lineNumber: function() 791 lineNumber: function()
740 { 792 {
741 return this._lineNumber; 793 return this._start.line;
742 }, 794 },
743 795
744 /** 796 /**
745 * @return {(number|undefined)} 797 * @return {(number|undefined)}
746 */ 798 */
747 columnNumber: function() 799 columnNumber: function()
748 { 800 {
749 return this._columnNumber; 801 return this._start.column;
750 }, 802 },
751 803
752 /** 804 /**
753 * @param {!WebInspector.SourceFrameMessage} another 805 * @param {!WebInspector.SourceFrameMessage} another
754 * @return {boolean} 806 * @return {boolean}
755 */ 807 */
756 isEqual: function(another) 808 isEqual: function(another)
757 { 809 {
758 return this.messageText() === another.messageText() && this.level() === another.level() && this.lineNumber() === another.lineNumber() && this.columnNumb er() === another.columnNumber(); 810 return this.messageText() === another.messageText() &&
811 this.level() === another.level() &&
812 this.lineNumber() === another.lineNumber() &&
813 this.columnNumber() === another.columnNumber() &&
814 this.end().line === another.end().line &&
815 this.end().column === another.end().column;
759 } 816 }
760 } 817 }
761 818
762 WebInspector.SourceFrame._iconClassPerLevel = {}; 819 WebInspector.SourceFrame._iconClassPerLevel = {};
763 WebInspector.SourceFrame._iconClassPerLevel[WebInspector.SourceFrameMessage.Leve l.Error] = "error-icon"; 820 WebInspector.SourceFrame._iconClassPerLevel[WebInspector.SourceFrameMessage.Leve l.Error] = "error-icon";
764 WebInspector.SourceFrame._iconClassPerLevel[WebInspector.SourceFrameMessage.Leve l.Warning] = "warning-icon"; 821 WebInspector.SourceFrame._iconClassPerLevel[WebInspector.SourceFrameMessage.Leve l.Warning] = "warning-icon";
765 822
766 WebInspector.SourceFrame._lineClassPerLevel = {}; 823 WebInspector.SourceFrame._lineClassPerLevel = {};
767 WebInspector.SourceFrame._lineClassPerLevel[WebInspector.SourceFrameMessage.Leve l.Error] = "text-editor-line-with-error"; 824 WebInspector.SourceFrame._lineClassPerLevel[WebInspector.SourceFrameMessage.Leve l.Error] = "text-editor-line-with-error";
768 WebInspector.SourceFrame._lineClassPerLevel[WebInspector.SourceFrameMessage.Leve l.Warning] = "text-editor-line-with-warning"; 825 WebInspector.SourceFrame._lineClassPerLevel[WebInspector.SourceFrameMessage.Leve l.Warning] = "text-editor-line-with-warning";
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 * @param {number} lineNumber 908 * @param {number} lineNumber
852 * @param {number} columnNumber 909 * @param {number} columnNumber
853 */ 910 */
854 _updateWavePosition: function(lineNumber, columnNumber) 911 _updateWavePosition: function(lineNumber, columnNumber)
855 { 912 {
856 var lineText = this._textEditor.line(lineNumber); 913 var lineText = this._textEditor.line(lineNumber);
857 var lineIndent = WebInspector.TextUtils.lineIndent(lineText).length; 914 var lineIndent = WebInspector.TextUtils.lineIndent(lineText).length;
858 var base = this._textEditor.cursorPositionToCoordinates(lineNumber, 0); 915 var base = this._textEditor.cursorPositionToCoordinates(lineNumber, 0);
859 916
860 var start = this._textEditor.cursorPositionToCoordinates(lineNumber, Mat h.max(columnNumber - 1, lineIndent)); 917 var start = this._textEditor.cursorPositionToCoordinates(lineNumber, Mat h.max(columnNumber - 1, lineIndent));
918 if (!start) {
919 return; //stale data - columnNumber is already gone, wait for future update and for UI to settle
920 }
861 var end = this._textEditor.cursorPositionToCoordinates(lineNumber, lineT ext.length); 921 var end = this._textEditor.cursorPositionToCoordinates(lineNumber, lineT ext.length);
862 /** @const */ 922 /** @const */
863 var codeMirrorLinesLeftPadding = 4; 923 var codeMirrorLinesLeftPadding = 4;
864 this._wave.style.left = (start.x - base.x + codeMirrorLinesLeftPadding) + "px"; 924 this._wave.style.left = (start.x - base.x + codeMirrorLinesLeftPadding) + "px";
865 this._wave.style.width = (end.x - start.x) + "px"; 925 this._wave.style.width = (end.x - start.x) + "px";
866 }, 926 },
867 927
868 /** 928 /**
869 * @return {!Element} 929 * @return {!Element}
870 */ 930 */
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1003 /** 1063 /**
1004 * @override 1064 * @override
1005 */ 1065 */
1006 editorFocused: function() 1066 editorFocused: function()
1007 { 1067 {
1008 this._sourceFrame._editorFocused(); 1068 this._sourceFrame._editorFocused();
1009 }, 1069 },
1010 1070
1011 /** 1071 /**
1012 * @override 1072 * @override
1073 * @param {!WebInspector.ContextMenu} contextMenu
1074 * @param {number} lineNumber
1075 * @return {!Promise}
1013 */ 1076 */
1014 populateLineGutterContextMenu: function(contextMenu, lineNumber) 1077 populateLineGutterContextMenu: function(contextMenu, lineNumber)
pfeldman 2015/08/13 21:15:47 This is worth a separate patch.
wes 2015/08/14 00:55:05 Making the context menu flow async in general, or
1015 { 1078 {
1016 this._sourceFrame.populateLineGutterContextMenu(contextMenu, lineNumber) ; 1079 return this._sourceFrame.populateLineGutterContextMenu(contextMenu, line Number);
1017 }, 1080 },
1018 1081
1019 /** 1082 /**
1020 * @override 1083 * @override
1084 * @param {!WebInspector.ContextMenu} contextMenu
1085 * @param {number} lineNumber
1086 * @param {number} columnNumber
1087 * @return {!Promise}
1021 */ 1088 */
1022 populateTextAreaContextMenu: function(contextMenu, lineNumber, columnNumber) 1089 populateTextAreaContextMenu: function(contextMenu, lineNumber, columnNumber)
1023 { 1090 {
1024 this._sourceFrame.populateTextAreaContextMenu(contextMenu, lineNumber, c olumnNumber); 1091 return this._sourceFrame.populateTextAreaContextMenu(contextMenu, lineNu mber, columnNumber);
1025 }, 1092 },
1026 1093
1027 /** 1094 /**
1028 * @override 1095 * @override
1029 * @param {?WebInspector.TextRange} from 1096 * @param {?WebInspector.TextRange} from
1030 * @param {?WebInspector.TextRange} to 1097 * @param {?WebInspector.TextRange} to
1031 */ 1098 */
1032 onJumpToPosition: function(from, to) 1099 onJumpToPosition: function(from, to)
1033 { 1100 {
1034 this._sourceFrame.onJumpToPosition(from, to); 1101 this._sourceFrame.onJumpToPosition(from, to);
1035 } 1102 }
1036 } 1103 }
1037 1104
1038 WebInspector.SourceFrameMessage._messageLevelPriority = { 1105 WebInspector.SourceFrameMessage._messageLevelPriority = {
1039 "Warning": 3, 1106 "Warning": 3,
1040 "Error": 4 1107 "Error": 4
1041 }; 1108 };
1042 1109
1043 /** 1110 /**
1044 * @param {!WebInspector.SourceFrameMessage} a 1111 * @param {!WebInspector.SourceFrameMessage} a
1045 * @param {!WebInspector.SourceFrameMessage} b 1112 * @param {!WebInspector.SourceFrameMessage} b
1046 * @return {number} 1113 * @return {number}
1047 */ 1114 */
1048 WebInspector.SourceFrameMessage.messageLevelComparator = function(a, b) 1115 WebInspector.SourceFrameMessage.messageLevelComparator = function(a, b)
1049 { 1116 {
1050 return WebInspector.SourceFrameMessage._messageLevelPriority[a.level()] - We bInspector.SourceFrameMessage._messageLevelPriority[b.level()]; 1117 return WebInspector.SourceFrameMessage._messageLevelPriority[a.level()] - We bInspector.SourceFrameMessage._messageLevelPriority[b.level()];
1051 } 1118 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698