зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1169653 - Patch limits use of the speech recognition API in JS to certified apps or apps with the proper flags set. r=smaug
This commit is contained in:
Родитель
53184296fe
Коммит
284e30b335
|
@ -9,6 +9,7 @@
|
|||
#include "nsCOMPtr.h"
|
||||
#include "nsCycleCollectionParticipant.h"
|
||||
|
||||
#include "mozilla/dom/BindingUtils.h"
|
||||
#include "mozilla/dom/SpeechRecognitionBinding.h"
|
||||
#include "mozilla/dom/MediaStreamTrackBinding.h"
|
||||
#include "mozilla/dom/MediaStreamError.h"
|
||||
|
@ -143,6 +144,15 @@ SpeechRecognition::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
|
|||
return SpeechRecognitionBinding::Wrap(aCx, this, aGivenProto);
|
||||
}
|
||||
|
||||
bool
|
||||
SpeechRecognition::IsAuthorized(JSContext* aCx, JSObject* aGlobal)
|
||||
{
|
||||
bool enableTests = Preferences::GetBool(TEST_PREFERENCE_ENABLE);
|
||||
bool enableRecognitionEnable = Preferences::GetBool(TEST_PREFERENCE_RECOGNITION_ENABLE);
|
||||
bool enableRecognitionForceEnable = Preferences::GetBool(TEST_PREFERENCE_RECOGNITION_FORCE_ENABLE);
|
||||
return (IsInCertifiedApp(aCx, aGlobal) || enableRecognitionForceEnable || enableTests) && enableRecognitionEnable;
|
||||
}
|
||||
|
||||
already_AddRefed<SpeechRecognition>
|
||||
SpeechRecognition::Constructor(const GlobalObject& aGlobal,
|
||||
ErrorResult& aRv)
|
||||
|
|
|
@ -38,6 +38,8 @@ namespace dom {
|
|||
#define TEST_PREFERENCE_ENABLE "media.webspeech.test.enable"
|
||||
#define TEST_PREFERENCE_FAKE_FSM_EVENTS "media.webspeech.test.fake_fsm_events"
|
||||
#define TEST_PREFERENCE_FAKE_RECOGNITION_SERVICE "media.webspeech.test.fake_recognition_service"
|
||||
#define TEST_PREFERENCE_RECOGNITION_ENABLE "media.webspeech.recognition.enable"
|
||||
#define TEST_PREFERENCE_RECOGNITION_FORCE_ENABLE "media.webspeech.recognition.force_enable"
|
||||
#define SPEECH_RECOGNITION_TEST_EVENT_REQUEST_TOPIC "SpeechRecognitionTest:RequestEvent"
|
||||
#define SPEECH_RECOGNITION_TEST_END_TOPIC "SpeechRecognitionTest:End"
|
||||
|
||||
|
@ -65,6 +67,8 @@ public:
|
|||
|
||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
static bool IsAuthorized(JSContext* aCx, JSObject* aGlobal);
|
||||
|
||||
static already_AddRefed<SpeechRecognition>
|
||||
Constructor(const GlobalObject& aGlobal, ErrorResult& aRv);
|
||||
|
||||
|
|
|
@ -938,22 +938,6 @@ var interfaceNamesInGlobalScope =
|
|||
{name: "SourceBuffer", linux: false, release: false},
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
{name: "SourceBufferList", linux: false, release: false},
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
{name: "SpeechRecognition", b2g: true, nightly: true},
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
{name: "SpeechRecognitionError", b2g: true, nightly: true},
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
{name: "SpeechRecognitionAlternative", b2g: true, nightly: true},
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
{name: "SpeechRecognitionResult", b2g: true, nightly: true},
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
{name: "SpeechRecognitionResultList", b2g: true, nightly: true},
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
{name: "SpeechRecognitionEvent", b2g: true, nightly: true},
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
{name: "SpeechGrammar", b2g: true, nightly: true},
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
{name: "SpeechGrammarList", b2g: true, nightly: true},
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
{name: "SpeechSynthesisEvent", b2g: true},
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
*/
|
||||
|
||||
[Constructor,
|
||||
Pref="media.webspeech.recognition.enable"]
|
||||
Pref="media.webspeech.recognition.enable",
|
||||
Func="SpeechRecognition::IsAuthorized"]
|
||||
interface SpeechGrammar {
|
||||
[Throws]
|
||||
attribute DOMString src;
|
||||
|
|
|
@ -10,7 +10,8 @@
|
|||
* liability, trademark and document use rules apply.
|
||||
*/
|
||||
|
||||
[Constructor, Pref="media.webspeech.recognition.enable"]
|
||||
[Constructor, Pref="media.webspeech.recognition.enable",
|
||||
Func="SpeechRecognition::IsAuthorized"]
|
||||
interface SpeechGrammarList {
|
||||
readonly attribute unsigned long length;
|
||||
[Throws]
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
*/
|
||||
|
||||
[Constructor,
|
||||
Pref="media.webspeech.recognition.enable"]
|
||||
Pref="media.webspeech.recognition.enable",
|
||||
Func="SpeechRecognition::IsAuthorized"]
|
||||
interface SpeechRecognition : EventTarget {
|
||||
// recognition parameters
|
||||
[Throws]
|
||||
|
|
|
@ -10,7 +10,8 @@
|
|||
* liability, trademark and document use rules apply.
|
||||
*/
|
||||
|
||||
[Pref="media.webspeech.recognition.enable"]
|
||||
[Pref="media.webspeech.recognition.enable",
|
||||
Func="SpeechRecognition::IsAuthorized"]
|
||||
interface SpeechRecognitionAlternative {
|
||||
readonly attribute DOMString transcript;
|
||||
readonly attribute float confidence;
|
||||
|
|
|
@ -16,6 +16,7 @@ enum SpeechRecognitionErrorCode {
|
|||
};
|
||||
|
||||
[Pref="media.webspeech.recognition.enable",
|
||||
Func="SpeechRecognition::IsAuthorized",
|
||||
Constructor(DOMString type, optional SpeechRecognitionErrorInit eventInitDict)]
|
||||
interface SpeechRecognitionError : Event
|
||||
{
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
interface nsISupports;
|
||||
|
||||
[Pref="media.webspeech.recognition.enable",
|
||||
Func="SpeechRecognition::IsAuthorized",
|
||||
Constructor(DOMString type, optional SpeechRecognitionEventInit eventInitDict)]
|
||||
interface SpeechRecognitionEvent : Event
|
||||
{
|
||||
|
|
|
@ -10,7 +10,8 @@
|
|||
* liability, trademark and document use rules apply.
|
||||
*/
|
||||
|
||||
[Pref="media.webspeech.recognition.enable"]
|
||||
[Pref="media.webspeech.recognition.enable",
|
||||
Func="SpeechRecognition::IsAuthorized"]
|
||||
interface SpeechRecognitionResult {
|
||||
readonly attribute unsigned long length;
|
||||
getter SpeechRecognitionAlternative item(unsigned long index);
|
||||
|
|
|
@ -10,7 +10,8 @@
|
|||
* liability, trademark and document use rules apply.
|
||||
*/
|
||||
|
||||
[Pref="media.webspeech.recognition.enable"]
|
||||
[Pref="media.webspeech.recognition.enable",
|
||||
Func="SpeechRecognition::IsAuthorized"]
|
||||
interface SpeechRecognitionResultList {
|
||||
readonly attribute unsigned long length;
|
||||
getter SpeechRecognitionResult item(unsigned long index);
|
||||
|
|
Загрузка…
Ссылка в новой задаче