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

Unified Diff: LayoutTests/editing/editing.js

Issue 225303002: Let Selection.collapse remember a raw Position instead of a canonicalized one. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix setSelectedRange arguments Created 6 years, 6 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/editing/editing.js
diff --git a/LayoutTests/editing/editing.js b/LayoutTests/editing/editing.js
index be20a1c4150c6bf2c1ea547317aaf8f0dd36baca..fb9a5ecc4945262521801d1f8c71f1d8c8bd0e71 100644
--- a/LayoutTests/editing/editing.js
+++ b/LayoutTests/editing/editing.js
@@ -893,16 +893,55 @@ function forwardDeleteCommand() {
window.queueCommand = queueCommand;
})();
+function focusOnFirstTextInTestElementIfExists() {
+ var elem = document.getElementById("test");
+ var selection = window.getSelection();
+ if (elem) {
+ var traverse = function (node, offset, condition) {
+ var obj = condition(node, offset);
+ if (obj)
+ return obj;
+
+ var children = node.childNodes;
+ var len = children.length;
+ for (var i = 0; i < len; i++) {
+ var child = children[i];
+ obj = traverse(child, i, condition);
+ if (obj)
+ return obj;
+ }
+ return null;
+ }
+
+ var firstVisiblePosition = traverse(elem, 0, function (node, offset) {
+ if (node.nodeName == '#text') {
+ offset = 0;
+ while (offset < node.textContent.length && node.textContent[offset] == '\n')
+ offset++;
+ return { 'node': node, 'offset': offset };
+ }
+
+ if (node.nodeName == 'BR' || node.nodeName == 'IMG')
+ return { 'node': node.parentNode, 'offset': offset };
+
+ return null;
+ });
+
+ if (firstVisiblePosition)
+ selection.collapse(firstVisiblePosition.node, firstVisiblePosition.offset);
+ else
+ selection.collapse(elem, 0);
+ } else {
+ selection.removeAllRanges();
+ }
+}
+
function runEditingTest() {
if (window.testRunner)
testRunner.dumpEditingCallbacks();
- var elem = document.getElementById("test");
- var selection = window.getSelection();
- if (elem)
- selection.collapse(elem, 0);
- else
- selection.removeAllRanges();
+ focusOnFirstTextInTestElementIfExists();
+
editingTest();
}
@@ -918,12 +957,8 @@ function runDumpAsTextEditingTest(enableCallbacks) {
dumpAsText = true;
- var elem = document.getElementById("test");
- var selection = window.getSelection();
- if (elem)
- selection.collapse(elem, 0);
- else
- selection.removeAllRanges();
+ focusOnFirstTextInTestElementIfExists();
+
editingTest();
for (var i = 0; i < elementsForDumpingMarkupList.length; i++)

Powered by Google App Engine
This is Rietveld 408576698