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

Unified Diff: third_party/WebKit/LayoutTests/editing/selection/document-mutation.html

Issue 2368263003: Convert editing/selection/document-mutation.html to use w3c test harness (Closed)
Patch Set: 2016-09-27T18:54:28 Created 4 years, 3 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
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/editing/selection/document-mutation-expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/LayoutTests/editing/selection/document-mutation.html
diff --git a/third_party/WebKit/LayoutTests/editing/selection/document-mutation.html b/third_party/WebKit/LayoutTests/editing/selection/document-mutation.html
index 7345f72787a0dfc1e741ba0ca20d5ea523a12304..6587ad267c19ff91967d1117d1637592b7908dc5 100644
--- a/third_party/WebKit/LayoutTests/editing/selection/document-mutation.html
+++ b/third_party/WebKit/LayoutTests/editing/selection/document-mutation.html
@@ -1,91 +1,85 @@
-<!DOCTYPE html>
-<html>
-<body>
-<p>This test ensures WebKit adjusts the selection under document mutation.</p>
-<p> Examples are from:<br> http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Mutation</p>
-<div id="test" contenteditable></div>
-<pre>
+<!doctype html>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<script src="../assert_selection.js"></script>
<script>
-
-var test = document.getElementById('test');
-test.focus();
-
-if (window.testRunner)
- testRunner.dumpAsText();
-
-var baseIsFirst = true;
-var selection = window.getSelection();
-
-function checkResult(expectedStartOffset, expectedEndOffset) {
- var actualStartOffset = selection.getRangeAt(0).startOffset;
- var actualEndOffset = selection.getRangeAt(0).endOffset;
- if (actualStartOffset == expectedStartOffset && actualEndOffset == expectedEndOffset)
- document.write('PASS: selection is (' + expectedStartOffset + ', ' + expectedEndOffset + ') "' + selection + '"\n');
- else
- document.write('FAIL: selection is (' + actualStartOffset + ', ' + actualEndOffset + ') "' + selection +
- '" and expected selection is ' + '(' + expectedStartOffset + ', ' + expectedEndOffset + ')\n');
+function swapMarks(string) {
+ if (string.indexOf('^') === -1)
+ return string;
+ return string.replace('^', '$').replace('|', '^').replace('$', '|');
}
-function setSelectionRange(startContainer, startOffset, endContainer, endOffset) {
- if (baseIsFirst)
- selection.setBaseAndExtent(startContainer, startOffset, endContainer, endOffset);
- else
- selection.setBaseAndExtent(endContainer, endOffset, startContainer, startOffset);
+function test_selection(sample, closure, expected, description) {
+ test(() => assert_selection(sample, closure, expected),
+ description + '; anchor is first');
+ test(() => assert_selection(swapMarks(sample), closure, swapMarks(expected)),
+ description + '; focus is first');
}
-function runInsertionTest(actor, expectedStartOffset, expectedEndOffset) {
- test.innerHTML = '<p>Abcd efgh XY blah ijkl</p>';
-
- // Select "Y blah i"
- setSelectionRange(test.firstChild.firstChild, 11, test.firstChild.firstChild, 19);
- actor(test.firstChild.firstChild);
- checkResult(expectedStartOffset, expectedEndOffset);
+function doInsert(selection, offset) {
+ const element = selection.document.querySelector('p');
+ element.firstChild.insertData(offset, '_'.repeat(13));
}
-function runDeletionTest(actor, expectedStartOffset, expectedEndOffset) {
- test.innerHTML = '<p>Abcd efgh The Range ijkl</p>';
-
- // Select "he Range i"
- setSelectionRange(test.firstChild.firstChild, 11, test.firstChild.firstChild, 21);
- actor(test.firstChild.firstChild);
- checkResult(expectedStartOffset, expectedEndOffset);
+function doDelete(selection, offset, length) {
+ const element = selection.document.querySelector('p');
+ element.firstChild.deleteData(offset, length);
}
-function deleteNodeContainingSelection(expectedStartOffset, expectedEndOffset) {
- test.innerHTML = '<p>Abcd <em>efgh The Range ij</em>kl</p>';
-
- // Select "he Range i"
- setSelectionRange(test.firstChild.firstChild.nextSibling.firstChild, 6, test.firstChild.firstChild.nextSibling.firstChild, 16);
- test.firstChild.removeChild(test.firstChild.firstChild.nextSibling);
- checkResult(expectedStartOffset, expectedEndOffset);
-}
-
-function runTests() {
- document.write('Insertion tests:\n');
- runInsertionTest(function(node) { node.insertData(10, 'inserted text'); }, 24, 32);
- runInsertionTest(function(node) { node.insertData(11, 'inserted text'); }, 11, 32);
- runInsertionTest(function(node) { node.insertData(12, 'inserted text'); }, 11, 32);
- runInsertionTest(function(node) { node.insertData(17, 'inserted text'); }, 11, 32);
- runInsertionTest(function(node) { node.insertData(19, 'inserted text'); }, 11, 19);
-
- document.write('\nDeletion tests:\n');
- runDeletionTest(function(node) { node.deleteData(5, 8); }, 5, 13);
- runDeletionTest(function(node) { node.deleteData(5, 17); }, 5, 5);
- runDeletionTest(function(node) { node.deleteData(5, 6); }, 5, 15);
- deleteNodeContainingSelection(1, 1);
-}
-
-document.write('Base is first\n\n');
-runTests();
-
-baseIsFirst = false;
-
-document.write('\n\nExtent is first\n\n');
-runTests();
-
-test.style.display = 'none';
-document.write('\nDONE');
+// Insertion tests
+test_selection(
+ '<p>Abcd efgh X^Y blah i|jkl</p>',
+ selection => doInsert(selection, 10),
+ '<p>Abcd efgh _____________X^Y blah i|jkl</p>',
+ 'insertData at 10');
+
+test_selection(
+ '<p>Abcd efgh X^Y blah i|jkl</p>',
+ selection => doInsert(selection, 11),
+ '<p>Abcd efgh X^_____________Y blah i|jkl</p>',
+ 'insertData at 11');
+
+test_selection(
+ '<p>Abcd efgh X^Y blah i|jkl</p>',
+ selection => doInsert(selection, 12),
+ '<p>Abcd efgh X^Y_____________ blah i|jkl</p>',
+ 'insertData at 12');
+
+test_selection(
+ '<p>Abcd efgh X^Y blah i|jkl</p>',
+ selection => doInsert(selection, 17),
+ '<p>Abcd efgh X^Y blah_____________ i|jkl</p>',
+ 'insertData at 17');
+
+test_selection(
+ '<p>Abcd efgh X^Y blah i|jkl</p>',
+ selection => doInsert(selection, 19),
+ '<p>Abcd efgh X^Y blah i|_____________jkl</p>',
+ 'insertData at 19');
+
+// Deletion tests
+test_selection(
+ '<p>Abcd efgh T^he Range i|jkl</p>',
+ selection => doDelete(selection, 5, 8),
+ '<p>Abcd ^ Range i|jkl</p>',
+ 'deleteData(5, 8)');
+
+test_selection(
+ '<p>Abcd efgh T^he Range i|jkl</p>',
+ selection => doDelete(selection, 5, 6),
+ '<p>Abcd ^he Range i|jkl</p>',
+ 'deleteData(5, 6)');
+
+test_selection(
+ '<p>Abcd efgh T^he Range i|jkl</p>',
+ selection => doDelete(selection, 5, 17),
+ '<p>Abcd |kl</p>',
+ 'deleteData(5, 17)');
+
+// Delete node containing selection
+test_selection(
+ '<p>Abcd <em>efgh T^he Range i|j</em>kl</p>',
+ selection => selection.document.querySelector('em').remove(),
+ '<p>Abcd |kl</p>',
+ 'delete node containing selection');
</script>
-</pre>
-</body>
-</html>
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/editing/selection/document-mutation-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698