mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-19 05:37:30 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
69
toolkit/components/narrate/test/browser_word_highlight.js
Normal file
69
toolkit/components/narrate/test/browser_word_highlight.js
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/* 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);
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue