mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
83 lines
2.5 KiB
JavaScript
83 lines
2.5 KiB
JavaScript
|
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||
|
/* 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/. */
|
||
|
|
||
|
"use strict";
|
||
|
|
||
|
const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
|
||
|
|
||
|
Cu.import("resource://gre/modules/Services.jsm");
|
||
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||
|
|
||
|
const NS_PREFBRANCH_PREFCHANGE_TOPIC_ID = "nsPref:changed";
|
||
|
const kPrefRilDebuggingEnabled = "ril.debugging.enabled";
|
||
|
|
||
|
let DEBUG;
|
||
|
function debug(s) {
|
||
|
dump("USSDReceivedWrapper: " + s + "\n");
|
||
|
}
|
||
|
|
||
|
XPCOMUtils.defineLazyGetter(this, "RIL", function () {
|
||
|
let obj = {};
|
||
|
Cu.import("resource://gre/modules/ril_consts.js", obj);
|
||
|
return obj;
|
||
|
});
|
||
|
|
||
|
/**
|
||
|
* This implements nsISystemMessagesWrapper.wrapMessage(), which provides a
|
||
|
* plugable way to wrap a "ussd-received" type system message.
|
||
|
*
|
||
|
* Please see SystemMessageManager.js to know how it customizes the wrapper.
|
||
|
*/
|
||
|
function USSDReceivedWrapper() {
|
||
|
this._updateDebugFlag();
|
||
|
Services.prefs.addObserver(kPrefRilDebuggingEnabled, this, false);
|
||
|
if (DEBUG) debug("USSDReceivedWrapper()");
|
||
|
}
|
||
|
USSDReceivedWrapper.prototype = {
|
||
|
_updateDebugFlag: function() {
|
||
|
try {
|
||
|
DEBUG = RIL.DEBUG_RIL ||
|
||
|
Services.prefs.getBoolPref(kPrefRilDebuggingEnabled);
|
||
|
} catch (e) {}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* nsIObserver interface.
|
||
|
*/
|
||
|
observe: function(aSubject, aTopic, aData) {
|
||
|
switch (aTopic) {
|
||
|
case NS_PREFBRANCH_PREFCHANGE_TOPIC_ID:
|
||
|
if (aData === kPrefRilDebuggingEnabled) {
|
||
|
this._updateDebugFlag();
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// nsISystemMessagesWrapper implementation.
|
||
|
wrapMessage: function(aMessage, aWindow) {
|
||
|
if (DEBUG) debug("wrapMessage: " + JSON.stringify(aMessage));
|
||
|
|
||
|
let session = aMessage.sessionEnded ? null :
|
||
|
new aWindow.USSDSession(aMessage.serviceId);
|
||
|
|
||
|
let event = new aWindow.USSDReceivedEvent("ussdreceived", {
|
||
|
serviceId: aMessage.serviceId,
|
||
|
message: aMessage.message,
|
||
|
session: session
|
||
|
});
|
||
|
|
||
|
return event;
|
||
|
},
|
||
|
|
||
|
classDescription: "USSDReceivedWrapper",
|
||
|
classID: Components.ID("{d03684ed-ede4-4210-8206-f4f32772d9f5}"),
|
||
|
contractID: "@mozilla.org/dom/system-messages/wrapper/ussd-received;1",
|
||
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver,
|
||
|
Ci.nsISystemMessagesWrapper])
|
||
|
};
|
||
|
|
||
|
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([USSDReceivedWrapper]);
|