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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js

Issue 2623143002: DevTools: insert console message decorations in order
Patch Set: address comment Created 3 years, 10 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) 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2009 Joseph Pecoraro 3 * Copyright (C) 2009 Joseph Pecoraro
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 this._viewport.setStickToBottom(true); 114 this._viewport.setStickToBottom(true);
115 this._viewport.contentElement().classList.add('console-group', 'console-grou p-messages'); 115 this._viewport.contentElement().classList.add('console-group', 'console-grou p-messages');
116 this._contentsElement.appendChild(this._viewport.element); 116 this._contentsElement.appendChild(this._viewport.element);
117 this._messagesElement = this._viewport.element; 117 this._messagesElement = this._viewport.element;
118 this._messagesElement.id = 'console-messages'; 118 this._messagesElement.id = 'console-messages';
119 this._messagesElement.classList.add('monospace'); 119 this._messagesElement.classList.add('monospace');
120 this._messagesElement.addEventListener('click', this._messagesClicked.bind(t his), true); 120 this._messagesElement.addEventListener('click', this._messagesClicked.bind(t his), true);
121 121
122 this._viewportThrottler = new Common.Throttler(50); 122 this._viewportThrottler = new Common.Throttler(50);
123 123
124 this._filterStatusMessageElement = createElementWithClass('div', 'console-me ssage'); 124 this._filterStatusMessageElement = createElementWithClass('div', 'console-me ssage-wrapper');
125 this._messagesElement.insertBefore(this._filterStatusMessageElement, this._m essagesElement.firstChild); 125 this._messagesElement.insertBefore(this._filterStatusMessageElement, this._m essagesElement.firstChild);
126 this._filterStatusTextElement = this._filterStatusMessageElement.createChild ('span', 'console-info'); 126 this._filterStatusTextElement = this._filterStatusMessageElement.createChild ('span', 'console-info');
127 this._filterStatusMessageElement.createTextChild(' '); 127 this._filterStatusMessageElement.createTextChild(' ');
128 128
129 this._topGroup = Console.ConsoleGroup.createTopGroup(); 129 this._topGroup = Console.ConsoleGroup.createTopGroup();
130 this._currentGroup = this._topGroup; 130 this._currentGroup = this._topGroup;
131 131
132 this._promptElement = this._messagesElement.createChild('div', 'source-code' ); 132 this._promptElement = this._messagesElement.createChild('div', 'source-code' );
133 var promptIcon = UI.Icon.create('smallicon-text-prompt', 'console-prompt-ico n'); 133 var promptIcon = UI.Icon.create('smallicon-text-prompt', 'console-prompt-ico n');
134 this._promptElement.appendChild(promptIcon); 134 this._promptElement.appendChild(promptIcon);
(...skipping 21 matching lines...) Expand all
156 this._prompt.show(this._promptElement); 156 this._prompt.show(this._promptElement);
157 this._prompt.element.addEventListener('keydown', this._promptKeyDown.bind(th is), true); 157 this._prompt.element.addEventListener('keydown', this._promptKeyDown.bind(th is), true);
158 158
159 this._consoleHistoryAutocompleteSetting.addChangeListener(this._consoleHisto ryAutocompleteChanged, this); 159 this._consoleHistoryAutocompleteSetting.addChangeListener(this._consoleHisto ryAutocompleteChanged, this);
160 160
161 var historyData = this._consoleHistorySetting.get(); 161 var historyData = this._consoleHistorySetting.get();
162 this._prompt.history().setHistoryData(historyData); 162 this._prompt.history().setHistoryData(historyData);
163 this._consoleHistoryAutocompleteChanged(); 163 this._consoleHistoryAutocompleteChanged();
164 164
165 this._updateFilterStatus(); 165 this._updateFilterStatus();
166 this._timestampsSetting.addChangeListener(this._consoleTimestampsSettingChan ged, this); 166 this._timestampsSetting.addChangeListener(this._updateMessageList, this);
167 167
168 this._registerWithMessageSink(); 168 this._registerWithMessageSink();
169 SDK.targetManager.observeTargets(this); 169 SDK.targetManager.observeTargets(this);
170 170
171 this._initConsoleMessages(); 171 this._initConsoleMessages();
172 172
173 UI.context.addFlavorChangeListener(SDK.ExecutionContext, this._executionCont extChanged, this); 173 UI.context.addFlavorChangeListener(SDK.ExecutionContext, this._executionCont extChanged, this);
174 174
175 this._messagesElement.addEventListener('mousedown', this._updateStickToBotto mOnMouseDown.bind(this), false); 175 this._messagesElement.addEventListener('mousedown', this._updateStickToBotto mOnMouseDown.bind(this), false);
176 this._messagesElement.addEventListener('mouseup', this._updateStickToBottomO nMouseUp.bind(this), false); 176 this._messagesElement.addEventListener('mouseup', this._updateStickToBottomO nMouseUp.bind(this), false);
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 level = SDK.ConsoleMessage.MessageLevel.Warning; 326 level = SDK.ConsoleMessage.MessageLevel.Warning;
327 break; 327 break;
328 } 328 }
329 329
330 var consoleMessage = new SDK.ConsoleMessage( 330 var consoleMessage = new SDK.ConsoleMessage(
331 null, SDK.ConsoleMessage.MessageSource.Other, level, message.text, undef ined, undefined, undefined, undefined, 331 null, SDK.ConsoleMessage.MessageSource.Other, level, message.text, undef ined, undefined, undefined, undefined,
332 undefined, undefined, undefined, message.timestamp); 332 undefined, undefined, undefined, message.timestamp);
333 this._addConsoleMessage(consoleMessage); 333 this._addConsoleMessage(consoleMessage);
334 } 334 }
335 335
336 _consoleTimestampsSettingChanged() {
337 this._updateMessageList();
338 this._consoleMessages.forEach(viewMessage => viewMessage.updateTimestamp());
339 }
340
341 _executionContextChanged() { 336 _executionContextChanged() {
342 this._prompt.clearAutocomplete(); 337 this._prompt.clearAutocomplete();
343 if (this._filter._showTargetMessagesCheckbox.checked()) 338 if (this._filter._showTargetMessagesCheckbox.checked())
344 this._updateMessageList(); 339 this._updateMessageList();
345 } 340 }
346 341
347 /** 342 /**
348 * @override 343 * @override
349 */ 344 */
350 willHide() { 345 willHide() {
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 547
553 /** 548 /**
554 * @param {!SDK.ConsoleMessage} message 549 * @param {!SDK.ConsoleMessage} message
555 * @return {!Console.ConsoleViewMessage} 550 * @return {!Console.ConsoleViewMessage}
556 */ 551 */
557 _createViewMessage(message) { 552 _createViewMessage(message) {
558 var nestingLevel = this._currentGroup.nestingLevel(); 553 var nestingLevel = this._currentGroup.nestingLevel();
559 switch (message.type) { 554 switch (message.type) {
560 case SDK.ConsoleMessage.MessageType.Command: 555 case SDK.ConsoleMessage.MessageType.Command:
561 return new Console.ConsoleCommand(message, this._linkifier, nestingLevel ); 556 return new Console.ConsoleCommand(message, this._linkifier, nestingLevel );
562 case SDK.ConsoleMessage.MessageType.Result:
563 return new Console.ConsoleCommandResult(message, this._linkifier, nestin gLevel);
564 case SDK.ConsoleMessage.MessageType.StartGroupCollapsed: 557 case SDK.ConsoleMessage.MessageType.StartGroupCollapsed:
565 case SDK.ConsoleMessage.MessageType.StartGroup: 558 case SDK.ConsoleMessage.MessageType.StartGroup:
566 return new Console.ConsoleGroupViewMessage(message, this._linkifier, nes tingLevel); 559 return new Console.ConsoleGroupViewMessage(message, this._linkifier, nes tingLevel);
567 default: 560 default:
568 return new Console.ConsoleViewMessage(message, this._linkifier, nestingL evel); 561 return new Console.ConsoleViewMessage(message, this._linkifier, nestingL evel);
569 } 562 }
570 } 563 }
571 564
572 _consoleCleared() { 565 _consoleCleared() {
573 this._currentMatchRangeIndex = -1; 566 this._currentMatchRangeIndex = -1;
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 for (var i = 0; i < this._visibleViewMessages.length; ++i) { 700 for (var i = 0; i < this._visibleViewMessages.length; ++i) {
708 this._visibleViewMessages[i].resetCloseGroupDecorationCount(); 701 this._visibleViewMessages[i].resetCloseGroupDecorationCount();
709 this._visibleViewMessages[i].resetIncrementRepeatCount(); 702 this._visibleViewMessages[i].resetIncrementRepeatCount();
710 } 703 }
711 this._visibleViewMessages = []; 704 this._visibleViewMessages = [];
712 for (var i = 0; i < this._consoleMessages.length; ++i) 705 for (var i = 0; i < this._consoleMessages.length; ++i)
713 this._appendMessageToEnd(this._consoleMessages[i]); 706 this._appendMessageToEnd(this._consoleMessages[i]);
714 this._updateFilterStatus(); 707 this._updateFilterStatus();
715 this._searchableView.updateSearchMatchesCount(this._regexMatchRanges.length) ; 708 this._searchableView.updateSearchMatchesCount(this._regexMatchRanges.length) ;
716 this._viewport.invalidate(); 709 this._viewport.invalidate();
710 this._visibleViewMessages.forEach(message => message.updateMessageElement()) ;
pfeldman 2017/02/22 00:10:45 This still does not make much sense to me! Why do
717 } 711 }
718 712
719 /** 713 /**
720 * @param {!Common.Event} event 714 * @param {!Common.Event} event
721 */ 715 */
722 _monitoringXHREnabledSettingChanged(event) { 716 _monitoringXHREnabledSettingChanged(event) {
723 var enabled = /** @type {boolean} */ (event.data); 717 var enabled = /** @type {boolean} */ (event.data);
724 SDK.targetManager.targets().forEach(function(target) { 718 SDK.targetManager.targets().forEach(function(target) {
725 target.networkAgent().setMonitoringXHREnabled(enabled); 719 target.networkAgent().setMonitoringXHREnabled(enabled);
726 }); 720 });
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
1190 super(message, linkifier, nestingLevel); 1184 super(message, linkifier, nestingLevel);
1191 } 1185 }
1192 1186
1193 /** 1187 /**
1194 * @override 1188 * @override
1195 * @return {!Element} 1189 * @return {!Element}
1196 */ 1190 */
1197 contentElement() { 1191 contentElement() {
1198 if (!this._contentElement) { 1192 if (!this._contentElement) {
1199 this._contentElement = createElementWithClass('div', 'console-user-command '); 1193 this._contentElement = createElementWithClass('div', 'console-user-command ');
1200 var icon = UI.Icon.create('smallicon-user-command', 'command-result-icon') ;
1201 this._contentElement.appendChild(icon);
1202
1203 this._contentElement.message = this; 1194 this._contentElement.message = this;
1204 1195
1205 this._formattedCommand = createElementWithClass('span', 'source-code'); 1196 this._formattedCommand = createElementWithClass('span', 'source-code');
1206 this._formattedCommand.textContent = this.text.replaceControlCharacters(); 1197 this._formattedCommand.textContent = this.text.replaceControlCharacters();
1207 this._contentElement.appendChild(this._formattedCommand); 1198 this._contentElement.appendChild(this._formattedCommand);
1208 1199
1209 if (this._formattedCommand.textContent.length < Console.ConsoleCommand.Max LengthToIgnoreHighlighter) { 1200 if (this._formattedCommand.textContent.length < Console.ConsoleCommand.Max LengthToIgnoreHighlighter) {
1210 var javascriptSyntaxHighlighter = new UI.SyntaxHighlighter('text/javascr ipt', true); 1201 var javascriptSyntaxHighlighter = new UI.SyntaxHighlighter('text/javascr ipt', true);
1211 javascriptSyntaxHighlighter.syntaxHighlightNode(this._formattedCommand). then(this._updateSearch.bind(this)); 1202 javascriptSyntaxHighlighter.syntaxHighlightNode(this._formattedCommand). then(this._updateSearch.bind(this));
1212 } else { 1203 } else {
1213 this._updateSearch(); 1204 this._updateSearch();
1214 } 1205 }
1215
1216 this.updateTimestamp();
1217 } 1206 }
1218 return this._contentElement; 1207 return this._contentElement;
1219 } 1208 }
1220 1209
1221 _updateSearch() { 1210 _updateSearch() {
1222 this.setSearchRegex(this.searchRegex()); 1211 this.setSearchRegex(this.searchRegex());
1223 } 1212 }
1224 }; 1213 };
1225 1214
1226 /** 1215 /**
1227 * The maximum length before strings are considered too long for syntax highligh ting. 1216 * The maximum length before strings are considered too long for syntax highligh ting.
1228 * @const 1217 * @const
1229 * @type {number} 1218 * @type {number}
1230 */ 1219 */
1231 Console.ConsoleCommand.MaxLengthToIgnoreHighlighter = 10000; 1220 Console.ConsoleCommand.MaxLengthToIgnoreHighlighter = 10000;
1232 1221
1233 /** 1222 /**
1234 * @unrestricted 1223 * @unrestricted
1235 */ 1224 */
1236 Console.ConsoleCommandResult = class extends Console.ConsoleViewMessage {
1237 /**
1238 * @param {!SDK.ConsoleMessage} message
1239 * @param {!Components.Linkifier} linkifier
1240 * @param {number} nestingLevel
1241 */
1242 constructor(message, linkifier, nestingLevel) {
1243 super(message, linkifier, nestingLevel);
1244 }
1245
1246 /**
1247 * @override
1248 * @return {!Element}
1249 */
1250 contentElement() {
1251 var element = super.contentElement();
1252 if (!element.classList.contains('console-user-command-result')) {
1253 element.classList.add('console-user-command-result');
1254 if (this.consoleMessage().level === SDK.ConsoleMessage.MessageLevel.Info) {
1255 var icon = UI.Icon.create('smallicon-command-result', 'command-result-ic on');
1256 element.insertBefore(icon, element.firstChild);
1257 }
1258 }
1259 return element;
1260 }
1261 };
1262
1263 /**
1264 * @unrestricted
1265 */
1266 Console.ConsoleGroup = class { 1225 Console.ConsoleGroup = class {
1267 /** 1226 /**
1268 * @param {?Console.ConsoleGroup} parentGroup 1227 * @param {?Console.ConsoleGroup} parentGroup
1269 * @param {?Console.ConsoleViewMessage} groupMessage 1228 * @param {?Console.ConsoleViewMessage} groupMessage
1270 */ 1229 */
1271 constructor(parentGroup, groupMessage) { 1230 constructor(parentGroup, groupMessage) {
1272 this._parentGroup = parentGroup; 1231 this._parentGroup = parentGroup;
1273 this._nestingLevel = parentGroup ? parentGroup.nestingLevel() + 1 : 0; 1232 this._nestingLevel = parentGroup ? parentGroup.nestingLevel() + 1 : 0;
1274 this._messagesHidden = 1233 this._messagesHidden =
1275 groupMessage && groupMessage.collapsed() || this._parentGroup && this._p arentGroup.messagesHidden(); 1234 groupMessage && groupMessage.collapsed() || this._parentGroup && this._p arentGroup.messagesHidden();
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1329 return true; 1288 return true;
1330 } 1289 }
1331 return false; 1290 return false;
1332 } 1291 }
1333 }; 1292 };
1334 1293
1335 /** 1294 /**
1336 * @typedef {{messageIndex: number, matchIndex: number}} 1295 * @typedef {{messageIndex: number, matchIndex: number}}
1337 */ 1296 */
1338 Console.ConsoleView.RegexMatchRange; 1297 Console.ConsoleView.RegexMatchRange;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698