diff -r 000000000000 -r 6474c204b198 dom/activities/src/ActivityRequestHandler.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/activities/src/ActivityRequestHandler.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,74 @@ +/* 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 Ci = Components.interfaces; +const Cu = Components.utils; + +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); +Cu.import("resource://gre/modules/Services.jsm"); + +XPCOMUtils.defineLazyServiceGetter(this, "cpmm", + "@mozilla.org/childprocessmessagemanager;1", + "nsISyncMessageSender"); + +function debug(aMsg) { + //dump("-- ActivityRequestHandler.js " + Date.now() + " : " + aMsg + "\n"); +} + +/** + * nsIDOMMozActivityRequestHandler implementation. + */ + +function ActivityRequestHandler() { + debug("ActivityRequestHandler"); + + // When a system message of type 'activity' is emitted, it forces the + // creation of an ActivityWrapper which in turns replace the default + // system message callback. The newly created wrapper then create an + // ActivityRequestHandler object. +} + +ActivityRequestHandler.prototype = { + init: function arh_init(aWindow) { + this._window = aWindow; + }, + + __init: function arh___init(aId, aOptions) { + this._id = aId; + this._options = aOptions; + }, + + get source() { + // We need to clone this object because the this._options.data has + // the type any in WebIDL which will cause the binding layer to pass + // the value which is a COW unmodified to content. + return Cu.cloneInto(this._options, this._window); + }, + + postResult: function arh_postResult(aResult) { + cpmm.sendAsyncMessage("Activity:PostResult", { + "id": this._id, + "result": aResult + }); + Services.obs.notifyObservers(null, "activity-success", this._id); + }, + + postError: function arh_postError(aError) { + cpmm.sendAsyncMessage("Activity:PostError", { + "id": this._id, + "error": aError + }); + Services.obs.notifyObservers(null, "activity-error", this._id); + }, + + classID: Components.ID("{9326952a-dbe3-4d81-a51f-d9c160d96d6b}"), + + QueryInterface: XPCOMUtils.generateQI([ + Ci.nsIDOMGlobalPropertyInitializer + ]) +} + +this.NSGetFactory = XPCOMUtils.generateNSGetFactory([ActivityRequestHandler]);