diff options
Diffstat (limited to 'mobile/android/extensions/flyweb/content/aboutFlyWeb.js')
-rw-r--r-- | mobile/android/extensions/flyweb/content/aboutFlyWeb.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/mobile/android/extensions/flyweb/content/aboutFlyWeb.js b/mobile/android/extensions/flyweb/content/aboutFlyWeb.js new file mode 100644 index 000000000..48b7ea4b7 --- /dev/null +++ b/mobile/android/extensions/flyweb/content/aboutFlyWeb.js @@ -0,0 +1,73 @@ +/* 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/. */ +"use strict"; + +const {classes: Cc, interfaces: Ci, utils: Cu} = Components; + +Cu.import("resource://gre/modules/Console.jsm"); +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); + +XPCOMUtils.defineLazyModuleGetter(this, "Services", "resource://gre/modules/Services.jsm"); + +XPCOMUtils.defineLazyGetter(this, "gFlyWebBundle", function() { + return Services.strings.createBundle("chrome://flyweb/locale/flyweb.properties"); +}); + +let discoveryManager = new FlyWebDiscoveryManager(); + +let discoveryCallback = { + onDiscoveredServicesChanged(services) { + if (!this.id) { + return; + } + + let list = document.getElementById("flyweb-list"); + while (list.firstChild) { + list.firstChild.remove(); + } + + let template = document.getElementById("flyweb-item-template"); + + for (let service of services) { + let item = template.cloneNode(true); + item.removeAttribute("id"); + + item.setAttribute("data-service-id", service.serviceId); + item.querySelector(".title").setAttribute("value", service.displayName); + item.querySelector(".icon").src = "chrome://flyweb/content/icon-64.png"; + + list.appendChild(item); + } + }, + start() { + this.id = discoveryManager.startDiscovery(this); + }, + stop() { + discoveryManager.stopDiscovery(this.id); + this.id = undefined; + } +}; + +window.addEventListener("DOMContentLoaded", () => { + let list = document.getElementById("flyweb-list"); + list.addEventListener("click", (evt) => { + let serviceId = evt.target.closest("[data-service-id]").getAttribute("data-service-id"); + + discoveryManager.pairWithService(serviceId, { + pairingSucceeded(service) { + window.open(service.uiUrl, "FlyWebWindow_" + serviceId); + }, + + pairingFailed(error) { + console.error("FlyWeb failed to connect to service " + serviceId, error); + } + }); + }); + + discoveryCallback.start(); +}); + +window.addEventListener("unload", () => { + discoveryCallback.stop(); +}); |