1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/base/content/test/social/social_worker.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,128 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +let testPort, sidebarPort, apiPort; 1.9 + 1.10 +onconnect = function(e) { 1.11 + let port = e.ports[0]; 1.12 + port.onmessage = function onMessage(event) { 1.13 + let topic = event.data.topic; 1.14 + switch (topic) { 1.15 + case "test-init": 1.16 + testPort = port; 1.17 + port.postMessage({topic: "test-init-done"}); 1.18 + break; 1.19 + case "ping": 1.20 + port.postMessage({topic: "pong"}); 1.21 + break; 1.22 + case "test-logout": 1.23 + apiPort.postMessage({topic: "social.user-profile", data: {}}); 1.24 + break; 1.25 + case "sidebar-message": 1.26 + sidebarPort = port; 1.27 + if (testPort && event.data.result == "ok") 1.28 + testPort.postMessage({topic:"got-sidebar-message"}); 1.29 + break; 1.30 + case "service-window-message": 1.31 + testPort.postMessage({topic:"got-service-window-message", 1.32 + location: event.data.location}); 1.33 + break; 1.34 + case "service-window-closed-message": 1.35 + testPort.postMessage({topic:"got-service-window-closed-message"}); 1.36 + break; 1.37 + case "test-service-window": 1.38 + sidebarPort.postMessage({topic:"test-service-window"}); 1.39 + break; 1.40 + case "test-service-window-twice": 1.41 + sidebarPort.postMessage({topic:"test-service-window-twice"}); 1.42 + break; 1.43 + case "test-service-window-twice-result": 1.44 + testPort.postMessage({topic: "test-service-window-twice-result", result: event.data.result }) 1.45 + break; 1.46 + case "test-close-service-window": 1.47 + sidebarPort.postMessage({topic:"test-close-service-window"}); 1.48 + break; 1.49 + case "panel-message": 1.50 + if (testPort && event.data.result == "ok") 1.51 + testPort.postMessage({topic:"got-panel-message", 1.52 + location: event.data.location 1.53 + }); 1.54 + break; 1.55 + case "status-panel-visibility": 1.56 + testPort.postMessage({topic:"got-social-panel-visibility", result: event.data.result }); 1.57 + break; 1.58 + case "test-chatbox-open": 1.59 + sidebarPort.postMessage(event.data); 1.60 + break; 1.61 + case "chatbox-opened": 1.62 + testPort.postMessage(event.data); 1.63 + break; 1.64 + case "chatbox-message": 1.65 + testPort.postMessage({topic:"got-chatbox-message", result: event.data.result}); 1.66 + break; 1.67 + case "chatbox-visibility": 1.68 + testPort.postMessage({topic:"got-chatbox-visibility", result: event.data.result}); 1.69 + break; 1.70 + case "test-flyout-open": 1.71 + sidebarPort.postMessage({topic:"test-flyout-open"}); 1.72 + break; 1.73 + case "flyout-message": 1.74 + testPort.postMessage({topic:"got-flyout-message", result: event.data.result}); 1.75 + break; 1.76 + case "flyout-visibility": 1.77 + testPort.postMessage({topic:"got-flyout-visibility", result: event.data.result}); 1.78 + break; 1.79 + case "test-flyout-close": 1.80 + sidebarPort.postMessage({topic:"test-flyout-close"}); 1.81 + break; 1.82 + case "test-worker-chat": 1.83 + apiPort.postMessage({topic: "social.request-chat", data: event.data.data }); 1.84 + break; 1.85 + case "social.initialize": 1.86 + // This is the workerAPI port, respond and set up a notification icon. 1.87 + // For multiprovider tests, we support acting like different providers 1.88 + // based on the domain we load from. 1.89 + apiPort = port; 1.90 + // purposely fall through and set the profile on initialization 1.91 + case "test-set-profile": 1.92 + let profile; 1.93 + if (location.href.indexOf("https://test1.example.com") == 0) { 1.94 + profile = { 1.95 + portrait: "https://test1.example.com/portrait.jpg", 1.96 + userName: "tester", 1.97 + displayName: "Test1 User", 1.98 + }; 1.99 + } else { 1.100 + profile = { 1.101 + portrait: "https://example.com/portrait.jpg", 1.102 + userName: "trickster", 1.103 + displayName: "Kuma Lisa", 1.104 + profileURL: "http://en.wikipedia.org/wiki/Kuma_Lisa" 1.105 + }; 1.106 + } 1.107 + apiPort.postMessage({topic: "social.user-profile", data: profile}); 1.108 + break; 1.109 + case "test-ambient-notification": 1.110 + apiPort.postMessage({topic: "social.ambient-notification", data: event.data.data}); 1.111 + break; 1.112 + case "test-isVisible": 1.113 + sidebarPort.postMessage({topic: "test-isVisible"}); 1.114 + break; 1.115 + case "test-isVisible-response": 1.116 + testPort.postMessage({topic: "got-isVisible-response", result: event.data.result}); 1.117 + break; 1.118 + case "share-data-message": 1.119 + if (testPort) 1.120 + testPort.postMessage({topic:"got-share-data-message", result: event.data.result}); 1.121 + break; 1.122 + case "worker.update": 1.123 + apiPort.postMessage({topic: 'social.manifest-get'}); 1.124 + break; 1.125 + case "social.manifest": 1.126 + event.data.data.version = 2; 1.127 + apiPort.postMessage({topic: 'social.manifest-set', data: event.data.data}); 1.128 + break; 1.129 + } 1.130 + } 1.131 +}