browser/devtools/tilt/test/browser_tilt_utils07.js

Wed, 31 Dec 2014 06:55:46 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:46 +0100
changeset 1
ca08bd8f51b2
permissions
-rw-r--r--

Added tag TORBROWSER_REPLICA for changeset 6474c204b198

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     3 "use strict";
     5 const STACK_THICKNESS = 15;
     7 function init(callback) {
     8   let iframe = gBrowser.ownerDocument.createElement("iframe");
    10   iframe.addEventListener("load", function onLoad() {
    11     iframe.removeEventListener("load", onLoad, true);
    12     callback(iframe);
    14     gBrowser.parentNode.removeChild(iframe);
    15     finish();
    16   }, true);
    18   iframe.setAttribute("src", ["data:text/html,",
    19     "<!DOCTYPE html>",
    20     "<html>",
    21       "<body style='margin: 0;'>",
    22         "<frameset cols='50%,50%'>",
    23           "<frame src='",
    24           ["data:text/html,",
    25            "<!DOCTYPE html>",
    26            "<html>",
    27            "<body style='margin: 0;'>",
    28            "<div id='test-div' style='width: 123px; height: 456px;'></div>",
    29            "</body>",
    30            "</html>"
    31           ].join(""),
    32           "' />",
    33           "<frame src='",
    34           ["data:text/html,",
    35            "<!DOCTYPE html>",
    36            "<html>",
    37            "<body style='margin: 0;'>",
    38            "<span></span>",
    39            "</body>",
    40            "</html>"
    41           ].join(""),
    42           "' />",
    43         "</frameset>",
    44         "<iframe src='",
    45         ["data:text/html,",
    46          "<!DOCTYPE html>",
    47          "<html>",
    48          "<body>",
    49          "<span></span>",
    50          "</body>",
    51          "</html>"
    52         ].join(""),
    53         "'></iframe>",
    54         "<frame src='",
    55         ["data:text/html,",
    56          "<!DOCTYPE html>",
    57          "<html>",
    58          "<body style='margin: 0;'>",
    59          "<span></span>",
    60          "</body>",
    61          "</html>"
    62         ].join(""),
    63         "' />",
    64         "<frame src='",
    65         ["data:text/html,",
    66          "<!DOCTYPE html>",
    67          "<html>",
    68          "<body style='margin: 0;'>",
    69          "<iframe src='",
    70          ["data:text/html,",
    71           "<!DOCTYPE html>",
    72           "<html>",
    73           "<body>",
    74           "<div></div>",
    75           "</body>",
    76           "</html>"
    77          ].join(""),
    78          "'></iframe>",
    79          "</body>",
    80          "</html>"
    81         ].join(""),
    82         "' />",
    83       "</body>",
    84     "</html>"
    85   ].join(""));
    87   gBrowser.parentNode.appendChild(iframe);
    88 }
    90 function test() {
    91   waitForExplicitFinish();
    92   ok(TiltUtils, "The TiltUtils object doesn't exist.");
    94   let dom = TiltUtils.DOM;
    95   ok(dom, "The TiltUtils.DOM wasn't found.");
    97   init(function(iframe) {
    98     let cwDimensions = dom.getContentWindowDimensions(iframe.contentWindow);
   100     is(cwDimensions.width - iframe.contentWindow.scrollMaxX,
   101       iframe.contentWindow.innerWidth,
   102       "The content window width wasn't calculated correctly.");
   103     is(cwDimensions.height - iframe.contentWindow.scrollMaxY,
   104       iframe.contentWindow.innerHeight,
   105       "The content window height wasn't calculated correctly.");
   107     let lh = new LayoutHelpers(gBrowser.contentWindow);
   108     let nodeCoordinates = lh.getRect(
   109       iframe.contentDocument.getElementById("test-div"), iframe.contentWindow);
   111     let frameOffset = lh.getIframeContentOffset(iframe);
   112     let frameRect = iframe.getBoundingClientRect();
   114     is(nodeCoordinates.top, frameRect.top + frameOffset[0],
   115       "The node coordinates top value wasn't calculated correctly.");
   116     is(nodeCoordinates.left, frameRect.left + frameOffset[1],
   117       "The node coordinates left value wasn't calculated correctly.");
   118     is(nodeCoordinates.width, 123,
   119       "The node coordinates width value wasn't calculated correctly.");
   120     is(nodeCoordinates.height, 456,
   121       "The node coordinates height value wasn't calculated correctly.");
   124     let store = dom.traverse(iframe.contentWindow);
   126     let expected = [
   127       { name: "html",   depth: 0 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   128       { name: "head",   depth: 1 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   129       { name: "body",   depth: 1 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   130       { name: "div",    depth: 2 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   131       { name: "span",   depth: 2 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   132       { name: "iframe", depth: 2 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   133       { name: "span",   depth: 2 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   134       { name: "iframe", depth: 2 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   135       { name: "html",   depth: 3 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   136       { name: "html",   depth: 3 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   137       { name: "head",   depth: 4 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   138       { name: "body",   depth: 4 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   139       { name: "head",   depth: 4 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   140       { name: "body",   depth: 4 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   141       { name: "span",   depth: 5 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   142       { name: "div",    depth: 5 * STACK_THICKNESS, thickness: STACK_THICKNESS },
   143     ];
   145     is(store.nodes.length, expected.length,
   146       "The traverse() function didn't walk the correct number of nodes.");
   147     is(store.info.length, expected.length,
   148       "The traverse() function didn't examine the correct number of nodes.");
   150     for (let i = 0; i < expected.length; i++) {
   151       is(store.info[i].name, expected[i].name,
   152         "traversed node " + (i + 1) + " isn't the expected one.");
   153       is(store.info[i].coord.depth, expected[i].depth,
   154         "traversed node " + (i + 1) + " doesn't have the expected depth.");
   155       is(store.info[i].coord.thickness, expected[i].thickness,
   156         "traversed node " + (i + 1) + " doesn't have the expected thickness.");
   157     }
   158   });
   159 }

mercurial