From 19ebfdffc295e6a2e517d7e1d882e0a06de6493d Mon Sep 17 00:00:00 2001 From: Mike de Boer Date: Mon, 30 Nov 2015 16:22:30 +0100 Subject: [PATCH] Bug 1227539: allow a single argument to be passed to push message subscribers. r=Standard8 --- .../loop/content/shared/js/loopapi-client.js | 6 +++++- .../extensions/loop/test/shared/loopapi-client_test.js | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/browser/extensions/loop/content/shared/js/loopapi-client.js b/browser/extensions/loop/content/shared/js/loopapi-client.js index 916062cc65a..3db342f49a0 100644 --- a/browser/extensions/loop/content/shared/js/loopapi-client.js +++ b/browser/extensions/loop/content/shared/js/loopapi-client.js @@ -151,7 +151,11 @@ var loop = loop || {}; return; } gSubscriptionsMap[eventName].forEach(function(cb) { - cb.apply(null, message.data[1]); + var data = message.data[1]; + if (!Array.isArray(data)) { + data = [data]; + } + cb.apply(null, data); }); }); } diff --git a/browser/extensions/loop/test/shared/loopapi-client_test.js b/browser/extensions/loop/test/shared/loopapi-client_test.js index d8a8c91bfe0..ce406086e48 100644 --- a/browser/extensions/loop/test/shared/loopapi-client_test.js +++ b/browser/extensions/loop/test/shared/loopapi-client_test.js @@ -243,6 +243,16 @@ describe("loopapi-client", function() { sinon.assert.calledOnce(stub3); sinon.assert.calledWithExactly(stub3, "Foo", "Bar"); }); + + it("should invoke subscription with non-array arguments too", function() { + var stub = sinon.stub(); + loop.subscribe("LoopStatusChanged", stub); + + sendMessage({ data: ["LoopStatusChanged", "Foo"] }); + + sinon.assert.calledOnce(stub); + sinon.assert.calledWithExactly(stub, "Foo"); + }); }); describe("unsubscribe", function() {