browser/metro/base/tests/mochitest/browser_selection_textarea.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* vim: set ts=2 et sw=2 tw=80: */
     3 /* Any copyright is dedicated to the Public Domain.
     4    http://creativecommons.org/publicdomain/zero/1.0/ */
     6 "use strict";
     8 let gWindow = null;
     9 var gFrame = null;
    11 const kCommonWaitMs = 5000;
    12 const kCommonPollMs = 100;
    14 ///////////////////////////////////////////////////
    15 // text area tests
    16 ///////////////////////////////////////////////////
    18 function setUpAndTearDown() {
    19   emptyClipboard();
    20   if (gWindow)
    21     clearSelection(gWindow);
    22   if (gFrame)
    23     clearSelection(gFrame);
    24   yield waitForCondition(function () {
    25       return !SelectionHelperUI.isSelectionUIVisible;
    26     }, kCommonWaitMs, kCommonPollMs);
    27   InputSourceHelper.isPrecise = false;
    28   InputSourceHelper.fireUpdate();
    29 }
    31 gTests.push({
    32   desc: "normalize browser",
    33   setUp: setUpAndTearDown,
    34   tearDown: setUpAndTearDown,
    35   run: function test() {
    36     info(chromeRoot + "browser_selection_textarea.html");
    37     yield addTab(chromeRoot + "browser_selection_textarea.html");
    39     yield waitForCondition(function () {
    40       return !BrowserUI.isStartTabVisible;
    41       }, 10000, 100);
    43     yield hideContextUI();
    45     gWindow = Browser.selectedTab.browser.contentWindow;
    46   },
    47 });
    49 gTests.push({
    50   desc: "textarea selection and drag",
    51   setUp: setUpAndTearDown,
    52   tearDown: setUpAndTearDown,
    53   run: function test() {
    54     // work around for buggy context menu display
    55     yield waitForMs(100);
    57     let textarea = gWindow.document.getElementById("inputtext");
    58     textarea.focus();
    60     let promise = waitForEvent(document, "popupshown");
    61     sendContextMenuClickToElement(gWindow, textarea, 20, 10);
    62     yield promise;
    64     checkContextUIMenuItemVisibility(["context-select",
    65                                       "context-select-all"]);
    67     let menuItem = document.getElementById("context-select");
    68     ok(menuItem, "menu item exists");
    69     ok(!menuItem.hidden, "menu item visible");
    70     let popupPromise = waitForEvent(document, "popuphidden");
    71     sendElementTap(gWindow, menuItem);
    72     yield popupPromise;
    73     ok(popupPromise && !(popupPromise instanceof Error), "promise error");
    75     yield waitForCondition(function () {
    76         return SelectionHelperUI.isSelectionUIVisible;
    77       }, kCommonWaitMs, kCommonPollMs);
    79     is(SelectionHelperUI.isActive, true, "selection active");
    80     is(getTrimmedSelection(textarea).toString(), "Alice", "selection test");
    82     let xpos = SelectionHelperUI.endMark.xPos;
    83     let ypos = SelectionHelperUI.endMark.yPos + 10;
    85     var touchdrag = new TouchDragAndHold();
    87     // end marker and off the text area to the right
    88     yield touchdrag.start(gWindow, xpos, ypos, 1200, 400);
    89     let token = "(end)";
    90     yield waitForCondition(function () {
    91       let selection = getTrimmedSelection(textarea).toString();
    92       if (selection.length < token.length ||
    93           selection.substring(selection.length - token.length) != token) {
    94         return false;
    95       }
    96       return true;
    97     }, 5000, 100);
    99     touchdrag.end();
   100     touchdrag = null;
   102     yield waitForCondition(function () {
   103         return !SelectionHelperUI.hasActiveDrag;
   104       }, kCommonWaitMs, kCommonPollMs);
   105     yield SelectionHelperUI.pingSelectionHandler();
   106   },
   107 });
   109 function test() {
   110   if (!isLandscapeMode()) {
   111     todo(false, "browser_selection_tests need landscape mode to run.");
   112     return;
   113   }
   114   runTests();
   115 }

mercurial