browser/devtools/fontinspector/test/browser_fontinspector.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 let tempScope = {};
     5 let {gDevTools} = Cu.import("resource:///modules/devtools/gDevTools.jsm", {});
     6 let {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
     7 let TargetFactory = devtools.TargetFactory;
     9 let DOMUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
    11 function test() {
    12   waitForExplicitFinish();
    14   let doc;
    15   let view;
    16   let viewDoc;
    17   let inspector;
    19   gDevTools.testing = true;
    20   SimpleTest.registerCleanupFunction(() => {
    21     gDevTools.testing = false;
    22   });
    24   gBrowser.selectedTab = gBrowser.addTab();
    25   gBrowser.selectedBrowser.addEventListener("load", function onload() {
    26     gBrowser.selectedBrowser.removeEventListener("load", onload, true);
    27     doc = content.document;
    28     waitForFocus(setupTest, content);
    29   }, true);
    31   content.location = "http://mochi.test:8888/browser/browser/devtools/fontinspector/test/browser_fontinspector.html";
    33   function setupTest() {
    34     let rng = doc.createRange();
    35     rng.selectNode(doc.body);
    36     let fonts = DOMUtils.getUsedFontFaces(rng);
    37     if (fonts.length != 2) {
    38       // Fonts are not loaded yet.
    39       // Let try again in a couple of milliseconds (hacky, but
    40       // there's not better way to do it. See bug 835247).
    41       setTimeout(setupTest, 500);
    42     } else {
    43       let target = TargetFactory.forTab(gBrowser.selectedTab);
    44       gDevTools.showToolbox(target, "inspector").then(function(toolbox) {
    45         openFontInspector(toolbox.getCurrentPanel());
    46       });
    47     }
    48   }
    50   function openFontInspector(aInspector) {
    51     info("Inspector open");
    52     inspector = aInspector;
    54     inspector.selection.setNode(doc.body);
    55     inspector.sidebar.select("fontinspector");
    56     inspector.sidebar.once("fontinspector-ready", testBodyFonts);
    57   }
    59   function testBodyFonts() {
    60     info("Font Inspector ready");
    62     view = inspector.sidebar.getWindowForTab("fontinspector");
    63     viewDoc = view.document;
    65     ok(!!view.fontInspector, "Font inspector document is alive.");
    67     let s = viewDoc.querySelectorAll("#all-fonts > section");
    68     is(s.length, 2, "Found 2 fonts");
    70     is(s[0].querySelector(".font-name").textContent,
    71        "DeLarge Bold", "font 0: Right font name");
    72     ok(s[0].classList.contains("is-remote"),
    73        "font 0: is remote");
    74     is(s[0].querySelector(".font-url").value,
    75        "http://mochi.test:8888/browser/browser/devtools/fontinspector/test/browser_font.woff",
    76        "font 0: right url");
    77     is(s[0].querySelector(".font-format").textContent,
    78        "woff", "font 0: right font format");
    79     is(s[0].querySelector(".font-css-name").textContent,
    80        "bar", "font 0: right css name");
    82     let font1Name = s[1].querySelector(".font-name").textContent;
    83     let font1CssName = s[1].querySelector(".font-css-name").textContent;
    85     // On Linux test machines, the Arial font doesn't exist.
    86     // The fallback is "Liberation Sans"
    88     ok((font1Name == "Arial") || (font1Name == "Liberation Sans"),
    89        "font 1: Right font name");
    90     ok(s[1].classList.contains("is-local"), "font 1: is local");
    91     ok((font1CssName == "Arial") || (font1CssName == "Liberation Sans"),
    92        "Arial", "font 1: right css name");
    94     testDivFonts();
    95   }
    97   function testDivFonts() {
    98     inspector.selection.setNode(doc.querySelector("div"));
    99     inspector.once("inspector-updated", () => {
   100       let s = viewDoc.querySelectorAll("#all-fonts > section");
   101       is(s.length, 1, "Found 1 font on DIV");
   102       is(s[0].querySelector(".font-name").textContent, "DeLarge Bold",
   103         "The DIV font has the right name");
   105       testShowAllFonts();
   106     });
   107   }
   109   function testShowAllFonts() {
   110     viewDoc.querySelector("#showall").click();
   111     inspector.once("inspector-updated", () => {
   112       is(inspector.selection.node, doc.body, "Show all fonts selected the body node");
   113       let s = viewDoc.querySelectorAll("#all-fonts > section");
   114       is(s.length, 2, "And font-inspector still shows 2 fonts for body");
   116       finishUp();
   117     });
   118   }
   120   function finishUp() {
   121     executeSoon(function() {
   122       gDevTools.once("toolbox-destroyed", () => {
   123         doc = view = viewDoc = inspector = null;
   124         gBrowser.removeCurrentTab();
   125         finish();
   126       });
   127       inspector._toolbox.destroy();
   128     });
   129   }
   130 }

mercurial