Repository navigation
Run install() downloads in parallel instead of blocking the main thread. - #200
Merged
Merged
Conversation
Step 6 queued a task on the relevant global object's task queue that then waited for the language pack downloads to complete, which stalls script on the main thread. Move the download initiation and the wait into an [=in parallel=] block, and queue a task only to resolve the promise. Fixes #199
The prose already states the promise resolves to false if options.langs is empty, but no step implemented it: an empty sequence vacuously passes the unsupported-language check and then trivially succeeds with no downloads, resolving to true. Add an explicit step, matching how the availability algorithm treats an empty sequence as unavailable.
Member
Author
|
Added another commit that fixes a mistake in the prose, but it was clear what to do. |
evanbliu
approved these changes
Aug 6, 2026
evanbliu
pushed a commit
to evanbliu/speech-api
that referenced
this pull request
Oct 8, 2026
Review comments addressed:
- install(): add the transient user activation requirement to the
algorithm so it matches the privacy section's claim. The check is
keyed off the (masked) availability status so that whether install()
requires activation cannot itself leak the true download status.
Document the NotAllowedError rejection and link the privacy bullet to
the new step.
- Download Masking: drop the vestigial "API" component from the masking
state tuple.
- Installation-time friction: name the "on-device-speech-recognition"
policy-controlled feature directly instead of "per-API".
- Disk Space / Runtime Shared Resources: "set to `true`" and
"a SpeechRecognitionErrorEvent".
- OS-Provided Models: reword to match the Writing Assistance source text
("still need to ensure ... even if the user agent has less control"),
making clear this restates requirements defined elsewhere rather than
adding an unmarked normative one.
Editorial cleanups of the same classes found while reviewing:
- Remove remaining vestigial multi-API wording ("these APIs") and the
"UA" abbreviation; spell out "user agent".
- Mark the user-agent transparency "should" in the cloud section per
this section's <strong> convention; de-2119 developer guidance.
- Nest Download Masking under Language Pack Availability so that
masking/friction/cancelation/eviction are siblings, as in the source.
- Title-case the "Installation-Time Friction" heading; fix a subject
shift in the unmasking sentence; strip trailing whitespace.
Also merges upstream/main (needed because WebAudio#200 restructured install()).
evanbliu
added a commit
that referenced
this pull request
Oct 27, 2026
* Apply privacy and security mitigations used by the Web Translation API to the Web Speech API
* Apply privacy and security mitigations used by the Web Translation API to the Web Speech API
* Apply privacy and security mitigations used by the Web Translation API to the Web Speech API
* Address review feedback on privacy mitigations
- Fix formatting for `true` code span
- Fix typo: 'an per-API' -> 'a per-API'
- Remove redundant Alternate Options subsection
* Address review feedback from hoch@ on privacy mitigations
Review comments addressed:
- install(): add the transient user activation requirement to the
algorithm so it matches the privacy section's claim. The check is
keyed off the (masked) availability status so that whether install()
requires activation cannot itself leak the true download status.
Document the NotAllowedError rejection and link the privacy bullet to
the new step.
- Download Masking: drop the vestigial "API" component from the masking
state tuple.
- Installation-time friction: name the "on-device-speech-recognition"
policy-controlled feature directly instead of "per-API".
- Disk Space / Runtime Shared Resources: "set to `true`" and
"a SpeechRecognitionErrorEvent".
- OS-Provided Models: reword to match the Writing Assistance source text
("still need to ensure ... even if the user agent has less control"),
making clear this restates requirements defined elsewhere rather than
adding an unmarked normative one.
Editorial cleanups of the same classes found while reviewing:
- Remove remaining vestigial multi-API wording ("these APIs") and the
"UA" abbreviation; spell out "user agent".
- Mark the user-agent transparency "should" in the cloud section per
this section's <strong> convention; de-2119 developer guidance.
- Nest Download Masking under Language Pack Availability so that
masking/friction/cancelation/eviction are siblings, as in the source.
- Title-case the "Installation-Time Friction" heading; fix a subject
shift in the unmasking sentence; strip trailing whitespace.
Also merges upstream/main (needed because #200 restructured install()).
* Address review feedback on privacy and security mitigations
* Use standard rfc2119 markup instead of strong emphasis in privacy/security sections
* Move normative privacy and security requirements into API Description section
* Address review feedback on language pack eviction and background tab examples
* Enforce download masking for local recognition regardless of processLocally
---------
Co-authored-by: Evan Liu <evliu@google.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Step 6 queued a task on the relevant global object's task queue that then waited for the language pack downloads to complete, which stalls script on the main thread. Move the download initiation and the wait into an [=in parallel=] block, and queue a task only to resolve the promise.
Fixes #199
Preview | Diff