mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:18:48 +00:00
724e70642d
- Bug 1247955 - Add telemetry for compacting GC r=terrence (71fc631b20) - Bug 1200133 - Part1 - Change mochitest using TV Simulator Service. r=seanlin (bbddf95aae) - bit of Bug 1230674 - part 3, (253d2ab0ce) - Bug 1144103 - Support screen recording r=mwu (694cd8f580) - Bug 1237914 - Remove layers.screen-recording.enabled r=mwu (22edbe0944) - Bug 1231042 - clean current composition task and related flag when screen off. r=mchang (45c996e32b) - Bug 1137151: Marked destructor of |nsWindow| as protected, r=mwu (6ebb963472) - Bug 1187503 - use external surface size on CompositorOGL r=nical (8481425ca9) - Bug 1238876 - Move StartRemoteDrawing() implementation from nsWindow to nsScreenGonk r=mwu (9b7a2066d2) - Bug 1006688 - Support capture screen via adb r=mwu (d651416c44) - Bug 1244044 - remember display status; r=jerry (d8a252f081) - Bug 1247570 - unbreak widget/gonk/nativewindow/FakeSurfaceComposer.cpp r=gwagner (de01fd3084) - Bug 1020199 - Make sure APZ works with nested oop iframe. r=kats, r=dvander. (8f4285b97f) - Bug 1235858 - Record the time stamp, use it for crash reports. r=botond (98d999aa25) - Bug 1247671: Increase the crash logging length to 16 by default (+ small white space change in the comments) r=dvander (8a0995cb1c) - Bug 867501 - Pref allows JS locale to be set to US English/C. r=khuey (8d6e5df33d) - Bug 1207972: Move to using USER_INTERACTIVE and JOB_INTERACTIVE by default for the Windows content sandbox. r=tabraldes (494ecebd8e) - Bug 1234673 - Avoid users from locales ar, fa, he, ur for e10s rollout to beta. r=jimm (adf49af577) - Bug 1234675 - Ability to disable e10s for users with addons. r=Mossop (6abaeba541) - Bug 1233837 support migration wizard override from distribution.ini, r=bsmedberg (98c95ecc4b) - Bug 884831 - GTK3 - crash at browser end [@ XFreeColormap() ], r=karlt (13d9067ab0) - Bug 1215078 - [Wayland] Configure display for Wayland session. r=karlt (c4417d3534) - Bug 1111701 - Remove E10S_AUTOSTART histogram. r=dexter (56625e7353) - Bug 1239520 - Enabled e10s on all configurations except release. r=billm (48c760a1f8) - Bug 1241294 - Update E10S_AUTOSTART_STATUS telemetry probe (and rename it to E10S_STATUS). r=vladan (7217e4c9d3) - Bug 1241959 - Add a description of e10s blocked status to about:support. r=jimm (b6cb2e6dac) - Bug 1165818: Remove temporary Nightly only MozTemp-* clean-up code. r=jimm (fdb11aed0e) - Bug 1243882 - Block e10s for locales based on Firefox's locale, not the OS. r=ehsan (873b09db0f) - Bug 1235437 - Add annotation for major graphics preferences. r=bgirard (2e147567be) - Bug 1237404 - Part 1. Exposing some functionality in gfxCrashReporterUtils. r=benwa (dc08c3ba92) - Bug 1237404 - Part 2. Optimizing the main thread scenario. r=benwa (e5b6704b57) - Bug 1237770: Disable D3D9 on XP with E10S. r=jrmuizel (6424700126) - Bug 1210351 - Limit maximum computed tile size to 512x512. r=snorp (162839caf7) - Bug 1221073 - Increase max tile size to 1024 again. r=mstange (29e8513390) - Bug 990017. Prevent skia accelerated canvas backends from rendering content. r=jmuizelaar (b257281035) - Bug 1178385. Add a pref to force enable hw video decode. r=milan (f69cde6047) - Bug 1230196 - Allow release channel to run e10s. r=billm (ab5d0a464c) - Bug 1231915 - Ignore the APZ pref if MOZ_ANDROID_APZ is enabled, since the pref doesn't cover all the relevant code. r=rbarker (3984b57173) - Bug 1187464 - Part 1. We can get the wrong texture source type, so deal with it. Carry r=mstange (0d47ffdd65) - Bug 1187464 - Part 2. RTTI for TextureSource debug purposes. Carry r=botond (af8b92042d) - Bug 1187464 - Part 3. Check if GetSurface returned null. r=mstange (ab7de5dabb) - Bug 1165407 - Properly flush the log stream after logging it. r=botond (6dd38e7e7a) - Bug 1239844 - Log hexadecimal values in a more standard way. r=dholbert (aa7de36cfd) - Bug 1241769 - Use Singleton pattern to nsScreenManagerGonk r=mwu (bb0c30ce80) - Bug 1229262 - Fix nsScreenGonk's thread safety r=mwu (6c60907ce9) - Bug 1165161 - stop bootAnim with "browser-ui-startup-complete" event. r=mwu (e40ddb816a) - Bug 1230397 - Write safe mode pref on the main thread r=dbaron (0538d0353f) - Bug 1172805 - Fix enum comparison warnings in nsAppShell. r=mwu (e77ec14fed) - Bug 1215494 - Don't set b2g.safe_mode pref in child process. r=fabrice (3264d2c872) - Bug 1192949 - Fix nsScreenGonk::SetMirroringScreen() r=mwu (39abf13ff4) - Bug 1243413 - If a plugin window is hidden in an adjacent scroll frame due to APZ scroll state changes, make sure to show the plugin window after the scroll operation complete. r=kats (302f14476f) - Bug 1187322 - Fix bustage. (5fe8e7b3e8) - Bug 241788 - mozilla::Tokenizer - token type for \n should whitespace if given in constructor r=honzab (d4da4354c8) - Bug 1237827 - Be sure to clear LayerComposite::mLayerComposited between each composite. r=mattwoodrow (cc02aef817) - Bug 1244943 - Make PostProcessLayers aware of preserve-3d. r=mattwoodrow (48fadfdcf7) - Bug 1229317 - Allow preserve-3d and opacity to be combined on the root element of a preserve-3d chain. r=roc (030c042699) - Bug 1231564 - Don't take the compositor side layer-tree snapshot until after compositing. r=dvander (c0164b6464) - Bug 1247445 - Rename Layer::GetEffectiveVisibleRegion GetLocalVisibleRegion. r=botond (35125c3f71) - Bug 945613 - Part 3: #ifdef pragma for gcc >= 4.7.0. r=ehsan (67786ad3f8) - Bug 1227210: Ensure the mask and the surface are in the right space when being blended. r=mattwoodrow (6745cd99f8) - Bug 1229587 part 1 - Disable C4464 warning newly added in VS2015u1. r=keeler (65cf58d55d) - Bug 1229587 part 2 - Use verbose format to disable C4061 to workaround bug of VS2015u1. r=keeler (8f8fb5190f) - Bug 1189891 - Avoid including <cstring> from pkix/Input.h. r=bsmith (7202ad2de7) - Bug 1207499 - Part 9: Remove use of expression closure from storage/. r=mak (cf0f139799) - Bug 1230549 - Storage should pass more eslint rules. r=yoric (91e007dacb) - Bug 1230549 - Make Storage pass basic eslint. r=yoric (37c88987e8) - Bug 1237601 - Centralize storage xpcshell promise helpers (support patch). r=bkelly (ebee41dfae) - Bug 1237601 - Perform storage close synchronously if async thread cannot be started. r=bkelly (855430997d) - bug 1227008 use GtkPaperSize in GtkPageSetup directly, instead of maintaining a separate copy r=acomminos (cf1bade905) - Bug 1205643 - Move scrollbar borders to slider to receive button events. r=karlt (76ece6a2fd) - Bug 1141207 add gtk_print_settings_foreach to mozgtk.c. r=karlt (aee4b94e27) - Bug 1206516 - Use temporary widget to construct style context for GtkInfoBar. r=karlt (1ce56b1799) - bug 1205199 keep the socket alive as long as the plug window r=acomminos (bf1e4585da) - Bug 1242135 - Annotate intentional and fix unintentional switch fallthroughs in widget/gtk/. r=karlt (102180ea0a) - Bug 1221610 - Remove ToIntMargin(). r=jrmuizel. (5d234b1dd6) - Bug 1238582 - Skip simulated OOM check in the case where we're growing within reserved space; r=Waldo (2d00fa9605) - Bug 1242812 - Only check for simulated OOM in vectors when growing beyond reserved size r=Waldo (98ad0de5ff) - Bug 1144745 - scale border returned by GetWidgetBorder(), r=karlt (8639c7b240) - Bug 1184936 - Need convert from UTF8 for printer name. r=karlt (99e2863372) - Bug 569295 - limit the number of bytes we attempt to upload to the storage servers. r=rnewman (8072be50bb) - Bug 779430, try to not flush layout while we're in process to restore a bfcached document, r=bz (47d01dd107) - Bug 1241579 - Convert services/ to use channel.open2() (r=sicking) (fd6ee21f67) - Bug 1228510 - initialize 2 more variables. r=bas (e3d144854a) - Bug 1229577 - Rename NewSurfaceDescriptorGralloc into SurfaceDescriptorGralloc. r=sotaro (99b8d621e4) - Bug 1241665 - Correctly convert IOSurfaces to SourceSurfaces in MacIOSurfaceTextureSourceBasic and MacIOSurfaceTextureData. r=mattwoodrow (54ce8c1582) - Bug 1241665 - Move IOSurface YCbCr conversion code to a new file MacIOSurfaceHelpers.cpp. r=mattwoodrow (aeb7f341cf) - Bug 1191161 - p1 - Merge WrapEntireClassForJNI into WrapElementForJNI, r=jchen (684111ca72) - Bug 1246775 - use already_AddRefed in PersistentBufferProvider interface. r=bas (373a63f129) - Bug 1232231 - BorrowDrawTarget can return nullptr - be ready for it. r=nical (0156e1c412) - Bug 1227224 - Further improvements to generic tree traversal algorithms. r=botond (f71854fea6) - Bug 1234047 - Always reuse an existing TextureClient in IMFYCbCrImage if one exist. r=Bas (4c995d1668) - Bug 1240668 - Duplicate GonkNativeHandle::NhObj in ImageClientSingle::UpdateImage() r=nical (ed213d6f07) - Bug 1213095 - Inline the DispatchRepaintRequest function. r=botond (33d14a377c) - Bug 1213095 - Don't allow RequestContentRepaint to mutate the provided FrameMetrics. r=botond (676e6082b5) - Bug 1213095 - Ensure that stale FrameMetrics do not clobber more recent metrics for paint requests. r=botond (b6e75b0e37) - Bug 1238040 - Update telemetry measures for checkerboarding. r=botond,vladan (e41963fce5) - Bug 1238042 - Expose the checkerboard reports out to JS. r=ehsan,botond (986bb53bc5) - Bug 1238137 - Define a telemetry histogram for tracking the input methods used to trigger scrolling. r=kats (9e366c56a5) - remove unused (b0dc04a498) - Bug 1238137 - Telemetry pings for APZ-driven scroll input methods. r=kats (3f026677bd) - Bug 1241371. Properly update mLastUpdateImagesPos on scrollframes when the image visibility pass encounters them. r=mats (128edd5957) - Bug 1241371. Don't schedule an image visibility update every time display port margins change. r=kats (9927515115) - Bug 990916 - When setting a displayport, schedule a timer to remove it as well. r=tnikkel (ddd943226d) - Bug 990916 - Track if a scrollframe is a scroll parent for something else. r=tnikkel (7128db6038) - Bug 1245285 - part 1, Remove unused mRepaintInterval from AsyncPanZoomAnimation r=botond (ec516fe9f0) - Bug 1245285 - part 2, Prevent Zoom and Overscroll animations from repainting durring animation r=botond (6a66a0005a) - Bug 1245285 - part 3, Remove unused repaint_interval prefs r=botond (9987a58743) - Bug 1243413 - Avoid hiding windowed plugins that aren't contained within the active scroll frame. r=roc (f059ce95da) - Bug 1104356 - When doing a smooth scroll on a non-APZ'd scrollframe, fall back to the main thread machinery. r=kip (44d75dc20f) - Bug 990916 - On displayport expiry, trigger another round of expiry up the ancestor chain. r=tnikkel (8ce9a22429) - Bug 1245925 - Don't allow expiring the displayport on root scrollframes. r=tnikkel (2ec6218e2e) - Bug 1236040 - When updating the scroll position, only schedule image visibility checks if the display port has changed. r=tn (aedac7070f) - Bug 1234725. Don't change the dirty rect to the display port when building display lists for documents. r=mstange (6ff3e41934) - Fix crash trying to allocate textures for oversize scrollbars. (bug 1214261, r=mstange) (b4b4fa368d) - Bug 1234877 - Whether a scroll frame is async scrollable is determined by mWillBuildScrollableLayer, not by usingDisplayPort. r=tn (2daacb63f5) - Bug 1241917 - Restrict subframe's displayport base to root composition bounds. r=tn (7e50ff6bae) - Bug 1246443. Don't make nsLayoutUtils::MaybeCreateDisplayPort also set the displayport base anymore. r=botond (2970d8f2a6) - Bug 1246443 - Only restrict displayport base to root composition bounds if content has displayport; r=tnikkel (a841dedff4) - Bug 1208985 - Use height for scroll-snap-points-y percentage values; r=kip (17ce448e8b) - Bug 1238040 - Add a telemetry probe for potential checkerboarding duration. r=botond,vladan (bdf18d520b) - Bug 1240622 - Guard mCheckerboardEvent with a mutex to avoid races. r=botond (b81534272c) - Bug 1240202 - Rename APZOverscrollHandoffTester to APZScrollHandoffTester. r=kats (3c165a103d) - Bug 1240202 - Change input event generation utilities used by APZ gtests to take points instead of loose coordinates. r=kats (e29de86c33) - Bug 1240202 - Avoid getting stuck in overscroll when the screen is tapped during an overscroll animation. r=kats (3822391d27) - Bug 1225045: Fix stagefright include paths for ANDROID_VERSION >= 17, r=gps (1eabe097b5)
807 lines
33 KiB
HTML
807 lines
33 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Test for scroll snapping</title>
|
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
</head>
|
|
<body>
|
|
|
|
<p id="display"></p>
|
|
<div id="sc" style="margin: 0px; padding: 0px; overflow: scroll; width: 500px; height: 250px;">
|
|
<div id="sd" style="margin: 0px; padding: 0px; width: 1500px; height: 1250px;"></div>
|
|
</div>
|
|
|
|
<pre id="test">
|
|
<script class="testbody" type="text/javascript">
|
|
|
|
var testCases = [
|
|
{
|
|
"description" : "Proximity + Within proximity => Snaps to point (Right)",
|
|
"scrollSnapType" : "proximity",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "525px 500px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_RIGHT",
|
|
"expectedX" : 525,
|
|
"expectedY" : 500,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Proximity + Within proximity => Snaps to point (Left)",
|
|
"scrollSnapType" : "proximity",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "475px 500px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_LEFT",
|
|
"expectedX" : 475,
|
|
"expectedY" : 500,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Proximity + Within proximity => Snaps to point (Up)",
|
|
"scrollSnapType" : "proximity",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "500px 475px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_UP",
|
|
"expectedX" : 500,
|
|
"expectedY" : 475,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Proximity + Within proximity => Snaps to point (Down)",
|
|
"scrollSnapType" : "proximity",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "500px 525px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_DOWN",
|
|
"expectedX" : 500,
|
|
"expectedY" : 525,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Proximity + Beyond proximity => Does not snap to point (Right)",
|
|
"scrollSnapType" : "proximity",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "700px 500px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_RIGHT",
|
|
"expectedX" : 700,
|
|
"expectedY" : 500,
|
|
"notExpected" : true
|
|
},
|
|
|
|
{
|
|
"description" : "Proximity + Beyond proximity => Does not snap to point (Left)",
|
|
"scrollSnapType" : "proximity",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "300px 500px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_LEFT",
|
|
"expectedX" : 300,
|
|
"expectedY" : 500,
|
|
"notExpected" : true
|
|
},
|
|
|
|
{
|
|
"description" : "Proximity + Beyond proximity => Does not snap to point (Up)",
|
|
"scrollSnapType" : "proximity",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "500px 300px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_UP",
|
|
"expectedX" : 500,
|
|
"expectedY" : 300,
|
|
"notExpected" : true
|
|
},
|
|
|
|
{
|
|
"description" : "Proximity + Beyond proximity => Does not snap to point (Down)",
|
|
"scrollSnapType" : "proximity",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "500px 700px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_DOWN",
|
|
"expectedX" : 500,
|
|
"expectedY" : 700,
|
|
"notExpected" : true
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + Beyond proximity => Snaps to point (Right)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "700px 500px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_RIGHT",
|
|
"expectedX" : 700,
|
|
"expectedY" : 500,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + Beyond proximity => Snaps to point (Left)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "300px 500px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_LEFT",
|
|
"expectedX" : 300,
|
|
"expectedY" : 500,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + Beyond proximity => Snaps to point (Up)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "500px 300px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_UP",
|
|
"expectedX" : 500,
|
|
"expectedY" : 300,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + Beyond proximity => Snaps to point (Down)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "500px 700px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_DOWN",
|
|
"expectedX" : 500,
|
|
"expectedY" : 700,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + No snap points => Does not snap or scroll (Left)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_LEFT",
|
|
"expectedX" : 500,
|
|
"expectedY" : 500,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + No snap points => Does not snap or scroll (Right)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_RIGHT",
|
|
"expectedX" : 500,
|
|
"expectedY" : 500,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + No snap points => Does not snap or scroll (Up)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_UP",
|
|
"expectedX" : 500,
|
|
"expectedY" : 500,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + No snap points => Does not snap or scroll (Down)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_DOWN",
|
|
"expectedX" : 500,
|
|
"expectedY" : 500,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-y + scroll-snap-destination + Start of page + No snap point at start of page => Does not snap to top of page (Up)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "repeat(500px)",
|
|
"scrollSnapDestination" : "25px 25px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 0,
|
|
"initialY" : 200,
|
|
"key" : "VK_UP",
|
|
"expectedX" : 0,
|
|
"expectedY" : 200,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-y + scroll-snap-destination + Start of page + No snap point at start of page => Does not snap to top of page (Page Up)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "repeat(500px)",
|
|
"scrollSnapDestination" : "25px 25px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 0,
|
|
"initialY" : 200,
|
|
"key" : "VK_PAGE_UP",
|
|
"expectedX" : 0,
|
|
"expectedY" : 200,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-y + scroll-snap-destination + Start of page + No snap point at start of page => Snaps to highest snap point (Home)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "repeat(500px)",
|
|
"scrollSnapDestination" : "25px 25px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 0,
|
|
"initialY" : 200,
|
|
"key" : "VK_HOME",
|
|
"expectedX" : 0,
|
|
"expectedY" : 475,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-x + scroll-snap-destination + Start of page + No snap point at start of page => Does not snap to left of page (Left)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "repeat(500px)",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "25px 25px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 200,
|
|
"initialY" : 0,
|
|
"key" : "VK_LEFT",
|
|
"expectedX" : 200,
|
|
"expectedY" : 0,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-y + negative scroll-snap-destination + End of page + No snap point at end of page => Does not snap to end of page (Down)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "repeat(500px)",
|
|
"scrollSnapDestination" : "-25px -25px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 0,
|
|
"initialY" : 800,
|
|
"key" : "VK_DOWN",
|
|
"expectedX" : 0,
|
|
"expectedY" : 800,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-y + negative scroll-snap-destination + End of page + No snap point at end of page => Does not snap to end of page (Page Down)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "repeat(500px)",
|
|
"scrollSnapDestination" : "-25px -25px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 0,
|
|
"initialY" : 800,
|
|
"key" : "VK_PAGE_DOWN",
|
|
"expectedX" : 0,
|
|
"expectedY" : 800,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-y + negative scroll-snap-destination + End of page + No snap point at end of page => Snaps to lowest snap point (End)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "repeat(500px)",
|
|
"scrollSnapDestination" : "-25px -25px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 0,
|
|
"initialY" : 800,
|
|
"key" : "VK_END",
|
|
"expectedX" : 0,
|
|
"expectedY" : 525,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-coordinate + No snap point at start of page => Does not snap to top of page (Home)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "500px 100px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_HOME",
|
|
"expectedX" : 500,
|
|
"expectedY" : 100,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-coordinate + No snap point at end of page => Does not snap to end of page (End)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "500px 900px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_END",
|
|
"expectedX" : 500,
|
|
"expectedY" : 900,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-y greater than scrolling rect + positive non-zero scroll-snap-destination => No snap points, does not scroll or snap (Left)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "repeat(1500px)",
|
|
"scrollSnapDestination" : "25px 25px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_LEFT",
|
|
"expectedX" : 500,
|
|
"expectedY" : 500,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-y greater than scrolling rect + positive non-zero scroll-snap-destination => No snap points, does not scroll or snap (Right)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "repeat(1500px)",
|
|
"scrollSnapDestination" : "25px 25px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_RIGHT",
|
|
"expectedX" : 500,
|
|
"expectedY" : 500,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-y greater than scrolling rect + positive non-zero scroll-snap-destination => No snap points, does not scroll or snap (Up)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "repeat(1500px)",
|
|
"scrollSnapDestination" : "25px 25px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_UP",
|
|
"expectedX" : 500,
|
|
"expectedY" : 500,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-y greater than scrolling rect + positive non-zero scroll-snap-destination => No snap points, does not scroll or snap (Down)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "repeat(1500px)",
|
|
"scrollSnapDestination" : "25px 25px",
|
|
"scrollSnapCoordinate" : "none",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_DOWN",
|
|
"expectedX" : 500,
|
|
"expectedY" : 500,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-{x|y} + scroll-snap-coordinate with two points => Interval and element snapping points are combined. Test 1 snap point generated by scroll-snap-points-{x|y} and two generated by scroll-snap-coordinate, ensure that they are evaluated as snap points. (Right #1)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "repeat(200px)",
|
|
"scrollSnapPointsY" : "repeat(200px)",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "120px 120px, 220px 220px",
|
|
"initialX" : 0,
|
|
"initialY" : 0,
|
|
"key" : "VK_RIGHT",
|
|
"expectedX" : 120,
|
|
"expectedY" : 0,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-{x|y} + scroll-snap-coordinate with two points => Interval and element snapping points are combined. Test 1 snap point generated by scroll-snap-points-{x|y} and two generated by scroll-snap-coordinate, ensure that they are evaluated as snap points. (Right #2)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "repeat(200px)",
|
|
"scrollSnapPointsY" : "repeat(200px)",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "120px 120px, 220px 220px",
|
|
"initialX" : 120,
|
|
"initialY" : 0,
|
|
"key" : "VK_RIGHT",
|
|
"expectedX" : 200,
|
|
"expectedY" : 0,
|
|
"notExpected" : false
|
|
},
|
|
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-{x|y} + scroll-snap-coordinate with two points => Interval and element snapping points are combined. Test 1 snap point generated by scroll-snap-points-{x|y} and two generated by scroll-snap-coordinate, ensure that they are evaluated as snap points. (Right #3)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "repeat(200px)",
|
|
"scrollSnapPointsY" : "repeat(200px)",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "120px 120px, 220px 220px",
|
|
"initialX" : 200,
|
|
"initialY" : 0,
|
|
"key" : "VK_RIGHT",
|
|
"expectedX" : 220,
|
|
"expectedY" : 0,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-{x|y} + scroll-snap-coordinate with two points => Interval and element snapping points are combined. Test 1 snap point generated by scroll-snap-points-{x|y} and two generated by scroll-snap-coordinate, ensure that they are evaluated as snap points. (Up #1)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "repeat(200px)",
|
|
"scrollSnapPointsY" : "repeat(200px)",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "120px 120px, 220px 220px",
|
|
"initialX" : 0,
|
|
"initialY" : 300,
|
|
"key" : "VK_UP",
|
|
"expectedX" : 0,
|
|
"expectedY" : 220,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-{x|y} + scroll-snap-coordinate with two points => Interval and element snapping points are combined. Test 1 snap point generated by scroll-snap-points-{x|y} and two generated by scroll-snap-coordinate, ensure that they are evaluated as snap points. (Up #2)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "repeat(200px)",
|
|
"scrollSnapPointsY" : "repeat(200px)",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "120px 120px, 220px 220px",
|
|
"initialX" : 0,
|
|
"initialY" : 220,
|
|
"key" : "VK_UP",
|
|
"expectedX" : 0,
|
|
"expectedY" : 200,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Mandatory + scroll-snap-points-{x|y} + scroll-snap-coordinate with two points => Interval and element snapping points are combined. Test 1 snap point generated by scroll-snap-points-{x|y} and two generated by scroll-snap-coordinate, ensure that they are evaluated as snap points. (Up #3)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "repeat(200px)",
|
|
"scrollSnapPointsY" : "repeat(200px)",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "120px 120px, 220px 220px",
|
|
"initialX" : 0,
|
|
"initialY" : 200,
|
|
"key" : "VK_UP",
|
|
"expectedX" : 0,
|
|
"expectedY" : 120,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Ensure that when paging down/up that the next snap point in the direction of the scroll is selected rather than a closer point in the opposite direction (page Down)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "600px 600px, 475px 475px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_PAGE_DOWN",
|
|
"expectedX" : 500,
|
|
"expectedY" : 600,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Ensure that when paging down/up that the next snap point in the direction of the scroll is selected rather than a closer point in the opposite direction (Page Up)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "400px 400px, 525px 525px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_PAGE_UP",
|
|
"expectedX" : 500,
|
|
"expectedY" : 400,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Ensure that when paging down/up that the farthest snap point before the destination is selected and prioritized over a snap point that is past the destination, even if the snap point past the destination is closer to the destination. Setup - two snap points between current position and destination and one snap point past the destination which is closer than any of the other points. Scrollable rect size is 500px. (Page Down)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "525px 525px, 550px 550px, 800px 800px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_PAGE_DOWN",
|
|
"expectedX" : 500,
|
|
"expectedY" : 550,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Ensure that when paging down/up that the farthest snap point before the destination is selected and prioritized over a snap point that is past the destination, even if the snap point past the destination is closer to the destination. Setup - two snap points between current position and destination and one snap point past the destination which is closer than any of the other points. Scrollable rect size is 500px. (Page Up)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "475px 475px, 450px 450px, 200px 200px",
|
|
"initialX" : 500,
|
|
"initialY" : 500,
|
|
"key" : "VK_PAGE_UP",
|
|
"expectedX" : 500,
|
|
"expectedY" : 450,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Ensure that when paging down/up that the closest snap point past the destination is selected when no snap points exist between the starting position and the destination. Additionally, a snap point closer to the destination than the one past the snap point, but not in the scrolling direction, must not be selected. Setup - Two snap points beyond the destination and one snap point in the opposite direction of scrolling which is closest to the destination. Scrollable rect size is 500px. (Page Down)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "50px 50px, 800px 800px, 900px 900px",
|
|
"initialX" : 100,
|
|
"initialY" : 100,
|
|
"key" : "VK_PAGE_DOWN",
|
|
"expectedX" : 100,
|
|
"expectedY" : 800,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Ensure that when paging down/up that the closest snap point past the destination is selected when no snap points exist between the starting position and the destination. Additionally, a snap point closer to the destination than the one past the snap point, but not in the scrolling direction, must not be selected. Setup - Two snap points beyond the destination and one snap point in the opposite direction of scrolling which is closest to the destination. Scrollable rect size is 500px. (Page Up)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "950px 950px, 200px 200px, 100px 100px",
|
|
"initialX" : 900,
|
|
"initialY" : 900,
|
|
"key" : "VK_PAGE_UP",
|
|
"expectedX" : 900,
|
|
"expectedY" : 200,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Ensure that when scrolling by lines up,down,left,or right, that the closest snap point to the destination in the direction of travel is selected. Setup - Two snap points in the direction of travel and one in the opposite direction. Snap point in opposite direction is closest to the destination but must not be selected. (Down)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "50px 50px, 800px 800px, 900px 900px",
|
|
"initialX" : 100,
|
|
"initialY" : 100,
|
|
"key" : "VK_PAGE_DOWN",
|
|
"expectedX" : 100,
|
|
"expectedY" : 800,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Ensure that when scrolling by lines up,down,left,or right, that the closest snap point to the destination in the direction of travel is selected. Setup - Two snap points in the direction of travel and one in the opposite direction. Snap point in opposite direction is closest to the destination but must not be selected. (Up)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "950px 950px, 200px 200px, 100px 100px",
|
|
"initialX" : 900,
|
|
"initialY" : 900,
|
|
"key" : "VK_PAGE_UP",
|
|
"expectedX" : 900,
|
|
"expectedY" : 200,
|
|
"notExpected" : false
|
|
},
|
|
|
|
{
|
|
"description" : "Ensure that when scrolling by lines up,down,left,or right, that the closest snap point to the destination in the direction of travel is selected. Setup - Two snap points in the direction of travel and one in the opposite direction. Snap point in opposite direction is closest to the destination but must not be selected. (Left)",
|
|
"scrollSnapType" : "mandatory",
|
|
"scrollSnapPointsX" : "none",
|
|
"scrollSnapPointsY" : "none",
|
|
"scrollSnapDestination" : "0px 0px",
|
|
"scrollSnapCoordinate" : "950px 950px, 200px 200px, 100px 100px",
|
|
"initialX" : 900,
|
|
"initialY" : 900,
|
|
"key" : "VK_LEFT",
|
|
"expectedX" : 200,
|
|
"expectedY" : 900,
|
|
"notExpected" : false
|
|
}
|
|
];
|
|
|
|
var step = 0;
|
|
var sc; // Scroll Container
|
|
var sd; // Scrolled Div
|
|
|
|
var lastScrollTop;
|
|
var lastScrollLeft;
|
|
var stopFrameCount;
|
|
|
|
// The tests should work the same way when all the values for the scroll
|
|
// container are provided in percentages. To assert that, we just duplicate all
|
|
// the test cases and replace the pixel values related to the scroll container
|
|
// with percentage values, based on its clientWidth/Height sespectively.
|
|
function addPercentageTests() {
|
|
var width = sc.clientWidth;
|
|
var height = sc.clientHeight;
|
|
var pxRegexp = /(\d+)px/;
|
|
var rewriteW = (_, w) => (parseInt(w, 10) / width * 100) + "%";
|
|
var rewriteH = (_, h) => (parseInt(h, 10) / height * 100) + "%";
|
|
testCases = testCases.concat(testCases.map(testCase => Object.assign({}, testCase, {
|
|
description: "With Percentages: " + testCase.description,
|
|
scrollSnapPointsX: testCase.scrollSnapPointsX.replace(pxRegexp, rewriteW),
|
|
scrollSnapPointsY: testCase.scrollSnapPointsY.replace(pxRegexp, rewriteH),
|
|
scrollSnapDestination: testCase.scrollSnapDestination
|
|
.replace(pxRegexp, rewriteW).replace(pxRegexp, rewriteH),
|
|
})));
|
|
}
|
|
|
|
function initTest() {
|
|
var testCase = testCases[step];
|
|
sc.style.scrollSnapType = testCase.scrollSnapType;
|
|
sc.style.scrollSnapPointsX = testCase.scrollSnapPointsX;
|
|
sc.style.scrollSnapPointsY = testCase.scrollSnapPointsY;
|
|
sc.style.scrollSnapDestination = testCase.scrollSnapDestination;
|
|
sd.style.scrollSnapCoordinate = testCase.scrollSnapCoordinate;
|
|
sc.scrollTo(testCase.initialX, testCase.initialY);
|
|
sc.focus();
|
|
synthesizeKey(testCase.key, {});
|
|
|
|
stopFrameCount = 0;
|
|
lastScrollTop = sc.scrollTop;
|
|
lastScrollLeft = sc.scrollLeft;
|
|
|
|
window.requestAnimationFrame(waitForScrollStop);
|
|
}
|
|
|
|
function waitForScrollStop() {
|
|
if (stopFrameCount > 30) {
|
|
// We have the same position for 30 consecutive frames -- we are stopped
|
|
testScrolling();
|
|
} else {
|
|
// Still moving
|
|
if (lastScrollTop == sc.scrollTop && lastScrollLeft == sc.scrollLeft) {
|
|
stopFrameCount++;
|
|
} else {
|
|
stopFrameCount = 0;
|
|
lastScrollTop = sc.scrollTop;
|
|
lastScrollLeft = sc.scrollLeft;
|
|
}
|
|
window.requestAnimationFrame(waitForScrollStop);
|
|
}
|
|
}
|
|
|
|
function testScrollSnapping() {
|
|
sc = document.getElementById("sc");
|
|
sd = document.getElementById("sd");
|
|
|
|
addPercentageTests();
|
|
|
|
initTest();
|
|
}
|
|
|
|
function testScrolling() {
|
|
var testCase = testCases[step];
|
|
if (document.getElementById('display').style.direction == "rtl") {
|
|
if (testCase.notExpected) {
|
|
isnot("(" + -sc.scrollLeft + "," + sc.scrollTop + ")",
|
|
"(" + -testCase.expectedX + "," + testCase.expectedY + ")",
|
|
"rtl: " + testCase.description);
|
|
} else {
|
|
is("(" + -sc.scrollLeft + "," + sc.scrollTop + ")",
|
|
"(" + -testCase.expectedX + "," + testCase.expectedY + ")",
|
|
"rtl: " + testCase.description);
|
|
}
|
|
} else {
|
|
// ltr direction
|
|
if (testCase.notExpected) {
|
|
isnot("(" + sc.scrollLeft + "," + sc.scrollTop + ")",
|
|
"(" + testCase.expectedX + "," + testCase.expectedY + ")",
|
|
"ltr: " + testCase.description);
|
|
} else {
|
|
is("(" + sc.scrollLeft + "," + sc.scrollTop + ")",
|
|
"(" + testCase.expectedX + "," + testCase.expectedY + ")",
|
|
"ltr: " + testCase.description);
|
|
}
|
|
}
|
|
|
|
step++;
|
|
if (step < Object.keys(testCases).length) {
|
|
initTest();
|
|
} else {
|
|
if (document.getElementById('display').style.direction == "rtl") {
|
|
SimpleTest.finish();
|
|
} else {
|
|
// Do everything again, but with rtl
|
|
document.getElementById('display').style.direction = "rtl";
|
|
step = 0;
|
|
initTest();
|
|
}
|
|
}
|
|
}
|
|
|
|
function doTest() {
|
|
SpecialPowers.pushPrefEnv({
|
|
"set": [["layout.css.scroll-snap.enabled", true],
|
|
["layout.css.scroll-snap.proximity-threshold", 100]]},
|
|
testScrollSnapping);
|
|
}
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
addLoadEvent(doTest);
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
|
|
</html>
|