|
1 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
4 |
|
5 let testPort, sidebarPort, apiPort; |
|
6 |
|
7 onconnect = function(e) { |
|
8 let port = e.ports[0]; |
|
9 port.onmessage = function onMessage(event) { |
|
10 let topic = event.data.topic; |
|
11 switch (topic) { |
|
12 case "test-init": |
|
13 testPort = port; |
|
14 port.postMessage({topic: "test-init-done"}); |
|
15 break; |
|
16 case "ping": |
|
17 port.postMessage({topic: "pong"}); |
|
18 break; |
|
19 case "test-logout": |
|
20 apiPort.postMessage({topic: "social.user-profile", data: {}}); |
|
21 break; |
|
22 case "sidebar-message": |
|
23 sidebarPort = port; |
|
24 if (testPort && event.data.result == "ok") |
|
25 testPort.postMessage({topic:"got-sidebar-message"}); |
|
26 break; |
|
27 case "service-window-message": |
|
28 testPort.postMessage({topic:"got-service-window-message", |
|
29 location: event.data.location}); |
|
30 break; |
|
31 case "service-window-closed-message": |
|
32 testPort.postMessage({topic:"got-service-window-closed-message"}); |
|
33 break; |
|
34 case "test-service-window": |
|
35 sidebarPort.postMessage({topic:"test-service-window"}); |
|
36 break; |
|
37 case "test-service-window-twice": |
|
38 sidebarPort.postMessage({topic:"test-service-window-twice"}); |
|
39 break; |
|
40 case "test-service-window-twice-result": |
|
41 testPort.postMessage({topic: "test-service-window-twice-result", result: event.data.result }) |
|
42 break; |
|
43 case "test-close-service-window": |
|
44 sidebarPort.postMessage({topic:"test-close-service-window"}); |
|
45 break; |
|
46 case "panel-message": |
|
47 if (testPort && event.data.result == "ok") |
|
48 testPort.postMessage({topic:"got-panel-message", |
|
49 location: event.data.location |
|
50 }); |
|
51 break; |
|
52 case "status-panel-visibility": |
|
53 testPort.postMessage({topic:"got-social-panel-visibility", result: event.data.result }); |
|
54 break; |
|
55 case "test-chatbox-open": |
|
56 sidebarPort.postMessage(event.data); |
|
57 break; |
|
58 case "chatbox-opened": |
|
59 testPort.postMessage(event.data); |
|
60 break; |
|
61 case "chatbox-message": |
|
62 testPort.postMessage({topic:"got-chatbox-message", result: event.data.result}); |
|
63 break; |
|
64 case "chatbox-visibility": |
|
65 testPort.postMessage({topic:"got-chatbox-visibility", result: event.data.result}); |
|
66 break; |
|
67 case "test-flyout-open": |
|
68 sidebarPort.postMessage({topic:"test-flyout-open"}); |
|
69 break; |
|
70 case "flyout-message": |
|
71 testPort.postMessage({topic:"got-flyout-message", result: event.data.result}); |
|
72 break; |
|
73 case "flyout-visibility": |
|
74 testPort.postMessage({topic:"got-flyout-visibility", result: event.data.result}); |
|
75 break; |
|
76 case "test-flyout-close": |
|
77 sidebarPort.postMessage({topic:"test-flyout-close"}); |
|
78 break; |
|
79 case "test-worker-chat": |
|
80 apiPort.postMessage({topic: "social.request-chat", data: event.data.data }); |
|
81 break; |
|
82 case "social.initialize": |
|
83 // This is the workerAPI port, respond and set up a notification icon. |
|
84 // For multiprovider tests, we support acting like different providers |
|
85 // based on the domain we load from. |
|
86 apiPort = port; |
|
87 // purposely fall through and set the profile on initialization |
|
88 case "test-set-profile": |
|
89 let profile; |
|
90 if (location.href.indexOf("https://test1.example.com") == 0) { |
|
91 profile = { |
|
92 portrait: "https://test1.example.com/portrait.jpg", |
|
93 userName: "tester", |
|
94 displayName: "Test1 User", |
|
95 }; |
|
96 } else { |
|
97 profile = { |
|
98 portrait: "https://example.com/portrait.jpg", |
|
99 userName: "trickster", |
|
100 displayName: "Kuma Lisa", |
|
101 profileURL: "http://en.wikipedia.org/wiki/Kuma_Lisa" |
|
102 }; |
|
103 } |
|
104 apiPort.postMessage({topic: "social.user-profile", data: profile}); |
|
105 break; |
|
106 case "test-ambient-notification": |
|
107 apiPort.postMessage({topic: "social.ambient-notification", data: event.data.data}); |
|
108 break; |
|
109 case "test-isVisible": |
|
110 sidebarPort.postMessage({topic: "test-isVisible"}); |
|
111 break; |
|
112 case "test-isVisible-response": |
|
113 testPort.postMessage({topic: "got-isVisible-response", result: event.data.result}); |
|
114 break; |
|
115 case "share-data-message": |
|
116 if (testPort) |
|
117 testPort.postMessage({topic:"got-share-data-message", result: event.data.result}); |
|
118 break; |
|
119 case "worker.update": |
|
120 apiPort.postMessage({topic: 'social.manifest-get'}); |
|
121 break; |
|
122 case "social.manifest": |
|
123 event.data.data.version = 2; |
|
124 apiPort.postMessage({topic: 'social.manifest-set', data: event.data.data}); |
|
125 break; |
|
126 } |
|
127 } |
|
128 } |