Title: [268713] trunk/LayoutTests
Revision
268713
Author
sihui_...@apple.com
Date
2020-10-19 20:45:59 -0700 (Mon, 19 Oct 2020)

Log Message

Import speech tests from WPT
https://bugs.webkit.org/show_bug.cgi?id=217910

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* resources/import-expectations.json:
* web-platform-tests/speech-api/META.yml: Added.
* web-platform-tests/speech-api/SpeechRecognition-basics.https-expected.txt: Added.
* web-platform-tests/speech-api/SpeechRecognition-basics.https.html: Added.
* web-platform-tests/speech-api/SpeechSynthesis-speak-ownership-expected.txt: Added.
* web-platform-tests/speech-api/SpeechSynthesis-speak-ownership.html: Added.
* web-platform-tests/speech-api/SpeechSynthesis-speak-twice-expected.txt: Added.
* web-platform-tests/speech-api/SpeechSynthesis-speak-twice.html: Added.
* web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds-expected.txt: Added.
* web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds.html: Added.
* web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative-expected.txt: Added.
* web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative.html: Added.
* web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https-expected.txt: Added.
* web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html: Added.
* web-platform-tests/speech-api/historical-expected.txt: Added.
* web-platform-tests/speech-api/historical.html: Added.
* web-platform-tests/speech-api/idlharness.window-expected.txt: Added.
* web-platform-tests/speech-api/idlharness.window.html: Added.
* web-platform-tests/speech-api/idlharness.window.js: Added.
* web-platform-tests/speech-api/w3c-import.log: Added.
* web-platform-tests/speech-api/webspeech.js: Added.
(typeof):
(reco.onstart.onstartTest.step_func):
(reco.onend):
(neverFireEvent):
(this.count):
(this.test):
(this.done):
(CycleTest.this.startEvent):
(CycleTest.this.endEvent):
(CycleTest.this.done):
(CycleTest):

LayoutTests:

* TestExpectations:
* platform/ios/TestExpectations:
* platform/mac/TestExpectations:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (268712 => 268713)


--- trunk/LayoutTests/ChangeLog	2020-10-20 03:45:54 UTC (rev 268712)
+++ trunk/LayoutTests/ChangeLog	2020-10-20 03:45:59 UTC (rev 268713)
@@ -1,3 +1,14 @@
+2020-10-19  Sihui Liu  <sihui_...@apple.com>
+
+        Import speech tests from WPT
+        https://bugs.webkit.org/show_bug.cgi?id=217910
+
+        Reviewed by Youenn Fablet.
+
+        * TestExpectations:
+        * platform/ios/TestExpectations:
+        * platform/mac/TestExpectations:
+
 2020-10-19  Karl Rackler  <rack...@apple.com>
 
         REGRESSION (268605?): [ Mojave+ wk2 ] 4 wpt/service-workers tests are flaky failures

Modified: trunk/LayoutTests/TestExpectations (268712 => 268713)


--- trunk/LayoutTests/TestExpectations	2020-10-20 03:45:54 UTC (rev 268712)
+++ trunk/LayoutTests/TestExpectations	2020-10-20 03:45:59 UTC (rev 268713)
@@ -172,6 +172,8 @@
 fast/forms/call-text-did-change-in-text-field-when-typing.html [ Skip ]
 http/tests/in-app-browser-privacy/ [ Skip ]
 
+# Only partial support on Cocoa platforms.
+imported/w3c/web-platform-tests/speech-api/ [ Skip ]
 
 # Only Mac and iOS have an implementation of UIScriptController::doAsyncTask().
 fast/harness/uiscriptcontroller [ Skip ]

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (268712 => 268713)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2020-10-20 03:45:54 UTC (rev 268712)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2020-10-20 03:45:59 UTC (rev 268713)
@@ -1,3 +1,43 @@
+2020-10-19  Sihui Liu  <sihui_...@apple.com>
+
+        Import speech tests from WPT
+        https://bugs.webkit.org/show_bug.cgi?id=217910
+
+        Reviewed by Youenn Fablet.
+
+        * resources/import-expectations.json:
+        * web-platform-tests/speech-api/META.yml: Added.
+        * web-platform-tests/speech-api/SpeechRecognition-basics.https-expected.txt: Added.
+        * web-platform-tests/speech-api/SpeechRecognition-basics.https.html: Added.
+        * web-platform-tests/speech-api/SpeechSynthesis-speak-ownership-expected.txt: Added.
+        * web-platform-tests/speech-api/SpeechSynthesis-speak-ownership.html: Added.
+        * web-platform-tests/speech-api/SpeechSynthesis-speak-twice-expected.txt: Added.
+        * web-platform-tests/speech-api/SpeechSynthesis-speak-twice.html: Added.
+        * web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds-expected.txt: Added.
+        * web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds.html: Added.
+        * web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative-expected.txt: Added.
+        * web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative.html: Added.
+        * web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https-expected.txt: Added.
+        * web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html: Added.
+        * web-platform-tests/speech-api/historical-expected.txt: Added.
+        * web-platform-tests/speech-api/historical.html: Added.
+        * web-platform-tests/speech-api/idlharness.window-expected.txt: Added.
+        * web-platform-tests/speech-api/idlharness.window.html: Added.
+        * web-platform-tests/speech-api/idlharness.window.js: Added.
+        * web-platform-tests/speech-api/w3c-import.log: Added.
+        * web-platform-tests/speech-api/webspeech.js: Added.
+        (typeof):
+        (reco.onstart.onstartTest.step_func):
+        (reco.onend):
+        (neverFireEvent):
+        (this.count):
+        (this.test):
+        (this.done):
+        (CycleTest.this.startEvent):
+        (CycleTest.this.endEvent):
+        (CycleTest.this.done):
+        (CycleTest):
+
 2020-10-19  Alexey Shvayka  <shvaikal...@gmail.com>
 
         [WebIDL] %Interface%.prototype.constructor should be defined on [[Set]] receiver

Modified: trunk/LayoutTests/imported/w3c/resources/import-expectations.json (268712 => 268713)


--- trunk/LayoutTests/imported/w3c/resources/import-expectations.json	2020-10-20 03:45:54 UTC (rev 268712)
+++ trunk/LayoutTests/imported/w3c/resources/import-expectations.json	2020-10-20 03:45:59 UTC (rev 268713)
@@ -378,7 +378,7 @@
     "web-platform-tests/service-workers": "import", 
     "web-platform-tests/shadow-dom": "import", 
     "web-platform-tests/shadow-dom/untriaged": "skip", 
-    "web-platform-tests/speech-api": "skip", 
+    "web-platform-tests/speech-api": "import", 
     "web-platform-tests/staticrange": "skip", 
     "web-platform-tests/storage": "skip", 
     "web-platform-tests/streams": "import", 

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/META.yml (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/META.yml	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/META.yml	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,4 @@
+spec: https://w3c.github.io/speech-api/
+suggested_reviewers:
+  - andrenatal
+  - gshires

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechRecognition-basics.https-expected.txt (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechRecognition-basics.https-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechRecognition-basics.https-expected.txt	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,3 @@
+
+FAIL SpeechRecognition basics Can't find variable: SpeechRecognition
+

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechRecognition-basics.https.html (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechRecognition-basics.https.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechRecognition-basics.https.html	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<title>SpeechRecognition basics</title>
+<script src=""
+<script src=""
+<script>
+test(function() {
+  const reco = new SpeechRecognition();
+  assert_equals(reco.grammars.length, 0, 'SpeechRecognition.grammars.length');
+  assert_equals(reco.lang, '', 'SpeechRecognition.lang');
+  assert_false(reco.continuous, 'SpeechRecognition.continuous');
+  assert_false(reco.interimResults, 'SpeechRecognition.interimResults');
+  assert_equals(reco.maxAlternatives, 1, 'SpeechRecognition.maxAlternatives');
+});
+</script>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-ownership-expected.txt (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-ownership-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-ownership-expected.txt	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,4 @@
+
+
+FAIL Using the same SpeechSynthesisUtterance with two SpeechSynthesis instances Can't find variable: assert_throws
+

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-ownership.html (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-ownership.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-ownership.html	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,23 @@
+<!doctype html>
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+<iframe></iframe>
+<script>
+// using an utterance for different SpeechSynthesis instances should throw
+async_test(t => {
+  test_driver.bless('speechSynthesis.speak', t.step_func_done(() => {
+    // the utterance is short to make the test faster
+    const utter = new SpeechSynthesisUtterance('1');
+    const iframe = document.querySelector('iframe');
+    assert_not_equals(speechSynthesis, iframe.contentWindow.speechSynthesis);
+    speechSynthesis.speak(utter);
+    // the spec doesn't say what exception to throw:
+    // https://github.com/w3c/speech-api/issues/8
+    assert_throws(null, () => {
+      iframe.contentWindow.speechSynthesis.speak(utter);
+    });
+  }));
+}, 'Using the same SpeechSynthesisUtterance with two SpeechSynthesis instances');
+</script>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-twice-expected.txt (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-twice-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-twice-expected.txt	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,3 @@
+
+PASS Using the same SpeechSynthesisUtterance twice for speechSynthesis.speak()
+

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-twice.html (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-twice.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-twice.html	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,22 @@
+<!doctype html>
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+<body>
+<script>
+// using an utterance twice on the same SpeechSynthesis instance should work
+// https://github.com/w3c/speech-api/issues/7
+async_test(t => {
+  test_driver.bless('speechSynthesis.speak', t.step_func(() => {
+    // the utterance is short to make the test faster
+    const utter = new SpeechSynthesisUtterance('1');
+    speechSynthesis.speak(utter);
+    utter._onend_ = t.step_func(() => {
+      speechSynthesis.speak(utter);
+      // pass if the utterance finishes a second time
+      utter._onend_ = t.step_func_done();
+    });
+  }));
+}, 'Using the same SpeechSynthesisUtterance twice for speechSynthesis.speak()');
+</script>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds-expected.txt (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds-expected.txt	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,3 @@
+
+PASS speechSynthesis.speak requires user activation
+

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds.html (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds.html	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,15 @@
+<!doctype html>
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+<body>
+<script>
+async_test(t => {
+  test_driver.bless('speechSynthesis.speak', t.step_func(() => {
+    const utter = new SpeechSynthesisUtterance('1');
+    utter._onend_ = t.step_func_done();
+    speechSynthesis.speak(utter);
+  }));
+}, 'speechSynthesis.speak requires user activation');
+</script>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative-expected.txt (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative-expected.txt	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,3 @@
+
+FAIL speechSynthesis.speak requires user activation assert_unreached: Reached unreachable code
+

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative.html (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative.html	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,16 @@
+<!doctype html>
+<script src=""
+<script src=""
+<body>
+<script>
+// TODO(csharrison): Make this test not tentative once
+// https://github.com/w3c/speech-api/issues/35 is resolved.
+async_test(t => {
+  const utter = new SpeechSynthesisUtterance('1');
+  utter._onerror_ = t.step_func_done((e) => {
+    assert_equals(e.name, "not-allowed");
+  });
+  utter._onend_ = t.step_func_done(() => assert_unreached());
+  speechSynthesis.speak(utter);
+}, 'speechSynthesis.speak requires user activation');
+</script>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https-expected.txt (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https-expected.txt	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,10 @@
+
+PASS new SpeechSynthesisUtterance() default text
+PASS new SpeechSynthesisUtterance() default lang
+PASS new SpeechSynthesisUtterance() default voice
+PASS new SpeechSynthesisUtterance() default volume
+PASS new SpeechSynthesisUtterance() default rate
+PASS new SpeechSynthesisUtterance() default pitch
+PASS new SpeechSynthesisUtterance("hello") text and defaults
+PASS SpeechSynthesisUtterance text setter
+

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<title>SpeechSynthesisUtterance basics</title>
+<script src=""
+<script src=""
+<script>
+const DEFAULTS = {
+  text: '',
+  lang: '',
+  voice: null,
+  volume: 1,
+  rate: 1,
+  pitch: 1,
+};
+
+for (const prop in DEFAULTS) {
+  test(function() {
+    const utt = new SpeechSynthesisUtterance();
+    assert_equals(utt[prop], DEFAULTS[prop], prop);
+  }, `new SpeechSynthesisUtterance() default ${prop}`);
+}
+
+test(function() {
+  const utt = new SpeechSynthesisUtterance("hello");
+  assert_equals(utt.text, 'hello', 'text');
+  // check that the other properties retain their defaults
+  for (const prop in DEFAULTS) {
+    if (prop != 'text') {
+      assert_equals(utt[prop], DEFAULTS[prop], prop);
+    }
+  }
+}, 'new SpeechSynthesisUtterance("hello") text and defaults');
+
+test(function() {
+  const utt = new SpeechSynthesisUtterance();
+  utt.text = 'word';
+  assert_equals(utt.text, 'word');
+}, 'SpeechSynthesisUtterance text setter');
+
+// TODO: setters https://github.com/w3c/speech-api/issues/29
+</script>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/historical-expected.txt (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/historical-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/historical-expected.txt	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,8 @@
+
+PASS SpeechRecognitionError interface should not exist
+PASS webkitSpeechGrammar interface should not exist
+PASS webkitSpeechGrammarList interface should not exist
+PASS webkitSpeechRecognition interface should not exist
+PASS webkitSpeechRecognitionError interface should not exist
+PASS webkitSpeechRecognitionEvent interface should not exist
+

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/historical.html (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/historical.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/historical.html	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,19 @@
+<!doctype html>
+<title>Historical Speech API features</title>
+<script src=""
+<script src=""
+<div id="log"></div>
+<script>
+[
+  "SpeechRecognitionError",
+  "webkitSpeechGrammar",
+  "webkitSpeechGrammarList",
+  "webkitSpeechRecognition",
+  "webkitSpeechRecognitionError",
+  "webkitSpeechRecognitionEvent",
+].forEach(name => {
+  test(function() {
+    assert_false(name in window);
+  }, name + " interface should not exist");
+});
+</script>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/idlharness.window-expected.txt (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/idlharness.window-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/idlharness.window-expected.txt	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,231 @@
+
+PASS idl_test setup
+PASS idl_test validation
+PASS Partial interface Window: original interface defined
+PASS Partial interface Window: member names are unique
+PASS Partial interface Window[2]: member names are unique
+PASS Partial interface Window[3]: member names are unique
+PASS Window includes GlobalEventHandlers: member names are unique
+PASS Window includes WindowEventHandlers: member names are unique
+PASS Window includes WindowOrWorkerGlobalScope: member names are unique
+PASS Window includes AnimationFrameProvider: member names are unique
+PASS Window includes WindowSessionStorage: member names are unique
+PASS Window includes WindowLocalStorage: member names are unique
+FAIL SpeechRecognition interface: existence and properties of interface object assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface object length assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface object name assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute grammars assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute lang assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute continuous assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute interimResults assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute maxAlternatives assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: operation start() assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: operation stop() assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: operation abort() assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute onaudiostart assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute onsoundstart assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute onspeechstart assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute onspeechend assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute onsoundend assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute onaudioend assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute onresult assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute onnomatch assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute onerror assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute onstart assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition interface: attribute onend assert_own_property: self does not have own property "SpeechRecognition" expected property "SpeechRecognition" missing
+FAIL SpeechRecognition must be primary interface of new SpeechRecognition() assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL Stringification of new SpeechRecognition() assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "grammars" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "lang" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "continuous" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "interimResults" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "maxAlternatives" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "start()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "stop()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "abort()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "onaudiostart" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "onsoundstart" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "onspeechstart" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "onspeechend" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "onsoundend" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "onaudioend" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "onresult" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "onnomatch" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "onerror" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "onstart" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognition interface: new SpeechRecognition() must inherit property "onend" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechRecognition"
+FAIL SpeechRecognitionErrorEvent interface: existence and properties of interface object assert_own_property: self does not have own property "SpeechRecognitionErrorEvent" expected property "SpeechRecognitionErrorEvent" missing
+FAIL SpeechRecognitionErrorEvent interface object length assert_own_property: self does not have own property "SpeechRecognitionErrorEvent" expected property "SpeechRecognitionErrorEvent" missing
+FAIL SpeechRecognitionErrorEvent interface object name assert_own_property: self does not have own property "SpeechRecognitionErrorEvent" expected property "SpeechRecognitionErrorEvent" missing
+FAIL SpeechRecognitionErrorEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SpeechRecognitionErrorEvent" expected property "SpeechRecognitionErrorEvent" missing
+FAIL SpeechRecognitionErrorEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SpeechRecognitionErrorEvent" expected property "SpeechRecognitionErrorEvent" missing
+FAIL SpeechRecognitionErrorEvent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SpeechRecognitionErrorEvent" expected property "SpeechRecognitionErrorEvent" missing
+FAIL SpeechRecognitionErrorEvent interface: attribute error assert_own_property: self does not have own property "SpeechRecognitionErrorEvent" expected property "SpeechRecognitionErrorEvent" missing
+FAIL SpeechRecognitionErrorEvent interface: attribute message assert_own_property: self does not have own property "SpeechRecognitionErrorEvent" expected property "SpeechRecognitionErrorEvent" missing
+FAIL SpeechRecognitionAlternative interface: existence and properties of interface object assert_own_property: self does not have own property "SpeechRecognitionAlternative" expected property "SpeechRecognitionAlternative" missing
+FAIL SpeechRecognitionAlternative interface object length assert_own_property: self does not have own property "SpeechRecognitionAlternative" expected property "SpeechRecognitionAlternative" missing
+FAIL SpeechRecognitionAlternative interface object name assert_own_property: self does not have own property "SpeechRecognitionAlternative" expected property "SpeechRecognitionAlternative" missing
+FAIL SpeechRecognitionAlternative interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SpeechRecognitionAlternative" expected property "SpeechRecognitionAlternative" missing
+FAIL SpeechRecognitionAlternative interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SpeechRecognitionAlternative" expected property "SpeechRecognitionAlternative" missing
+FAIL SpeechRecognitionAlternative interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SpeechRecognitionAlternative" expected property "SpeechRecognitionAlternative" missing
+FAIL SpeechRecognitionAlternative interface: attribute transcript assert_own_property: self does not have own property "SpeechRecognitionAlternative" expected property "SpeechRecognitionAlternative" missing
+FAIL SpeechRecognitionAlternative interface: attribute confidence assert_own_property: self does not have own property "SpeechRecognitionAlternative" expected property "SpeechRecognitionAlternative" missing
+FAIL SpeechRecognitionResult interface: existence and properties of interface object assert_own_property: self does not have own property "SpeechRecognitionResult" expected property "SpeechRecognitionResult" missing
+FAIL SpeechRecognitionResult interface object length assert_own_property: self does not have own property "SpeechRecognitionResult" expected property "SpeechRecognitionResult" missing
+FAIL SpeechRecognitionResult interface object name assert_own_property: self does not have own property "SpeechRecognitionResult" expected property "SpeechRecognitionResult" missing
+FAIL SpeechRecognitionResult interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SpeechRecognitionResult" expected property "SpeechRecognitionResult" missing
+FAIL SpeechRecognitionResult interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SpeechRecognitionResult" expected property "SpeechRecognitionResult" missing
+FAIL SpeechRecognitionResult interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SpeechRecognitionResult" expected property "SpeechRecognitionResult" missing
+FAIL SpeechRecognitionResult interface: attribute length assert_own_property: self does not have own property "SpeechRecognitionResult" expected property "SpeechRecognitionResult" missing
+FAIL SpeechRecognitionResult interface: operation item(unsigned long) assert_own_property: self does not have own property "SpeechRecognitionResult" expected property "SpeechRecognitionResult" missing
+FAIL SpeechRecognitionResult interface: attribute isFinal assert_own_property: self does not have own property "SpeechRecognitionResult" expected property "SpeechRecognitionResult" missing
+FAIL SpeechRecognitionResultList interface: existence and properties of interface object assert_own_property: self does not have own property "SpeechRecognitionResultList" expected property "SpeechRecognitionResultList" missing
+FAIL SpeechRecognitionResultList interface object length assert_own_property: self does not have own property "SpeechRecognitionResultList" expected property "SpeechRecognitionResultList" missing
+FAIL SpeechRecognitionResultList interface object name assert_own_property: self does not have own property "SpeechRecognitionResultList" expected property "SpeechRecognitionResultList" missing
+FAIL SpeechRecognitionResultList interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SpeechRecognitionResultList" expected property "SpeechRecognitionResultList" missing
+FAIL SpeechRecognitionResultList interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SpeechRecognitionResultList" expected property "SpeechRecognitionResultList" missing
+FAIL SpeechRecognitionResultList interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SpeechRecognitionResultList" expected property "SpeechRecognitionResultList" missing
+FAIL SpeechRecognitionResultList interface: attribute length assert_own_property: self does not have own property "SpeechRecognitionResultList" expected property "SpeechRecognitionResultList" missing
+FAIL SpeechRecognitionResultList interface: operation item(unsigned long) assert_own_property: self does not have own property "SpeechRecognitionResultList" expected property "SpeechRecognitionResultList" missing
+FAIL SpeechRecognitionEvent interface: existence and properties of interface object assert_own_property: self does not have own property "SpeechRecognitionEvent" expected property "SpeechRecognitionEvent" missing
+FAIL SpeechRecognitionEvent interface object length assert_own_property: self does not have own property "SpeechRecognitionEvent" expected property "SpeechRecognitionEvent" missing
+FAIL SpeechRecognitionEvent interface object name assert_own_property: self does not have own property "SpeechRecognitionEvent" expected property "SpeechRecognitionEvent" missing
+FAIL SpeechRecognitionEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SpeechRecognitionEvent" expected property "SpeechRecognitionEvent" missing
+FAIL SpeechRecognitionEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SpeechRecognitionEvent" expected property "SpeechRecognitionEvent" missing
+FAIL SpeechRecognitionEvent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SpeechRecognitionEvent" expected property "SpeechRecognitionEvent" missing
+FAIL SpeechRecognitionEvent interface: attribute resultIndex assert_own_property: self does not have own property "SpeechRecognitionEvent" expected property "SpeechRecognitionEvent" missing
+FAIL SpeechRecognitionEvent interface: attribute results assert_own_property: self does not have own property "SpeechRecognitionEvent" expected property "SpeechRecognitionEvent" missing
+FAIL SpeechGrammar interface: existence and properties of interface object assert_own_property: self does not have own property "SpeechGrammar" expected property "SpeechGrammar" missing
+FAIL SpeechGrammar interface object length assert_own_property: self does not have own property "SpeechGrammar" expected property "SpeechGrammar" missing
+FAIL SpeechGrammar interface object name assert_own_property: self does not have own property "SpeechGrammar" expected property "SpeechGrammar" missing
+FAIL SpeechGrammar interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SpeechGrammar" expected property "SpeechGrammar" missing
+FAIL SpeechGrammar interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SpeechGrammar" expected property "SpeechGrammar" missing
+FAIL SpeechGrammar interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SpeechGrammar" expected property "SpeechGrammar" missing
+FAIL SpeechGrammar interface: attribute src assert_own_property: self does not have own property "SpeechGrammar" expected property "SpeechGrammar" missing
+FAIL SpeechGrammar interface: attribute weight assert_own_property: self does not have own property "SpeechGrammar" expected property "SpeechGrammar" missing
+FAIL SpeechGrammar must be primary interface of new SpeechGrammar() assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammar"
+FAIL Stringification of new SpeechGrammar() assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammar"
+FAIL SpeechGrammar interface: new SpeechGrammar() must inherit property "src" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammar"
+FAIL SpeechGrammar interface: new SpeechGrammar() must inherit property "weight" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammar"
+FAIL SpeechGrammarList interface: existence and properties of interface object assert_own_property: self does not have own property "SpeechGrammarList" expected property "SpeechGrammarList" missing
+FAIL SpeechGrammarList interface object length assert_own_property: self does not have own property "SpeechGrammarList" expected property "SpeechGrammarList" missing
+FAIL SpeechGrammarList interface object name assert_own_property: self does not have own property "SpeechGrammarList" expected property "SpeechGrammarList" missing
+FAIL SpeechGrammarList interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SpeechGrammarList" expected property "SpeechGrammarList" missing
+FAIL SpeechGrammarList interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SpeechGrammarList" expected property "SpeechGrammarList" missing
+FAIL SpeechGrammarList interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SpeechGrammarList" expected property "SpeechGrammarList" missing
+FAIL SpeechGrammarList interface: attribute length assert_own_property: self does not have own property "SpeechGrammarList" expected property "SpeechGrammarList" missing
+FAIL SpeechGrammarList interface: operation item(unsigned long) assert_own_property: self does not have own property "SpeechGrammarList" expected property "SpeechGrammarList" missing
+FAIL SpeechGrammarList interface: operation addFromURI(DOMString, optional float) assert_own_property: self does not have own property "SpeechGrammarList" expected property "SpeechGrammarList" missing
+FAIL SpeechGrammarList interface: operation addFromString(DOMString, optional float) assert_own_property: self does not have own property "SpeechGrammarList" expected property "SpeechGrammarList" missing
+FAIL SpeechGrammarList must be primary interface of new SpeechGrammarList() assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammarList"
+FAIL Stringification of new SpeechGrammarList() assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammarList"
+FAIL SpeechGrammarList interface: new SpeechGrammarList() must inherit property "length" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammarList"
+FAIL SpeechGrammarList interface: new SpeechGrammarList() must inherit property "item(unsigned long)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammarList"
+FAIL SpeechGrammarList interface: calling item(unsigned long) on new SpeechGrammarList() with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammarList"
+FAIL SpeechGrammarList interface: new SpeechGrammarList() must inherit property "addFromURI(DOMString, optional float)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammarList"
+FAIL SpeechGrammarList interface: calling addFromURI(DOMString, optional float) on new SpeechGrammarList() with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammarList"
+FAIL SpeechGrammarList interface: new SpeechGrammarList() must inherit property "addFromString(DOMString, optional float)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammarList"
+FAIL SpeechGrammarList interface: calling addFromString(DOMString, optional float) on new SpeechGrammarList() with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: SpeechGrammarList"
+FAIL SpeechSynthesis interface: existence and properties of interface object assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface object length assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface object name assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface: attribute pending assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface: attribute speaking assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface: attribute paused assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface: attribute onvoiceschanged assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface: operation speak(SpeechSynthesisUtterance) assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface: operation cancel() assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface: operation pause() assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface: operation resume() assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis interface: operation getVoices() assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+FAIL SpeechSynthesis must be primary interface of speechSynthesis assert_own_property: self does not have own property "SpeechSynthesis" expected property "SpeechSynthesis" missing
+PASS Stringification of speechSynthesis
+PASS SpeechSynthesis interface: speechSynthesis must inherit property "pending" with the proper type
+PASS SpeechSynthesis interface: speechSynthesis must inherit property "speaking" with the proper type
+PASS SpeechSynthesis interface: speechSynthesis must inherit property "paused" with the proper type
+FAIL SpeechSynthesis interface: speechSynthesis must inherit property "onvoiceschanged" with the proper type assert_inherits: property "onvoiceschanged" not found in prototype chain
+PASS SpeechSynthesis interface: speechSynthesis must inherit property "speak(SpeechSynthesisUtterance)" with the proper type
+PASS SpeechSynthesis interface: calling speak(SpeechSynthesisUtterance) on speechSynthesis with too few arguments must throw TypeError
+PASS SpeechSynthesis interface: speechSynthesis must inherit property "cancel()" with the proper type
+PASS SpeechSynthesis interface: speechSynthesis must inherit property "pause()" with the proper type
+PASS SpeechSynthesis interface: speechSynthesis must inherit property "resume()" with the proper type
+PASS SpeechSynthesis interface: speechSynthesis must inherit property "getVoices()" with the proper type
+PASS SpeechSynthesisUtterance interface: existence and properties of interface object
+PASS SpeechSynthesisUtterance interface object length
+PASS SpeechSynthesisUtterance interface object name
+PASS SpeechSynthesisUtterance interface: existence and properties of interface prototype object
+PASS SpeechSynthesisUtterance interface: existence and properties of interface prototype object's "constructor" property
+PASS SpeechSynthesisUtterance interface: existence and properties of interface prototype object's @@unscopables property
+PASS SpeechSynthesisUtterance interface: attribute text
+PASS SpeechSynthesisUtterance interface: attribute lang
+PASS SpeechSynthesisUtterance interface: attribute voice
+PASS SpeechSynthesisUtterance interface: attribute volume
+PASS SpeechSynthesisUtterance interface: attribute rate
+PASS SpeechSynthesisUtterance interface: attribute pitch
+PASS SpeechSynthesisUtterance interface: attribute onstart
+PASS SpeechSynthesisUtterance interface: attribute onend
+PASS SpeechSynthesisUtterance interface: attribute onerror
+PASS SpeechSynthesisUtterance interface: attribute onpause
+PASS SpeechSynthesisUtterance interface: attribute onresume
+PASS SpeechSynthesisUtterance interface: attribute onmark
+PASS SpeechSynthesisUtterance interface: attribute onboundary
+PASS SpeechSynthesisUtterance must be primary interface of new SpeechSynthesisUtterance()
+PASS Stringification of new SpeechSynthesisUtterance()
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "text" with the proper type
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "lang" with the proper type
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "voice" with the proper type
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "volume" with the proper type
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "rate" with the proper type
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "pitch" with the proper type
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "onstart" with the proper type
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "onend" with the proper type
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "onerror" with the proper type
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "onpause" with the proper type
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "onresume" with the proper type
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "onmark" with the proper type
+PASS SpeechSynthesisUtterance interface: new SpeechSynthesisUtterance() must inherit property "onboundary" with the proper type
+PASS SpeechSynthesisEvent interface: existence and properties of interface object
+FAIL SpeechSynthesisEvent interface object length assert_equals: wrong value for SpeechSynthesisEvent.length expected 2 but got 0
+PASS SpeechSynthesisEvent interface object name
+PASS SpeechSynthesisEvent interface: existence and properties of interface prototype object
+PASS SpeechSynthesisEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS SpeechSynthesisEvent interface: existence and properties of interface prototype object's @@unscopables property
+FAIL SpeechSynthesisEvent interface: attribute utterance assert_true: The prototype object must have a property "utterance" expected true got false
+PASS SpeechSynthesisEvent interface: attribute charIndex
+FAIL SpeechSynthesisEvent interface: attribute charLength assert_true: The prototype object must have a property "charLength" expected true got false
+PASS SpeechSynthesisEvent interface: attribute elapsedTime
+PASS SpeechSynthesisEvent interface: attribute name
+FAIL SpeechSynthesisErrorEvent interface: existence and properties of interface object assert_own_property: self does not have own property "SpeechSynthesisErrorEvent" expected property "SpeechSynthesisErrorEvent" missing
+FAIL SpeechSynthesisErrorEvent interface object length assert_own_property: self does not have own property "SpeechSynthesisErrorEvent" expected property "SpeechSynthesisErrorEvent" missing
+FAIL SpeechSynthesisErrorEvent interface object name assert_own_property: self does not have own property "SpeechSynthesisErrorEvent" expected property "SpeechSynthesisErrorEvent" missing
+FAIL SpeechSynthesisErrorEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SpeechSynthesisErrorEvent" expected property "SpeechSynthesisErrorEvent" missing
+FAIL SpeechSynthesisErrorEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SpeechSynthesisErrorEvent" expected property "SpeechSynthesisErrorEvent" missing
+FAIL SpeechSynthesisErrorEvent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SpeechSynthesisErrorEvent" expected property "SpeechSynthesisErrorEvent" missing
+FAIL SpeechSynthesisErrorEvent interface: attribute error assert_own_property: self does not have own property "SpeechSynthesisErrorEvent" expected property "SpeechSynthesisErrorEvent" missing
+FAIL SpeechSynthesisVoice interface: existence and properties of interface object assert_own_property: self does not have own property "SpeechSynthesisVoice" expected property "SpeechSynthesisVoice" missing
+FAIL SpeechSynthesisVoice interface object length assert_own_property: self does not have own property "SpeechSynthesisVoice" expected property "SpeechSynthesisVoice" missing
+FAIL SpeechSynthesisVoice interface object name assert_own_property: self does not have own property "SpeechSynthesisVoice" expected property "SpeechSynthesisVoice" missing
+FAIL SpeechSynthesisVoice interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SpeechSynthesisVoice" expected property "SpeechSynthesisVoice" missing
+FAIL SpeechSynthesisVoice interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SpeechSynthesisVoice" expected property "SpeechSynthesisVoice" missing
+FAIL SpeechSynthesisVoice interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SpeechSynthesisVoice" expected property "SpeechSynthesisVoice" missing
+FAIL SpeechSynthesisVoice interface: attribute voiceURI assert_own_property: self does not have own property "SpeechSynthesisVoice" expected property "SpeechSynthesisVoice" missing
+FAIL SpeechSynthesisVoice interface: attribute name assert_own_property: self does not have own property "SpeechSynthesisVoice" expected property "SpeechSynthesisVoice" missing
+FAIL SpeechSynthesisVoice interface: attribute lang assert_own_property: self does not have own property "SpeechSynthesisVoice" expected property "SpeechSynthesisVoice" missing
+FAIL SpeechSynthesisVoice interface: attribute localService assert_own_property: self does not have own property "SpeechSynthesisVoice" expected property "SpeechSynthesisVoice" missing
+FAIL SpeechSynthesisVoice interface: attribute default assert_own_property: self does not have own property "SpeechSynthesisVoice" expected property "SpeechSynthesisVoice" missing
+FAIL SpeechSynthesisVoice must be primary interface of voice assert_own_property: self does not have own property "SpeechSynthesisVoice" expected property "SpeechSynthesisVoice" missing
+PASS Stringification of voice
+PASS SpeechSynthesisVoice interface: voice must inherit property "voiceURI" with the proper type
+PASS SpeechSynthesisVoice interface: voice must inherit property "name" with the proper type
+PASS SpeechSynthesisVoice interface: voice must inherit property "lang" with the proper type
+PASS SpeechSynthesisVoice interface: voice must inherit property "localService" with the proper type
+PASS SpeechSynthesisVoice interface: voice must inherit property "default" with the proper type
+PASS Window interface: attribute speechSynthesis
+PASS Window interface: self must inherit property "speechSynthesis" with the proper type
+

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/idlharness.window.html (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/idlharness.window.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/idlharness.window.html	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1 @@
+<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/idlharness.window.js (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/idlharness.window.js	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/idlharness.window.js	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,34 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+idl_test(
+  ['speech-api'],
+  ['dom', 'html'],
+  idl_array => {
+    idl_array.add_objects({
+      SpeechGrammar: ['new SpeechGrammar()'],
+      SpeechGrammarList: ['new SpeechGrammarList()'],
+      SpeechRecognition: ['new SpeechRecognition()'],
+      // TODO: SpeechRecognitionAlternative
+      // TODO: SpeechRecognitionErrorEvent
+      // TODO: SpeechRecognitionEvent
+      // TODO: SpeechRecognitionResult
+      // TODO: SpeechRecognitionResultList
+      SpeechSynthesis: ['speechSynthesis'],
+      // TODO: SpeechSynthesisErrorEvent
+      // TODO: SpeechSynthesisEvent
+      SpeechSynthesisUtterance: ['new SpeechSynthesisUtterance()'],
+      Window: ['self'],
+    });
+
+    // https://w3c.github.io/speech-api/#dom-speechsynthesis-getvoices can
+    // return an empty list, so add SpeechSynthesisVoice conditionally.
+    const voices = speechSynthesis.getVoices();
+    if (voices.length) {
+      self.voice = voices[0];
+      idl_array.add_objects({ SpeechSynthesisVoice: ['voice'] });
+    }
+  }
+);

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/w3c-import.log (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/w3c-import.log	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/w3c-import.log	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,26 @@
+The tests in this directory were imported from the W3C repository.
+Do NOT modify these tests directly in WebKit.
+Instead, create a pull request on the WPT github:
+	https://github.com/web-platform-tests/wpt
+
+Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
+
+Do NOT modify or remove this file.
+
+------------------------------------------------------------------------
+Properties requiring vendor prefixes:
+None
+Property values requiring vendor prefixes:
+None
+------------------------------------------------------------------------
+List of files:
+/LayoutTests/imported/w3c/web-platform-tests/speech-api/META.yml
+/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechRecognition-basics.https.html
+/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-ownership.html
+/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-twice.html
+/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds.html
+/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative.html
+/LayoutTests/imported/w3c/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html
+/LayoutTests/imported/w3c/web-platform-tests/speech-api/historical.html
+/LayoutTests/imported/w3c/web-platform-tests/speech-api/idlharness.window.js
+/LayoutTests/imported/w3c/web-platform-tests/speech-api/webspeech.js

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/webspeech.js (0 => 268713)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/webspeech.js	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/speech-api/webspeech.js	2020-10-20 03:45:59 UTC (rev 268713)
@@ -0,0 +1,112 @@
+var DELAY = 500;  // In milliseconds.
+var TIMEOUT = 2000;  // In milliseconds.  Used for most tests.
+if (typeof(TIMEOUT_OVERRIDE) != 'undefined') {
+  TIMEOUT = TIMEOUT_OVERRIDE;
+}
+GLOBAL_TIMEOUT = TIMEOUT + 2000;  // In milliseconds.
+setup({timeout: GLOBAL_TIMEOUT});
+var _onstarted_ = false;
+var neverFireTest = async_test('Events that should not fire',
+                               {timeout: TIMEOUT});
+var _onstartTest_ = async_test('onstart', {timeout: TIMEOUT});
+var reco = new SpeechRecognition();
+
+reco._onstart_ = onstartTest.step_func(function(event) {
+  assert_false(onstarted, 'onstart should only fire once.');
+  _onstarted_ = true;
+  onstartTest.done();
+  beginTest();
+});
+
+reco._onend_ = function() {
+  neverFireTest.done();
+  for (var i = 0; i < doneOnEndTestList.length; i++) {
+    doneOnEndTestList[i].done();
+  }
+};
+
+function neverFireEvent(name) {
+  return neverFireTest.step_func(function(event) {
+    assert_unreached(name + ' should not fire.');
+  });
+}
+
+var doneOnEndTestList = [];  // List of all test objects to call done at onend.
+
+// Tally calls to count() and test against min/max when test ends.
+// A max value of 0 indicates no maximum.
+function CountTest(name, min, max) {
+  doneOnEndTestList.push(this);
+  this.name = name;
+  this.min = min;
+  this.max = max;
+  this.sum = 0;
+  this.asyncTest = async_test(name, {timeout: TIMEOUT});
+
+  this.count = function(increment) { this.sum += increment; };
+
+  this.test = function() { return this.asyncTest; };
+
+  this.done = function() {
+    var cTest = this;
+    this.asyncTest.step(function() {
+      notes.innerHTML += cTest.name + ' occurred ' + cTest.sum + ' times.<br>';
+      if (cTest.min == cTest.max) {
+        assert_true(cTest.sum == cTest.min, cTest.name + ' occurred ' +
+          cTest.sum + ' times and should have occurred ' +
+          cTest.min + ' times.');
+      } else {
+        assert_true(cTest.sum >= cTest.min, cTest.name + ' occurred ' +
+            cTest.sum + ' times and should have occurred at least ' +
+            cTest.min + ' times.');
+        assert_true(cTest.max == 0 || cTest.sum <= cTest.max, cTest.name +
+            ' occurred ' + cTest.sum +
+            ' times and should have occurred at most ' + cTest.max + ' times.');
+      }
+      if (cTest.whenDone) {
+        cTest.whenDone();
+      }
+    });
+    this.asyncTest.done();
+  };
+}
+
+// Test for proper cycling of startEvent followed by endEvent.
+function CycleTest(name) {
+  doneOnEndTestList.push(this);
+  this.name = name;
+  this.count = 0;  // Counts number of start / end cycles.
+  this.started = false; // Tracks whether last event was a start or end event.
+  this.test = async_test(name + ' start/stop', {timeout: TIMEOUT});
+
+  this.startEvent = function() {
+    var cycle = this;
+    return this.test.step_func(function(event) {
+      assert_true(onstarted, cycle.name + 'start fired before onstart.');
+      assert_false(cycle.started, cycle.name + 'start fired twice without ' +
+                   cycle.name + 'stop.');
+      cycle.started = true;
+    });
+  };
+
+  this.endEvent = function() {
+    var cycle = this;
+    return this.test.step_func(function(event) {
+      assert_true(cycle.started, cycle.name + 'end fired before ' +
+                  cycle.name + 'start.');
+      cycle.started = false;
+      cycle.count += 1;
+    });
+  };
+
+  this.done = function() {
+    var cycle = this;
+    this.test.step(function() {
+      assert_false(cycle.started, cycle.name + 'start fired but not ' +
+                   cycle.name + 'end.');
+      assert_true(cycle.count > 0, cycle.name + 'start never fired.');
+      notes.innerHTML += cycle.name + ' cycled ' + cycle.count + ' times.<br>';
+    });
+    this.test.done();
+  };
+}

Modified: trunk/LayoutTests/platform/ios/TestExpectations (268712 => 268713)


--- trunk/LayoutTests/platform/ios/TestExpectations	2020-10-20 03:45:54 UTC (rev 268712)
+++ trunk/LayoutTests/platform/ios/TestExpectations	2020-10-20 03:45:59 UTC (rev 268713)
@@ -34,6 +34,8 @@
 
 imported/w3c/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default.html [ Pass ]
 
+imported/w3c/web-platform-tests/speech-api/ [ Pass ]
+
 #//////////////////////////////////////////////////////////////////////////////////////////
 # End platform-specific directories.
 #//////////////////////////////////////////////////////////////////////////////////////////
@@ -3499,5 +3501,9 @@
 #<rdar://68952824> [ macOS iOS wk2 ] media/media-continues-playing-after-replace-source.html is a flaky failure
 media/media-continues-playing-after-replace-source.html [ Pass Failure ]
 
+imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-twice.html [ Skip ]
+imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds.html [ Skip ]
+imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative.html [ Skip ]
+
 # This test fails in iOS due to subpixel differences for the marker position
 imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-002.html [ ImageOnlyFailure ]

Modified: trunk/LayoutTests/platform/mac/TestExpectations (268712 => 268713)


--- trunk/LayoutTests/platform/mac/TestExpectations	2020-10-20 03:45:54 UTC (rev 268712)
+++ trunk/LayoutTests/platform/mac/TestExpectations	2020-10-20 03:45:59 UTC (rev 268713)
@@ -2246,7 +2246,6 @@
 
 webkit.org/b/217620 inspector/audit/basic-async.htm [ Pass Timeout ]
 
-
 # These are failing on Mojave due to an error in the way CA animations are applied.
 # https://bugs.webkit.org/show_bug.cgi?id=217842
 [ Mojave ] transitions/interrupted-transition-hardware.html [ Pass Failure ]
@@ -2258,4 +2257,8 @@
 
 webkit.org/b/217931 imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-empty-src-module.html [ Pass Failure ]
 
+imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-twice.html [ Skip ]
+imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-with-activation-succeeds.html [ Skip ]
+imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative.html [ Skip ]
+
 webkit.org/b/217669 http/wpt/service-workers/service-worker-spinning-install.https.html [ Pass Failure ]
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to