browser/components/search/test/browser_contextmenu.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/ */
     3 /*
     4  * Test searching for the selected text using the context menu
     5  */
     7 function test() {
     8   waitForExplicitFinish();
    10   const ss = Services.search;
    11   const ENGINE_NAME = "Foo";
    12   var contextMenu;
    14   function observer(aSub, aTopic, aData) {
    15     switch (aData) {
    16       case "engine-added":
    17         var engine = ss.getEngineByName(ENGINE_NAME);
    18         ok(engine, "Engine was added.");
    19         ss.currentEngine = engine;
    20         break;
    21       case "engine-current":
    22         is(ss.currentEngine.name, ENGINE_NAME, "currentEngine set");
    23         startTest();
    24         break;
    25       case "engine-removed":
    26         Services.obs.removeObserver(observer, "browser-search-engine-modified");
    27         finish();
    28         break;
    29     }
    30   }
    32   Services.obs.addObserver(observer, "browser-search-engine-modified", false);
    33   ss.addEngine("http://mochi.test:8888/browser/browser/components/search/test/testEngine_mozsearch.xml",
    34                Ci.nsISearchEngine.DATA_XML, "data:image/x-icon,%00",
    35                false);
    37   function startTest() {
    38     contextMenu = document.getElementById("contentAreaContextMenu");
    39     ok(contextMenu, "Got context menu XUL");
    41     doOnloadOnce(testContextMenu);
    42     let tab = gBrowser.selectedTab = gBrowser.addTab("data:text/plain;charset=utf8,test%20search");
    43     registerCleanupFunction(function () {
    44       gBrowser.removeTab(tab);
    45     });
    46   }
    48   function testContextMenu() {
    49     function rightClickOnDocument() {
    50       info("rightClickOnDocument: " + content.window.location);
    51       waitForBrowserContextMenu(checkContextMenu);
    52       var clickTarget = content.document.body;
    53       var eventDetails = { type: "contextmenu", button: 2 };
    54       EventUtils.synthesizeMouseAtCenter(clickTarget, eventDetails, content);
    55     }
    57     // check the search menu item and then perform a search
    58     function checkContextMenu() {
    59       info("checkContextMenu");
    60       var searchItem = contextMenu.getElementsByAttribute("id", "context-searchselect")[0];
    61       ok(searchItem, "Got search context menu item");
    62       is(searchItem.label, 'Search ' + ENGINE_NAME + ' for "test search"', "Check context menu label");
    63       is(searchItem.disabled, false, "Check that search context menu item is enabled");
    64       doOnloadOnce(checkSearchURL);
    65       searchItem.click();
    66       contextMenu.hidePopup();
    67     }
    69     function checkSearchURL(event) {
    70       is(event.originalTarget.URL,
    71          "http://mochi.test:8888/browser/browser/components/search/test/?test=test+search&ie=utf-8&client=app&channel=contextsearch",
    72          "Checking context menu search URL");
    73       // Remove the tab opened by the search
    74       gBrowser.removeCurrentTab();
    75       ss.removeEngine(ss.currentEngine);
    76     }
    78     var selectionListener = {
    79       notifySelectionChanged: function(doc, sel, reason) {
    80         if (reason != Ci.nsISelectionListener.SELECTALL_REASON || sel.toString() != "test search")
    81           return;
    82         info("notifySelectionChanged: Text selected");
    83         content.window.getSelection().QueryInterface(Ci.nsISelectionPrivate).
    84                                       removeSelectionListener(selectionListener);
    85         SimpleTest.executeSoon(rightClickOnDocument);
    86       }
    87     };
    89     // Delay the select all to avoid intermittent selection failures.
    90     setTimeout(function delaySelectAll() {
    91       info("delaySelectAll: " + content.window.location.toString());
    92       // add a listener to know when the selection takes effect
    93       content.window.getSelection().QueryInterface(Ci.nsISelectionPrivate).
    94                                     addSelectionListener(selectionListener);
    95       // select the text on the page
    96       goDoCommand('cmd_selectAll');
    97     }, 500);
    98   }
    99 }

mercurial