diff options
Diffstat (limited to 'toolkit/components/narrate/test/head.js')
-rw-r--r-- | toolkit/components/narrate/test/head.js | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/toolkit/components/narrate/test/head.js b/toolkit/components/narrate/test/head.js new file mode 100644 index 000000000..491a3da8d --- /dev/null +++ b/toolkit/components/narrate/test/head.js @@ -0,0 +1,87 @@ +/* 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); +} |