browser/devtools/shared/test/browser_layoutHelpers.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/ */
     4 // Tests that scrollIntoViewIfNeeded works properly.
     6 let imported = {};
     7 Components.utils.import("resource://gre/modules/devtools/LayoutHelpers.jsm",
     8     imported);
     9 registerCleanupFunction(function () {
    10   imported = {};
    11 });
    13 let LayoutHelpers = imported.LayoutHelpers;
    15 const TEST_URI = "http://example.com/browser/browser/devtools/shared/test/browser_layoutHelpers.html";
    17 function test() {
    18   addTab(TEST_URI, function(browser, tab) {
    19     info("Starting browser_layoutHelpers.js");
    20     let doc = browser.contentDocument;
    21     runTest(doc.defaultView, doc.getElementById('some'));
    22     gBrowser.removeCurrentTab();
    23     finish();
    24   });
    25 }
    27 function runTest(win, some) {
    28   let lh = new LayoutHelpers(win);
    30   some.style.top = win.innerHeight + 'px';
    31   some.style.left = win.innerWidth + 'px';
    32   // The tests start with a black 2x2 pixels square below bottom right.
    33   // Do not resize the window during the tests.
    35   win.scroll(win.innerWidth / 2, win.innerHeight + 2);  // Above the viewport.
    36   lh.scrollIntoViewIfNeeded(some);
    37   is(win.scrollY, Math.floor(win.innerHeight / 2) + 1,
    38      'Element completely hidden above should appear centered.');
    40   win.scroll(win.innerWidth / 2, win.innerHeight + 1);  // On the top edge.
    41   lh.scrollIntoViewIfNeeded(some);
    42   is(win.scrollY, win.innerHeight,
    43      'Element partially visible above should appear above.');
    45   win.scroll(win.innerWidth / 2, 0);  // Just below the viewport.
    46   lh.scrollIntoViewIfNeeded(some);
    47   is(win.scrollY, Math.floor(win.innerHeight / 2) + 1,
    48      'Element completely hidden below should appear centered.');
    50   win.scroll(win.innerWidth / 2, 1);  // On the bottom edge.
    51   lh.scrollIntoViewIfNeeded(some);
    52   is(win.scrollY, 2,
    53      'Element partially visible below should appear below.');
    56   win.scroll(win.innerWidth / 2, win.innerHeight + 2);  // Above the viewport.
    57   lh.scrollIntoViewIfNeeded(some, false);
    58   is(win.scrollY, win.innerHeight,
    59      'Element completely hidden above should appear above ' +
    60      'if parameter is false.');
    62   win.scroll(win.innerWidth / 2, win.innerHeight + 1);  // On the top edge.
    63   lh.scrollIntoViewIfNeeded(some, false);
    64   is(win.scrollY, win.innerHeight,
    65      'Element partially visible above should appear above ' +
    66      'if parameter is false.');
    68   win.scroll(win.innerWidth / 2, 0);  // Below the viewport.
    69   lh.scrollIntoViewIfNeeded(some, false);
    70   is(win.scrollY, 2,
    71      'Element completely hidden below should appear below ' +
    72      'if parameter is false.');
    74   win.scroll(win.innerWidth / 2, 1);  // On the bottom edge.
    75   lh.scrollIntoViewIfNeeded(some, false);
    76   is(win.scrollY, 2,
    77      'Element partially visible below should appear below ' +
    78      'if parameter is false.');
    80   // The case of iframes.
    81   win.scroll(0, 0);
    83   let frame = win.document.getElementById('frame');
    84   let fwin = frame.contentWindow;
    86   frame.style.top = win.innerHeight + 'px';
    87   frame.style.left = win.innerWidth + 'px';
    89   fwin.addEventListener('load', function frameLoad() {
    90     let some = fwin.document.getElementById('some');
    91     lh.scrollIntoViewIfNeeded(some);
    92     is(win.scrollX, Math.floor(win.innerWidth / 2) + 20,
    93        'Scrolling from an iframe should center the iframe vertically.');
    94     is(win.scrollY, Math.floor(win.innerHeight / 2) + 20,
    95        'Scrolling from an iframe should center the iframe horizontally.');
    96     is(fwin.scrollX, Math.floor(fwin.innerWidth / 2) + 1,
    97        'Scrolling from an iframe should center the element vertically.');
    98     is(fwin.scrollY, Math.floor(fwin.innerHeight / 2) + 1,
    99        'Scrolling from an iframe should center the element horizontally.');
   100   }, false);
   101 }

mercurial