Skip to content

Commit

Permalink
Make line-break-ascii.html faster
Browse files Browse the repository at this point in the history
This patch makes line-break-ascii.html faster by using the
shared JavaScript code with word-break-all-ascii.html, which
was made faster in r511361.

Bug: 658211, 879822
Change-Id: I172aac89c4edd96ea61d2fedaff22ed9fbd0c9d9
Reviewed-on: https://chromium-review.googlesource.com/1220949
Commit-Queue: Emil A Eklund <eae@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Cr-Commit-Position: refs/heads/master@{#590742}
  • Loading branch information
kojiishi authored and Commit Bot committed Sep 12, 2018
1 parent cbe87e1 commit e034e76
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 92 deletions.
2 changes: 0 additions & 2 deletions third_party/WebKit/LayoutTests/SlowTests
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,6 @@ crbug.com/528419 http/tests/devtools/elements/styles-2/pseudo-elements.js [ Slow

crbug.com/529345 [ Win10 ] paint/masks/fieldset-mask.html [ Slow ]

crbug.com/658211 [ Win7 Debug ] fast/text/line-break-ascii.html [ Slow ]

crbug.com/802029 fast/dom/shadow/focus-controller-recursion-crash.html [ Slow ]

crbug.com/592183 external/wpt/webusb/usbDevice.https.html [ Slow ]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<style>
#break-test {
#container {
word-break:break-all;
font:50px/1 Ahem;
width:3em;
Expand All @@ -11,52 +11,13 @@
}
</style>
<div id="result"></div>
<div id="break-test"></div>
<div id="container"></div>
<script src="../../text/resources/line-break-test.js"></script>
<script>
var beginChar = 33;
var endChar = 127;
var breakTest = document.getElementById("break-test");
var breakTestFontsize = parseFloat(getComputedStyle(breakTest).fontSize);
var nbsp = String.fromCharCode(0xA0);
nbsp = nbsp + nbsp;
let matrix = new LineBreakTest(33, 127);
result.textContent = matrix.toResultString();
container.remove();

class BreakTest {
constructor(ch0, ch1) {
this.element = document.createElement('div');
this.element.textContent = nbsp + String.fromCharCode(ch0) + String.fromCharCode(ch1);
breakTest.appendChild(this.element);
}

canBreak() {
return this.element.offsetHeight / breakTestFontsize > 1.9;
}

static GetLineBreakMatrix() {
var matrix = [];
for (var last = beginChar; last < endChar; last++) {
var canBreakBefore = [];
for (var current = beginChar; current < endChar; current++)
canBreakBefore.push(new BreakTest(last, current));
matrix.push(canBreakBefore);
}
return matrix;
}
}

var matrix = BreakTest.GetLineBreakMatrix();

var header = [];
for (var i = 0; i < matrix.length; i++)
header.push(String.fromCharCode(beginChar + i));
var rows = [" " + header.join("")];
for (var i = 0; i < matrix.length; i++) {
rows.push(String.fromCharCode(beginChar + i) + " " + matrix[i].map(function (breakTest) {
return breakTest.canBreak() ? "/" : "X";
}).join(""));
}
result.textContent = rows.join("\n");

breakTest.remove();
if (window.testRunner)
testRunner.dumpAsText();
testRunner.dumpAsText();
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,3 @@ z XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
| XXXXXXX/XXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXX
} XXXXXXX/XXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXX
~ XXXXXXX/XXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXX

54 changes: 11 additions & 43 deletions third_party/WebKit/LayoutTests/fast/text/line-break-ascii.html
Original file line number Diff line number Diff line change
@@ -1,54 +1,22 @@
<!DOCTYPE html>
<style>
#break-test {
font:50px/1 Ahem;
width:3em;
#container {
font:50px/1 Ahem;
width:3em;
}
#result {
font:15px/1 monospace;
white-space:pre;
font:15px/1 monospace;
white-space:pre;
}
</style>
<div id="result"></div>
<div id="break-test"></div>
<div id="container"></div>
<script src="resources/line-break-test.js"></script>
<script>
var beginChar = 33;
var endChar = 127;
var breakTest = document.getElementById("break-test");
var breakTestFontsize = parseFloat(getComputedStyle(breakTest).fontSize);
var nbsp = String.fromCharCode(0xA0);
nbsp = nbsp + nbsp;
let matrix = new LineBreakTest(33, 127);
result.textContent = matrix.toResultString();
container.remove();

var matrix = getLineBreakMatrix();

var header = [];
for (var i = 0; i < matrix.length; i++)
header.push(String.fromCharCode(beginChar + i));
var rows = [" " + header.join("")];
for (var i = 0; i < matrix.length; i++) {
rows.push(String.fromCharCode(beginChar + i) + " " + matrix[i].map(function (canBreak) {
return canBreak ? "/" : "X";
}).join(""));
}
result.textContent = rows.join("\n");

function getLineBreakMatrix() {
var matrix = [];
for (var last = beginChar; last < endChar; last++) {
var canBreakBefore = [];
for (var current = beginChar; current < endChar; current++)
canBreakBefore.push(canBreakBetween(last, current));
matrix.push(canBreakBefore);
}
return matrix;
}

function canBreakBetween(last, current) {
breakTest.textContent = nbsp + String.fromCharCode(last) + String.fromCharCode(current);
return breakTest.offsetHeight / breakTestFontsize > 1.9;
}

breakTest.textContent = "";
if (window.testRunner)
testRunner.dumpAsText();
testRunner.dumpAsText();
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
let container = document.getElementById("container");
let breakTestFontsize = parseFloat(getComputedStyle(container).fontSize);
let nbsp = String.fromCharCode(0xA0);
nbsp = nbsp + nbsp;

class LineBreakTestElement {
constructor(last, current) {
let element = document.createElement('div');
element.textContent = nbsp + String.fromCharCode(last) + String.fromCharCode(current);
container.appendChild(element);
this.element = element;
}

get canBreak() {
return this.element.offsetHeight / breakTestFontsize > 1.9;
}
}

class LineBreakTest {
constructor(begin, end) {
let rows = [];
for (let last = begin; last < end; last++) {
let row = [];
for (let current = begin; current < end; current++)
row.push(new LineBreakTestElement(last, current));
rows.push(row);
}
this.begin = begin;
this.rows = rows;
}

toResultString() {
let header = [];
for (let i = 0; i < this.rows.length; i++)
header.push(String.fromCharCode(this.begin + i));
let rows = [" " + header.join("")];
for (let i = 0; i < this.rows.length; i++) {
let row = String.fromCharCode(this.begin + i) + " " +
this.rows[i].map((test) => test.canBreak ? "/" : "X")
.join("");
rows.push(row);
}
return rows.join("\n");
}
}

0 comments on commit e034e76

Please sign in to comment.