зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1277026
- Handle FxA push payloads. r=kitcambridge
MozReview-Commit-ID: Cd6nKHP2VQi --HG-- extra : rebase_source : 05d6879df14f85f9f60ed78386f21b8c7fd6c575
This commit is contained in:
Родитель
1625710c42
Коммит
0c9fbf6f6c
|
@ -115,37 +115,46 @@ FxAccountsPushService.prototype = {
|
|||
* @param data
|
||||
*/
|
||||
observe(subject, topic, data) {
|
||||
this.log.trace(`observed topic=${topic}, data=${data}, subject=${subject}`);
|
||||
switch (topic) {
|
||||
case this.pushService.pushTopic:
|
||||
if (data === FXA_PUSH_SCOPE_ACCOUNT_UPDATE) {
|
||||
this._onPushMessage();
|
||||
}
|
||||
break;
|
||||
case this.pushService.subscriptionChangeTopic:
|
||||
if (data === FXA_PUSH_SCOPE_ACCOUNT_UPDATE) {
|
||||
this._onPushSubscriptionChange();
|
||||
}
|
||||
break;
|
||||
case ONLOGOUT_NOTIFICATION:
|
||||
// user signed out, we need to stop polling the Push Server
|
||||
this.unsubscribe().catch(err => {
|
||||
this.log.error("Error during unsubscribe", err);
|
||||
});
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
this.log.trace(`observed topic=${topic}, data=${data}, subject=${subject}`);
|
||||
switch (topic) {
|
||||
case this.pushService.pushTopic:
|
||||
if (data === FXA_PUSH_SCOPE_ACCOUNT_UPDATE) {
|
||||
let message = subject.QueryInterface(Ci.nsIPushMessage);
|
||||
this._onPushMessage(message);
|
||||
}
|
||||
break;
|
||||
case this.pushService.subscriptionChangeTopic:
|
||||
if (data === FXA_PUSH_SCOPE_ACCOUNT_UPDATE) {
|
||||
this._onPushSubscriptionChange();
|
||||
}
|
||||
break;
|
||||
case ONLOGOUT_NOTIFICATION:
|
||||
// user signed out, we need to stop polling the Push Server
|
||||
this.unsubscribe().catch(err => {
|
||||
this.log.error("Error during unsubscribe", err);
|
||||
});
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Fired when the Push server sends a notification.
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
_onPushMessage() {
|
||||
_onPushMessage(message) {
|
||||
this.log.trace("FxAccountsPushService _onPushMessage");
|
||||
// Use this signal to check the verification state of the account right away
|
||||
this.fxAccounts.checkVerificationStatus();
|
||||
if (!message.data) {
|
||||
// Use the empty signal to check the verification state of the account right away
|
||||
this.fxAccounts.checkVerificationStatus();
|
||||
return;
|
||||
}
|
||||
let payload = message.data.json();
|
||||
switch (payload.command) {
|
||||
default:
|
||||
this.log.warn("FxA Push command unrecognized: " + payload.command);
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Fired when the Push server drops a subscription, or the subscription identifier changes.
|
||||
|
|
|
@ -49,7 +49,7 @@ let mockLog = {
|
|||
|
||||
add_task(function* initialize() {
|
||||
let pushService = new FxAccountsPushService();
|
||||
do_check_eq(pushService.initialize(), false);
|
||||
equal(pushService.initialize(), false);
|
||||
});
|
||||
|
||||
add_task(function* registerPushEndpointSuccess() {
|
||||
|
@ -59,7 +59,7 @@ add_task(function* registerPushEndpointSuccess() {
|
|||
});
|
||||
|
||||
let subscription = yield pushService.registerPushEndpoint();
|
||||
do_check_eq(subscription.endpoint, MOCK_ENDPOINT);
|
||||
equal(subscription.endpoint, MOCK_ENDPOINT);
|
||||
});
|
||||
|
||||
add_task(function* registerPushEndpointFailure() {
|
||||
|
@ -75,7 +75,7 @@ add_task(function* registerPushEndpointFailure() {
|
|||
});
|
||||
|
||||
let subscription = yield pushService.registerPushEndpoint();
|
||||
do_check_eq(subscription, null);
|
||||
equal(subscription, null);
|
||||
});
|
||||
|
||||
add_task(function* unsubscribeSuccess() {
|
||||
|
@ -85,7 +85,7 @@ add_task(function* unsubscribeSuccess() {
|
|||
});
|
||||
|
||||
let result = yield pushService.unsubscribe();
|
||||
do_check_eq(result, true);
|
||||
equal(result, true);
|
||||
});
|
||||
|
||||
add_task(function* unsubscribeFailure() {
|
||||
|
@ -101,7 +101,7 @@ add_task(function* unsubscribeFailure() {
|
|||
});
|
||||
|
||||
let result = yield pushService.unsubscribe();
|
||||
do_check_eq(result, null);
|
||||
equal(result, null);
|
||||
});
|
||||
|
||||
add_test(function observeLogout() {
|
||||
|
@ -122,10 +122,15 @@ add_test(function observeLogout() {
|
|||
pushService.observe(null, ONLOGOUT_NOTIFICATION);
|
||||
});
|
||||
|
||||
add_test(function observePushTopic() {
|
||||
add_test(function observePushTopicVerify() {
|
||||
let emptyMsg = {
|
||||
QueryInterface: function() {
|
||||
return this;
|
||||
}
|
||||
};
|
||||
let customAccounts = Object.assign(mockFxAccounts, {
|
||||
checkVerificationStatus: function () {
|
||||
// checking verification status on push messages
|
||||
// checking verification status on push messages without data
|
||||
run_next_test();
|
||||
}
|
||||
});
|
||||
|
@ -135,7 +140,7 @@ add_test(function observePushTopic() {
|
|||
fxAccounts: customAccounts,
|
||||
});
|
||||
|
||||
pushService.observe(null, mockPushService.pushTopic, FXA_PUSH_SCOPE_ACCOUNT_UPDATE);
|
||||
pushService.observe(emptyMsg, mockPushService.pushTopic, FXA_PUSH_SCOPE_ACCOUNT_UPDATE);
|
||||
});
|
||||
|
||||
add_test(function observeSubscriptionChangeTopic() {
|
||||
|
@ -153,8 +158,3 @@ add_test(function observeSubscriptionChangeTopic() {
|
|||
|
||||
pushService.observe(null, mockPushService.subscriptionChangeTopic, FXA_PUSH_SCOPE_ACCOUNT_UPDATE);
|
||||
});
|
||||
|
||||
|
||||
function run_test() {
|
||||
run_next_test();
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче