New issue
Advanced search Search tips

Issue 889591 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Oct 24
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

Incorrect set of available Chrome OS speech synthesis voices exposed on startup

Project Member Reported by dmazz...@chromium.org, Sep 26

Issue description

1. Sign into a Chromebook when ChromeVox is not enabled.
   It may be necessary to reboot first.

2. Visit this page and check the list of installed voices:

   https://codepen.io/matt-west/pen/wGzuJ

   Note that there are ~38 options shown, including ones
   like "Chrome OS espaƱol en Estados Unidos", which is
   not installed by default.

3. Now open Text-to-speech Voice Settings and close it.
4. Reload the codepen.io page
5. Now see that only ~12 options are shown, the ones
   that are dynamically loaded.

 
Project Member

Comment 1 by bugdroid1@chromium.org, Oct 23

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1099273f5452a87dbb35502d120bf84a5acbe0dc

commit 1099273f5452a87dbb35502d120bf84a5acbe0dc
Author: Dominic Mazzoni <dmazzoni@chromium.org>
Date: Tue Oct 23 04:27:16 2018

Store TTS engine extension voices in extension prefs.

A TTS engine extension can advertise the set of voices it provides
either using the extension manifest, or by calling
chrome.ttsEngine.updateVoices to provide a dynamic list.

Previously we cached the set of dynamic voices provided by updateVoices
in a map in TtsEngineExtensionObserver. That works fine if a TTS extension
has a chance to run.

However, on profile load, installed extensions don't typically run. That means
that when a web page queries the set of installed voices, it gets the
list of voices from the manifest, not the dynamic list of voices. This is
only fixed once the extension spins up, typically when speech starts.

Instead, when an extension calls chrome.ttsEngine.updateVoices, cache
the voices in the extension preferences, so that when a profile loads it
always gets the most up-to-date list of voices.

Partially covered by the existing TtsApiTest.UpdateVoicesApi test,
and adds a new 2-part test to cover the caching in particular.

(This supercedes: http://crrev.com/c/1247023)

Bug:  889591 
Change-Id: I79d8e576114951869af66e682920672924f247a7
Reviewed-on: https://chromium-review.googlesource.com/c/1263035
Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org>
Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
Reviewed-by: Katie Dektar <katie@chromium.org>
Cr-Commit-Position: refs/heads/master@{#601848}
[modify] https://crrev.com/1099273f5452a87dbb35502d120bf84a5acbe0dc/chrome/browser/speech/extension_api/tts_engine_extension_api.cc
[modify] https://crrev.com/1099273f5452a87dbb35502d120bf84a5acbe0dc/chrome/browser/speech/extension_api/tts_engine_extension_observer.cc
[modify] https://crrev.com/1099273f5452a87dbb35502d120bf84a5acbe0dc/chrome/browser/speech/extension_api/tts_engine_extension_observer.h
[modify] https://crrev.com/1099273f5452a87dbb35502d120bf84a5acbe0dc/chrome/browser/speech/extension_api/tts_extension_apitest.cc
[add] https://crrev.com/1099273f5452a87dbb35502d120bf84a5acbe0dc/chrome/test/data/extensions/api_test/tts_engine/call_update_voices/manifest.json
[add] https://crrev.com/1099273f5452a87dbb35502d120bf84a5acbe0dc/chrome/test/data/extensions/api_test/tts_engine/call_update_voices/test.js
[modify] https://crrev.com/1099273f5452a87dbb35502d120bf84a5acbe0dc/chrome/test/data/extensions/api_test/tts_engine/update_voices_api/test.js

Status: Fixed (was: Started)

Sign in to add a comment