From 0ddd00f1959c78ce37c14fef3c83401408fca3bf Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Tue, 25 Feb 2020 15:07:00 -0500 Subject: Issue #439 - Remove tests from toolkit/ --- toolkit/components/narrate/moz.build | 2 - toolkit/components/narrate/test/.eslintrc.js | 23 -- .../components/narrate/test/NarrateTestUtils.jsm | 148 ------------- toolkit/components/narrate/test/browser.ini | 12 -- toolkit/components/narrate/test/browser_narrate.js | 137 ------------ .../narrate/test/browser_narrate_disable.js | 37 ---- .../narrate/test/browser_narrate_language.js | 73 ------- .../components/narrate/test/browser_voiceselect.js | 112 ---------- .../narrate/test/browser_word_highlight.js | 69 ------ toolkit/components/narrate/test/head.js | 87 -------- toolkit/components/narrate/test/inferno.html | 238 --------------------- toolkit/components/narrate/test/moby_dick.html | 218 ------------------- 12 files changed, 1156 deletions(-) delete mode 100644 toolkit/components/narrate/test/.eslintrc.js delete mode 100644 toolkit/components/narrate/test/NarrateTestUtils.jsm delete mode 100644 toolkit/components/narrate/test/browser.ini delete mode 100644 toolkit/components/narrate/test/browser_narrate.js delete mode 100644 toolkit/components/narrate/test/browser_narrate_disable.js delete mode 100644 toolkit/components/narrate/test/browser_narrate_language.js delete mode 100644 toolkit/components/narrate/test/browser_voiceselect.js delete mode 100644 toolkit/components/narrate/test/browser_word_highlight.js delete mode 100644 toolkit/components/narrate/test/head.js delete mode 100644 toolkit/components/narrate/test/inferno.html delete mode 100644 toolkit/components/narrate/test/moby_dick.html (limited to 'toolkit/components/narrate') diff --git a/toolkit/components/narrate/moz.build b/toolkit/components/narrate/moz.build index c5597c369..bd2d298b6 100644 --- a/toolkit/components/narrate/moz.build +++ b/toolkit/components/narrate/moz.build @@ -9,5 +9,3 @@ EXTRA_JS_MODULES.narrate = [ 'Narrator.jsm', 'VoiceSelect.jsm' ] - -BROWSER_CHROME_MANIFESTS += ['test/browser.ini'] diff --git a/toolkit/components/narrate/test/.eslintrc.js b/toolkit/components/narrate/test/.eslintrc.js deleted file mode 100644 index 5ff0bae7e..000000000 --- a/toolkit/components/narrate/test/.eslintrc.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -module.exports = { // eslint-disable-line no-undef - "extends": [ - "../.eslintrc.js" - ], - - "globals": { - "is": true, - "isnot": true, - "ok": true, - "NarrateTestUtils": true, - "content": true, - "ContentTaskUtils": true, - "ContentTask": true, - "BrowserTestUtils": true, - "gBrowser": true, - }, - - "rules": { - "mozilla/import-headjs-globals": "warn" - } -}; diff --git a/toolkit/components/narrate/test/NarrateTestUtils.jsm b/toolkit/components/narrate/test/NarrateTestUtils.jsm deleted file mode 100644 index b782f66c9..000000000 --- a/toolkit/components/narrate/test/NarrateTestUtils.jsm +++ /dev/null @@ -1,148 +0,0 @@ -/* 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"; - -const Cu = Components.utils; -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/Preferences.jsm"); -Cu.import("resource://testing-common/ContentTaskUtils.jsm"); - -this.EXPORTED_SYMBOLS = [ "NarrateTestUtils" ]; - -this.NarrateTestUtils = { - TOGGLE: "#narrate-toggle", - POPUP: "#narrate-dropdown .dropdown-popup", - VOICE_SELECT: "#narrate-voices .select-toggle", - VOICE_OPTIONS: "#narrate-voices .options", - VOICE_SELECTED: "#narrate-voices .options .option.selected", - VOICE_SELECT_LABEL: "#narrate-voices .select-toggle .current-voice", - RATE: "#narrate-rate-input", - START: "#narrate-dropdown:not(.speaking) #narrate-start-stop", - STOP: "#narrate-dropdown.speaking #narrate-start-stop", - BACK: "#narrate-skip-previous", - FORWARD: "#narrate-skip-next", - - isVisible: function(element) { - let style = element.ownerDocument.defaultView.getComputedStyle(element, ""); - if (style.display == "none") { - return false; - } else if (style.visibility != "visible") { - return false; - } else if (style.display == "-moz-popup" && element.state != "open") { - return false; - } - - // Hiding a parent element will hide all its children - if (element.parentNode != element.ownerDocument) { - return this.isVisible(element.parentNode); - } - - return true; - }, - - isStoppedState: function(window, ok) { - let $ = window.document.querySelector.bind(window.document); - ok($(this.BACK).disabled, "back button is disabled"); - ok($(this.FORWARD).disabled, "forward button is disabled"); - ok(!!$(this.START), "start button is showing"); - ok(!$(this.STOP), "stop button is hidden"); - // This checks for a localized label. Not the best... - ok($(this.START).title == "Start", "Button tooltip is correct"); - }, - - isStartedState: function(window, ok) { - let $ = window.document.querySelector.bind(window.document); - ok(!$(this.BACK).disabled, "back button is enabled"); - ok(!$(this.FORWARD).disabled, "forward button is enabled"); - ok(!$(this.START), "start button is hidden"); - ok(!!$(this.STOP), "stop button is showing"); - // This checks for a localized label. Not the best... - ok($(this.STOP).title == "Stop", "Button tooltip is correct"); - }, - - selectVoice: function(window, voiceUri) { - if (!this.isVisible(window.document.querySelector(this.VOICE_OPTIONS))) { - window.document.querySelector(this.VOICE_SELECT).click(); - } - - let voiceOption = window.document.querySelector( - `#narrate-voices .option[data-value="${voiceUri}"]`); - - voiceOption.focus(); - voiceOption.click(); - - return voiceOption.classList.contains("selected"); - }, - - getEventUtils: function(window) { - let eventUtils = { - "_EU_Ci": Components.interfaces, - "_EU_Cc": Components.classes, - window: window, - parent: window, - navigator: window.navigator, - KeyboardEvent: window.KeyboardEvent, - KeyEvent: window.KeyEvent - }; - Services.scriptloader.loadSubScript( - "chrome://mochikit/content/tests/SimpleTest/EventUtils.js", eventUtils); - return eventUtils; - }, - - getReaderReadyPromise: function(window) { - return new Promise(resolve => { - function observeReady(subject, topic) { - if (subject == window) { - Services.obs.removeObserver(observeReady, topic); - resolve(); - } - } - - if (window.document.body.classList.contains("loaded")) { - resolve(); - } else { - Services.obs.addObserver(observeReady, "AboutReader:Ready", false); - } - }); - }, - - waitForNarrateToggle: function(window) { - let toggle = window.document.querySelector(this.TOGGLE); - return ContentTaskUtils.waitForCondition( - () => !toggle.hidden, ""); - }, - - waitForPrefChange: function(pref) { - return new Promise(resolve => { - function observeChange() { - Services.prefs.removeObserver(pref, observeChange); - resolve(Preferences.get(pref)); - } - - Services.prefs.addObserver(pref, observeChange, false); - }); - }, - - sendBoundaryEvent: function(window, name, charIndex) { - let detail = { type: "boundary", args: { name, charIndex } }; - window.dispatchEvent(new window.CustomEvent("testsynthevent", - { detail: detail })); - }, - - isWordHighlightGone: function(window, ok) { - let $ = window.document.querySelector.bind(window.document); - ok(!$(".narrate-word-highlight"), "No more word highlights exist"); - }, - - getWordHighlights: function(window) { - let $$ = window.document.querySelectorAll.bind(window.document); - let nodes = Array.from($$(".narrate-word-highlight")); - return nodes.map(node => { - return { word: node.dataset.word, - left: Number(node.style.left.replace(/px$/, "")), - top: Number(node.style.top.replace(/px$/, ""))}; - }); - } -}; diff --git a/toolkit/components/narrate/test/browser.ini b/toolkit/components/narrate/test/browser.ini deleted file mode 100644 index 0f5d694ac..000000000 --- a/toolkit/components/narrate/test/browser.ini +++ /dev/null @@ -1,12 +0,0 @@ -[DEFAULT] -support-files = - head.js - NarrateTestUtils.jsm - moby_dick.html - -[browser_narrate.js] -[browser_narrate_disable.js] -[browser_narrate_language.js] -support-files = inferno.html -[browser_voiceselect.js] -[browser_word_highlight.js] diff --git a/toolkit/components/narrate/test/browser_narrate.js b/toolkit/components/narrate/test/browser_narrate.js deleted file mode 100644 index b4951ef9f..000000000 --- a/toolkit/components/narrate/test/browser_narrate.js +++ /dev/null @@ -1,137 +0,0 @@ -/* 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/. */ - -/* globals is, isnot, registerCleanupFunction, add_task */ - -"use strict"; - -registerCleanupFunction(teardown); - -add_task(function* testNarrate() { - setup(); - - yield spawnInNewReaderTab(TEST_ARTICLE, function* () { - let TEST_VOICE = "urn:moz-tts:fake-indirect:teresa"; - let $ = content.document.querySelector.bind(content.document); - - yield NarrateTestUtils.waitForNarrateToggle(content); - - let popup = $(NarrateTestUtils.POPUP); - ok(!NarrateTestUtils.isVisible(popup), "popup is initially hidden"); - - let toggle = $(NarrateTestUtils.TOGGLE); - toggle.click(); - - ok(NarrateTestUtils.isVisible(popup), "popup toggled"); - - let voiceOptions = $(NarrateTestUtils.VOICE_OPTIONS); - ok(!NarrateTestUtils.isVisible(voiceOptions), - "voice options are initially hidden"); - - $(NarrateTestUtils.VOICE_SELECT).click(); - ok(NarrateTestUtils.isVisible(voiceOptions), "voice options pop up"); - - let prefChanged = NarrateTestUtils.waitForPrefChange("narrate.voice"); - ok(NarrateTestUtils.selectVoice(content, TEST_VOICE), - "test voice selected"); - yield prefChanged; - - ok(!NarrateTestUtils.isVisible(voiceOptions), "voice options hidden again"); - - NarrateTestUtils.isStoppedState(content, ok); - - let promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart"); - $(NarrateTestUtils.START).click(); - let speechinfo = (yield promiseEvent).detail; - is(speechinfo.voice, TEST_VOICE, "correct voice is being used"); - let paragraph = speechinfo.paragraph; - - NarrateTestUtils.isStartedState(content, ok); - - promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart"); - $(NarrateTestUtils.FORWARD).click(); - speechinfo = (yield promiseEvent).detail; - is(speechinfo.voice, TEST_VOICE, "same voice is used"); - isnot(speechinfo.paragraph, paragraph, "next paragraph is being spoken"); - - NarrateTestUtils.isStartedState(content, ok); - - promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart"); - $(NarrateTestUtils.BACK).click(); - speechinfo = (yield promiseEvent).detail; - is(speechinfo.paragraph, paragraph, "first paragraph being spoken"); - - NarrateTestUtils.isStartedState(content, ok); - - paragraph = speechinfo.paragraph; - $(NarrateTestUtils.STOP).click(); - yield ContentTaskUtils.waitForCondition( - () => !$(NarrateTestUtils.STOP), "transitioned to stopped state"); - NarrateTestUtils.isStoppedState(content, ok); - - promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart"); - $(NarrateTestUtils.START).click(); - speechinfo = (yield promiseEvent).detail; - is(speechinfo.paragraph, paragraph, "read same paragraph again"); - - NarrateTestUtils.isStartedState(content, ok); - - let eventUtils = NarrateTestUtils.getEventUtils(content); - - promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart"); - prefChanged = NarrateTestUtils.waitForPrefChange("narrate.rate"); - $(NarrateTestUtils.RATE).focus(); - eventUtils.sendKey("UP", content); - let newspeechinfo = (yield promiseEvent).detail; - is(newspeechinfo.paragraph, speechinfo.paragraph, "same paragraph"); - isnot(newspeechinfo.rate, speechinfo.rate, "rate changed"); - yield prefChanged; - - promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphend"); - $(NarrateTestUtils.STOP).click(); - yield promiseEvent; - - yield ContentTaskUtils.waitForCondition( - () => !$(NarrateTestUtils.STOP), "transitioned to stopped state"); - NarrateTestUtils.isStoppedState(content, ok); - - promiseEvent = ContentTaskUtils.waitForEvent(content, "scroll"); - content.scrollBy(0, 10); - yield promiseEvent; - ok(!NarrateTestUtils.isVisible(popup), "popup is hidden after scroll"); - - toggle.click(); - ok(NarrateTestUtils.isVisible(popup), "popup is toggled again"); - - promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart"); - $(NarrateTestUtils.START).click(); - yield promiseEvent; - NarrateTestUtils.isStartedState(content, ok); - - promiseEvent = ContentTaskUtils.waitForEvent(content, "scroll"); - content.scrollBy(0, -10); - yield promiseEvent; - ok(NarrateTestUtils.isVisible(popup), "popup stays visible after scroll"); - - toggle.click(); - ok(!NarrateTestUtils.isVisible(popup), "popup is dismissed while speaking"); - NarrateTestUtils.isStartedState(content, ok); - - // Go forward all the way to the end of the article. We should eventually - // stop. - do { - promiseEvent = Promise.race([ - ContentTaskUtils.waitForEvent(content, "paragraphstart"), - ContentTaskUtils.waitForEvent(content, "paragraphsdone")]); - $(NarrateTestUtils.FORWARD).click(); - } while ((yield promiseEvent).type == "paragraphstart"); - - // This is to make sure we are not actively scrolling when the tab closes. - content.scroll(0, 0); - - yield ContentTaskUtils.waitForCondition( - () => !$(NarrateTestUtils.STOP), "transitioned to stopped state"); - NarrateTestUtils.isStoppedState(content, ok); - }); -}); diff --git a/toolkit/components/narrate/test/browser_narrate_disable.js b/toolkit/components/narrate/test/browser_narrate_disable.js deleted file mode 100644 index 264815fd1..000000000 --- a/toolkit/components/narrate/test/browser_narrate_disable.js +++ /dev/null @@ -1,37 +0,0 @@ -/* 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/. */ - -/* globals registerCleanupFunction, add_task */ - -"use strict"; - -const ENABLE_PREF = "narrate.enabled"; - -registerCleanupFunction(() => { - clearUserPref(ENABLE_PREF); - teardown(); -}); - -add_task(function* testNarratePref() { - setup(); - - yield spawnInNewReaderTab(TEST_ARTICLE, function() { - is(content.document.querySelectorAll(NarrateTestUtils.TOGGLE).length, 1, - "narrate is inserted by default"); - }); - - setBoolPref(ENABLE_PREF, false); - - yield spawnInNewReaderTab(TEST_ARTICLE, function() { - ok(!content.document.querySelector(NarrateTestUtils.TOGGLE), - "narrate is disabled and is not in reader mode"); - }); - - setBoolPref(ENABLE_PREF, true); - - yield spawnInNewReaderTab(TEST_ARTICLE, function() { - is(content.document.querySelectorAll(NarrateTestUtils.TOGGLE).length, 1, - "narrate is re-enabled and appears only once"); - }); -}); diff --git a/toolkit/components/narrate/test/browser_narrate_language.js b/toolkit/components/narrate/test/browser_narrate_language.js deleted file mode 100644 index 2542a87d6..000000000 --- a/toolkit/components/narrate/test/browser_narrate_language.js +++ /dev/null @@ -1,73 +0,0 @@ -/* 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/. */ - -/* globals is, isnot, registerCleanupFunction, add_task */ - -"use strict"; - -registerCleanupFunction(teardown); - -add_task(function* testVoiceselectDropdownAutoclose() { - setup("automatic", true); - - yield spawnInNewReaderTab(TEST_ARTICLE, function* () { - let $ = content.document.querySelector.bind(content.document); - - yield NarrateTestUtils.waitForNarrateToggle(content); - - ok(!!$(".option[data-value='urn:moz-tts:fake-direct:bob']"), - "Jamaican English voice available"); - ok(!!$(".option[data-value='urn:moz-tts:fake-direct:lenny']"), - "Canadian English voice available"); - ok(!!$(".option[data-value='urn:moz-tts:fake-direct:amy']"), - "British English voice available"); - - ok(!$(".option[data-value='urn:moz-tts:fake-direct:celine']"), - "Canadian French voice unavailable"); - ok(!$(".option[data-value='urn:moz-tts:fake-direct:julie']"), - "Mexican Spanish voice unavailable"); - - $(NarrateTestUtils.TOGGLE).click(); - ok(NarrateTestUtils.isVisible($(NarrateTestUtils.POPUP)), - "popup is toggled"); - - let prefChanged = NarrateTestUtils.waitForPrefChange( - "narrate.voice", "getCharPref"); - NarrateTestUtils.selectVoice(content, "urn:moz-tts:fake-direct:lenny"); - let voicePref = JSON.parse(yield prefChanged); - is(voicePref.en, "urn:moz-tts:fake-direct:lenny", "pref set correctly"); - }); -}); - -add_task(function* testVoiceselectDropdownAutoclose() { - setup("automatic", true); - - yield spawnInNewReaderTab(TEST_ITALIAN_ARTICLE, function* () { - let $ = content.document.querySelector.bind(content.document); - - yield NarrateTestUtils.waitForNarrateToggle(content); - - ok(!!$(".option[data-value='urn:moz-tts:fake-indirect:zanetta']"), - "Italian voice available"); - ok(!!$(".option[data-value='urn:moz-tts:fake-indirect:margherita']"), - "Italian voice available"); - - ok(!$(".option[data-value='urn:moz-tts:fake-direct:bob']"), - "Jamaican English voice available"); - ok(!$(".option[data-value='urn:moz-tts:fake-direct:celine']"), - "Canadian French voice unavailable"); - ok(!$(".option[data-value='urn:moz-tts:fake-direct:julie']"), - "Mexican Spanish voice unavailable"); - - $(NarrateTestUtils.TOGGLE).click(); - ok(NarrateTestUtils.isVisible($(NarrateTestUtils.POPUP)), - "popup is toggled"); - - let prefChanged = NarrateTestUtils.waitForPrefChange( - "narrate.voice", "getCharPref"); - NarrateTestUtils.selectVoice(content, "urn:moz-tts:fake-indirect:zanetta"); - let voicePref = JSON.parse(yield prefChanged); - is(voicePref.it, "urn:moz-tts:fake-indirect:zanetta", "pref set correctly"); - }); -}); diff --git a/toolkit/components/narrate/test/browser_voiceselect.js b/toolkit/components/narrate/test/browser_voiceselect.js deleted file mode 100644 index 0de6528dd..000000000 --- a/toolkit/components/narrate/test/browser_voiceselect.js +++ /dev/null @@ -1,112 +0,0 @@ -/* 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/. */ - -/* globals registerCleanupFunction, add_task, is, isnot */ - -"use strict"; - -registerCleanupFunction(teardown); - -add_task(function* testVoiceselectDropdownAutoclose() { - setup(); - - yield spawnInNewReaderTab(TEST_ARTICLE, function* () { - let $ = content.document.querySelector.bind(content.document); - - yield NarrateTestUtils.waitForNarrateToggle(content); - - $(NarrateTestUtils.TOGGLE).click(); - ok(NarrateTestUtils.isVisible($(NarrateTestUtils.POPUP)), - "popup is toggled"); - - ok(!NarrateTestUtils.isVisible($(NarrateTestUtils.VOICE_OPTIONS)), - "voice options are initially hidden"); - - $(NarrateTestUtils.VOICE_SELECT).click(); - ok(NarrateTestUtils.isVisible($(NarrateTestUtils.VOICE_OPTIONS)), - "voice options are toggled"); - - $(NarrateTestUtils.TOGGLE).click(); - // A focus will follow a real click. - $(NarrateTestUtils.TOGGLE).focus(); - ok(!NarrateTestUtils.isVisible($(NarrateTestUtils.POPUP)), - "narrate popup is dismissed"); - - $(NarrateTestUtils.TOGGLE).click(); - // A focus will follow a real click. - $(NarrateTestUtils.TOGGLE).focus(); - ok(NarrateTestUtils.isVisible($(NarrateTestUtils.POPUP)), - "narrate popup is showing again"); - ok(!NarrateTestUtils.isVisible($(NarrateTestUtils.VOICE_OPTIONS)), - "voice options are hidden after popup comes back"); - }); -}); - -add_task(function* testVoiceselectLabelChange() { - setup(); - - yield spawnInNewReaderTab(TEST_ARTICLE, function* () { - let $ = content.document.querySelector.bind(content.document); - - yield NarrateTestUtils.waitForNarrateToggle(content); - - $(NarrateTestUtils.TOGGLE).click(); - ok(NarrateTestUtils.isVisible($(NarrateTestUtils.POPUP)), - "popup is toggled"); - - ok(NarrateTestUtils.selectVoice(content, "urn:moz-tts:fake-direct:lenny"), - "voice selected"); - - let selectedOption = $(NarrateTestUtils.VOICE_SELECTED); - let selectLabel = $(NarrateTestUtils.VOICE_SELECT_LABEL); - - is(selectedOption.textContent, selectLabel.textContent, - "new label matches selected voice"); - }); -}); - -add_task(function* testVoiceselectKeyboard() { - setup(); - - yield spawnInNewReaderTab(TEST_ARTICLE, function* () { - let $ = content.document.querySelector.bind(content.document); - - yield NarrateTestUtils.waitForNarrateToggle(content); - - $(NarrateTestUtils.TOGGLE).click(); - ok(NarrateTestUtils.isVisible($(NarrateTestUtils.POPUP)), - "popup is toggled"); - - let eventUtils = NarrateTestUtils.getEventUtils(content); - - let firstValue = $(NarrateTestUtils.VOICE_SELECTED).dataset.value; - - ok(!NarrateTestUtils.isVisible($(NarrateTestUtils.VOICE_OPTIONS)), - "voice options initially are hidden"); - - $(NarrateTestUtils.VOICE_SELECT).focus(); - - eventUtils.sendKey("DOWN", content); - - yield ContentTaskUtils.waitForCondition( - () => $(NarrateTestUtils.VOICE_SELECTED).dataset.value != firstValue, - "value changed after pressing DOWN key"); - - eventUtils.sendKey("RETURN", content); - - ok(NarrateTestUtils.isVisible($(NarrateTestUtils.VOICE_OPTIONS)), - "voice options showing after pressing RETURN"); - - eventUtils.sendKey("UP", content); - - eventUtils.sendKey("RETURN", content); - - ok(!NarrateTestUtils.isVisible($(NarrateTestUtils.VOICE_OPTIONS)), - "voice options hidden after pressing RETURN"); - - yield ContentTaskUtils.waitForCondition( - () => $(NarrateTestUtils.VOICE_SELECTED).dataset.value == firstValue, - "value changed back to original after pressing RETURN"); - }); -}); diff --git a/toolkit/components/narrate/test/browser_word_highlight.js b/toolkit/components/narrate/test/browser_word_highlight.js deleted file mode 100644 index bfdbcf48e..000000000 --- a/toolkit/components/narrate/test/browser_word_highlight.js +++ /dev/null @@ -1,69 +0,0 @@ -/* 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/. */ - -/* globals is, isnot, registerCleanupFunction, add_task */ - -"use strict"; - -registerCleanupFunction(teardown); - -add_task(function* testNarrate() { - setup("urn:moz-tts:fake-indirect:teresa"); - - yield spawnInNewReaderTab(TEST_ARTICLE, function* () { - let $ = content.document.querySelector.bind(content.document); - - yield NarrateTestUtils.waitForNarrateToggle(content); - - let popup = $(NarrateTestUtils.POPUP); - ok(!NarrateTestUtils.isVisible(popup), "popup is initially hidden"); - - let toggle = $(NarrateTestUtils.TOGGLE); - toggle.click(); - - ok(NarrateTestUtils.isVisible(popup), "popup toggled"); - - NarrateTestUtils.isStoppedState(content, ok); - - let promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart"); - $(NarrateTestUtils.START).click(); - let voice = (yield promiseEvent).detail.voice; - is(voice, "urn:moz-tts:fake-indirect:teresa", "double-check voice"); - - // Skip forward to first paragraph. - let details; - do { - promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart"); - $(NarrateTestUtils.FORWARD).click(); - details = (yield promiseEvent).detail; - } while (details.tag != "p"); - - let boundaryPat = /(\s+)\S/g; - let position = { left: 0, top: 0 }; - let text = details.paragraph; - for (let res = boundaryPat.exec(text); res; res = boundaryPat.exec(text)) { - promiseEvent = ContentTaskUtils.waitForEvent(content, "wordhighlight"); - NarrateTestUtils.sendBoundaryEvent(content, "word", res.index); - let { start, end } = (yield promiseEvent).detail; - let nodes = NarrateTestUtils.getWordHighlights(content); - for (let node of nodes) { - // Since this is English we can assume each word is to the right or - // below the previous one. - ok(node.left > position.left || node.top > position.top, - "highlight position is moving"); - position = { left: node.left, top: node.top }; - } - let wordFromOffset = text.substring(start, end); - // XXX: Each node should contain the part of the word it highlights. - // Right now, each node contains the entire word. - let wordFromHighlight = nodes[0].word; - is(wordFromOffset, wordFromHighlight, "Correct word is highlighted"); - } - - $(NarrateTestUtils.STOP).click(); - yield ContentTaskUtils.waitForCondition( - () => !$(NarrateTestUtils.STOP), "transitioned to stopped state"); - NarrateTestUtils.isWordHighlightGone(content, ok); - }); -}); diff --git a/toolkit/components/narrate/test/head.js b/toolkit/components/narrate/test/head.js deleted file mode 100644 index 491a3da8d..000000000 --- a/toolkit/components/narrate/test/head.js +++ /dev/null @@ -1,87 +0,0 @@ -/* 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/. */ - -/* exported teardown, setup, toggleExtension, - spawnInNewReaderTab, TEST_ARTICLE, TEST_ITALIAN_ARTICLE */ - -"use strict"; - -const TEST_ARTICLE = - "http://example.com/browser/toolkit/components/narrate/test/moby_dick.html"; - -const TEST_ITALIAN_ARTICLE = - "http://example.com/browser/toolkit/components/narrate/test/inferno.html"; - -Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); - -XPCOMUtils.defineLazyModuleGetter(this, "Promise", - "resource://gre/modules/Promise.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "Services", - "resource://gre/modules/Services.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "AddonManager", - "resource://gre/modules/AddonManager.jsm"); - -const TEST_PREFS = { - "reader.parse-on-load.enabled": true, - "media.webspeech.synth.enabled": true, - "media.webspeech.synth.test": true, - "narrate.enabled": true, - "narrate.test": true, - "narrate.voice": null, - "narrate.filter-voices": false, -}; - -function setup(voiceUri = "automatic", filterVoices = false) { - let prefs = Object.assign({}, TEST_PREFS, { - "narrate.filter-voices": filterVoices, - "narrate.voice": JSON.stringify({ en: voiceUri }) - }); - - // Set required test prefs. - Object.entries(prefs).forEach(([name, value]) => { - switch (typeof value) { - case "boolean": - setBoolPref(name, value); - break; - case "string": - setCharPref(name, value); - break; - } - }); -} - -function teardown() { - // Reset test prefs. - Object.entries(TEST_PREFS).forEach(pref => { - clearUserPref(pref[0]); - }); -} - -function spawnInNewReaderTab(url, func) { - return BrowserTestUtils.withNewTab( - { gBrowser, - url: `about:reader?url=${encodeURIComponent(url)}` }, - function* (browser) { - yield ContentTask.spawn(browser, null, function* () { - Components.utils.import("chrome://mochitests/content/browser/" + - "toolkit/components/narrate/test/NarrateTestUtils.jsm"); - - yield NarrateTestUtils.getReaderReadyPromise(content); - }); - - yield ContentTask.spawn(browser, null, func); - }); -} - -function setBoolPref(name, value) { - Services.prefs.setBoolPref(name, value); -} - -function setCharPref(name, value) { - Services.prefs.setCharPref(name, value); -} - -function clearUserPref(name) { - Services.prefs.clearUserPref(name); -} diff --git a/toolkit/components/narrate/test/inferno.html b/toolkit/components/narrate/test/inferno.html deleted file mode 100644 index 58dfd24df..000000000 --- a/toolkit/components/narrate/test/inferno.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - Inferno - Canto I - - -

Inferno

-

Canto I: Dante nella selva oscura

-

- Nel mezzo del cammin di nostra vita
- mi ritrovai per una selva oscura,
- ché la diritta via era smarrita. -

-

- Ahi quanto a dir qual era è cosa dura
- esta selva selvaggia e aspra e forte
- che nel pensier rinova la paura! -

-

- Tant' è amara che poco è più morte;
- ma per trattar del ben ch'i' vi trovai,
- dirò de l'altre cose ch'i' v'ho scorte. -

-

- Io non so ben ridir com' i' v'intrai,
- tant' era pien di sonno a quel punto
- che la verace via abbandonai. -

-

- Ma poi ch'i' fui al piè d'un colle giunto,
- là dove terminava quella valle
- che m'avea di paura il cor compunto, -

-

- guardai in alto e vidi le sue spalle
- vestite già de' raggi del pianeta
- che mena dritto altrui per ogne calle. -

-

- Allor fu la paura un poco queta,
- che nel lago del cor m'era durata
- la notte ch'i' passai con tanta pieta. -

-

- E come quei che con lena affannata,
- uscito fuor del pelago a la riva,
- si volge a l'acqua perigliosa e guata, -

-

- così l'animo mio, ch'ancor fuggiva,
- si volse a retro a rimirar lo passo
- che non lasciò già mai persona viva. -

-

- Poi ch'èi posato un poco il corpo lasso,
- ripresi via per la piaggia diserta,
- sì che 'l piè fermo sempre era 'l più basso. -

-

- Ed ecco, quasi al cominciar de l'erta,
- una lonza leggiera e presta molto,
- che di pel macolato era coverta; -

-

- e non mi si partia dinanzi al volto,
- anzi 'mpediva tanto il mio cammino,
- ch'i' fui per ritornar più volte vòlto. -

-

- Temp' era dal principio del mattino,
- e 'l sol montava 'n sù con quelle stelle
- ch'eran con lui quando l'amor divino -

-

- mosse di prima quelle cose belle;
- sì ch'a bene sperar m'era cagione
- di quella fiera a la gaetta pelle -

-

- l'ora del tempo e la dolce stagione;
- ma non sì che paura non mi desse
- la vista che m'apparve d'un leone. -

-

- Questi parea che contra me venisse
- con la test' alta e con rabbiosa fame,
- sì che parea che l'aere ne tremesse. -

-

- Ed una lupa, che di tutte brame
- sembiava carca ne la sua magrezza,
- e molte genti fé già viver grame, -

-

- questa mi porse tanto di gravezza
- con la paura ch'uscia di sua vista,
- ch'io perdei la speranza de l'altezza. -

-

- E qual è quei che volontieri acquista,
- e giugne 'l tempo che perder lo face,
- che 'n tutti suoi pensier piange e s'attrista; -

-

- tal mi fece la bestia sanza pace,
- che, venendomi 'ncontro, a poco a poco
- mi ripigneva là dove 'l sol tace. -

-

- Mentre ch'i' rovinava in basso loco,
- dinanzi a li occhi mi si fu offerto
- chi per lungo silenzio parea fioco. -

-

- Quando vidi costui nel gran diserto,
- «Miserere di me», gridai a lui,
- «qual che tu sii, od ombra od omo certo!». -

-

- Rispuosemi: «Non omo, omo già fui,
- e li parenti miei furon lombardi,
- mantoani per patrïa ambedui. -

-

- Nacqui sub Iulio, ancor che fosse tardi,
- e vissi a Roma sotto 'l buono Augusto
- nel tempo de li dèi falsi e bugiardi. -

-

- Poeta fui, e cantai di quel giusto
- figliuol d'Anchise che venne di Troia,
- poi che 'l superbo Ilïón fu combusto. -

-

- Ma tu perché ritorni a tanta noia?
- perché non sali il dilettoso monte
- ch'è principio e cagion di tutta gioia?». -

-

- «Or se' tu quel Virgilio e quella fonte
- che spandi di parlar sì largo fiume?»,
- rispuos' io lui con vergognosa fronte. -

-

- «O de li altri poeti onore e lume,
- vagliami 'l lungo studio e 'l grande amore
- che m'ha fatto cercar lo tuo volume. -

-

- Tu se' lo mio maestro e 'l mio autore,
- tu se' solo colui da cu' io tolsi
- lo bello stilo che m'ha fatto onore. -

-

- Vedi la bestia per cu' io mi volsi;
- aiutami da lei, famoso saggio,
- ch'ella mi fa tremar le vene e i polsi». -

-

- «A te convien tenere altro vïaggio»,
- rispuose, poi che lagrimar mi vide,
- «se vuo' campar d'esto loco selvaggio; -

-

- ché questa bestia, per la qual tu gride,
- non lascia altrui passar per la sua via,
- ma tanto lo 'mpedisce che l'uccide; -

-

- e ha natura sì malvagia e ria,
- che mai non empie la bramosa voglia,
- e dopo 'l pasto ha più fame che pria. -

-

- Molti son li animali a cui s'ammoglia,
- e più saranno ancora, infin che 'l veltro
- verrà, che la farà morir con doglia. -

-

- Questi non ciberà terra né peltro,
- ma sapïenza, amore e virtute,
- e sua nazion sarà tra feltro e feltro. -

-

- Di quella umile Italia fia salute
- per cui morì la vergine Cammilla,
- Eurialo e Turno e Niso di ferute. -

-

- Questi la caccerà per ogne villa,
- fin che l'avrà rimessa ne lo 'nferno,
- là onde 'nvidia prima dipartilla. -

-

- Ond' io per lo tuo me' penso e discerno
- che tu mi segui, e io sarò tua guida,
- e trarrotti di qui per loco etterno; -

-

- ove udirai le disperate strida,
- vedrai li antichi spiriti dolenti,
- ch'a la seconda morte ciascun grida; -

-

- e vederai color che son contenti
- nel foco, perché speran di venire
- quando che sia a le beate genti. -

-

- A le quai poi se tu vorrai salire,
- anima fia a ciò più di me degna:
- con lei ti lascerò nel mio partire; -

-

- ché quello imperador che là sù regna,
- perch' i' fu' ribellante a la sua legge,
- non vuol che 'n sua città per me si vegna. -

-

- In tutte parti impera e quivi regge;
- quivi è la sua città e l'alto seggio:
- oh felice colui cu' ivi elegge!». -

-

- E io a lui: «Poeta, io ti richeggio
- per quello Dio che tu non conoscesti,
- a ciò ch'io fugga questo male e peggio, -

-

- che tu mi meni là dov' or dicesti,
- sì ch'io veggia la porta di san Pietro
- e color cui tu fai cotanto mesti». -

-

- Allor si mosse, e io li tenni dietro. -

- - diff --git a/toolkit/components/narrate/test/moby_dick.html b/toolkit/components/narrate/test/moby_dick.html deleted file mode 100644 index 0beaa20fd..000000000 --- a/toolkit/components/narrate/test/moby_dick.html +++ /dev/null @@ -1,218 +0,0 @@ - - - -Moby Dick - Chapter 1. Loomings - - -

Moby Dick

-

Chapter 1. Loomings

-

- Call me Ishmael. Some years ago—never mind how - long precisely—having little or no money in my purse, and nothing particular - to interest me on shore, I thought I would sail about a little and see the - watery part of the world. It is a way I have of driving off the spleen and - regulating the circulation. Whenever I find myself growing grim about the - mouth; whenever it is a damp, drizzly November in my soul; whenever I find - myself involuntarily pausing before coffin warehouses, and bringing up the - rear of every funeral I meet; and especially whenever my hypos get such an - upper hand of me, that it requires a strong moral principle to prevent me - from deliberately stepping into the street, and methodically knocking - people's hats off—then, I account it high time to get to sea as soon as I - can. This is my substitute for pistol and ball. With a philosophical - flourish Cato throws himself upon his sword; I quietly take to the ship. - There is nothing surprising in this. If they but knew it, almost all men in - their degree, some time or other, cherish very nearly the same feelings - towards the ocean with me. -

-

- There now is your insular city of the Manhattoes, belted round by wharves - as Indian isles by coral reefs—commerce surrounds it with her surf. - Right and left, the streets take you waterward. Its extreme downtown is - the battery, where that noble mole is washed by waves, and cooled by - breezes, which a few hours previous were out of sight of land. Look at the - crowds of water-gazers there. -

-

- Circumambulate the city of a dreamy Sabbath afternoon. Go from Corlears - Hook to Coenties Slip, and from thence, by Whitehall, northward. What do - you see?—Posted like silent sentinels all around the town, stand - thousands upon thousands of mortal men fixed in ocean reveries. Some - leaning against the spiles; some seated upon the pier-heads; some looking - over the bulwarks of ships from China; some high aloft in the rigging, as - if striving to get a still better seaward peep. But these are all - landsmen; of week days pent up in lath and plaster—tied to counters, - nailed to benches, clinched to desks. How then is this? Are the green - fields gone? What do they here? -

-

- But look! here come more crowds, pacing straight for the water, and - seemingly bound for a dive. Strange! Nothing will content them but the - extremest limit of the land; loitering under the shady lee of yonder - warehouses will not suffice. No. They must get just as nigh the water as - they possibly can without falling in. And there they stand—miles of - them—leagues. Inlanders all, they come from lanes and alleys, - streets and avenues—north, east, south, and west. Yet here they all - unite. Tell me, does the magnetic virtue of the needles of the compasses - of all those ships attract them thither? -

-

- Once more. Say you are in the country; in some high land of lakes. Take - almost any path you please, and ten to one it carries you down in a dale, - and leaves you there by a pool in the stream. There is magic in it. Let - the most absent-minded of men be plunged in his deepest reveries—stand - that man on his legs, set his feet a-going, and he will infallibly lead - you to water, if water there be in all that region. Should you ever be - athirst in the great American desert, try this experiment, if your caravan - happen to be supplied with a metaphysical professor. Yes, as every one - knows, meditation and water are wedded for ever. -

-

- But here is an artist. He desires to paint you the dreamiest, shadiest, - quietest, most enchanting bit of romantic landscape in all the valley of - the Saco. What is the chief element he employs? There stand his trees, - each with a hollow trunk, as if a hermit and a crucifix were within; and - here sleeps his meadow, and there sleep his cattle; and up from yonder - cottage goes a sleepy smoke. Deep into distant woodlands winds a mazy way, - reaching to overlapping spurs of mountains bathed in their hill-side blue. - But though the picture lies thus tranced, and though this pine-tree shakes - down its sighs like leaves upon this shepherd's head, yet all were vain, - unless the shepherd's eye were fixed upon the magic stream before him. Go - visit the Prairies in June, when for scores on scores of miles you wade - knee-deep among Tiger-lilies—what is the one charm wanting?—Water—there - is not a drop of water there! Were Niagara but a cataract of sand, would - you travel your thousand miles to see it? Why did the poor poet of - Tennessee, upon suddenly receiving two handfuls of silver, deliberate - whether to buy him a coat, which he sadly needed, or invest his money in a - pedestrian trip to Rockaway Beach? Why is almost every robust healthy boy - with a robust healthy soul in him, at some time or other crazy to go to - sea? Why upon your first voyage as a passenger, did you yourself feel such - a mystical vibration, when first told that you and your ship were now out - of sight of land? Why did the old Persians hold the sea holy? Why did the - Greeks give it a separate deity, and own brother of Jove? Surely all this - is not without meaning. And still deeper the meaning of that story of - Narcissus, who because he could not grasp the tormenting, mild image he - saw in the fountain, plunged into it and was drowned. But that same image, - we ourselves see in all rivers and oceans. It is the image of the - ungraspable phantom of life; and this is the key to it all. -

-

- Now, when I say that I am in the habit of going to sea whenever I begin to - grow hazy about the eyes, and begin to be over conscious of my lungs, I do - not mean to have it inferred that I ever go to sea as a passenger. For to - go as a passenger you must needs have a purse, and a purse is but a rag - unless you have something in it. Besides, passengers get sea-sick—grow - quarrelsome—don't sleep of nights—do not enjoy themselves - much, as a general thing;—no, I never go as a passenger; nor, though - I am something of a salt, do I ever go to sea as a Commodore, or a - Captain, or a Cook. I abandon the glory and distinction of such offices to - those who like them. For my part, I abominate all honourable respectable - toils, trials, and tribulations of every kind whatsoever. It is quite as - much as I can do to take care of myself, without taking care of ships, - barques, brigs, schooners, and what not. And as for going as cook,—though - I confess there is considerable glory in that, a cook being a sort of - officer on ship-board—yet, somehow, I never fancied broiling fowls;—though - once broiled, judiciously buttered, and judgmatically salted and peppered, - there is no one who will speak more respectfully, not to say - reverentially, of a broiled fowl than I will. It is out of the idolatrous - dotings of the old Egyptians upon broiled ibis and roasted river horse, - that you see the mummies of those creatures in their huge bake-houses the - pyramids. -

-

- No, when I go to sea, I go as a simple sailor, right before the mast, - plumb down into the forecastle, aloft there to the royal mast-head. True, - they rather order me about some, and make me jump from spar to spar, like - a grasshopper in a May meadow. And at first, this sort of thing is - unpleasant enough. It touches one's sense of honour, particularly if you - come of an old established family in the land, the Van Rensselaers, or - Randolphs, or Hardicanutes. And more than all, if just previous to putting - your hand into the tar-pot, you have been lording it as a country - schoolmaster, making the tallest boys stand in awe of you. The transition - is a keen one, I assure you, from a schoolmaster to a sailor, and requires - a strong decoction of Seneca and the Stoics to enable you to grin and bear - it. But even this wears off in time. -

-

- What of it, if some old hunks of a sea-captain orders me to get a broom - and sweep down the decks? What does that indignity amount to, weighed, I - mean, in the scales of the New Testament? Do you think the archangel - Gabriel thinks anything the less of me, because I promptly and - respectfully obey that old hunks in that particular instance? Who ain't a - slave? Tell me that. Well, then, however the old sea-captains may order me - about—however they may thump and punch me about, I have the - satisfaction of knowing that it is all right; that everybody else is one - way or other served in much the same way—either in a physical or - metaphysical point of view, that is; and so the universal thump is passed - round, and all hands should rub each other's shoulder-blades, and be - content. -

-

- Again, I always go to sea as a sailor, because they make a point of paying - me for my trouble, whereas they never pay passengers a single penny that I - ever heard of. On the contrary, passengers themselves must pay. And there - is all the difference in the world between paying and being paid. The act - of paying is perhaps the most uncomfortable infliction that the two - orchard thieves entailed upon us. But being paid,—what will compare - with it? The urbane activity with which a man receives money is really - marvellous, considering that we so earnestly believe money to be the root - of all earthly ills, and that on no account can a monied man enter heaven. - Ah! how cheerfully we consign ourselves to perdition! -

-

- Finally, I always go to sea as a sailor, because of the wholesome exercise - and pure air of the fore-castle deck. For as in this world, head winds are - far more prevalent than winds from astern (that is, if you never violate - the Pythagorean maxim), so for the most part the Commodore on the - quarter-deck gets his atmosphere at second hand from the sailors on the - forecastle. He thinks he breathes it first; but not so. In much the same - way do the commonalty lead their leaders in many other things, at the same - time that the leaders little suspect it. But wherefore it was that after - having repeatedly smelt the sea as a merchant sailor, I should now take it - into my head to go on a whaling voyage; this the invisible police officer - of the Fates, who has the constant surveillance of me, and secretly dogs - me, and influences me in some unaccountable way—he can better answer - than any one else. And, doubtless, my going on this whaling voyage, formed - part of the grand programme of Providence that was drawn up a long time - ago. It came in as a sort of brief interlude and solo between more - extensive performances. I take it that this part of the bill must have run - something like this: -

-

- "Grand Contested Election for the Presidency of the United States. - "WHALING VOYAGE BY ONE ISHMAEL. "BLOODY BATTLE IN AFFGHANISTAN." -

-

- Though I cannot tell why it was exactly that those stage managers, the - Fates, put me down for this shabby part of a whaling voyage, when others - were set down for magnificent parts in high tragedies, and short and easy - parts in genteel comedies, and jolly parts in farces—though I cannot - tell why this was exactly; yet, now that I recall all the circumstances, I - think I can see a little into the springs and motives which being - cunningly presented to me under various disguises, induced me to set about - performing the part I did, besides cajoling me into the delusion that it - was a choice resulting from my own unbiased freewill and discriminating - judgment. -

-

- Chief among these motives was the overwhelming idea of the great whale - himself. Such a portentous and mysterious monster roused all my curiosity. - Then the wild and distant seas where he rolled his island bulk; the - undeliverable, nameless perils of the whale; these, with all the attending - marvels of a thousand Patagonian sights and sounds, helped to sway me to - my wish. With other men, perhaps, such things would not have been - inducements; but as for me, I am tormented with an everlasting itch for - things remote. I love to sail forbidden seas, and land on barbarous - coasts. Not ignoring what is good, I am quick to perceive a horror, and - could still be social with it—would they let me—since it is - but well to be on friendly terms with all the inmates of the place one - lodges in. -

-

- By reason of these things, then, the whaling voyage was welcome; the great - flood-gates of the wonder-world swung open, and in the wild conceits that - swayed me to my purpose, two and two there floated into my inmost soul, - endless processions of the whale, and, mid most of them all, one grand - hooded phantom, like a snow hill in the air. -

- - -- cgit v1.2.3