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

Unified Diff: LayoutTests/svg/text/select-svg-text-with-collapsed-whitespace.html

Issue 1072403007: Fixup a bug about SVG text selection. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Draft 16 (remove floor) Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: LayoutTests/svg/text/select-svg-text-with-collapsed-whitespace.html
diff --git a/LayoutTests/svg/text/select-svg-text-with-collapsed-whitespace.html b/LayoutTests/svg/text/select-svg-text-with-collapsed-whitespace.html
new file mode 100644
index 0000000000000000000000000000000000000000..e376729b999c316d60f0a2731160c39f856be9de
--- /dev/null
+++ b/LayoutTests/svg/text/select-svg-text-with-collapsed-whitespace.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html>
+<title>Test for selection with collapsed whitespace</title>
+<body>
+This test checks that characters can be selected correctly with collapsed whitespace.
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="300">
+ <text id="text1" x="20" y="20"> happy debugging !!</text>
+ <text id="text2" x="20" y="40"> <tspan id="tspan1" style="font-weight: bold;">happy</tspan> debugging !!</text>
+ <text id="text3" x="20" y="80"> <tspan id="tspan2" style="font-size: 25px;">happy</tspan> debugging !!</text>
+ <text id="text4" x="20" y="230" fill="black" transform="scale(0.5)" font-size="40"> happy debugging !!</text>
+</svg>
+<div id="passfail">
fs 2015/04/28 08:57:03 I don't see this <div> used for anything.
+</div>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/SelectionTestCase.js"></script>
+<script type="text/javascript">
+var range;
+var a, b;
fs 2015/04/28 08:57:03 What uses 'a' and 'b'? Remove?
+function runTest() {
+ var text1 = document.getElementById('text1');
+ var text2 = document.getElementById('text2');
+ var text3 = document.getElementById('text3');
+ var text4 = document.getElementById('text4');
+
+ if (!window.testRunner)
+ return;
+
+ var startPos = text1.getStartPositionOfChar(0);
fs 2015/04/28 08:57:03 You could roll these chunks of code into a functio
+ var endPos = text1.getEndPositionOfChar(3);
+ var absStartPos = toAbsoluteCoordinates(startPos, text1);
+ var absEndPos = toAbsoluteCoordinates(endPos, text1);
+ eventSender.mouseMoveTo(absStartPos.x, absStartPos.y);
+ eventSender.mouseDown();
+ eventSender.mouseMoveTo(absEndPos.x, absEndPos.y);
+ eventSender.mouseUp();
+ verify("5", "9");
+
+ var startPos = text1.getStartPositionOfChar(0);
+ var endPos = text1.getEndPositionOfChar(8);
+ var absStartPos = toAbsoluteCoordinates(startPos, text1);
+ var absEndPos = toAbsoluteCoordinates(endPos, text1);
+ eventSender.mouseMoveTo(absStartPos.x, absStartPos.y);
+ eventSender.mouseDown();
+ eventSender.mouseMoveTo(absEndPos.x, absEndPos.y);
+ eventSender.mouseUp();
+ verify("5", "24");
+
+ var startPos = text2.getStartPositionOfChar(0);
+ var endPos = text2.getEndPositionOfChar(3);
+ var absStartPos = toAbsoluteCoordinates(startPos, text2);
+ var absEndPos = toAbsoluteCoordinates(endPos, text2);
+ eventSender.mouseMoveTo(absStartPos.x, absStartPos.y);
+ eventSender.mouseDown();
+ eventSender.mouseMoveTo(absEndPos.x, absEndPos.y);
+ eventSender.mouseUp();
+ verify("0", "4");
+
+ var startPos = text2.getStartPositionOfChar(0);
+ var endPos = text2.getEndPositionOfChar(8);
+ var absStartPos = toAbsoluteCoordinates(startPos, text2);
+ var absEndPos = toAbsoluteCoordinates(endPos, text2);
+ eventSender.mouseMoveTo(absStartPos.x, absStartPos.y);
+ eventSender.mouseDown();
+ eventSender.mouseMoveTo(absEndPos.x, absEndPos.y);
+ eventSender.mouseUp();
+ verify("0", "14");
+
+ var startPos = text3.getStartPositionOfChar(0);
+ var endPos = text3.getEndPositionOfChar(3);
+ var absStartPos = toAbsoluteCoordinates(startPos, text3);
+ var absEndPos = toAbsoluteCoordinates(endPos, text3);
+ eventSender.mouseMoveTo(absStartPos.x, absStartPos.y);
+ eventSender.mouseDown();
+ eventSender.mouseMoveTo(absEndPos.x, absEndPos.y);
+ eventSender.mouseUp();
+ verify("0", "4");
+
+ var startPos = text3.getStartPositionOfChar(0);
+ var endPos = text3.getEndPositionOfChar(10);
+ var absStartPos = toAbsoluteCoordinates(startPos, text3);
+ var absEndPos = toAbsoluteCoordinates(endPos, text3);
+ eventSender.mouseMoveTo(absStartPos.x, absStartPos.y);
+ eventSender.mouseDown();
+ eventSender.mouseMoveTo(absEndPos.x, absEndPos.y);
+ eventSender.mouseUp();
+ verify("0", "15");
+
+ var startPos = text4.getStartPositionOfChar(0);
+ var endPos = text4.getEndPositionOfChar(3);
+ var absStartPos = toAbsoluteCoordinates(startPos, text4);
+ var absEndPos = toAbsoluteCoordinates(endPos, text4);
+ eventSender.mouseMoveTo(absStartPos.x, absStartPos.y - 15);
fs 2015/04/28 08:57:03 Why does this (and the following) need to subtract
+ eventSender.mouseDown();
+ eventSender.mouseMoveTo(absEndPos.x, absEndPos.y - 15);
+ eventSender.mouseUp();
+ verify("5", "9");
+
+ var startPos = text4.getStartPositionOfChar(0);
+ var endPos = text4.getEndPositionOfChar(8);
+ var absStartPos = toAbsoluteCoordinates(startPos, text4);
+ var absEndPos = toAbsoluteCoordinates(endPos, text4);
+ eventSender.mouseMoveTo(absStartPos.x, absStartPos.y - 15);
+ eventSender.mouseDown();
+ eventSender.mouseMoveTo(absEndPos.x, absEndPos.y - 15);
+ eventSender.mouseUp();
+ verify("5", "24");
+}
+
+function verify(start, end) {
+ range = window.getSelection().getRangeAt(0);
+ shouldBe("range.startOffset", start);
+ shouldBe("range.endOffset", end);
+ eventSender.mouseMoveTo(0,0);
+ eventSender.mouseDown();
+ eventSender.mouseUp();
+}
+
+runTest();
+</script>

Powered by Google App Engine
This is Rietveld 408576698