browser/base/content/test/social/social_worker.js

changeset 0
6474c204b198
     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 +}

mercurial