gecko/browser/base/content/test/social/social_worker.js
Shane Caraveo d5ecd2e542 bug 853151 rework recommend into social marks, r=felipe
--HG--
rename : browser/base/content/test/social/social_share_image.png => browser/base/content/test/social/social_mark_image.png
2013-05-04 13:11:18 -07:00

139 lines
5.3 KiB
JavaScript

/* 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/. */
let testPort, sidebarPort, apiPort;
onconnect = function(e) {
let port = e.ports[0];
port.onmessage = function onMessage(event) {
let topic = event.data.topic;
switch (topic) {
case "test-init":
testPort = port;
port.postMessage({topic: "test-init-done"});
break;
case "ping":
port.postMessage({topic: "pong"});
break;
case "test-logout":
apiPort.postMessage({topic: "social.user-profile", data: {}});
break;
case "sidebar-message":
sidebarPort = port;
if (testPort && event.data.result == "ok")
testPort.postMessage({topic:"got-sidebar-message"});
break;
case "service-window-message":
testPort.postMessage({topic:"got-service-window-message",
location: event.data.location});
break;
case "service-window-closed-message":
testPort.postMessage({topic:"got-service-window-closed-message"});
break;
case "test-service-window":
sidebarPort.postMessage({topic:"test-service-window"});
break;
case "test-service-window-twice":
sidebarPort.postMessage({topic:"test-service-window-twice"});
break;
case "test-service-window-twice-result":
testPort.postMessage({topic: "test-service-window-twice-result", result: event.data.result })
break;
case "test-close-service-window":
sidebarPort.postMessage({topic:"test-close-service-window"});
break;
case "panel-message":
if (testPort && event.data.result == "ok")
testPort.postMessage({topic:"got-panel-message",
location: event.data.location
});
break;
case "status-panel-visibility":
testPort.postMessage({topic:"got-social-panel-visibility", result: event.data.result });
break;
case "test-chatbox-open":
sidebarPort.postMessage(event.data);
break;
case "chatbox-opened":
testPort.postMessage(event.data);
break;
case "chatbox-message":
testPort.postMessage({topic:"got-chatbox-message", result: event.data.result});
break;
case "chatbox-visibility":
testPort.postMessage({topic:"got-chatbox-visibility", result: event.data.result});
break;
case "test-flyout-open":
sidebarPort.postMessage({topic:"test-flyout-open"});
break;
case "flyout-message":
testPort.postMessage({topic:"got-flyout-message", result: event.data.result});
break;
case "flyout-visibility":
testPort.postMessage({topic:"got-flyout-visibility", result: event.data.result});
break;
case "test-flyout-close":
sidebarPort.postMessage({topic:"test-flyout-close"});
break;
case "test-worker-chat":
apiPort.postMessage({topic: "social.request-chat", data: event.data.data });
break;
case "social.initialize":
// This is the workerAPI port, respond and set up a notification icon.
// For multiprovider tests, we support acting like different providers
// based on the domain we load from.
apiPort = port;
let profile;
if (location.href.indexOf("https://test1.example.com") == 0) {
profile = {
portrait: "https://test1.example.com/portrait.jpg",
userName: "tester",
displayName: "Test1 User",
};
} else {
profile = {
portrait: "https://example.com/portrait.jpg",
userName: "trickster",
displayName: "Kuma Lisa",
profileURL: "http://en.wikipedia.org/wiki/Kuma_Lisa"
};
}
port.postMessage({topic: "social.user-profile", data: profile});
port.postMessage({
topic: "social.page-mark-config",
data: {
images: {
// this one is relative to test we handle relative ones.
marked: "/browser/browser/base/content/test/social/social_mark_image.png",
// absolute to check we handle them too.
unmarked: "https://example.com/browser/browser/base/content/test/social/social_mark_image.png"
},
messages: {
unmarkedTooltip: "Mark this page",
markedTooltip: "Unmark this page",
unmarkedLabel: "Mark",
markedLabel: "Unmark",
}
}
});
break;
case "test-ambient-notification":
let icon = {
name: "testIcon",
iconURL: "chrome://browser/skin/Info.png",
contentPanel: "https://example.com/browser/browser/base/content/test/social/social_panel.html",
counter: 1
};
apiPort.postMessage({topic: "social.ambient-notification", data: icon});
break;
case "test-isVisible":
sidebarPort.postMessage({topic: "test-isVisible"});
break;
case "test-isVisible-response":
testPort.postMessage({topic: "got-isVisible-response", result: event.data.result});
break;
}
}
}