summaryrefslogtreecommitdiffstats
path: root/dom/push/test/xpcshell/PushServiceHandler.js
blob: d63f32c9789a3bf45ae70778aa9cde69a1f5e341 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// An XPCOM service that's registered with the category manager in the parent
// process for handling push notifications with scope "chrome://test-scope"
"use strict";

const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;

Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");

let pushService = Cc["@mozilla.org/push/Service;1"].getService(Ci.nsIPushService);

function PushServiceHandler() {
  // So JS code can reach into us.
  this.wrappedJSObject = this;
  // Register a push observer.
  this.observed = [];
  Services.obs.addObserver(this, pushService.pushTopic, false);
  Services.obs.addObserver(this, pushService.subscriptionChangeTopic, false);
  Services.obs.addObserver(this, pushService.subscriptionModifiedTopic, false);
}

PushServiceHandler.prototype = {
  classID: Components.ID("{bb7c5199-c0f7-4976-9f6d-1306e32c5591}"),
  QueryInterface: XPCOMUtils.generateQI([]),

  observe(subject, topic, data) {
    this.observed.push({ subject, topic, data });
  },
}

this.NSGetFactory = XPCOMUtils.generateNSGetFactory([PushServiceHandler]);