browser/devtools/inspector/test/browser_inspector_menu.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/ */
     5 function test() {
     7   waitForExplicitFinish();
     9   let doc;
    10   let inspector;
    12   gBrowser.selectedTab = gBrowser.addTab();
    13   gBrowser.selectedBrowser.addEventListener("load", function onload() {
    14     gBrowser.selectedBrowser.removeEventListener("load", onload, true);
    15     doc = content.document;
    16     waitForFocus(setupTest, content);
    17   }, true);
    19   content.location = "http://mochi.test:8888/browser/browser/devtools/" +
    20                      "inspector/test/browser_inspector_menu.html";
    22   function setupTest() {
    23     openInspector(runTests);
    24   }
    26   function runTests(aInspector) {
    27     inspector = aInspector;
    28     checkDocTypeMenuItems();
    29   }
    31   function checkDocTypeMenuItems() {
    32     info("Checking context menu entries for doctype node");
    33     inspector.selection.setNode(doc.doctype);
    34     inspector.once("inspector-updated", () => {
    35       let docTypeNode = getMarkupTagNodeContaining("<!DOCTYPE html>");
    37       // Right-click doctype tag
    38       contextMenuClick(docTypeNode);
    40       checkDisabled("node-menu-copyinner");
    41       checkDisabled("node-menu-copyouter");
    42       checkDisabled("node-menu-copyuniqueselector");
    43       checkDisabled("node-menu-delete");
    45       for (let name of ["hover", "active", "focus"]) {
    46         checkDisabled("node-menu-pseudo-" + name);
    47       }
    49       checkElementMenuItems();
    50     });
    51   }
    53   function checkElementMenuItems() {
    54     info("Checking context menu entries for p tag");
    55     inspector.selection.setNode(doc.querySelector("p"));
    56     inspector.once("inspector-updated", () => {
    57       let tag = getMarkupTagNodeContaining("p");
    59       // Right-click p tag
    60       contextMenuClick(tag);
    62       checkEnabled("node-menu-copyinner");
    63       checkEnabled("node-menu-copyouter");
    64       checkEnabled("node-menu-copyuniqueselector");
    65       checkEnabled("node-menu-delete");
    67       for (let name of ["hover", "active", "focus"]) {
    68         checkEnabled("node-menu-pseudo-" + name);
    69       }
    71       testCopyInnerMenu();
    72     });
    73   }
    75   function testCopyInnerMenu() {
    76     let copyInner = inspector.panelDoc.getElementById("node-menu-copyinner");
    77     ok(copyInner, "the popup menu has a copy inner html menu item");
    79     waitForClipboard("This is some example text",
    80                      function() { copyInner.doCommand(); },
    81                      testCopyOuterMenu, testCopyOuterMenu);
    82   }
    84   function testCopyOuterMenu() {
    85     let copyOuter = inspector.panelDoc.getElementById("node-menu-copyouter");
    86     ok(copyOuter, "the popup menu has a copy outer html menu item");
    88     waitForClipboard("<p>This is some example text</p>",
    89                      function() { copyOuter.doCommand(); },
    90                      testCopyUniqueSelectorMenu, testCopyUniqueSelectorMenu);
    91   }
    93   function testCopyUniqueSelectorMenu() {
    94     let copyUniqueSelector = inspector.panelDoc.getElementById("node-menu-copyuniqueselector");
    95     ok(copyUniqueSelector, "the popup menu has a copy unique selector menu item");
    97     waitForClipboard("body > div:nth-child(1) > p:nth-child(2)",
    98                      function() { copyUniqueSelector.doCommand(); },
    99                      testDeleteNode, testDeleteNode);
   100   }
   102   function testDeleteNode() {
   103     let deleteNode = inspector.panelDoc.getElementById("node-menu-delete");
   104     ok(deleteNode, "the popup menu has a delete menu item");
   106     inspector.once("inspector-updated", deleteTest);
   108     let commandEvent = document.createEvent("XULCommandEvent");
   109     commandEvent.initCommandEvent("command", true, true, window, 0, false, false,
   110                                   false, false, null);
   111     deleteNode.dispatchEvent(commandEvent);
   112   }
   114   function deleteTest() {
   115     let p = doc.querySelector("P");
   116     is(p, null, "node deleted");
   118     deleteRootNode();
   119   }
   121   function deleteRootNode() {
   122     inspector.selection.setNode(doc.documentElement);
   124     inspector.once("inspector-updated", () => {
   125       let deleteNode = inspector.panelDoc.getElementById("node-menu-delete");
   126       let commandEvent = inspector.panelDoc.createEvent("XULCommandEvent");
   127       commandEvent.initCommandEvent("command", true, true, window, 0, false, false,
   128                                     false, false, null);
   129       deleteNode.dispatchEvent(commandEvent);
   130       executeSoon(isRootStillAlive);
   131     });
   132   }
   134   function isRootStillAlive() {
   135     ok(doc.documentElement, "Document element still alive.");
   136     gBrowser.removeCurrentTab();
   137     finish();
   138   }
   140   function getMarkupTagNodeContaining(text) {
   141     let tags = inspector._markupFrame.contentDocument.querySelectorAll("span");
   142     for (let tag of tags) {
   143       if (tag.textContent == text) {
   144         return tag;
   145       }
   146     }
   147   }
   149   function checkEnabled(elementId) {
   150     let elt = inspector.panelDoc.getElementById(elementId);
   151     ok(!elt.hasAttribute("disabled"),
   152       '"' + elt.label + '" context menu option is not disabled');
   153   }
   155   function checkDisabled(elementId) {
   156     let elt = inspector.panelDoc.getElementById(elementId);
   157     ok(elt.hasAttribute("disabled"),
   158       '"' + elt.label + '" context menu option is disabled');
   159   }
   161   function contextMenuClick(element) {
   162     let evt = element.ownerDocument.createEvent('MouseEvents');
   163     let button = 2;  // right click
   165     evt.initMouseEvent('contextmenu', true, true,
   166          element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false,
   167          false, false, false, button, null);
   169     element.dispatchEvent(evt);
   170   }
   171 }

mercurial