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>