[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
rniwa at webkit.org
rniwa at webkit.org
Wed Dec 22 16:16:40 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 7bf402a9afb87fe9e10cc4867f9f24500ef62f41
Author: rniwa at webkit.org <rniwa at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Sat Nov 20 22:51:50 2010 +0000
2010-11-19 Ryosuke Niwa <rniwa at webkit.org>
Reviewed by Antonio Gomes.
/editing/selection/extend-selection.html should be split into smaller tests
https://bugs.webkit.org/show_bug.cgi?id=49849
Divided the test into 4 pieces.
* editing/selection/extend-selection-character-expected.txt: Added.
* editing/selection/extend-selection-character.html: Added.
* editing/selection/extend-selection-enclosing-block-expected.txt: Added.
* editing/selection/extend-selection-enclosing-block.html: Added.
* editing/selection/extend-selection-expected.txt: Removed.
* editing/selection/extend-selection-home-end-expected.txt: Added.
* editing/selection/extend-selection-home-end.html: Added.
* editing/selection/extend-selection-word-expected.txt: Added.
* editing/selection/extend-selection-word.html: Added.
* editing/selection/extend-selection.html: Removed.
* editing/selection/resources/extend-selection.css: Added.
(div.test):
(div.test:before):
(div.test span):
(div.test img):
(div.test img + img):
(div.test div):
* editing/selection/resources/extend-selection.js: Added.
(log):
(positionsExtendingInDirectionForEnclosingBlock):
(positionsExtendingInDirection):
(fold):
(logPositions):
(checkReverseOrder):
(checkSameOrder):
(extendingSelection):
(testExtendingSelection):
(createTestNodes.window.onload):
(createTestNodes):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72482 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index b7e3bdc..2b71f6e 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,42 @@
+2010-11-19 Ryosuke Niwa <rniwa at webkit.org>
+
+ Reviewed by Antonio Gomes.
+
+ /editing/selection/extend-selection.html should be split into smaller tests
+ https://bugs.webkit.org/show_bug.cgi?id=49849
+
+ Divided the test into 4 pieces.
+
+ * editing/selection/extend-selection-character-expected.txt: Added.
+ * editing/selection/extend-selection-character.html: Added.
+ * editing/selection/extend-selection-enclosing-block-expected.txt: Added.
+ * editing/selection/extend-selection-enclosing-block.html: Added.
+ * editing/selection/extend-selection-expected.txt: Removed.
+ * editing/selection/extend-selection-home-end-expected.txt: Added.
+ * editing/selection/extend-selection-home-end.html: Added.
+ * editing/selection/extend-selection-word-expected.txt: Added.
+ * editing/selection/extend-selection-word.html: Added.
+ * editing/selection/extend-selection.html: Removed.
+ * editing/selection/resources/extend-selection.css: Added.
+ (div.test):
+ (div.test:before):
+ (div.test span):
+ (div.test img):
+ (div.test img + img):
+ (div.test div):
+ * editing/selection/resources/extend-selection.js: Added.
+ (log):
+ (positionsExtendingInDirectionForEnclosingBlock):
+ (positionsExtendingInDirection):
+ (fold):
+ (logPositions):
+ (checkReverseOrder):
+ (checkSameOrder):
+ (extendingSelection):
+ (testExtendingSelection):
+ (createTestNodes.window.onload):
+ (createTestNodes):
+
2010-11-20 Julie Parent <jparent at chromium.org>
Unreviewed. Adding failing expectation for Win + Linux for new
diff --git a/LayoutTests/editing/selection/extend-selection-character-expected.txt b/LayoutTests/editing/selection/extend-selection-character-expected.txt
new file mode 100644
index 0000000..9927fb2
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-selection-character-expected.txt
@@ -0,0 +1,173 @@
+
+
+
+Extending by character
+Test 1, LTR:
+ Extending right: "\nabc ABC xyz DEF def\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
+ Extending left: "\nabc ABC xyz DEF def\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+ Extending forward: "\nabc ABC xyz DEF def\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
+ Extending backward: "\nabc ABC xyz DEF def\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+Test 1, RTL:
+ Extending left: "\nabc ABC xyz DEF def\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
+ Extending right: "\nabc ABC xyz DEF def\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+ Extending forward: "\nabc ABC xyz DEF def\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
+ Extending backward: "\nabc ABC xyz DEF def\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 2, LTR:
+ Extending right: "\nABC xyz DEF def GHI\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
+ Extending left: "\nABC xyz DEF def GHI\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+ Extending forward: "\nABC xyz DEF def GHI\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
+ Extending backward: "\nABC xyz DEF def GHI\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+Test 2, RTL:
+ Extending left: "\nABC xyz DEF def GHI\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
+ Extending right: "\nABC xyz DEF def GHI\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+ Extending forward: "\nABC xyz DEF def GHI\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
+ Extending backward: "\nABC xyz DEF def GHI\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 3, LTR:
+ Extending right: "\nABC DEF ABC\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12)]
+ Extending left: "\nABC DEF ABC\n"[(1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+ Extending forward: "\nABC DEF ABC\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12)]
+ Extending backward: "\nABC DEF ABC\n"[(1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+Test 3, RTL:
+ Extending left: "\nABC DEF ABC\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12)]
+ Extending right: "\nABC DEF ABC\n"[(1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+ Extending forward: "\nABC DEF ABC\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12)]
+ Extending backward: "\nABC DEF ABC\n"[(1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 4, LTR:
+ Extending right: "\nabc efd dabeb\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14)]
+ Extending left: "\nabc efd dabeb\n"[(1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+ Extending forward: "\nabc efd dabeb\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14)]
+ Extending backward: "\nabc efd dabeb\n"[(1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+Test 4, RTL:
+ Extending left: "\nabc efd dabeb\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14)]
+ Extending right: "\nabc efd dabeb\n"[(1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+ Extending forward: "\nabc efd dabeb\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14)]
+ Extending backward: "\nabc efd dabeb\n"[(1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 5, LTR:
+ Extending right: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending left: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+Test 5, RTL:
+ Extending left: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending right: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 6, LTR:
+ Extending right: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending left: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+Test 6, RTL:
+ Extending left: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending right: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 7, LTR:
+ Extending right: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending left: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+Test 7, RTL:
+ Extending left: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending right: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 8, LTR:
+ Extending right: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending left: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+Test 8, RTL:
+ Extending left: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending right: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+
diff --git a/LayoutTests/editing/selection/extend-selection-character.html b/LayoutTests/editing/selection/extend-selection-character.html
new file mode 100644
index 0000000..9f277f7
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-selection-character.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="resources/extend-selection.css" />
+<script src="resources/extend-selection.js"></script>
+</head>
+<body>
+<pre id="console"></pre>
+<script>
+
+if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+
+ var tests = createTestNodes("char-and-word");
+ var sel = getSelection();
+
+ log("\n\n\nExtending by character\n");
+ testExtendingSelection(tests, sel, "character", 0);
+}
+
+</script>
+</body>
diff --git a/LayoutTests/editing/selection/extend-selection-enclosing-block-expected.txt b/LayoutTests/editing/selection/extend-selection-enclosing-block-expected.txt
new file mode 100644
index 0000000..a0fa35a
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-selection-enclosing-block-expected.txt
@@ -0,0 +1,17 @@
+
+
+
+Extending by character
+Test 1, LTR:
+ Extending right: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5)], "ipsum dolor sit"[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amett"[(0,1), (0,2), (0,3), (0,4), (0,5)]
+ Extending left: " amett"[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)], "Lorem "[(0,5), (0,4), (0,3), (0,2), (0,1)]
+
+
+
+
+
+Extending by word
+Test 1, LTR:
+ Extending right: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amett"[(0,6), (0,1)]
+ Extending left: " amett"[(0,6), (0,1)], "ipsum dolor sit"[(0,12), (0,6), (0,0)], "Lorem "[(0,0), (0,5)]
+
diff --git a/LayoutTests/editing/selection/extend-selection-enclosing-block.html b/LayoutTests/editing/selection/extend-selection-enclosing-block.html
new file mode 100644
index 0000000..ae70653
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-selection-enclosing-block.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="resources/extend-selection.css" />
+<script src="resources/extend-selection.js"></script>
+</head>
+<body>
+<pre id="console"></pre>
+<script>
+
+function testExtendingSelectionForEnclosingBlock(tests, sel, granularity)
+{
+ for (var i = 0; i < tests.length; ++i) {
+ log("Test " + (i + 1) + ", LTR:\n Extending right: ");
+ sel.setPosition(tests[i], 0);
+ var ltrRightPos = extendingSelection(sel, "right", granularity, 1);
+
+ log(" Extending left: ");
+ var ltrLeftPos = extendingSelection(sel, "left", granularity, 1);
+ }
+}
+
+if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+
+ tests = createTestNodes("enclosing-block");
+ sel = getSelection();
+
+ log("\n\n\nExtending by character\n");
+ testExtendingSelectionForEnclosingBlock(tests, sel, "character", 1);
+ log("\n\n\n\n\nExtending by word\n");
+ testExtendingSelectionForEnclosingBlock(tests, sel, "word", 1);
+}
+
+</script>
+</body>
diff --git a/LayoutTests/editing/selection/extend-selection-expected.txt b/LayoutTests/editing/selection/extend-selection-expected.txt
deleted file mode 100644
index d5fe30d..0000000
--- a/LayoutTests/editing/selection/extend-selection-expected.txt
+++ /dev/null
@@ -1,528 +0,0 @@
-abc אבג xyz דהו def
-אבג xyz דהו def זחט
-אבג דהו אבג
-abc efd dabeb
-Lorem ipsum dolor sit amet
-Lorem ipsum dolor sit amet
-Lorem ipsum dolor sit amet
-Lorem ipsum dolor sit amet
-Lorem
-ipsum dolor sit
-amett
-Lorem ipsum dolor sit amet
-Lorem ipsum dolor
-just a test
-sit amet
-Lorem ipsum dolor sit amet
-Lorem
-ipsum dolor sit
-amet
-Just testing רק בודק
-Just testing what ever
-car means אבג.
-car דהו אבג.
-he said "car דהו אבג."
-זחט יךכ לםמ 'he said "car דהו אבג"'?
-אבג abc דהו
-edf זחט abrebg
-abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg
-abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg
-
-
-
-Extending by character
-Test 1, LTR:
- Extending right: "\nabc ABC xyz DEF def\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
- Extending left: "\nabc ABC xyz DEF def\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
- Extending forward: "\nabc ABC xyz DEF def\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
- Extending backward: "\nabc ABC xyz DEF def\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
-Test 1, RTL:
- Extending left: "\nabc ABC xyz DEF def\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
- Extending right: "\nabc ABC xyz DEF def\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
- Extending forward: "\nabc ABC xyz DEF def\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
- Extending backward: "\nabc ABC xyz DEF def\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 2, LTR:
- Extending right: "\nABC xyz DEF def GHI\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
- Extending left: "\nABC xyz DEF def GHI\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
- Extending forward: "\nABC xyz DEF def GHI\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
- Extending backward: "\nABC xyz DEF def GHI\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
-Test 2, RTL:
- Extending left: "\nABC xyz DEF def GHI\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
- Extending right: "\nABC xyz DEF def GHI\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
- Extending forward: "\nABC xyz DEF def GHI\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14), (1,15), (1,16), (1,17), (1,18), (1,19), (1,20)]
- Extending backward: "\nABC xyz DEF def GHI\n"[(1,20), (1,19), (1,18), (1,17), (1,16), (1,15), (1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 3, LTR:
- Extending right: "\nABC DEF ABC\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12)]
- Extending left: "\nABC DEF ABC\n"[(1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
- Extending forward: "\nABC DEF ABC\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12)]
- Extending backward: "\nABC DEF ABC\n"[(1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
-Test 3, RTL:
- Extending left: "\nABC DEF ABC\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12)]
- Extending right: "\nABC DEF ABC\n"[(1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
- Extending forward: "\nABC DEF ABC\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12)]
- Extending backward: "\nABC DEF ABC\n"[(1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 4, LTR:
- Extending right: "\nabc efd dabeb\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14)]
- Extending left: "\nabc efd dabeb\n"[(1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
- Extending forward: "\nabc efd dabeb\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14)]
- Extending backward: "\nabc efd dabeb\n"[(1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
-Test 4, RTL:
- Extending left: "\nabc efd dabeb\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14)]
- Extending right: "\nabc efd dabeb\n"[(1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
- Extending forward: "\nabc efd dabeb\n"[(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12), (1,13), (1,14)]
- Extending backward: "\nabc efd dabeb\n"[(1,14), (1,13), (1,12), (1,11), (1,10), (1,9), (1,8), (1,7), (1,6), (1,5), (1,4), (1,3), (1,2), (1,1)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 5, LTR:
- Extending right: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending left: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
-Test 5, RTL:
- Extending left: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending right: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 6, LTR:
- Extending right: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending left: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
-Test 6, RTL:
- Extending left: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending right: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 7, LTR:
- Extending right: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending left: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
-Test 7, RTL:
- Extending left: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending right: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 8, LTR:
- Extending right: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending left: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
-Test 8, RTL:
- Extending left: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending right: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6)], "ipsum dolor sit"[(0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amet"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending backward: " amet"[(0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "Lorem "[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-
-
-
-
-
-Extending by word
-Test 1, LTR:
- Extending right: "\nabc ABC xyz DEF def\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
- Extending left: "\nabc ABC xyz DEF def\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
- Extending forward: "\nabc ABC xyz DEF def\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
- Extending backward: "\nabc ABC xyz DEF def\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
-Test 1, RTL:
- Extending left: "\nabc ABC xyz DEF def\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
- Extending right: "\nabc ABC xyz DEF def\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
- Extending forward: "\nabc ABC xyz DEF def\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
- Extending backward: "\nabc ABC xyz DEF def\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 2, LTR:
- Extending right: "\nABC xyz DEF def GHI\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
- Extending left: "\nABC xyz DEF def GHI\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
- Extending forward: "\nABC xyz DEF def GHI\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
- Extending backward: "\nABC xyz DEF def GHI\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
-Test 2, RTL:
- Extending left: "\nABC xyz DEF def GHI\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
- Extending right: "\nABC xyz DEF def GHI\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
- Extending forward: "\nABC xyz DEF def GHI\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
- Extending backward: "\nABC xyz DEF def GHI\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 3, LTR:
- Extending right: "\nABC DEF ABC\n"[(1,1), (1,4), (1,8), (1,12)]
- Extending left: "\nABC DEF ABC\n"[(1,12), (1,9), (1,5), (1,1)]
- Extending forward: "\nABC DEF ABC\n"[(1,1), (1,4), (1,8), (1,12)]
- Extending backward: "\nABC DEF ABC\n"[(1,12), (1,9), (1,5), (1,1)]
-Test 3, RTL:
- Extending left: "\nABC DEF ABC\n"[(1,1), (1,4), (1,8), (1,12)]
- Extending right: "\nABC DEF ABC\n"[(1,12), (1,9), (1,5), (1,1)]
- Extending forward: "\nABC DEF ABC\n"[(1,1), (1,4), (1,8), (1,12)]
- Extending backward: "\nABC DEF ABC\n"[(1,12), (1,9), (1,5), (1,1)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 4, LTR:
- Extending right: "\nabc efd dabeb\n"[(1,1), (1,4), (1,8), (1,14)]
- Extending left: "\nabc efd dabeb\n"[(1,14), (1,9), (1,5), (1,1)]
- Extending forward: "\nabc efd dabeb\n"[(1,1), (1,4), (1,8), (1,14)]
- Extending backward: "\nabc efd dabeb\n"[(1,14), (1,9), (1,5), (1,1)]
-Test 4, RTL:
- Extending left: "\nabc efd dabeb\n"[(1,1), (1,4), (1,8), (1,14)]
- Extending right: "\nabc efd dabeb\n"[(1,14), (1,9), (1,5), (1,1)]
- Extending forward: "\nabc efd dabeb\n"[(1,1), (1,4), (1,8), (1,14)]
- Extending backward: "\nabc efd dabeb\n"[(1,14), (1,9), (1,5), (1,1)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 5, LTR:
- Extending right: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending left: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
-Test 5, RTL:
- Extending left: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending right: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 6, LTR:
- Extending right: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending left: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
-Test 6, RTL:
- Extending left: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending right: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 7, LTR:
- Extending right: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending left: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
-Test 7, RTL:
- Extending left: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending right: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-Test 8, LTR:
- Extending right: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending left: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
-Test 8, RTL:
- Extending left: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending right: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
- Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
-
-
- validating ltrRight and ltrLeft
- validating ltrRight and ltrForward
- validating ltrForward and rtlForward
- validating ltrLeft and ltrBackward
- validating ltrBackward and rtlBackward
- validating ltrRight and rtlLeft
- validating ltrLeft and rtlRight
-
-
-
-
-
-Extending by character
-Test 1, LTR:
- Extending right: "Lorem "[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5)], "ipsum dolor sit"[(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8), (0,9), (0,10), (0,11), (0,12), (0,13), (0,14), (0,15)], " amett"[(0,1), (0,2), (0,3), (0,4), (0,5)]
- Extending left: " amett"[(0,6), (0,5), (0,4), (0,3), (0,2), (0,1)], "ipsum dolor sit"[(0,15), (0,14), (0,13), (0,12), (0,11), (0,10), (0,9), (0,8), (0,7), (0,6), (0,5), (0,4), (0,3), (0,2), (0,1), (0,0)], "Lorem "[(0,5), (0,4), (0,3), (0,2), (0,1)]
-
-
-
-
-
-Extending by word
-Test 1, LTR:
- Extending right: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amett"[(0,6), (0,1)]
- Extending left: " amett"[(0,6), (0,1)], "ipsum dolor sit"[(0,12), (0,6), (0,0)], "Lorem "[(0,0), (0,5)]
-
-
-
-Extending by lineBoundary
-Test 1, LTR:
- Extending forward: "\nabc ABC xyz DEF def\n"[(1,1), (1,20)]
- Extending backward: "\nabc ABC xyz DEF def\n"[(1,20)]
-Test 1, RTL:
- Extending forward: "\nabc ABC xyz DEF def\n"[(1,1), (1,20)]
- Extending backward: "\nabc ABC xyz DEF def\n"[(1,20)]
-Test 2, LTR:
- Extending forward: "\nABC xyz DEF def GHI\n"[(1,1), (1,20)]
- Extending backward: "\nABC xyz DEF def GHI\n"[(1,20)]
-Test 2, RTL:
- Extending forward: "\nABC xyz DEF def GHI\n"[(1,1), (1,20)]
- Extending backward: "\nABC xyz DEF def GHI\n"[(1,20)]
-Test 3, LTR:
- Extending forward: "\nABC DEF ABC\n"[(1,1), (1,12)]
- Extending backward: "\nABC DEF ABC\n"[(1,12)]
-Test 3, RTL:
- Extending forward: "\nABC DEF ABC\n"[(1,1), (1,12)]
- Extending backward: "\nABC DEF ABC\n"[(1,12)]
-Test 4, LTR:
- Extending forward: "\nabc efd dabeb\n"[(1,1), (1,14)]
- Extending backward: "\nabc efd dabeb\n"[(1,14)]
-Test 4, RTL:
- Extending forward: "\nabc efd dabeb\n"[(1,1), (1,14)]
- Extending backward: "\nabc efd dabeb\n"[(1,14)]
-Test 5, LTR:
- Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5)]
-Test 5, RTL:
- Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5)]
-Test 6, LTR:
- Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5)]
-Test 6, RTL:
- Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5)]
-Test 7, LTR:
- Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5)]
-Test 7, RTL:
- Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5)]
-Test 8, LTR:
- Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5)]
-Test 8, RTL:
- Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5)]
-Test 9, LTR:
- Extending forward: "Lorem "[(0,0), (0,5)]
- Extending backward: "Lorem "[(0,5)]
-Test 9, RTL:
- Extending forward: "Lorem "[(0,0), (0,5)]
- Extending backward: "Lorem "[(0,5)]
-Test 10, LTR:
- Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5)]
-Test 10, RTL:
- Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5)]
-Test 11, LTR:
- Extending forward: "Lorem "[(0,0)], "ipsum dolor"[(0,11)]
- Extending backward: "ipsum dolor"[(0,11)]
-Test 11, RTL:
- Extending forward: "Lorem "[(0,0)], "ipsum dolor"[(0,11)]
- Extending backward: "ipsum dolor"[(0,11)]
-Test 12, LTR:
- Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5)]
-Test 12, RTL:
- Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
- Extending backward: " amet"[(0,5)]
-Test 13, LTR:
- Extending forward: "Lorem "[(0,0), (0,5)]
- Extending backward: "Lorem "[(0,5)]
-Test 13, RTL:
- Extending forward: "Lorem "[(0,0), (0,5)]
- Extending backward: "Lorem "[(0,5)]
-Test 14, LTR:
- Extending forward: "\n Just\n "[(2,2)], "\n BFDX\n"[(2,6)]
- Extending backward: "\n BFDX\n"[(2,6)]
-Test 14, RTL:
- Extending forward: "\n Just\n "[(2,2)], "\n BFDX\n"[(2,6)]
- Extending backward: "\n BFDX\n"[(2,6)]
-Test 15, LTR:
- Extending forward: "\n Just\n "[(2,2)], "\n ever\n"[(2,6)]
- Extending backward: "\n ever\n"[(2,6)]
-Test 15, RTL:
- Extending forward: "\n Just\n "[(2,2)], "\n ever\n"[(2,6)]
- Extending backward: "\n ever\n"[(2,6)]
-Test 16, LTR:
- Extending forward: "car means ABC."[(0,0), (0,14)]
- Extending backward: "car means ABC."[(0,14)]
-Test 16, RTL:
- Extending forward: "car means ABC."[(0,0), (0,14)]
- Extending backward: "car means ABC."[(0,14)]
-Test 17, LTR:
- Extending forward: "car DEF ABC."[(0,0), (0,14)]
- Extending backward: "car DEF ABC."[(0,14)]
-Test 17, RTL:
- Extending forward: "car DEF ABC."[(0,0), (0,14)]
- Extending backward: "car DEF ABC."[(0,14)]
-Test 18, LTR:
- Extending forward: "he said "car DEF ABC.""[(0,0), (0,24)]
- Extending backward: "he said "car DEF ABC.""[(0,24)]
-Test 18, RTL:
- Extending forward: "he said "car DEF ABC.""[(0,0), (0,24)]
- Extending backward: "he said "car DEF ABC.""[(0,24)]
-Test 19, LTR:
- Extending forward: "GHI JKL MNO 'he said "car DEF ABC"'?"[(0,0), (0,40)]
- Extending backward: "GHI JKL MNO 'he said "car DEF ABC"'?"[(0,40)]
-Test 19, RTL:
- Extending forward: "GHI JKL MNO 'he said "car DEF ABC"'?"[(0,0), (0,40)]
- Extending backward: "GHI JKL MNO 'he said "car DEF ABC"'?"[(0,40)]
-Test 20, LTR:
- Extending forward: "ABC abc DEF"[(0,0), (0,11)]
- Extending backward: "ABC abc DEF"[(0,11)]
-Test 20, RTL:
- Extending forward: "ABC abc DEF"[(0,0), (0,11)]
- Extending backward: "ABC abc DEF"[(0,11)]
-Test 21, LTR:
- Extending forward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,0), (0,8)]
- Extending backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,8)]
-Test 21, RTL:
- Extending forward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,0), (0,7)]
- Extending backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,7)]
-Test 22, LTR:
- Extending forward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,0), (0,8)]
- Extending backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,8)]
-Test 22, RTL:
- Extending forward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,0), (0,7)]
- Extending backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,7)]
-
diff --git a/LayoutTests/editing/selection/extend-selection-home-end-expected.txt b/LayoutTests/editing/selection/extend-selection-home-end-expected.txt
new file mode 100644
index 0000000..6606c9b
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-selection-home-end-expected.txt
@@ -0,0 +1,137 @@
+
+
+
+Extending by lineBoundary
+Test 1, LTR:
+ Extending forward: "\nabc ABC xyz DEF def\n"[(1,1), (1,20)]
+ Extending backward: "\nabc ABC xyz DEF def\n"[(1,20)]
+Test 1, RTL:
+ Extending forward: "\nabc ABC xyz DEF def\n"[(1,1), (1,20)]
+ Extending backward: "\nabc ABC xyz DEF def\n"[(1,20)]
+Test 2, LTR:
+ Extending forward: "\nABC xyz DEF def GHI\n"[(1,1), (1,20)]
+ Extending backward: "\nABC xyz DEF def GHI\n"[(1,20)]
+Test 2, RTL:
+ Extending forward: "\nABC xyz DEF def GHI\n"[(1,1), (1,20)]
+ Extending backward: "\nABC xyz DEF def GHI\n"[(1,20)]
+Test 3, LTR:
+ Extending forward: "\nABC DEF ABC\n"[(1,1), (1,12)]
+ Extending backward: "\nABC DEF ABC\n"[(1,12)]
+Test 3, RTL:
+ Extending forward: "\nABC DEF ABC\n"[(1,1), (1,12)]
+ Extending backward: "\nABC DEF ABC\n"[(1,12)]
+Test 4, LTR:
+ Extending forward: "\nabc efd dabeb\n"[(1,1), (1,14)]
+ Extending backward: "\nabc efd dabeb\n"[(1,14)]
+Test 4, RTL:
+ Extending forward: "\nabc efd dabeb\n"[(1,1), (1,14)]
+ Extending backward: "\nabc efd dabeb\n"[(1,14)]
+Test 5, LTR:
+ Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5)]
+Test 5, RTL:
+ Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5)]
+Test 6, LTR:
+ Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5)]
+Test 6, RTL:
+ Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5)]
+Test 7, LTR:
+ Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5)]
+Test 7, RTL:
+ Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5)]
+Test 8, LTR:
+ Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5)]
+Test 8, RTL:
+ Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5)]
+Test 9, LTR:
+ Extending forward: "Lorem "[(0,0), (0,5)]
+ Extending backward: "Lorem "[(0,5)]
+Test 9, RTL:
+ Extending forward: "Lorem "[(0,0), (0,5)]
+ Extending backward: "Lorem "[(0,5)]
+Test 10, LTR:
+ Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5)]
+Test 10, RTL:
+ Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5)]
+Test 11, LTR:
+ Extending forward: "Lorem "[(0,0)], "ipsum dolor"[(0,11)]
+ Extending backward: "ipsum dolor"[(0,11)]
+Test 11, RTL:
+ Extending forward: "Lorem "[(0,0)], "ipsum dolor"[(0,11)]
+ Extending backward: "ipsum dolor"[(0,11)]
+Test 12, LTR:
+ Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5)]
+Test 12, RTL:
+ Extending forward: "Lorem "[(0,0)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5)]
+Test 13, LTR:
+ Extending forward: "Lorem "[(0,0), (0,5)]
+ Extending backward: "Lorem "[(0,5)]
+Test 13, RTL:
+ Extending forward: "Lorem "[(0,0), (0,5)]
+ Extending backward: "Lorem "[(0,5)]
+Test 14, LTR:
+ Extending forward: "\n Just\n "[(2,2)], "\n BFDX\n"[(2,6)]
+ Extending backward: "\n BFDX\n"[(2,6)]
+Test 14, RTL:
+ Extending forward: "\n Just\n "[(2,2)], "\n BFDX\n"[(2,6)]
+ Extending backward: "\n BFDX\n"[(2,6)]
+Test 15, LTR:
+ Extending forward: "\n Just\n "[(2,2)], "\n ever\n"[(2,6)]
+ Extending backward: "\n ever\n"[(2,6)]
+Test 15, RTL:
+ Extending forward: "\n Just\n "[(2,2)], "\n ever\n"[(2,6)]
+ Extending backward: "\n ever\n"[(2,6)]
+Test 16, LTR:
+ Extending forward: "car means ABC."[(0,0), (0,14)]
+ Extending backward: "car means ABC."[(0,14)]
+Test 16, RTL:
+ Extending forward: "car means ABC."[(0,0), (0,14)]
+ Extending backward: "car means ABC."[(0,14)]
+Test 17, LTR:
+ Extending forward: "car DEF ABC."[(0,0), (0,14)]
+ Extending backward: "car DEF ABC."[(0,14)]
+Test 17, RTL:
+ Extending forward: "car DEF ABC."[(0,0), (0,14)]
+ Extending backward: "car DEF ABC."[(0,14)]
+Test 18, LTR:
+ Extending forward: "he said "car DEF ABC.""[(0,0), (0,24)]
+ Extending backward: "he said "car DEF ABC.""[(0,24)]
+Test 18, RTL:
+ Extending forward: "he said "car DEF ABC.""[(0,0), (0,24)]
+ Extending backward: "he said "car DEF ABC.""[(0,24)]
+Test 19, LTR:
+ Extending forward: "GHI JKL MNO 'he said "car DEF ABC"'?"[(0,0), (0,40)]
+ Extending backward: "GHI JKL MNO 'he said "car DEF ABC"'?"[(0,40)]
+Test 19, RTL:
+ Extending forward: "GHI JKL MNO 'he said "car DEF ABC"'?"[(0,0), (0,40)]
+ Extending backward: "GHI JKL MNO 'he said "car DEF ABC"'?"[(0,40)]
+Test 20, LTR:
+ Extending forward: "ABC abc DEF"[(0,0), (0,11)]
+ Extending backward: "ABC abc DEF"[(0,11)]
+Test 20, RTL:
+ Extending forward: "ABC abc DEF"[(0,0), (0,11)]
+ Extending backward: "ABC abc DEF"[(0,11)]
+Test 21, LTR:
+ Extending forward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,0), (0,8)]
+ Extending backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,8)]
+Test 21, RTL:
+ Extending forward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,0), (0,7)]
+ Extending backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,7)]
+Test 22, LTR:
+ Extending forward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,0), (0,8)]
+ Extending backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,8)]
+Test 22, RTL:
+ Extending forward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,0), (0,7)]
+ Extending backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[(0,7)]
+
diff --git a/LayoutTests/editing/selection/extend-selection-home-end.html b/LayoutTests/editing/selection/extend-selection-home-end.html
new file mode 100644
index 0000000..76d247a
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-selection-home-end.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="resources/extend-selection.css" />
+<script src="resources/extend-selection.js"></script>
+</head>
+<body>
+<pre id="console"></pre>
+<script>
+
+function testExtendingLineBoundary(tests, sel)
+{
+ for (var i = 0; i < tests.length; ++i) {
+ tests[i].style.direction = "ltr";
+ log("Test " + (i + 1) + ", LTR:\n Extending forward: ");
+ sel.setPosition(tests[i], 0);
+ var ltrRightPos = extendingSelection(sel, "forward", "lineBoundary", 0);
+
+ log(" Extending backward: ");
+ var ltrLeftPos = extendingSelection(sel, "backward", "lineBoundary", 0);
+
+ tests[i].style.direction = "rtl";
+ log("Test " + (i + 1) + ", RTL:\n Extending forward: ");
+ sel.setPosition(tests[i], 0);
+ var ltrRightPos = extendingSelection(sel, "forward", "lineBoundary", 0);
+
+ log(" Extending backward: ");
+ var ltrLeftPos = extendingSelection(sel, "backward", "lineBoundary", 0);
+ }
+}
+
+if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+
+ tests = createTestNodes(); // all
+ var sel = getSelection();
+ log("\n\n\nExtending by lineBoundary\n");
+ testExtendingLineBoundary(tests, sel);
+}
+
+</script>
+</body>
diff --git a/LayoutTests/editing/selection/extend-selection-word-expected.txt b/LayoutTests/editing/selection/extend-selection-word-expected.txt
new file mode 100644
index 0000000..fc80fba
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-selection-word-expected.txt
@@ -0,0 +1,175 @@
+
+
+
+
+
+Extending by word
+Test 1, LTR:
+ Extending right: "\nabc ABC xyz DEF def\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
+ Extending left: "\nabc ABC xyz DEF def\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
+ Extending forward: "\nabc ABC xyz DEF def\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
+ Extending backward: "\nabc ABC xyz DEF def\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
+Test 1, RTL:
+ Extending left: "\nabc ABC xyz DEF def\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
+ Extending right: "\nabc ABC xyz DEF def\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
+ Extending forward: "\nabc ABC xyz DEF def\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
+ Extending backward: "\nabc ABC xyz DEF def\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 2, LTR:
+ Extending right: "\nABC xyz DEF def GHI\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
+ Extending left: "\nABC xyz DEF def GHI\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
+ Extending forward: "\nABC xyz DEF def GHI\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
+ Extending backward: "\nABC xyz DEF def GHI\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
+Test 2, RTL:
+ Extending left: "\nABC xyz DEF def GHI\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
+ Extending right: "\nABC xyz DEF def GHI\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
+ Extending forward: "\nABC xyz DEF def GHI\n"[(1,1), (1,4), (1,8), (1,12), (1,16), (1,20)]
+ Extending backward: "\nABC xyz DEF def GHI\n"[(1,20), (1,17), (1,13), (1,9), (1,5), (1,1)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 3, LTR:
+ Extending right: "\nABC DEF ABC\n"[(1,1), (1,4), (1,8), (1,12)]
+ Extending left: "\nABC DEF ABC\n"[(1,12), (1,9), (1,5), (1,1)]
+ Extending forward: "\nABC DEF ABC\n"[(1,1), (1,4), (1,8), (1,12)]
+ Extending backward: "\nABC DEF ABC\n"[(1,12), (1,9), (1,5), (1,1)]
+Test 3, RTL:
+ Extending left: "\nABC DEF ABC\n"[(1,1), (1,4), (1,8), (1,12)]
+ Extending right: "\nABC DEF ABC\n"[(1,12), (1,9), (1,5), (1,1)]
+ Extending forward: "\nABC DEF ABC\n"[(1,1), (1,4), (1,8), (1,12)]
+ Extending backward: "\nABC DEF ABC\n"[(1,12), (1,9), (1,5), (1,1)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 4, LTR:
+ Extending right: "\nabc efd dabeb\n"[(1,1), (1,4), (1,8), (1,14)]
+ Extending left: "\nabc efd dabeb\n"[(1,14), (1,9), (1,5), (1,1)]
+ Extending forward: "\nabc efd dabeb\n"[(1,1), (1,4), (1,8), (1,14)]
+ Extending backward: "\nabc efd dabeb\n"[(1,14), (1,9), (1,5), (1,1)]
+Test 4, RTL:
+ Extending left: "\nabc efd dabeb\n"[(1,1), (1,4), (1,8), (1,14)]
+ Extending right: "\nabc efd dabeb\n"[(1,14), (1,9), (1,5), (1,1)]
+ Extending forward: "\nabc efd dabeb\n"[(1,1), (1,4), (1,8), (1,14)]
+ Extending backward: "\nabc efd dabeb\n"[(1,14), (1,9), (1,5), (1,1)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 5, LTR:
+ Extending right: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending left: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+Test 5, RTL:
+ Extending left: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending right: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 6, LTR:
+ Extending right: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending left: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+Test 6, RTL:
+ Extending left: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending right: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 7, LTR:
+ Extending right: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending left: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+Test 7, RTL:
+ Extending left: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending right: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+Test 8, LTR:
+ Extending right: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending left: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+Test 8, RTL:
+ Extending left: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending right: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+ Extending forward: "Lorem "[(0,0), (0,5)], "ipsum dolor sit"[(0,5), (0,11), (0,15)], " amet"[(0,5)]
+ Extending backward: " amet"[(0,5), (0,1)], "ipsum dolor sit"[(0,12), (0,6)], "Lorem "[(0,6), (0,0)]
+
+
+ validating ltrRight and ltrLeft
+ validating ltrRight and ltrForward
+ validating ltrForward and rtlForward
+ validating ltrLeft and ltrBackward
+ validating ltrBackward and rtlBackward
+ validating ltrRight and rtlLeft
+ validating ltrLeft and rtlRight
+
+
+
diff --git a/LayoutTests/editing/selection/extend-selection-word.html b/LayoutTests/editing/selection/extend-selection-word.html
new file mode 100644
index 0000000..95546e0
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-selection-word.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="resources/extend-selection.css" />
+<script src="resources/extend-selection.js"></script>
+</head>
+<body>
+<pre id="console"></pre>
+<script>
+
+if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+
+ var tests = createTestNodes('char-and-word');
+ var sel = getSelection();
+
+ log("\n\n\n\n\nExtending by word\n");
+ testExtendingSelection(tests, sel, "word", 0);
+}
+
+</script>
+</body>
diff --git a/LayoutTests/editing/selection/extend-selection.html b/LayoutTests/editing/selection/extend-selection.html
deleted file mode 100644
index 7018d6d..0000000
--- a/LayoutTests/editing/selection/extend-selection.html
+++ /dev/null
@@ -1,353 +0,0 @@
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <style>
- div.test {
- -webkit-user-modify: read-write;
- padding: 4px;
- border: 1px dashed lightblue;
- margin: 4px 4px 4px 24px;
- outline: none;
- font-family: Lucida Grande;
- counter-increment: test-number;
- }
- div.test:before { content: counter(test-number); position: absolute; left: 8px; font-size: x-small; text-align: right; width: 20px; }
- div.test span { background-color: #def; }
- div.test img { width: 1em; height: 1em; background-color: lightgreen; }
- div.test img + img { background-color: lightblue; }
- div.test div { border: 1px dashed pink; padding: 3px; height: 2em; }
- </style>
- <script>
- function log(message)
- {
- document.getElementById("console").appendChild(document.createTextNode(message));
- }
-
- function positionsExtendingInDirectionForEnclosingBlock(sel, direction, granularity)
- {
- var positions = [];
- var ltrNum;
- var rtlNum;
- if (granularity == "character") {
- ltrNum = 5;
- } else {
- ltrNum = 1;
- }
- if (granularity == "character") {
- rtlNum = 15;
- } else {
- rtlNum = 3;
- }
- var index = 0;
- while (index <= ltrNum) {
- positions.push({ node: sel.extentNode, begin: sel.baseOffset, end: sel.extentOffset });
- sel.modify("extend", direction, granularity);
- ++index;
- }
- var antiDirection = direction;
- if (antiDirection == 'left') {
- antiDirection = "right";
- } else if (antiDirection = 'right') {
- antiDirection = "left";
- }
-
- index = 0;
- while (index <= rtlNum) {
- positions.push({ node: sel.extentNode, begin: sel.baseOffset, end: sel.extentOffset });
- sel.modify("extend", antiDirection, granularity);
- ++index;
- }
- var index = 0;
- while (index < ltrNum) {
- positions.push({ node: sel.extentNode, begin: sel.baseOffset, end: sel.extentOffset });
- sel.modify("extend", direction, granularity);
- ++index;
- }
- return positions;
- }
-
-
- function positionsExtendingInDirection(sel, direction, granularity)
- {
- var positions = [];
-
- while (true) {
- positions.push({ node: sel.extentNode, begin: sel.baseOffset, end: sel.extentOffset });
- sel.modify("extend", direction, granularity);
- if (positions[positions.length - 1].node == sel.extentNode && positions[positions.length - 1].end == sel.extentOffset)
- break;
- };
- return positions;
- }
-
- function fold(string)
- {
- var result = "";
- for (var i = 0; i < string.length; ++i) {
- var char = string.charCodeAt(i);
- if (char >= 0x05d0)
- char -= 0x058f;
- else if (char == 10) {
- result += "\\n";
- continue;
- }
- result += String.fromCharCode(char);
- }
- return result;
- }
-
- function logPositions(positions)
- {
- for (var i = 0; i < positions.length; ++i) {
- if (i) {
- if (positions[i].node != positions[i - 1].node)
- log("]");
- log(", ");
- }
- if (!i || positions[i].node != positions[i - 1].node)
- log((positions[i].node instanceof Text ? '"' + fold(positions[i].node.data) + '"' : "<" + positions[i].node.tagName + ">") + "[");
- log("(" + positions[i].begin + "," + positions[i].end + ")");
- }
- log("]");
- }
-
- function checkReverseOrder(inputPositions, inputReversePositions)
- {
- var positions = inputPositions.slice();
- var reversePositions = inputReversePositions.slice();
- var mismatch = (positions.length != reversePositions.length);
- if (mismatch)
- log("WARNING: positions should be the same, but the length are not the same " + positions.length + " vs. " + reversePositions.length + "\n");
- while (!mismatch) {
- var pos = positions.pop();
- if (!pos)
- break;
- var reversePos = reversePositions.shift();
- if (pos.node != reversePos.node) {
- mismatch = true;
- log("WARNING: positions should be the reverse, but node are not the reverse\n");
- }
- if (pos.begin != reversePos.begin) {
- mismatch = true;
- log("WARNING: positions should be the same, but begin are not " + pos.begin + " vs. " + reversePos.begin + "\n");
- }
- if (pos.end != reversePos.end) {
- mismatch = true;
- log("WARNING: positions should be the same, but end are not " + pos.end + " vs. " + reversePos.end + "\n");
- }
- }
- }
-
-
- function checkSameOrder(inputPositions, inputSamePositions)
- {
- var positions = inputPositions.slice();
- var samePositions = inputSamePositions.slice();
- var mismatch = positions.length != samePositions.length;
- if (mismatch)
- log("WARNING: positions should be the same, but the length are not the same " + positions.length + " vs. " + samePositions.length + "\n");
- while (!mismatch) {
- var pos = positions.pop();
- if (!pos)
- break;
- var samePos = samePositions.pop();
- if (pos.node != samePos.node) {
- mismatch = true;
- log("WARNING: positions should be the same, but node are not the same\n");
- }
- if (pos.begin != samePos.begin) {
- mismatch = true;
- log("WARNING: positions should be the same, but begin are not the same " + pos.begin + " vs. " + samePos.begin + "\n");
- }
- if (pos.end != samePos.end) {
- mismatch = true;
- log("WARNING: positions should be the same, but end are not the same " + pos.end + " vs. " + samePos.end + "\n");
- }
- }
- }
-
-
- function extendingSelection(sel, direction, granularity, option)
- {
- var positions;
- if (option == 0) {
- positions = positionsExtendingInDirection(sel, direction, granularity);
- } else {
- positions = positionsExtendingInDirectionForEnclosingBlock(sel, direction, granularity);
- }
- logPositions(positions);
- log("\n");
- return positions;
- }
-
- function testExtendingSelection(tests, sel, granularity)
- {
- for (var i = 0; i < tests.length; ++i) {
- tests[i].style.direction = "ltr";
- log("Test " + (i + 1) + ", LTR:\n Extending right: ");
- sel.setPosition(tests[i], 0);
- var ltrRightPos = extendingSelection(sel, "right", granularity, 0);
-
- log(" Extending left: ");
- var ltrLeftPos = extendingSelection(sel, "left", granularity, 0);
-
- log(" Extending forward: ");
- sel.setPosition(tests[i], 0);
- var ltrForwardPos = extendingSelection(sel, "forward", granularity, 0);
-
- log(" Extending backward: ");
- var ltrBackwardPos = extendingSelection(sel, "backward", granularity, 0);
-
- tests[i].style.direction = "rtl";
-
- log("Test " + (i + 1) + ", RTL:\n Extending left: ");
- sel.setPosition(tests[i], 0);
- var rtlLeftPos = extendingSelection(sel, "left", granularity, 0);
-
- log(" Extending right: ");
- var rtlRightPos = extendingSelection(sel, "right", granularity, 0);
-
- log(" Extending forward: ");
- sel.setPosition(tests[i], 0);
- var rtlForwardPos = extendingSelection(sel, "forward", granularity, 0);
-
- log(" Extending backward: ");
- var rtlBackwardPos = extendingSelection(sel, "backward", granularity, 0);
-
- // validations
- log("\n\n validating ltrRight and ltrLeft\n");
- if (granularity == "character")
- checkReverseOrder(ltrRightPos, ltrLeftPos);
- // Order might not be reversed for extending by word because the 1-point shift by space.
-
- log(" validating ltrRight and ltrForward\n");
- checkSameOrder(ltrRightPos, ltrForwardPos);
- log(" validating ltrForward and rtlForward\n");
- checkSameOrder(ltrForwardPos, rtlForwardPos);
- log(" validating ltrLeft and ltrBackward\n");
- checkSameOrder(ltrLeftPos, ltrBackwardPos);
- log(" validating ltrBackward and rtlBackward\n");
- checkSameOrder(ltrBackwardPos, rtlBackwardPos);
- log(" validating ltrRight and rtlLeft\n");
- checkSameOrder(ltrRightPos, rtlLeftPos);
- log(" validating ltrLeft and rtlRight\n");
- checkSameOrder(ltrLeftPos, rtlRightPos);
- log("\n\n");
- }
- }
-
- function testExtendingSelectionForEnclosingBlock(tests, sel, granularity)
- {
- for (var i = 0; i < tests.length; ++i) {
- log("Test " + (i + 1) + ", LTR:\n Extending right: ");
- sel.setPosition(tests[i], 0);
- var ltrRightPos = extendingSelection(sel, "right", granularity, 1);
-
- log(" Extending left: ");
- var ltrLeftPos = extendingSelection(sel, "left", granularity, 1);
- }
- }
-
- function testExtendingLineBoundary(tests, sel)
- {
- for (var i = 0; i < tests.length; ++i) {
- tests[i].style.direction = "ltr";
- log("Test " + (i + 1) + ", LTR:\n Extending forward: ");
- sel.setPosition(tests[i], 0);
- var ltrRightPos = extendingSelection(sel, "forward", "lineBoundary", 0);
-
- log(" Extending backward: ");
- var ltrLeftPos = extendingSelection(sel, "backward", "lineBoundary", 0);
-
- tests[i].style.direction = "rtl";
- log("Test " + (i + 1) + ", RTL:\n Extending forward: ");
- sel.setPosition(tests[i], 0);
- var ltrRightPos = extendingSelection(sel, "forward", "lineBoundary", 0);
-
- log(" Extending backward: ");
- var ltrLeftPos = extendingSelection(sel, "backward", "lineBoundary", 0);
- }
- }
-
- onload = function()
- {
- if (!window.layoutTestController)
- return;
-
- layoutTestController.dumpAsText();
-
- var tests = document.getElementsByClassName("test");
- var sel = getSelection();
-
- log("\n\n\nExtending by character\n");
- testExtendingSelection(tests, sel, "character", 0);
- log("\n\n\n\n\nExtending by word\n");
- testExtendingSelection(tests, sel, "word", 0);
-
- tests = document.getElementsByClassName("testEnclosingBlock");
- sel = getSelection();
-
- log("\n\n\nExtending by character\n");
- testExtendingSelectionForEnclosingBlock(tests, sel, "character", 1);
- log("\n\n\n\n\nExtending by word\n");
- testExtendingSelectionForEnclosingBlock(tests, sel, "word", 1);
-
- tests = document.getElementsByClassName("home-end-test");
- var sel = getSelection();
- log("\n\n\nExtending by lineBoundary\n");
- testExtendingLineBoundary(tests, sel);
- }
-
- </script>
-</head>
-<body>
-<div contenteditable class="test home-end-test">
-abc אבג xyz דהו def
-</div>
-<div contenteditable class="test home-end-test">
-אבג xyz דהו def זחט
-</div>
-<div contenteditable class="test home-end-test">
-אבג דהו אבג
-</div>
-<div contenteditable class="test home-end-test">
-abc efd dabeb
-</div>
-
-
-<div contenteditable class="test home-end-test">Lorem <span style="direction: rtl">ipsum dolor sit</span> amet</div>
-<div contenteditable class="test home-end-test">Lorem <span dir="rtl">ipsum dolor sit</span> amet</div>
-<div contenteditable class="test home-end-test">Lorem <span style="direction: ltr">ipsum dolor sit</span> amet</div>
-<div contenteditable class="test home-end-test">Lorem <span dir="ltr">ipsum dolor sit</span> amet</div>
-
-<div contenteditable class="testEnclosingBlock home-end-test">Lorem <div dir="rtl">ipsum dolor sit</div> amett</div>
-
-<div contenteditable class="home-end-test">Lorem <span style="direction: ltr">ipsum dolor sit</span> amet</div>
-<div contenteditable class="home-end-test">Lorem <span style="direction: ltr">ipsum dolor<div > just a test</div> sit</span> amet</div>
-<div contenteditable class="home-end-test">Lorem <span dir="ltr">ipsum dolor sit</span> amet</div>
-<div contenteditable class="home-end-test">Lorem <div dir="ltr">ipsum dolor sit</div> amet</div>
-
-<div class="home-end-test" contenteditable>
- Just
- <span>testing רק</span>
- בודק
-</div>
-
-<div class="home-end-test" contenteditable>
- Just
- <span>testing what</span>
- ever
-</div>
-
-
-<div class="home-end-test" contenteditable>car means אבג.</div>
-<div class="home-end-test" contenteditable>‫car דהו אבג.‬</div>
-<div class="home-end-test" contenteditable>he said "‫car דהו אבג‬."</div>
-<div class="home-end-test" contenteditable>זחט יךכ לםמ '‪he said "‫car דהו אבג‬"‬'?</div>
-
-
-<div class="home-end-test" contenteditable>אבג abc דהו<br />edf זחט abrebg</div>
-<div class="home-end-test" contenteditable style="line-break:before-white-space; width:100px">abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg </div>
-<div class="home-end-test" contenteditable style="line-break:after-white-space; width:100px">abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg </div>
-
-<pre id="console"></pre>
-</body>
diff --git a/LayoutTests/editing/selection/resources/extend-selection.css b/LayoutTests/editing/selection/resources/extend-selection.css
new file mode 100644
index 0000000..89090cb
--- /dev/null
+++ b/LayoutTests/editing/selection/resources/extend-selection.css
@@ -0,0 +1,14 @@
+div.test {
+ -webkit-user-modify: read-write;
+ padding: 4px;
+ border: 1px dashed lightblue;
+ margin: 4px 4px 4px 24px;
+ outline: none;
+ font-family: Lucida Grande;
+ counter-increment: test-number;
+}
+div.test:before { content: counter(test-number); position: absolute; left: 8px; font-size: x-small; text-align: right; width: 20px; }
+div.test span { background-color: #def; }
+div.test img { width: 1em; height: 1em; background-color: lightgreen; }
+div.test img + img { background-color: lightblue; }
+div.test div { border: 1px dashed pink; padding: 3px; height: 2em; }
diff --git a/LayoutTests/editing/selection/resources/extend-selection.js b/LayoutTests/editing/selection/resources/extend-selection.js
new file mode 100644
index 0000000..de43f85
--- /dev/null
+++ b/LayoutTests/editing/selection/resources/extend-selection.js
@@ -0,0 +1,267 @@
+function log(message)
+{
+ document.getElementById("console").appendChild(document.createTextNode(message));
+}
+
+function positionsExtendingInDirectionForEnclosingBlock(sel, direction, granularity)
+{
+ var positions = [];
+ var ltrNum;
+ var rtlNum;
+ if (granularity == "character") {
+ ltrNum = 5;
+ } else {
+ ltrNum = 1;
+ }
+ if (granularity == "character") {
+ rtlNum = 15;
+ } else {
+ rtlNum = 3;
+ }
+ var index = 0;
+ while (index <= ltrNum) {
+ positions.push({ node: sel.extentNode, begin: sel.baseOffset, end: sel.extentOffset });
+ sel.modify("extend", direction, granularity);
+ ++index;
+ }
+ var antiDirection = direction;
+ if (antiDirection == 'left') {
+ antiDirection = "right";
+ } else if (antiDirection = 'right') {
+ antiDirection = "left";
+ }
+
+ index = 0;
+ while (index <= rtlNum) {
+ positions.push({ node: sel.extentNode, begin: sel.baseOffset, end: sel.extentOffset });
+ sel.modify("extend", antiDirection, granularity);
+ ++index;
+ }
+ var index = 0;
+ while (index < ltrNum) {
+ positions.push({ node: sel.extentNode, begin: sel.baseOffset, end: sel.extentOffset });
+ sel.modify("extend", direction, granularity);
+ ++index;
+ }
+ return positions;
+}
+
+
+function positionsExtendingInDirection(sel, direction, granularity)
+{
+ var positions = [];
+
+ while (true) {
+ positions.push({ node: sel.extentNode, begin: sel.baseOffset, end: sel.extentOffset });
+ sel.modify("extend", direction, granularity);
+ if (positions[positions.length - 1].node == sel.extentNode && positions[positions.length - 1].end == sel.extentOffset)
+ break;
+ };
+ return positions;
+}
+
+function fold(string)
+{
+ var result = "";
+ for (var i = 0; i < string.length; ++i) {
+ var char = string.charCodeAt(i);
+ if (char >= 0x05d0)
+ char -= 0x058f;
+ else if (char == 10) {
+ result += "\\n";
+ continue;
+ }
+ result += String.fromCharCode(char);
+ }
+ return result;
+}
+
+function logPositions(positions)
+{
+ for (var i = 0; i < positions.length; ++i) {
+ if (i) {
+ if (positions[i].node != positions[i - 1].node)
+ log("]");
+ log(", ");
+ }
+ if (!i || positions[i].node != positions[i - 1].node)
+ log((positions[i].node instanceof Text ? '"' + fold(positions[i].node.data) + '"' : "<" + positions[i].node.tagName + ">") + "[");
+ log("(" + positions[i].begin + "," + positions[i].end + ")");
+ }
+ log("]");
+}
+
+function checkReverseOrder(inputPositions, inputReversePositions)
+{
+ var positions = inputPositions.slice();
+ var reversePositions = inputReversePositions.slice();
+ var mismatch = (positions.length != reversePositions.length);
+ if (mismatch)
+ log("WARNING: positions should be the same, but the length are not the same " + positions.length + " vs. " + reversePositions.length + "\n");
+ while (!mismatch) {
+ var pos = positions.pop();
+ if (!pos)
+ break;
+ var reversePos = reversePositions.shift();
+ if (pos.node != reversePos.node) {
+ mismatch = true;
+ log("WARNING: positions should be the reverse, but node are not the reverse\n");
+ }
+ if (pos.begin != reversePos.begin) {
+ mismatch = true;
+ log("WARNING: positions should be the same, but begin are not " + pos.begin + " vs. " + reversePos.begin + "\n");
+ }
+ if (pos.end != reversePos.end) {
+ mismatch = true;
+ log("WARNING: positions should be the same, but end are not " + pos.end + " vs. " + reversePos.end + "\n");
+ }
+ }
+}
+
+
+function checkSameOrder(inputPositions, inputSamePositions)
+{
+ var positions = inputPositions.slice();
+ var samePositions = inputSamePositions.slice();
+ var mismatch = positions.length != samePositions.length;
+ if (mismatch)
+ log("WARNING: positions should be the same, but the length are not the same " + positions.length + " vs. " + samePositions.length + "\n");
+ while (!mismatch) {
+ var pos = positions.pop();
+ if (!pos)
+ break;
+ var samePos = samePositions.pop();
+ if (pos.node != samePos.node) {
+ mismatch = true;
+ log("WARNING: positions should be the same, but node are not the same\n");
+ }
+ if (pos.begin != samePos.begin) {
+ mismatch = true;
+ log("WARNING: positions should be the same, but begin are not the same " + pos.begin + " vs. " + samePos.begin + "\n");
+ }
+ if (pos.end != samePos.end) {
+ mismatch = true;
+ log("WARNING: positions should be the same, but end are not the same " + pos.end + " vs. " + samePos.end + "\n");
+ }
+ }
+}
+
+
+function extendingSelection(sel, direction, granularity, option)
+{
+ var positions;
+ if (option == 0) {
+ positions = positionsExtendingInDirection(sel, direction, granularity);
+ } else {
+ positions = positionsExtendingInDirectionForEnclosingBlock(sel, direction, granularity);
+ }
+ logPositions(positions);
+ log("\n");
+ return positions;
+}
+
+function testExtendingSelection(tests, sel, granularity)
+{
+ for (var i = 0; i < tests.length; ++i) {
+ tests[i].style.direction = "ltr";
+ log("Test " + (i + 1) + ", LTR:\n Extending right: ");
+ sel.setPosition(tests[i], 0);
+ var ltrRightPos = extendingSelection(sel, "right", granularity, 0);
+
+ log(" Extending left: ");
+ var ltrLeftPos = extendingSelection(sel, "left", granularity, 0);
+
+ log(" Extending forward: ");
+ sel.setPosition(tests[i], 0);
+ var ltrForwardPos = extendingSelection(sel, "forward", granularity, 0);
+
+ log(" Extending backward: ");
+ var ltrBackwardPos = extendingSelection(sel, "backward", granularity, 0);
+
+ tests[i].style.direction = "rtl";
+
+ log("Test " + (i + 1) + ", RTL:\n Extending left: ");
+ sel.setPosition(tests[i], 0);
+ var rtlLeftPos = extendingSelection(sel, "left", granularity, 0);
+
+ log(" Extending right: ");
+ var rtlRightPos = extendingSelection(sel, "right", granularity, 0);
+
+ log(" Extending forward: ");
+ sel.setPosition(tests[i], 0);
+ var rtlForwardPos = extendingSelection(sel, "forward", granularity, 0);
+
+ log(" Extending backward: ");
+ var rtlBackwardPos = extendingSelection(sel, "backward", granularity, 0);
+
+ // validations
+ log("\n\n validating ltrRight and ltrLeft\n");
+ if (granularity == "character")
+ checkReverseOrder(ltrRightPos, ltrLeftPos);
+ // Order might not be reversed for extending by word because the 1-point shift by space.
+
+ log(" validating ltrRight and ltrForward\n");
+ checkSameOrder(ltrRightPos, ltrForwardPos);
+ log(" validating ltrForward and rtlForward\n");
+ checkSameOrder(ltrForwardPos, rtlForwardPos);
+ log(" validating ltrLeft and ltrBackward\n");
+ checkSameOrder(ltrLeftPos, ltrBackwardPos);
+ log(" validating ltrBackward and rtlBackward\n");
+ checkSameOrder(ltrBackwardPos, rtlBackwardPos);
+ log(" validating ltrRight and rtlLeft\n");
+ checkSameOrder(ltrRightPos, rtlLeftPos);
+ log(" validating ltrLeft and rtlRight\n");
+ checkSameOrder(ltrLeftPos, rtlRightPos);
+ log("\n\n");
+ }
+}
+
+var data = [
+['char-and-word', null, '\nabc אבג xyz דהו def\n'],
+['char-and-word', null, '\nאבג xyz דהו def זחט\n'],
+['char-and-word', null, '\nאבג דהו אבג\n'],
+['char-and-word', null, '\nabc efd dabeb\n'],
+['char-and-word', null, 'Lorem <span style="direction: rtl">ipsum dolor sit</span> amet'],
+['char-and-word', null, 'Lorem <span dir="rtl">ipsum dolor sit</span> amet'],
+['char-and-word', null, 'Lorem <span style="direction: ltr">ipsum dolor sit</span> amet'],
+['char-and-word', null, 'Lorem <span dir="ltr">ipsum dolor sit</span> amet'],
+['enclosing-block', null, 'Lorem <div dir="rtl">ipsum dolor sit</div> amett'],
+['home-end', null, 'Lorem <span style="direction: ltr">ipsum dolor sit</span> amet'],
+['home-end', null, 'Lorem <span style="direction: ltr">ipsum dolor<div > just a test</div> sit</span> amet'],
+['home-end', null, 'Lorem <span dir="ltr">ipsum dolor sit</span> amet'],
+['home-end', null, 'Lorem <div dir="ltr">ipsum dolor sit</div> amet'],
+['home-end', null, '\n Just\n <span>testing רק</span>\n בודק\n'],
+['home-end', null, '\n Just\n <span>testing what</span>\n ever\n'],
+['home-end', null, 'car means אבג.'],
+['home-end', null, '‫car דהו אבג.‬'],
+['home-end', null, 'he said "‫car דהו אבג‬."'],
+['home-end', null, 'זחט יךכ לםמ \'‪he said "‫car דהו אבג‬"‬\'?'],
+['home-end', null, 'אבג abc דהו<br />edf זחט abrebg'],
+['home-end', 'line-break:before-white-space; width:100px', 'abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg '],
+['home-end', 'line-break:after-white-space; width:100px', 'abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg ']
+];
+
+function createTestNodes(name) {
+ var nodes = [];
+ for (var i = 0; i < data.length; i++) {
+ if (name && data[i][0] != name)
+ continue;
+ var style = data[i][1];
+ var text = data[i][2];
+ var div = document.createElement('div');
+ div.contentEditable = true;
+ if (style)
+ div.setAttribute('style', style);
+ div.innerHTML = text;
+ document.body.insertBefore(div, document.getElementById('console'));
+ nodes.push(div);
+ }
+
+ window.onload = function() {
+ for (var i = 0; i < nodes.length; i++)
+ nodes[i].parentNode.removeChild(nodes[i]);
+ }
+
+ return nodes;
+}
+
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list