<!DOCTYPE html>
<!-- Inspired by https://github.com/othree/jquery.rtl-scroll-type which is used
in various JS frameworks to determine what scroll "type" the engine has
when it comes to RTL. When at the initial scroll position (i.e. all the way
to the right), some engines sets scrollLeft to 0 and decrement to negative
values when scrolling leftwards (Gecko). Others set it to 0 and increment
the value when scrolling leftwards (IE / Edge). Others again set it to the
width of the scrollable area and decrement it when scrolling leftwards.
WebKit / Blink used to be the third case, now they are consistent with Gecko.
There are further complications in the latter engine if
there's a vertical scrollbar [1], and it's wider than the border box. All
we need to worry about here though, is that the script is able to detect
that we are "negative".
[1] crbug.com/724255 -->
<div id="definer" dir="rtl" style="font-size: 14px; width: 1px; height: 1px; position: absolute; top: -1000px; overflow: scroll">A</div>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
test(function() {
var definer = document.getElementById('definer');
var type = 'reverse';
if (definer.scrollLeft > 0) {
type = 'default';
}
else {
definer.scrollLeft = 1;
if (definer.scrollLeft === 0) {
type = 'negative';
}
}
assert_equals(type, 'negative');
}, "Blink should have 'negative' RTL scroll behavior");
</script>