summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_bug424101.js
blob: 8000d2ae9d5e7bc1b8b84318d4c94e27a91d057a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* Make sure that the context menu appears on form elements */

add_task(function *() {
  yield BrowserTestUtils.openNewForegroundTab(gBrowser, "data:text/html,test");

  let contentAreaContextMenu = document.getElementById("contentAreaContextMenu");

  let tests = [
    { element: "input", type: "text" },
    { element: "input", type: "password" },
    { element: "input", type: "image" },
    { element: "input", type: "button" },
    { element: "input", type: "submit" },
    { element: "input", type: "reset" },
    { element: "input", type: "checkbox" },
    { element: "input", type: "radio" },
    { element: "button" },
    { element: "select" },
    { element: "option" },
    { element: "optgroup" }
  ];

  for (let index = 0; index < tests.length; index++) {
    let test = tests[index];

    yield ContentTask.spawn(gBrowser.selectedBrowser,
                            { element: test.element, type: test.type, index: index },
                            function* (arg) {
      let element = content.document.createElement(arg.element);
      element.id = "element" + arg.index;
      if (arg.type) {
        element.setAttribute("type", arg.type);
      }
      content.document.body.appendChild(element);
    });

    let popupShownPromise = BrowserTestUtils.waitForEvent(contentAreaContextMenu, "popupshown");
    yield BrowserTestUtils.synthesizeMouseAtCenter("#element" + index,
          { type: "contextmenu", button: 2}, gBrowser.selectedBrowser);
    yield popupShownPromise;

    let typeAttr = test.type ? "type=" + test.type + " " : "";
    is(gContextMenu.shouldDisplay, true,
        "context menu behavior for <" + test.element + " " + typeAttr + "> is wrong");

    let popupHiddenPromise = BrowserTestUtils.waitForEvent(contentAreaContextMenu, "popuphidden");
    contentAreaContextMenu.hidePopup();
    yield popupHiddenPromise;
  }

  gBrowser.removeCurrentTab();
});