diff -r 000000000000 -r 6474c204b198 browser/metro/base/tests/mochitest/browser_findbar.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/metro/base/tests/mochitest/browser_findbar.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,132 @@ +/* vim: set ts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +function test() { + runTests(); +} + +gTests.push({ + desc: "Access the find bar with the keyboard", + run: function() { + let tab = yield addTab(chromeRoot + "browser_findbar.html"); + yield waitForCondition(() => BrowserUI.ready); + is(Elements.findbar.isShowing, false, "Find bar is hidden by default"); + + EventUtils.synthesizeKey("f", { accelKey: true }); + yield waitForEvent(Elements.findbar, "transitionend"); + is(Elements.findbar.isShowing, true, "Show find bar with Ctrl-F"); + + let textbox = document.getElementById("findbar-textbox"); + is(textbox.value, "", "Find bar is empty"); + + EventUtils.sendString("bar"); + is(textbox.value, "bar", "Type 'bar' into find bar"); + + EventUtils.synthesizeKey("f", { accelKey: true}); + yield waitForEvent(Elements.findbar, "transitionend"); + ok(document.commandDispatcher.focusedElement, textbox.inputField, "textbox field is focused with Ctrl-F"); + is(textbox.selectionStart, 0, "textbox field is selected with Ctrl-F."); + is(textbox.selectionEnd, textbox.value.length, "textbox field is selected with Ctrl-F."); + + EventUtils.synthesizeKey("VK_ESCAPE", { accelKey: true }); + yield waitForEvent(Elements.findbar, "transitionend"); + is(Elements.findbar.isShowing, false, "Hide find bar with Esc"); + + Browser.closeTab(tab); + } +}); + +gTests.push({ + desc: "Findbar/navbar interaction", + run: function() { + let tab = yield addTab(chromeRoot + "browser_findbar.html"); + yield waitForCondition(() => BrowserUI.ready); + is(ContextUI.navbarVisible, false, "Navbar is hidden by default"); + is(Elements.findbar.isShowing, false, "Find bar is hidden by default"); + + yield showNavBar(); + is(ContextUI.navbarVisible, true, "Navbar is visible"); + is(Elements.findbar.isShowing, false, "Find bar is still hidden"); + + EventUtils.synthesizeKey("f", { accelKey: true }); + yield Promise.all([waitForEvent(Elements.navbar, "transitionend"), + waitForEvent(Elements.findbar, "transitionend")]); + is(ContextUI.navbarVisible, false, "Navbar is hidden"); + is(Elements.findbar.isShowing, true, "Findbar is visible"); + + yield Promise.all([showNavBar(), + waitForEvent(Elements.findbar, "transitionend")]); + is(ContextUI.navbarVisible, true, "Navbar is visible again"); + is(Elements.findbar.isShowing, false, "Find bar is hidden again"); + + Browser.closeTab(tab); + } +}); + + +gTests.push({ + desc: "Show and hide the find bar with mouse", + run: function() { + let tab = yield addTab(chromeRoot + "browser_findbar.html"); + yield waitForCondition(() => BrowserUI.ready); + is(Elements.findbar.isShowing, false, "Find bar is hidden by default"); + + yield showNavBar(); + EventUtils.sendMouseEvent({ type: "click" }, "menu-button"); + EventUtils.sendMouseEvent({ type: "click" }, "context-findinpage"); + yield waitForEvent(Elements.findbar, "transitionend"); + is(Elements.findbar.isShowing, true, "Show find bar with menu item"); + + EventUtils.synthesizeMouse(document.getElementById("findbar-close-button"), 1, 1, {}); + yield waitForEvent(Elements.findbar, "transitionend"); + is(Elements.findbar.isShowing, false, "Hide find bar with close button"); + + Browser.closeTab(tab); + } +}); + +gTests.push({ + desc: "Text at bottom of screen is not obscured by findbar", + run: function() { + let textbox = document.getElementById("findbar-textbox"); + + let tab = yield addTab(chromeRoot + "browser_findbar.html"); + yield waitForCondition(() => BrowserUI.ready); + is(Elements.findbar.isShowing, false, "Find bar is hidden by default"); + + FindHelperUI.show(); + yield waitForCondition(() => FindHelperUI.isActive); + + EventUtils.sendString("bottom"); + let event = yield waitForEvent(window, "MozDeckOffsetChanged"); + ok(!(event instanceof Error), "MozDeckOffsetChanged received (1)"); + ok(event.detail > 0, "Browser deck shifted upward"); + + textbox.select(); + EventUtils.sendString("bar"); + event = yield waitForEvent(window, "MozDeckOffsetChanged"); + ok(!(event instanceof Error), "MozDeckOffsetChanged received (2)"); + is(event.detail, 0, "Browser deck shifted back to normal"); + + textbox.select(); + EventUtils.sendString("bottom"); + event = yield waitForEvent(window, "MozDeckOffsetChanged"); + ok(!(event instanceof Error), "MozDeckOffsetChanged received (3)"); + ok(event.detail > 0, "Browser deck shifted upward again"); + + let waitForDeckOffset = waitForEvent(window, "MozDeckOffsetChanged"); + let waitForTransitionEnd = waitForEvent(Elements.findbar, "transitionend"); + FindHelperUI.hide(); + event = yield waitForDeckOffset; + ok(!(event instanceof Error), "MozDeckOffsetChanged received (4)"); + is(event.detail, 0, "Browser deck shifted back to normal when findbar hides"); + + // Cleanup. + yield waitForTransitionEnd; + Browser.closeTab(tab); + } +});