Bug 1164248 - Handling of session/sessionEnded for notifyUssdReceived. r=edgar

This commit is contained in:
Hsin-Yi Tsai 2015-05-13 15:26:16 +08:00
Родитель 3242c56050
Коммит 1a9127270f
6 изменённых файлов: 89 добавлений и 36 удалений

Просмотреть файл

@ -511,6 +511,8 @@
@RESPATH@/components/RILSystemMessengerHelper.manifest
@RESPATH@/components/TelephonyAudioService.js
@RESPATH@/components/TelephonyAudioService.manifest
@RESPATH@/components/USSDReceivedWrapper.js
@RESPATH@/components/USSDReceivedWrapper.manifest
#ifndef DISABLE_MOZ_RIL_GEOLOC
@RESPATH@/components/TelephonyService.js
@RESPATH@/components/TelephonyService.manifest

Просмотреть файл

@ -1699,37 +1699,4 @@ TelephonyService.prototype = {
}
};
/**
* 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() {
if (DEBUG) debug("USSDReceivedWrapper()");
}
USSDReceivedWrapper.prototype = {
// 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.nsISystemMessagesWrapper])
};
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([TelephonyService,
USSDReceivedWrapper]);
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([TelephonyService]);

Просмотреть файл

@ -1,5 +1,3 @@
component {67d26434-d063-4d28-9f48-5b3189788155} TelephonyService.js
contract @mozilla.org/telephony/gonktelephonyservice;1 {67d26434-d063-4d28-9f48-5b3189788155}
component {d03684ed-ede4-4210-8206-f4f32772d9f5} TelephonyService.js
contract @mozilla.org/dom/system-messages/wrapper/ussd-received;1 {d03684ed-ede4-4210-8206-f4f32772d9f5}

Просмотреть файл

@ -0,0 +1,82 @@
/* -*- 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]);

Просмотреть файл

@ -0,0 +1,2 @@
component {d03684ed-ede4-4210-8206-f4f32772d9f5} USSDReceivedWrapper.js
contract @mozilla.org/dom/system-messages/wrapper/ussd-received;1 {d03684ed-ede4-4210-8206-f4f32772d9f5}

Просмотреть файл

@ -63,6 +63,8 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['MOZ_B2G_RIL']:
EXTRA_COMPONENTS += [
'gonk/TelephonyAudioService.js',
'gonk/TelephonyAudioService.manifest',
'gonk/USSDReceivedWrapper.js',
'gonk/USSDReceivedWrapper.manifest',
]
if not CONFIG['DISABLE_MOZ_RIL_GEOLOC']:
EXTRA_COMPONENTS += [