diff --git a/platform/firefox/frameModule.js b/platform/firefox/frameModule.js index 197212d60..82c41b2f1 100644 --- a/platform/firefox/frameModule.js +++ b/platform/firefox/frameModule.js @@ -63,6 +63,23 @@ const getMessageManager = function(win) { /******************************************************************************/ +const getChildProcessMessageManager = function() { + var svc = Services; + if ( !svc ) { + return; + } + var cpmm = svc.cpmm; + if ( cpmm ) { + return cpmm; + } + cpmm = Components.classes['@mozilla.org/childprocessmessagemanager;1']; + if ( cpmm ) { + return cpmm.getService(Ci.nsISyncMessageSender); + } +}; + +/******************************************************************************/ + var contentObserver = { classDescription: 'content-policy for ' + hostName, classID: Components.ID('{7afbd130-cbaf-46c2-b944-f5d24305f484}'), @@ -242,11 +259,9 @@ var contentObserver = { wantXHRConstructor: false }); - if ( Services.cpmm ) { + if ( getChildProcessMessageManager() ) { sandbox.rpc = function(details) { - var svc = Services; - if ( svc === undefined ) { return; } - var cpmm = svc.cpmm; + var cpmm = getChildProcessMessageManager(); if ( !cpmm ) { return; } var r = cpmm.sendSyncMessage(rpcEmitterName, details); if ( Array.isArray(r) ) { diff --git a/platform/firefox/vapi-background.js b/platform/firefox/vapi-background.js index bbb6ebc3e..b622458e8 100644 --- a/platform/firefox/vapi-background.js +++ b/platform/firefox/vapi-background.js @@ -1712,16 +1712,24 @@ vAPI.rpcReceiver = (function() { } }; - if ( Services.ppmm ) { - Services.ppmm.addMessageListener( + var ppmm = Services.ppmm; + if ( !ppmm ) { + ppmm = Cc['@mozilla.org/parentprocessmessagemanager;1']; + if ( ppmm ) { + ppmm = ppmm.getService(Ci.nsIMessageListenerManager); + } + } + + if ( ppmm ) { + ppmm.addMessageListener( childProcessMessageName, onChildProcessMessage ); } cleanupTasks.push(function() { - if ( Services.ppmm ) { - Services.ppmm.removeMessageListener( + if ( ppmm ) { + ppmm.removeMessageListener( childProcessMessageName, onChildProcessMessage );