--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -271,17 +271,16 @@ pref("browser.slowStartup.timeThreshold"
pref("browser.slowStartup.maxSamples", 5);
// This url, if changed, MUST continue to point to an https url. Pulling arbitrary content to inject into
// this page over http opens us up to a man-in-the-middle attack that we'd rather not face. If you are a downstream
// repackager of this code using an alternate snippet url, please keep your users safe
pref("browser.aboutHomeSnippets.updateUrl", "https://snippets.cdn.mozilla.net/%STARTPAGE_VERSION%/%NAME%/%VERSION%/%APPBUILDID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/");
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
pref("browser.warnOnQuit", true);
// browser.showQuitWarning specifically controls the quit warning dialog. We
// might still show the window closing dialog with showQuitWarning == false.
pref("browser.showQuitWarning", false);
pref("browser.fullscreen.autohide", true);
--- a/browser/base/content/browser-context.inc
+++ b/browser/base/content/browser-context.inc
@@ -236,21 +236,16 @@
<menuitem id="context-video-saveimage"
accesskey="&videoSaveImage.accesskey;"
label="&videoSaveImage.label;"
oncommand="gContextMenu.saveVideoFrameAsImage();"/>
<menuitem id="context-sendvideo"
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;"
oncommand="gContextMenu.sendMedia();"/>
<menuitem id="context-ctp-play"
label="&playPluginCmd.label;"
accesskey="&playPluginCmd.accesskey;"
oncommand="gContextMenu.playPlugin();"/>
--- a/browser/base/content/browser-menubar.inc
+++ b/browser/base/content/browser-menubar.inc
@@ -468,18 +468,17 @@
</menu>
<menuseparator id="bookmarksMenuItemsSeparator"/>
<!-- Bookmarks menu items -->
</menupopup>
</menu>
<menu id="tools-menu"
label="&toolsMenu.label;"
- accesskey="&toolsMenu.accesskey;"
- onpopupshowing="mirrorShow(this)">
+ accesskey="&toolsMenu.accesskey;">
<menupopup id="menu_ToolsPopup">
<menuitem id="menu_openDownloads"
label="&downloads.label;"
accesskey="&downloads.accesskey;"
key="key_openDownloads"
command="Tools:Downloads"/>
<menuitem id="menu_openAddons"
label="&addons.label;"
@@ -515,23 +514,16 @@
</menu>
<menuitem id="menu_pageInfo"
accesskey="&pageInfoCmd.accesskey;"
label="&pageInfoCmd.label;"
#ifndef XP_WIN
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>
#ifndef XP_UNIX
<menuseparator id="prefSep"/>
<menuitem id="menu_preferences"
label="&preferencesCmd2.label;"
accesskey="&preferencesCmd2.accesskey;"
oncommand="openPreferences(undefined, {origin: 'menubar'});"/>
#endif
</menupopup>
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -21,17 +21,16 @@ XPCOMUtils.defineLazyGetter(this, "exten
// lazy module getters
XPCOMUtils.defineLazyModuleGetters(this, {
AboutHome: "resource:///modules/AboutHome.jsm",
BrowserUITelemetry: "resource:///modules/BrowserUITelemetry.jsm",
BrowserUsageTelemetry: "resource:///modules/BrowserUsageTelemetry.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",
ContextualIdentityService: "resource://gre/modules/ContextualIdentityService.jsm",
CustomizableUI: "resource:///modules/CustomizableUI.jsm",
Deprecated: "resource://gre/modules/Deprecated.jsm",
DownloadsCommon: "resource:///modules/DownloadsCommon.jsm",
E10SUtils: "resource:///modules/E10SUtils.jsm",
@@ -3311,45 +3310,16 @@ function getDefaultHomePage() {
}
return url;
}
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;
}
function BrowserReloadWithFlags(reloadFlags) {
let url = gBrowser.currentURI.spec;
if (gBrowser.updateBrowserRemotenessByURL(gBrowser.selectedBrowser, url)) {
// If the remoteness has changed, the new browser doesn't have any
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -273,31 +273,20 @@ nsContextMenu.prototype = {
this.showItem("context-savevideo", this.onVideo);
this.showItem("context-saveaudio", this.onAudio);
this.showItem("context-video-saveimage", this.onVideo);
this.setItemAttr("context-savevideo", "disabled", !this.mediaURL);
this.setItemAttr("context-saveaudio", "disabled", !this.mediaURL);
// 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() {
// View source is always OK, unless in directory listing.
this.showItem("context-viewpartialsource-selection",
this.isContentSelected);
this.showItem("context-viewpartialsource-mathml",
this.onMathML && !this.isContentSelected);
@@ -1538,35 +1527,16 @@ nsContextMenu.prototype = {
if (this.onCanvas || this.onImage)
this.sendMedia();
},
sendMedia() {
MailIntegration.sendMessage(this.mediaURL, "");
},
- castVideo() {
- CastingApps.openExternal(this.target, window);
- },
-
- populateCastVideoMenu(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() {
gPluginHandler.contextMenuCommand(this.browser, this.target, "play");
},
hidePlugin() {
gPluginHandler.contextMenuCommand(this.browser, this.target, "hide");
},
--- a/browser/base/content/tab-content.js
+++ b/browser/base/content/tab-content.js
@@ -88,29 +88,16 @@ addMessageListener("Browser:Reload", fun
} catch (e) {
}
});
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, height};
- app.mirror(function() {}, content, viewport, function() {}, content);
- }
-});
-
var AboutHomeListener = {
init(chromeGlobal) {
chromeGlobal.addEventListener("AboutHomeLoad", this, false, true);
},
get isAboutHome() {
return content.document.documentURI.toLowerCase() == "about:home";
},
--- a/browser/base/content/test/general/browser_contextmenu.js
+++ b/browser/base/content/test/general/browser_contextmenu.js
@@ -174,18 +174,16 @@ add_task(async function test_video_ok()
"context-video-fullscreen", true,
"---", null,
"context-viewvideo", true,
"context-copyvideourl", true,
"---", null,
"context-savevideo", true,
"context-video-saveimage", true,
"context-sendvideo", true,
- "context-castvideo", null,
- [], null
]
);
});
add_task(async function test_audio_in_video() {
await test_contextmenu("#test-audio-in-video",
["context-media-play", true,
"context-media-mute", true,
@@ -221,18 +219,16 @@ add_task(async function test_video_bad()
"context-video-fullscreen", false,
"---", null,
"context-viewvideo", true,
"context-copyvideourl", true,
"---", null,
"context-savevideo", true,
"context-video-saveimage", false,
"context-sendvideo", true,
- "context-castvideo", null,
- [], null
]
);
});
add_task(async function test_video_bad2() {
await test_contextmenu("#test-video-bad2",
["context-media-play", false,
"context-media-mute", false,
@@ -247,18 +243,16 @@ add_task(async function test_video_bad2(
"context-video-fullscreen", false,
"---", null,
"context-viewvideo", false,
"context-copyvideourl", false,
"---", null,
"context-savevideo", false,
"context-video-saveimage", false,
"context-sendvideo", false,
- "context-castvideo", null,
- [], null
]
);
});
add_task(async function test_iframe() {
await test_contextmenu("#test-iframe",
["context-navigation", null,
["context-back", false,
@@ -309,18 +303,16 @@ add_task(async function test_video_in_if
"context-video-fullscreen", true,
"---", null,
"context-viewvideo", true,
"context-copyvideourl", true,
"---", null,
"context-savevideo", true,
"context-video-saveimage", true,
"context-sendvideo", true,
- "context-castvideo", null,
- [], null,
"frame", null,
["context-showonlythisframe", true,
"context-openframeintab", true,
"context-openframe", true,
"---", null,
"context-reloadframe", true,
"---", null,
"context-bookmarkframe", true,
--- a/browser/components/nsBrowserGlue.js
+++ b/browser/components/nsBrowserGlue.js
@@ -989,45 +989,21 @@ BrowserGlue.prototype = {
BrowserUsageTelemetry.uninit();
PageThumbs.uninit();
NewTabUtils.uninit();
AutoCompletePopup.uninit();
DateTimePickerHelper.uninit();
},
- _initServiceDiscovery() {
- if (!Services.prefs.getBoolPref("browser.casting.enabled")) {
- return;
- }
- var rokuDevice = {
- id: "roku:ecp",
- target: "roku:ecp",
- factory(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() {
BrowserUsageTelemetry.init();
BrowserUITelemetry.init();
- this._initServiceDiscovery();
-
// Show update notification, if needed.
if (Services.prefs.prefHasUserValue("app.update.postupdate"))
this._showUpdateNotification();
ExtensionsUI.init();
let signingRequired;
if (AppConstants.MOZ_REQUIRE_SIGNING) {
--- a/browser/locales/en-US/chrome/browser/browser.dtd
+++ b/browser/locales/en-US/chrome/browser/browser.dtd
@@ -567,18 +567,16 @@ These should match what Safari and other
<!ENTITY saveVideoCmd.label "Save Video As…">
<!ENTITY saveVideoCmd.accesskey "v">
<!ENTITY saveAudioCmd.label "Save Audio As…">
<!ENTITY saveAudioCmd.accesskey "v">
<!ENTITY emailImageCmd.label "Email Image…">
<!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">
<!ENTITY playPluginCmd.accesskey "c">
<!ENTITY hidePluginCmd.label "Hide this plugin">
<!ENTITY hidePluginCmd.accesskey "H">
<!ENTITY copyLinkCmd.label "Copy Link Location">
<!ENTITY copyLinkCmd.accesskey "a">
--- a/browser/modules/moz.build
+++ b/browser/modules/moz.build
@@ -123,17 +123,16 @@ BROWSER_CHROME_MANIFESTS += ['test/brows
XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini']
EXTRA_JS_MODULES += [
'AboutHome.jsm',
'AboutNewTab.jsm',
'AttributionCode.jsm',
'BrowserUITelemetry.jsm',
'BrowserUsageTelemetry.jsm',
- 'CastingApps.jsm',
'ContentClick.jsm',
'ContentCrashHandlers.jsm',
'ContentLinkHandler.jsm',
'ContentObservers.js',
'ContentSearch.jsm',
'ContentWebRTC.jsm',
'DirectoryLinksProvider.jsm',
'E10SUtils.jsm',
--- a/testing/mochitest/runrobocop.py
+++ b/testing/mochitest/runrobocop.py
@@ -221,17 +221,16 @@ class RobocopTestRunner(MochitestDesktop
This is similar to buildProfile in runtestsremote.py.
"""
self.options.extraPrefs.append('browser.search.suggest.enabled=true')
self.options.extraPrefs.append('browser.search.suggest.prompted=true')
self.options.extraPrefs.append('layout.css.devPixelsPerPx=1.0')
self.options.extraPrefs.append('browser.chrome.dynamictoolbar=false')
self.options.extraPrefs.append('browser.snippets.enabled=false')
- self.options.extraPrefs.append('browser.casting.enabled=true')
self.options.extraPrefs.append('extensions.autoupdate.enabled=false')
# Override the telemetry init delay for integration testing.
self.options.extraPrefs.append('toolkit.telemetry.initDelay=1')
self.options.extensionsToExclude.extend([
'mochikit@mozilla.org',
'worker-test@mozilla.org.xpi',