DevTools: [Console] fix selection of all console messages

It turns out that selection of all elements in console (aka Ctrl-A)
works properly only if the last element in viewport DOM is a block
element with some text.

BUG=410899
R=vsevik

Review URL: https://codereview.chromium.org/564893002

git-svn-id: svn://svn.chromium.org/blink/trunk@181850 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 6621d39b
...@@ -221,3 +221,6 @@ first visible message index: 135 viewport is covered: YES ...@@ -221,3 +221,6 @@ first visible message index: 135 viewport is covered: YES
Running: testZeroOffsetSelection Running: testZeroOffsetSelection
Selected text: world Selected text: world
Running: testSelectAll
Selected all 150 messages.
...@@ -162,6 +162,24 @@ function test() ...@@ -162,6 +162,24 @@ function test()
InspectorTest.addResult("Selected text: " + viewport._selectedText()); InspectorTest.addResult("Selected text: " + viewport._selectedText());
next(); next();
}, },
function testSelectAll(next)
{
viewport.forceScrollItemToBeFirst(0);
// Set some initial selection in console.
var base = consoleView.itemElement(messagesCount - 2);
var extent = consoleView.itemElement(messagesCount - 1);
window.getSelection().setBaseAndExtent(base, 0, extent, 0);
// Try to select all messages.
document.execCommand("selectAll");
var text = viewport._selectedText();
var count = text ? text.split("\n").length : 0;
InspectorTest.addResult(count === messagesCount ? "Selected all " + count + " messages." : "Selected " + count + " messages instead of " + messagesCount);
next();
}
]; ];
var awaitingMessagesCount = messagesCount; var awaitingMessagesCount = messagesCount;
......
...@@ -103,6 +103,10 @@ WebInspector.ConsoleView = function() ...@@ -103,6 +103,10 @@ WebInspector.ConsoleView = function()
this._promptElement.id = "console-prompt"; this._promptElement.id = "console-prompt";
this._promptElement.spellcheck = false; this._promptElement.spellcheck = false;
// FIXME: This is a workaround for the selection machinery bug. See crbug.com/410899
var selectAllFixer = this._messagesElement.createChild("div", "console-view-fix-select-all");
selectAllFixer.textContent = ".";
this._showAllMessagesCheckbox = new WebInspector.StatusBarCheckbox(WebInspector.UIString("Show all messages")); this._showAllMessagesCheckbox = new WebInspector.StatusBarCheckbox(WebInspector.UIString("Show all messages"));
this._showAllMessagesCheckbox.inputElement.checked = true; this._showAllMessagesCheckbox.inputElement.checked = true;
this._showAllMessagesCheckbox.inputElement.addEventListener("change", this._updateMessageList.bind(this), false); this._showAllMessagesCheckbox.inputElement.addEventListener("change", this._updateMessageList.bind(this), false);
......
...@@ -820,6 +820,11 @@ body.platform-linux .source-code { ...@@ -820,6 +820,11 @@ body.platform-linux .source-code {
-webkit-transform: translateZ(0); -webkit-transform: translateZ(0);
} }
.console-view-fix-select-all {
height: 0px;
overflow: hidden;
}
#console-prompt { #console-prompt {
clear: right; clear: right;
position: relative; position: relative;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment