diff options
author | Gaming4JC <g4jc@hyperbola.info> | 2020-12-07 17:45:41 -0500 |
---|---|---|
committer | Gaming4JC <g4jc@hyperbola.info> | 2020-12-07 17:45:41 -0500 |
commit | 86869ff082ea45317e16adc5781da0a18049dee8 (patch) | |
tree | 6529e4e555bcbc9be5a0dc424d38bac100ae2a91 | |
parent | e006c851dc394fac161695015a26a74194f01955 (diff) | |
download | iceweasel-uxp-86869ff082ea45317e16adc5781da0a18049dee8.tar.gz |
Backport UXP #1390 - Remove application support for the Presentation API
-rw-r--r-- | app/profile/iceweasel-uxp.js | 1 | ||||
-rw-r--r-- | base/content/browser-context.inc | 5 | ||||
-rw-r--r-- | base/content/browser-menubar.inc | 10 | ||||
-rwxr-xr-x | base/content/browser.js | 31 | ||||
-rw-r--r-- | base/content/nsContextMenu.js | 30 | ||||
-rw-r--r-- | base/content/tab-content.js | 28 | ||||
-rw-r--r-- | components/nsBrowserGlue.js | 24 | ||||
-rw-r--r-- | locales/en-US/chrome/browser/browser.dtd | 4 | ||||
-rw-r--r-- | modules/CastingApps.jsm | 164 | ||||
-rw-r--r-- | modules/moz.build | 1 |
10 files changed, 1 insertions, 297 deletions
diff --git a/app/profile/iceweasel-uxp.js b/app/profile/iceweasel-uxp.js index 05520f0..23b4aaa 100644 --- a/app/profile/iceweasel-uxp.js +++ b/app/profile/iceweasel-uxp.js @@ -206,7 +206,6 @@ pref("browser.slowStartup.timeThreshold", 40000); pref("browser.slowStartup.maxSamples", 5); pref("browser.enable_automatic_image_resizing", true); -pref("browser.casting.enabled", false); pref("browser.chrome.site_icons", true); pref("browser.chrome.favicons", true); // browser.warnOnQuit == false will override all other possible prompts when quitting or restarting diff --git a/base/content/browser-context.inc b/base/content/browser-context.inc index 92bc03c..d64725e 100644 --- a/base/content/browser-context.inc +++ b/base/content/browser-context.inc @@ -225,11 +225,6 @@ label="&emailVideoCmd.label;" accesskey="&emailVideoCmd.accesskey;" oncommand="gContextMenu.sendMedia();"/> - <menu id="context-castvideo" - label="&castVideoCmd.label;" - accesskey="&castVideoCmd.accesskey;"> - <menupopup id="context-castvideo-popup" onpopupshowing="gContextMenu.populateCastVideoMenu(this)"/> - </menu> <menuitem id="context-sendaudio" label="&emailAudioCmd.label;" accesskey="&emailAudioCmd.accesskey;" diff --git a/base/content/browser-menubar.inc b/base/content/browser-menubar.inc index b6ab23b..702c5ec 100644 --- a/base/content/browser-menubar.inc +++ b/base/content/browser-menubar.inc @@ -436,8 +436,7 @@ <menu id="tools-menu" label="&toolsMenu.label;" - accesskey="&toolsMenu.accesskey;" - onpopupshowing="mirrorShow(this)"> + accesskey="&toolsMenu.accesskey;"> <menupopup id="menu_ToolsPopup" #ifdef MOZ_SERVICES_SYNC onpopupshowing="gSyncUI.updateUI();" @@ -486,13 +485,6 @@ key="key_viewInfo" #endif command="View:PageInfo"/> - <menu id="menu_mirrorTabCmd" - hidden="true" - accesskey="&mirrorTabCmd.accesskey;" - label="&mirrorTabCmd.label;"> - <menupopup id="menu_mirrorTab-popup" - onpopupshowing="populateMirrorTabMenu(this)"/> - </menu> <menuseparator id="prefSep"/> <menuitem id="menu_preferences" label="&preferencesCmd2.label;" diff --git a/base/content/browser.js b/base/content/browser.js index e86c050..24649f8 100755 --- a/base/content/browser.js +++ b/base/content/browser.js @@ -16,7 +16,6 @@ Cu.import("resource://gre/modules/NotificationDB.jsm"); ["AddonWatcher", "resource://gre/modules/AddonWatcher.jsm"], ["AppConstants", "resource://gre/modules/AppConstants.jsm"], ["BrowserUtils", "resource://gre/modules/BrowserUtils.jsm"], - ["CastingApps", "resource:///modules/CastingApps.jsm"], ["CharsetMenu", "resource://gre/modules/CharsetMenu.jsm"], ["Color", "resource://gre/modules/Color.jsm"], ["ContentSearch", "resource:///modules/ContentSearch.jsm"], @@ -38,7 +37,6 @@ Cu.import("resource://gre/modules/NotificationDB.jsm"); ["RecentWindow", "resource:///modules/RecentWindow.jsm"], ["SessionStore", "resource:///modules/sessionstore/SessionStore.jsm"], ["ShortcutUtils", "resource://gre/modules/ShortcutUtils.jsm"], - ["SimpleServiceDiscovery", "resource://gre/modules/SimpleServiceDiscovery.jsm"], ["SitePermissions", "resource:///modules/SitePermissions.jsm"], ["TabCrashHandler", "resource:///modules/ContentCrashHandlers.jsm"], ["Task", "resource://gre/modules/Task.jsm"], @@ -2964,35 +2962,6 @@ function BrowserFullScreen() window.fullScreen = !window.fullScreen; } -function mirrorShow(popup) { - let services = []; - if (Services.prefs.getBoolPref("browser.casting.enabled")) { - services = CastingApps.getServicesForMirroring(); - } - popup.ownerDocument.getElementById("menu_mirrorTabCmd").hidden = !services.length; -} - -function mirrorMenuItemClicked(event) { - gBrowser.selectedBrowser.messageManager.sendAsyncMessage("SecondScreen:tab-mirror", - {service: event.originalTarget._service}); -} - -function populateMirrorTabMenu(popup) { - popup.innerHTML = null; - if (!Services.prefs.getBoolPref("browser.casting.enabled")) { - return; - } - let doc = popup.ownerDocument; - let services = CastingApps.getServicesForMirroring(); - services.forEach(service => { - let item = doc.createElement("menuitem"); - item.setAttribute("label", service.friendlyName); - item._service = service; - item.addEventListener("command", mirrorMenuItemClicked); - popup.appendChild(item); - }); -} - function getWebNavigation() { return gBrowser.webNavigation; diff --git a/base/content/nsContextMenu.js b/base/content/nsContextMenu.js index 5c182b3..97f666a 100644 --- a/base/content/nsContextMenu.js +++ b/base/content/nsContextMenu.js @@ -161,21 +161,10 @@ nsContextMenu.prototype = { // Send media URL (but not for canvas, since it's a big data: URL) this.showItem("context-sendimage", this.onImage); this.showItem("context-sendvideo", this.onVideo); - this.showItem("context-castvideo", this.onVideo); this.showItem("context-sendaudio", this.onAudio); let mediaIsBlob = this.mediaURL.startsWith("blob:"); this.setItemAttr("context-sendvideo", "disabled", !this.mediaURL || mediaIsBlob); this.setItemAttr("context-sendaudio", "disabled", !this.mediaURL || mediaIsBlob); - let shouldShowCast = Services.prefs.getBoolPref("browser.casting.enabled"); - // getServicesForVideo alone would be sufficient here (it depends on - // SimpleServiceDiscovery.services), but SimpleServiceDiscovery is guaranteed - // to be already loaded, since we load it on startup in nsBrowserGlue, - // and CastingApps isn't, so check SimpleServiceDiscovery.services first - // to avoid needing to load CastingApps.jsm if we don't need to. - shouldShowCast = shouldShowCast && this.mediaURL && - SimpleServiceDiscovery.services.length > 0 && - CastingApps.getServicesForVideo(this.target).length > 0; - this.setItemAttr("context-castvideo", "disabled", !shouldShowCast); }, initViewItems: function CM_initViewItems() { @@ -1364,25 +1353,6 @@ nsContextMenu.prototype = { MailIntegration.sendMessage(this.mediaURL, ""); }, - castVideo: function() { - CastingApps.openExternal(this.target, window); - }, - - populateCastVideoMenu: function(popup) { - let videoEl = this.target; - popup.innerHTML = null; - let doc = popup.ownerDocument; - let services = CastingApps.getServicesForVideo(videoEl); - services.forEach(service => { - let item = doc.createElement("menuitem"); - item.setAttribute("label", service.friendlyName); - item.addEventListener("command", event => { - CastingApps.sendVideoToService(videoEl, service); - }); - popup.appendChild(item); - }); - }, - playPlugin: function() { gPluginHandler.contextMenuCommand(this.browser, this.target, "play"); }, diff --git a/base/content/tab-content.js b/base/content/tab-content.js index fec13eb..000683a 100644 --- a/base/content/tab-content.js +++ b/base/content/tab-content.js @@ -22,21 +22,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "ReaderMode", "resource://gre/modules/ReaderMode.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Readerable", "resource://gre/modules/Readerable.jsm"); -XPCOMUtils.defineLazyGetter(this, "SimpleServiceDiscovery", function() { - let ssdp = Cu.import("resource://gre/modules/SimpleServiceDiscovery.jsm", {}).SimpleServiceDiscovery; - // Register targets - ssdp.registerDevice({ - id: "roku:ecp", - target: "roku:ecp", - factory: function(aService) { - Cu.import("resource://gre/modules/RokuApp.jsm"); - return new RokuApp(aService); - }, - types: ["video/mp4"], - extensions: ["mp4"] - }); - return ssdp; -}); // TabChildGlobal var global = this; @@ -91,19 +76,6 @@ addMessageListener("MixedContent:ReenableProtection", function() { docShell.mixedContentChannel = null; }); -addMessageListener("SecondScreen:tab-mirror", function(message) { - if (!Services.prefs.getBoolPref("browser.casting.enabled")) { - return; - } - let app = SimpleServiceDiscovery.findAppForService(message.data.service); - if (app) { - let width = content.innerWidth; - let height = content.innerHeight; - let viewport = {cssWidth: width, cssHeight: height, width: width, height: height}; - app.mirror(function() {}, content, viewport, function() {}, content); - } -}); - var AboutHomeListener = { init: function(chromeGlobal) { chromeGlobal.addEventListener('AboutHomeLoad', this, false, true); diff --git a/components/nsBrowserGlue.js b/components/nsBrowserGlue.js index 66a770e..80bde24 100644 --- a/components/nsBrowserGlue.js +++ b/components/nsBrowserGlue.js @@ -54,7 +54,6 @@ XPCOMUtils.defineLazyServiceGetter(this, "AlertsService", "@mozilla.org/alerts-s ["RemotePrompt", "resource:///modules/RemotePrompt.jsm"], ["SessionStore", "resource:///modules/sessionstore/SessionStore.jsm"], ["ShellService", "resource:///modules/ShellService.jsm"], - ["SimpleServiceDiscovery", "resource://gre/modules/SimpleServiceDiscovery.jsm"], ["TabCrashHandler", "resource:///modules/ContentCrashHandlers.jsm"], ["Task", "resource://gre/modules/Task.jsm"], ["URLBarZoom", "resource:///modules/URLBarZoom.jsm"], @@ -873,31 +872,8 @@ BrowserGlue.prototype = { } }, - _initServiceDiscovery: function () { - if (!Services.prefs.getBoolPref("browser.casting.enabled")) { - return; - } - var rokuDevice = { - id: "roku:ecp", - target: "roku:ecp", - factory: function(aService) { - Cu.import("resource://gre/modules/RokuApp.jsm"); - return new RokuApp(aService); - }, - types: ["video/mp4"], - extensions: ["mp4"] - }; - - // Register targets - SimpleServiceDiscovery.registerDevice(rokuDevice); - - // Search for devices continuously every 120 seconds - SimpleServiceDiscovery.search(120 * 1000); - }, - // All initial windows have opened. _onWindowsRestored: function BG__onWindowsRestored() { - this._initServiceDiscovery(); // Show update notification, if needed. if (Services.prefs.prefHasUserValue("app.update.postupdate")) diff --git a/locales/en-US/chrome/browser/browser.dtd b/locales/en-US/chrome/browser/browser.dtd index d28bc63..622ad62 100644 --- a/locales/en-US/chrome/browser/browser.dtd +++ b/locales/en-US/chrome/browser/browser.dtd @@ -94,8 +94,6 @@ when there are no windows but Firefox is still running. --> <!ENTITY pageInfoCmd.label "Page Info"> <!ENTITY pageInfoCmd.accesskey "I"> <!ENTITY pageInfoCmd.commandkey "i"> -<!ENTITY mirrorTabCmd.label "Mirror Tab"> -<!ENTITY mirrorTabCmd.accesskey "m"> <!-- LOCALIZATION NOTE (enterFullScreenCmd.label, exitFullScreenCmd.label): These should match what Safari and other Apple applications use on OS X Lion. --> <!ENTITY enterFullScreenCmd.label "Enter Full Screen"> @@ -491,8 +489,6 @@ These should match what Safari and other Apple applications use on OS X Lion. -- <!ENTITY emailImageCmd.accesskey "g"> <!ENTITY emailVideoCmd.label "Email Video…"> <!ENTITY emailVideoCmd.accesskey "a"> -<!ENTITY castVideoCmd.label "Send Video To Device"> -<!ENTITY castVideoCmd.accesskey "e"> <!ENTITY emailAudioCmd.label "Email Audio…"> <!ENTITY emailAudioCmd.accesskey "a"> <!ENTITY playPluginCmd.label "Activate this plugin"> diff --git a/modules/CastingApps.jsm b/modules/CastingApps.jsm deleted file mode 100644 index 6f32753..0000000 --- a/modules/CastingApps.jsm +++ /dev/null @@ -1,164 +0,0 @@ -// -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; js2-basic-offset: 2; js2-skip-preprocessor-directives: t; -*- -/* 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"; -this.EXPORTED_SYMBOLS = ["CastingApps"]; - -const { classes: Cc, interfaces: Ci, utils: Cu } = Components; - -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/SimpleServiceDiscovery.jsm"); - - -var CastingApps = { - _sendEventToVideo: function (element, data) { - let event = element.ownerDocument.createEvent("CustomEvent"); - event.initCustomEvent("media-videoCasting", false, true, JSON.stringify(data)); - element.dispatchEvent(event); - }, - - makeURI: function (url, charset, baseURI) { - return Services.io.newURI(url, charset, baseURI); - }, - - getVideo: function (element) { - if (!element) { - return null; - } - - let extensions = SimpleServiceDiscovery.getSupportedExtensions(); - let types = SimpleServiceDiscovery.getSupportedMimeTypes(); - - // Grab the poster attribute from the <video> - let posterURL = element.poster; - - // First, look to see if the <video> has a src attribute - let sourceURL = element.src; - - // If empty, try the currentSrc - if (!sourceURL) { - sourceURL = element.currentSrc; - } - - if (sourceURL) { - // Use the file extension to guess the mime type - let sourceURI = this.makeURI(sourceURL, null, this.makeURI(element.baseURI)); - if (this.allowableExtension(sourceURI, extensions)) { - return { element: element, source: sourceURI.spec, poster: posterURL, sourceURI: sourceURI}; - } - } - - // Next, look to see if there is a <source> child element that meets - // our needs - let sourceNodes = element.getElementsByTagName("source"); - for (let sourceNode of sourceNodes) { - let sourceURI = this.makeURI(sourceNode.src, null, this.makeURI(sourceNode.baseURI)); - - // Using the type attribute is our ideal way to guess the mime type. Otherwise, - // fallback to using the file extension to guess the mime type - if (this.allowableMimeType(sourceNode.type, types) || this.allowableExtension(sourceURI, extensions)) { - return { element: element, source: sourceURI.spec, poster: posterURL, sourceURI: sourceURI, type: sourceNode.type }; - } - } - - return null; - }, - - sendVideoToService: function (videoElement, service) { - if (!service) - return; - - let video = this.getVideo(videoElement); - if (!video) { - return; - } - - // Make sure we have a player app for the given service - let app = SimpleServiceDiscovery.findAppForService(service); - if (!app) - return; - - video.title = videoElement.ownerGlobal.top.document.title; - if (video.element) { - // If the video is currently playing on the device, pause it - if (!video.element.paused) { - video.element.pause(); - } - } - - app.stop(() => { - app.start(started => { - if (!started) { - Cu.reportError("CastingApps: Unable to start app"); - return; - } - - app.remoteMedia(remoteMedia => { - if (!remoteMedia) { - Cu.reportError("CastingApps: Failed to create remotemedia"); - return; - } - - this.session = { - service: service, - app: app, - remoteMedia: remoteMedia, - data: { - title: video.title, - source: video.source, - poster: video.poster - }, - videoRef: Cu.getWeakReference(video.element) - }; - }, this); - }); - }); - }, - - getServicesForVideo: function (videoElement) { - let video = this.getVideo(videoElement); - if (!video) { - return {}; - } - - let filteredServices = SimpleServiceDiscovery.services.filter(service => { - return this.allowableExtension(video.sourceURI, service.extensions) || - this.allowableMimeType(video.type, service.types); - }); - - return filteredServices; - }, - - getServicesForMirroring: function () { - return SimpleServiceDiscovery.services.filter(service => service.mirror); - }, - - // RemoteMedia callback API methods - onRemoteMediaStart: function (remoteMedia) { - if (!this.session) { - return; - } - - remoteMedia.load(this.session.data); - - let video = this.session.videoRef.get(); - if (video) { - this._sendEventToVideo(video, { active: true }); - } - }, - - onRemoteMediaStop: function (remoteMedia) { - }, - - onRemoteMediaStatus: function (remoteMedia) { - }, - - allowableExtension: function (uri, extensions) { - return (uri instanceof Ci.nsIURL) && extensions.indexOf(uri.fileExtension) != -1; - }, - - allowableMimeType: function (type, types) { - return types.indexOf(type) != -1; - } -}; diff --git a/modules/moz.build b/modules/moz.build index a0969a6..41df765 100644 --- a/modules/moz.build +++ b/modules/moz.build @@ -8,7 +8,6 @@ EXTRA_JS_MODULES += [ 'AboutHome.jsm', 'AboutNewTab.jsm', 'AttributionCode.jsm', - 'CastingApps.jsm', 'ContentClick.jsm', 'ContentCrashHandlers.jsm', 'ContentLinkHandler.jsm', |