Go to file
thiemowmde 346846f16c Work around rounding errors in RTL scroll type detection
This is closely related to Ied0b974 which fixed a similar, if not
the same rounding issue.

Note the following might be different depending on e.g. the
operating system. My Ubuntu+Chromium shows the following behavior:
* The RTL scroll type is correctly detected as "negative" with all
  zoom factors below and up to 100%.
* When the zoom factor is 110%, 125%, or 150% the scrollLeft value
  is not 0 but something like 0.909090876 or 0.200000002.
* It's 0 again at 175% and 200%.
* Bad at 250%. Good at 300%. Bad at 400%. And so on. No rhyme or
  reason.

The current Firefox version also ends in the "negative" branch, but
doesn't have the same rounding errors. It's always a perfect 0 in
Firefox.

This makes it look like a bug in Chrome's engine. We don't know how
old it is, but based on the information in T352169 it might be a
relatively new bug that didn't exist when this code was originally
written in 2016 (see I7c903c2).

For reference, this is what's supposed to happen here: Browsers with
the scroll type "negative" (which are apparently all current Chrome
and Firefox versions) won't allow scrollLeft to be a positive number
on an RTL page. When you scroll to the left in such browsers the
numbers get negative. The detection code tries to set the number to
+1 anyway. We expect the browser to ignore this invalid call and
still report the previous 0.

This mostly works in Chrome as well. For example, setting scrollLeft
to +100 wont set it to +100 but to … some random number between >=0
and <1, depending on the current zoom factor? o_O?

I suspect we can remove this detection code entirely, or at least
change the default to "negative". But this needs more testing with
more browsers. Let's start with this tiny fix.

Bug: T352169
Change-Id: I22cbb8881578e96165097d4fcc812baadc22d7fa
2024-02-28 14:03:32 +01:00
.phan Upgrade RevisionSlider to use newer phan 2019-03-03 12:06:21 +05:30
i18n Localisation updates from https://translatewiki.net. 2024-02-14 08:19:19 +01:00
modules Work around rounding errors in RTL scroll type detection 2024-02-28 14:03:32 +01:00
resources/ext.RevisionSlider.helpDialog build: Update 'svgo' to latest v3.2.0 and re-minify SVGs 2024-01-16 00:17:03 +01:00
src Merge separate "noscript" CSS module 2024-02-26 17:54:53 +01:00
tests Drop separate .render/.initialize logic from View classes 2024-02-26 20:40:28 +00:00
.eslintrc.json build: Update devDependencies 2022-03-17 22:55:02 +00:00
.gitignore Add /tests/selenium/log to .gitignore file 2020-10-16 10:25:44 +03:00
.gitreview Whoops, track not trace 2016-10-24 17:03:28 -07:00
.phpcs.xml build: Remove unneeded Squiz.WhiteSpace.FunctionSpacing 2019-10-25 20:33:03 +02:00
.stylelintrc.json stylelint: Enable selector-pseudo-element-colon-notation 2023-03-30 00:42:20 +02:00
.svgo.config.js build: Update SVGO to v3.0.2 2023-06-14 12:38:31 -07:00
CODE_OF_CONDUCT.md build: Updating mediawiki/phan-taint-check-plugin to 1.3.0 2018-08-19 15:55:48 +00:00
composer.json build: Updating dependencies 2024-02-13 03:17:04 +00:00
COPYING Add license file 2019-10-23 08:44:22 +02:00
extension.json Merge separate "noscript" CSS module 2024-02-26 17:54:53 +01:00
Gruntfile.js build: Update devDependencies 2022-03-17 22:55:02 +00:00
jsduck.json Add a simple JSDuck config file 2016-06-22 14:40:27 +02:00
package-lock.json build: Updating dependencies 2024-02-13 03:17:04 +00:00
package.json build: Updating dependencies 2024-02-13 03:17:04 +00:00
README.md Add hint for browser tests to README.md 2020-11-12 11:58:40 +01:00

RevisionSlider extension

This MediaWiki extension shows a slider allowing selecting and comparing of revisions on a diff page

Installation

Check out this extension into the extensions folder of your MediaWiki installation and add the following line to your LocalSettings.php:

wfLoadExtension( 'RevisionSlider' );

Tests

Before executing tests run the following in the root directory of the extension once:

composer install
npm install

For the tests run:

composer test
node_modules/.bin/grunt test

QUnit Tests

See https://www.mediawiki.org/wiki/Manual:JavaScript_unit_testing#Run_the_tests

Browser Tests

See tests/selenium/README.md