зеркало из https://github.com/mozilla/gecko-dev.git
91 строка
2.3 KiB
JavaScript
91 строка
2.3 KiB
JavaScript
/* vim: set ts=2 sw=2 sts=2 et tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
export class SpeechDispatcherParent extends JSWindowActorParent {
|
|
prefName() {
|
|
return "media.webspeech.synth.dont_notify_on_error";
|
|
}
|
|
|
|
disableNotification() {
|
|
Services.prefs.setBoolPref(this.prefName(), true);
|
|
}
|
|
|
|
async receiveMessage(aMessage) {
|
|
// The top level browsing context's embedding element should be a xul browser element.
|
|
let browser = this.browsingContext.top.embedderElement;
|
|
|
|
if (!browser) {
|
|
// We don't have a browser so bail!
|
|
return;
|
|
}
|
|
|
|
let notificationId;
|
|
|
|
if (Services.prefs.getBoolPref(this.prefName(), false)) {
|
|
console.info("Opted out from speech-dispatcher error notification");
|
|
return;
|
|
}
|
|
|
|
let messageId;
|
|
switch (aMessage.data) {
|
|
case "lib-missing":
|
|
messageId = "speech-dispatcher-lib-missing";
|
|
break;
|
|
|
|
case "lib-too-old":
|
|
messageId = "speech-dispatcher-lib-too-old";
|
|
break;
|
|
|
|
case "missing-symbol":
|
|
messageId = "speech-dispatcher-missing-symbol";
|
|
break;
|
|
|
|
case "open-fail":
|
|
messageId = "speech-dispatcher-open-fail";
|
|
break;
|
|
|
|
case "no-voices":
|
|
messageId = "speech-dispatcher-no-voices";
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
let MozXULElement = browser.ownerGlobal.MozXULElement;
|
|
MozXULElement.insertFTLIfNeeded("browser/speechDispatcher.ftl");
|
|
|
|
// Now actually create the notification
|
|
let notificationBox = browser.getTabBrowser().getNotificationBox(browser);
|
|
if (notificationBox.getNotificationWithValue(notificationId)) {
|
|
return;
|
|
}
|
|
|
|
let buttons = [
|
|
{
|
|
supportPage: "speechd-setup",
|
|
},
|
|
{
|
|
"l10n-id": "speech-dispatcher-dismiss-button",
|
|
callback: () => {
|
|
this.disableNotification();
|
|
},
|
|
},
|
|
];
|
|
|
|
let iconURL = "chrome://browser/skin/drm-icon.svg";
|
|
notificationBox.appendNotification(
|
|
notificationId,
|
|
{
|
|
label: { "l10n-id": messageId },
|
|
image: iconURL,
|
|
priority: notificationBox.PRIORITY_INFO_HIGH,
|
|
type: "warning",
|
|
},
|
|
buttons
|
|
);
|
|
}
|
|
}
|