Index: third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js b/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js |
index d3f748ec103ce6972a9fa5ddd72b30a913bfba86..0748307a52dbb29c39ef47f57d8d10b3f621d3ea 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js |
+++ b/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js |
@@ -465,43 +465,83 @@ Console.ConsoleView = class extends UI.VBox { |
* @param {!Console.ConsoleViewMessage} viewMessage |
*/ |
_appendMessageToEnd(viewMessage) { |
- var ignoreTextFilter = this._currentGroup.showAllChildren(); |
- if (!this._filter.shouldBeVisible(viewMessage, ignoreTextFilter)) { |
+ var lastGroup = this._currentGroup; |
+ this._currentGroup = this._nextGroup(viewMessage); |
+ if (viewMessage.consoleMessage().type === ConsoleModel.ConsoleMessage.MessageType.EndGroup) |
+ return; |
+ if (!this._filter.shouldBeVisible(viewMessage, this._currentGroup.showAllChildren())) { |
this._hiddenByFilterCount++; |
return; |
} |
- if (this._tryToCollapseMessages(viewMessage, this._visibleViewMessages.peekLast())) |
- return; |
+ // Add ancestor titles before checking for repeats, since it affects the last visible message. |
+ this._appendParentGroupTitleMessages(lastGroup); |
var lastMessage = this._visibleViewMessages.peekLast(); |
- if (viewMessage.consoleMessage().type === ConsoleModel.ConsoleMessage.MessageType.EndGroup) { |
- if (lastMessage && !this._currentGroup.messagesHidden()) |
- lastMessage.incrementCloseGroupDecorationCount(); |
- this._currentGroup = this._currentGroup.parentGroup() || this._currentGroup; |
+ if (this._tryToCollapseMessages(viewMessage, lastMessage)) |
return; |
- } |
+ |
if (!this._currentGroup.messagesHidden()) { |
var originatingMessage = viewMessage.consoleMessage().originatingMessage(); |
if (lastMessage && originatingMessage && lastMessage.consoleMessage() === originatingMessage) |
lastMessage.toMessageElement().classList.add('console-adjacent-user-command-result'); |
- |
this._visibleViewMessages.push(viewMessage); |
this._searchMessage(this._visibleViewMessages.length - 1); |
+ |
+ if (viewMessage.consoleMessage().isGroupStartMessage()) |
+ this._currentGroup.setTitleVisible(); |
} |
+ this._messageAppendedForTests(); |
+ } |
+ /** |
+ * @param {!Console.ConsoleViewMessage} viewMessage |
+ * @return {!Console.ConsoleGroup} |
+ */ |
+ _nextGroup(viewMessage) { |
+ var lastMessage = this._visibleViewMessages.peekLast(); |
+ if (viewMessage.consoleMessage().type === ConsoleModel.ConsoleMessage.MessageType.EndGroup) { |
+ if (lastMessage && !this._currentGroup.messagesHidden()) |
+ lastMessage.incrementCloseGroupDecorationCount(); |
+ return this._currentGroup.parentGroup() || this._currentGroup; |
+ } |
if (viewMessage.consoleMessage().isGroupStartMessage()) { |
- var showAllChildren = ignoreTextFilter || this._filter.matchesTextOrRegex(viewMessage); |
- this._currentGroup = new Console.ConsoleGroup(this._currentGroup, viewMessage, showAllChildren); |
+ var showAllChildren = this._currentGroup.showAllChildren() || this._filter.matchesTextOrRegex(viewMessage); |
+ return new Console.ConsoleGroup(this._currentGroup, viewMessage, showAllChildren); |
} |
- |
- this._messageAppendedForTests(); |
+ return this._currentGroup; |
} |
_messageAppendedForTests() { |
// This method is sniffed in tests. |
} |
+ /** |
+ * @param {!Console.ConsoleGroup} parent |
+ */ |
+ _appendParentGroupTitleMessages(parent) { |
+ var ancestors = []; |
+ var ancestor = parent; |
+ while (ancestor && ancestor.titleMessage()) { |
+ // Do not include items under a collapsed group. |
+ if (ancestor.messagesHidden()) |
+ ancestors = []; |
+ if (ancestor.isTitleVisible()) |
+ break; |
+ ancestors.push(ancestor); |
+ ancestor = ancestor.parentGroup(); |
+ } |
+ |
+ // Append ancestors from highest to lowest. |
+ for (var i = ancestors.length - 1; i >= 0; i--) { |
+ ancestor = ancestors[i]; |
+ ancestor.setTitleVisible(); |
+ this._visibleViewMessages.push(ancestor.titleMessage()); |
+ this._searchMessage(this._visibleViewMessages.length - 1); |
+ this._hiddenByFilterCount--; |
+ } |
+ } |
+ |
/** |
* @param {!ConsoleModel.ConsoleMessage} message |
* @return {!Console.ConsoleViewMessage} |
@@ -1157,9 +1197,6 @@ Console.ConsoleViewFilter = class { |
viewMessage.consoleMessage().source === ConsoleModel.ConsoleMessage.MessageSource.Network) |
return false; |
- if (viewMessage.consoleMessage().isGroupMessage()) |
- return true; |
- |
if (message.type === ConsoleModel.ConsoleMessage.MessageType.Result || |
message.type === ConsoleModel.ConsoleMessage.MessageType.Command) |
return true; |
@@ -1298,6 +1335,8 @@ Console.ConsoleGroup = class { |
this._messagesHidden = |
groupMessage && groupMessage.collapsed() || this._parentGroup && this._parentGroup.messagesHidden(); |
this._showAllChildren = showAllChildren; |
+ this._titleMessage = groupMessage; |
+ this._isTitleVisible = !groupMessage; |
} |
/** |
@@ -1307,6 +1346,24 @@ Console.ConsoleGroup = class { |
return new Console.ConsoleGroup(null, null, false); |
} |
+ /** |
+ * @return {?Console.ConsoleViewMessage} |
+ */ |
+ titleMessage() { |
+ return this._titleMessage; |
+ } |
+ |
+ /** |
+ * @return {boolean} |
+ */ |
+ isTitleVisible() { |
+ return this._isTitleVisible; |
+ } |
+ |
+ setTitleVisible() { |
+ this._isTitleVisible = true; |
+ } |
+ |
/** |
* @return {boolean} |
*/ |