Index: LayoutTests/editing/selection/resources/js-test-selection-shared.js |
diff --git a/LayoutTests/editing/selection/resources/js-test-selection-shared.js b/LayoutTests/editing/selection/resources/js-test-selection-shared.js |
index ed7cbb3ada35e3de45c32662579fee586b9c6b4a..1268bfc99a8276b9401072a2c27a87e03e5ff212 100644 |
--- a/LayoutTests/editing/selection/resources/js-test-selection-shared.js |
+++ b/LayoutTests/editing/selection/resources/js-test-selection-shared.js |
@@ -1,3 +1,58 @@ |
+function $(id) { return document.getElementById(id); } |
+ |
+var selection= window.getSelection(); |
+ |
+function testCaretMotion(param) { |
+ var direction = param.direction; |
+ var granularity = param.granularity; |
+ var repeatCount = param.repeatCount || 1; |
+ var origin = param.origin; |
+ var originOffset = param.originOffset || 0; |
+ var target = param.target; |
+ var targetOffset = param.targetOffset || 0; |
+ |
+ if (direction == 'both') { |
+ testCaretMotion({ |
+ 'direction': 'forward', |
+ 'granularity': granularity, |
+ 'repeatCount': repeatCount, |
+ 'origin': origin, |
+ 'originOffset': originOffset, |
+ 'target': target, |
+ 'targetOffset': targetOffset |
+ }); |
+ testCaretMotion({ |
+ 'direction': 'backward', |
+ 'granularity': granularity, |
+ 'repeatCount': repeatCount, |
+ 'origin': target, |
+ 'originOffset': targetOffset, |
+ 'target': origin, |
+ 'targetOffset': originOffset |
+ }); |
+ return; |
+ } |
+ |
+ if (typeof origin == 'string') |
+ origin = $(origin); |
+ |
+ if (typeof target == 'string') |
+ target = $(target); |
+ |
+ if (originOffset < 0) |
+ originOffset = origin.firstChild.length + originOffset + 1; |
+ |
+ if (targetOffset < 0) |
+ targetOffset = target.firstChild.length + targetOffset + 1; |
+ |
+ selection.setPosition(origin.firstChild, originOffset); |
+ debug('Move ' + direction + ' ' + granularity + ' x ' + repeatCount); |
+ for (var i = 0; i < repeatCount; ++i) |
+ selection.modify("move", direction, granularity); |
+ shouldEvaluateTo('selection.anchorNode', target.firstChild); |
+ shouldEvaluateTo('selection.anchorOffset', targetOffset); |
+} |
+ |
function objectAsString(object, properties) { |
var result = "["; |
for (var x = 0; x < properties.length; x++) { |