summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaming4JC <g4jc@hyperbola.info>2020-12-07 17:45:41 -0500
committerGaming4JC <g4jc@hyperbola.info>2020-12-07 17:45:41 -0500
commit86869ff082ea45317e16adc5781da0a18049dee8 (patch)
tree6529e4e555bcbc9be5a0dc424d38bac100ae2a91
parente006c851dc394fac161695015a26a74194f01955 (diff)
downloadiceweasel-uxp-86869ff082ea45317e16adc5781da0a18049dee8.tar.gz
Backport UXP #1390 - Remove application support for the Presentation API
-rw-r--r--app/profile/iceweasel-uxp.js1
-rw-r--r--base/content/browser-context.inc5
-rw-r--r--base/content/browser-menubar.inc10
-rwxr-xr-xbase/content/browser.js31
-rw-r--r--base/content/nsContextMenu.js30
-rw-r--r--base/content/tab-content.js28
-rw-r--r--components/nsBrowserGlue.js24
-rw-r--r--locales/en-US/chrome/browser/browser.dtd4
-rw-r--r--modules/CastingApps.jsm164
-rw-r--r--modules/moz.build1
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',