mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-24 02:35:41 +00:00
de899472f4
MozReview-Commit-ID: J1vU3nRKlsa --HG-- extra : rebase_source : 9a1fabbdc42afb92a224fb5e89c2eaf106943cc9
48 lines
2.0 KiB
JavaScript
48 lines
2.0 KiB
JavaScript
"use strict";
|
|
|
|
// Here we test that if an xpcom component is registered with the category
|
|
// manager for push notifications against a specific scope, that service is
|
|
// instantiated before the message is delivered.
|
|
|
|
// This component is registered for "chrome://test-scope"
|
|
const kServiceContractID = "@mozilla.org/dom/push/test/PushServiceHandler;1";
|
|
|
|
let pushService = Cc["@mozilla.org/push/Service;1"].getService(Ci.nsIPushService);
|
|
|
|
add_test(function test_service_instantiation() {
|
|
do_load_manifest("PushServiceHandler.manifest");
|
|
|
|
let scope = "chrome://test-scope";
|
|
let pushNotifier = Cc["@mozilla.org/push/Notifier;1"].getService(Ci.nsIPushNotifier);
|
|
let principal = Services.scriptSecurityManager.getSystemPrincipal();
|
|
pushNotifier.notifyPush(scope, principal, "");
|
|
|
|
// Now get a handle to our service and check it received the notification.
|
|
let handlerService = Cc[kServiceContractID]
|
|
.getService(Ci.nsISupports)
|
|
.wrappedJSObject;
|
|
|
|
equal(handlerService.observed.length, 1);
|
|
equal(handlerService.observed[0].topic, pushService.pushTopic);
|
|
let message = handlerService.observed[0].subject.QueryInterface(Ci.nsIPushMessage);
|
|
equal(message.principal, principal);
|
|
strictEqual(message.data, null);
|
|
equal(handlerService.observed[0].data, scope);
|
|
|
|
// and a subscription change.
|
|
pushNotifier.notifySubscriptionChange(scope, principal);
|
|
equal(handlerService.observed.length, 2);
|
|
equal(handlerService.observed[1].topic, pushService.subscriptionChangeTopic);
|
|
equal(handlerService.observed[1].subject, principal);
|
|
equal(handlerService.observed[1].data, scope);
|
|
|
|
// and a subscription modified event.
|
|
pushNotifier.notifySubscriptionModified(scope, principal);
|
|
equal(handlerService.observed.length, 3);
|
|
equal(handlerService.observed[2].topic, pushService.subscriptionModifiedTopic);
|
|
equal(handlerService.observed[2].subject, principal);
|
|
equal(handlerService.observed[2].data, scope);
|
|
|
|
run_next_test();
|
|
});
|