Generate TTS_EVENT_PAUSE and TTS_EVENT_RESUME events for web tests
This CL generates TTS_EVENT_PAUSE and TTS_EVENT_RESUME in
WebTestTtsPlatform to get events in web tests.
It modifies 'restriction-speech-synthesis.html' to test pause()
and resume() in prerendering.
Bug: 1365948
Change-Id: Ic9491a14c4343e88bb197db062bf4dfee2bd212e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3981368
Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: Evan Liu <evliu@google.com>
Reviewed-by: Mike West <mkwst@chromium.org>
Commit-Queue: Julie Jeongeun Kim <jkim@igalia.com>
Cr-Commit-Position: refs/heads/main@{#1067415}
diff --git a/speculation-rules/prerender/resources/speech-synthesis.https.html b/speculation-rules/prerender/resources/speech-synthesis.https.html
index bf1d9f1..f7436e4 100644
--- a/speculation-rules/prerender/resources/speech-synthesis.https.html
+++ b/speculation-rules/prerender/resources/speech-synthesis.https.html
@@ -41,6 +41,23 @@
speechSynthesis.cancel();
break;
}
+ case 'pause': {
+ const utter = new SpeechSynthesisUtterance('1');
+ utter.onpause = () => { resolve(); }
+ speechSynthesis.speak(utter);
+ speechSynthesis.pause();
+ // To reset the current status for the next test, it calls cancel().
+ speechSynthesis.cancel();
+ break;
+ }
+ case 'resume': {
+ const utter = new SpeechSynthesisUtterance('1');
+ utter.onresume = () => { resolve(); }
+ speechSynthesis.speak(utter);
+ speechSynthesis.pause();
+ speechSynthesis.resume();
+ break;
+ }
}
});
prerenderEventCollector.start(promise, `speechSynthesis.${method}`);
diff --git a/speculation-rules/prerender/restriction-speech-synthesis.html b/speculation-rules/prerender/restriction-speech-synthesis.html
index 6d6beb1..8743d1f 100644
--- a/speculation-rules/prerender/restriction-speech-synthesis.html
+++ b/speculation-rules/prerender/restriction-speech-synthesis.html
@@ -55,5 +55,7 @@
RunTest('speak', `speechSynthesis.speak(utterance) should be deferred until the prerendered page is activated`);
RunTest('cancel', `speechSynthesis.cancel() should be deferred until the prerendered page is activated`);
+RunTest('pause', `speechSynthesis.pause() should be deferred until the prerendered page is activated`);
+RunTest('resume', `speechSynthesis.resume() should be deferred until the prerendered page is activated`);
</script>
</body>