From acde75333f4e6cb0514a0f074867b28e676e73ec Mon Sep 17 00:00:00 2001 From: viv1fi Date: Thu, 16 Oct 2014 15:35:54 +0200 Subject: [PATCH 01/46] Bug 1051847 - Add trusted identity block to about:license and about:rights. r=dao --- browser/base/content/browser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 9cb11d6da61e..e5a2d47c94a2 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -6503,7 +6503,7 @@ var gIdentityHandler = { // Chrome URIs however get special treatment. Some chrome URIs are // whitelisted to provide a positive security signal to the user. - let whitelist = /^about:(accounts|addons|app-manager|config|crashes|customizing|healthreport|home|newaddon|permissions|preferences|privatebrowsing|sessionrestore|support|welcomeback)/i; + let whitelist = /^about:(accounts|addons|app-manager|config|crashes|customizing|healthreport|home|license|newaddon|permissions|preferences|privatebrowsing|rights|sessionrestore|support|welcomeback)/i; let isChromeUI = uri.schemeIs("about") && whitelist.test(uri.spec); if (isChromeUI) { this.setMode(this.IDENTITY_MODE_CHROMEUI); From 9f7ccb1ac9f86c3853534586e2da32c6374c79e2 Mon Sep 17 00:00:00 2001 From: Kapil Singh Date: Thu, 16 Oct 2014 15:43:39 +0200 Subject: [PATCH 02/46] Bug 1079719 - Replace "greyscale" SVG filter with filter: grayscale(1). r=dao --- toolkit/themes/linux/mozapps/extensions/extensions.css | 2 +- .../themes/linux/mozapps/extensions/selectAddons.css | 2 +- toolkit/themes/osx/mozapps/extensions/extensions.css | 2 +- toolkit/themes/osx/mozapps/extensions/extensions.svg | 10 ---------- toolkit/themes/osx/mozapps/extensions/selectAddons.css | 2 +- toolkit/themes/osx/mozapps/jar.mn | 1 - .../themes/windows/mozapps/extensions/extensions.css | 2 +- .../themes/windows/mozapps/extensions/extensions.svg | 10 ---------- .../themes/windows/mozapps/extensions/selectAddons.css | 2 +- toolkit/themes/windows/mozapps/jar.mn | 2 -- 10 files changed, 6 insertions(+), 29 deletions(-) delete mode 100644 toolkit/themes/osx/mozapps/extensions/extensions.svg delete mode 100644 toolkit/themes/windows/mozapps/extensions/extensions.svg diff --git a/toolkit/themes/linux/mozapps/extensions/extensions.css b/toolkit/themes/linux/mozapps/extensions/extensions.css index cf5f6baf006c..5c642fbbf1ae 100644 --- a/toolkit/themes/linux/mozapps/extensions/extensions.css +++ b/toolkit/themes/linux/mozapps/extensions/extensions.css @@ -401,7 +401,7 @@ } .addon[active="false"] .icon { - filter: url("chrome://mozapps/skin/extensions/extensions.svg#greyscale"); + filter: grayscale(1); } .addon-view[type="theme"] .icon { diff --git a/toolkit/themes/linux/mozapps/extensions/selectAddons.css b/toolkit/themes/linux/mozapps/extensions/selectAddons.css index d50f9d2efd90..8a94a6c1857d 100644 --- a/toolkit/themes/linux/mozapps/extensions/selectAddons.css +++ b/toolkit/themes/linux/mozapps/extensions/selectAddons.css @@ -146,7 +146,7 @@ .addon:not([active]) .addon-icon, #disable-list .addon-icon, #incompatible-list .addon-icon { - filter: url("chrome://mozapps/skin/extensions/extensions.svg#greyscale"); + filter: grayscale(1); } #footer { diff --git a/toolkit/themes/osx/mozapps/extensions/extensions.css b/toolkit/themes/osx/mozapps/extensions/extensions.css index 89b18303cca5..c82c80fc1b71 100644 --- a/toolkit/themes/osx/mozapps/extensions/extensions.css +++ b/toolkit/themes/osx/mozapps/extensions/extensions.css @@ -466,7 +466,7 @@ } .addon[active="false"] .icon { - filter: url("chrome://mozapps/skin/extensions/extensions.svg#greyscale"); + filter: grayscale(1); } .addon-view[type="theme"] .icon { diff --git a/toolkit/themes/osx/mozapps/extensions/extensions.svg b/toolkit/themes/osx/mozapps/extensions/extensions.svg deleted file mode 100644 index 076c210469ae..000000000000 --- a/toolkit/themes/osx/mozapps/extensions/extensions.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - diff --git a/toolkit/themes/osx/mozapps/extensions/selectAddons.css b/toolkit/themes/osx/mozapps/extensions/selectAddons.css index b5c691737bac..726d2b0806af 100644 --- a/toolkit/themes/osx/mozapps/extensions/selectAddons.css +++ b/toolkit/themes/osx/mozapps/extensions/selectAddons.css @@ -145,7 +145,7 @@ .addon:not([active]) .addon-icon, #disable-list .addon-icon, #incompatible-list .addon-icon { - filter: url("chrome://mozapps/skin/extensions/extensions.svg#greyscale"); + filter: grayscale(1); } #footer { diff --git a/toolkit/themes/osx/mozapps/jar.mn b/toolkit/themes/osx/mozapps/jar.mn index f63d1b189cfb..fb36da915bee 100644 --- a/toolkit/themes/osx/mozapps/jar.mn +++ b/toolkit/themes/osx/mozapps/jar.mn @@ -47,7 +47,6 @@ toolkit.jar: skin/classic/mozapps/extensions/search.png (extensions/search.png) skin/classic/mozapps/extensions/about.css (extensions/about.css) * skin/classic/mozapps/extensions/extensions.css (extensions/extensions.css) - skin/classic/mozapps/extensions/extensions.svg (extensions/extensions.svg) * skin/classic/mozapps/extensions/selectAddons.css (extensions/selectAddons.css) skin/classic/mozapps/extensions/update.css (extensions/update.css) skin/classic/mozapps/extensions/eula.css (extensions/eula.css) diff --git a/toolkit/themes/windows/mozapps/extensions/extensions.css b/toolkit/themes/windows/mozapps/extensions/extensions.css index d43df7966ca5..82bf21c1eff2 100644 --- a/toolkit/themes/windows/mozapps/extensions/extensions.css +++ b/toolkit/themes/windows/mozapps/extensions/extensions.css @@ -473,7 +473,7 @@ } .addon[active="false"] .icon { - filter: url("chrome://mozapps/skin/extensions/extensions.svg#greyscale"); + filter: grayscale(1); } diff --git a/toolkit/themes/windows/mozapps/extensions/extensions.svg b/toolkit/themes/windows/mozapps/extensions/extensions.svg deleted file mode 100644 index 076c210469ae..000000000000 --- a/toolkit/themes/windows/mozapps/extensions/extensions.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - diff --git a/toolkit/themes/windows/mozapps/extensions/selectAddons.css b/toolkit/themes/windows/mozapps/extensions/selectAddons.css index 26e595f616a4..046ec1075139 100644 --- a/toolkit/themes/windows/mozapps/extensions/selectAddons.css +++ b/toolkit/themes/windows/mozapps/extensions/selectAddons.css @@ -158,7 +158,7 @@ .addon:not([active]) .addon-icon, #disable-list .addon-icon, #incompatible-list .addon-icon { - filter: url("chrome://mozapps/skin/extensions/extensions.svg#greyscale"); + filter: grayscale(1); } #footer { diff --git a/toolkit/themes/windows/mozapps/jar.mn b/toolkit/themes/windows/mozapps/jar.mn index 6df7d57792cd..40cd0d042583 100644 --- a/toolkit/themes/windows/mozapps/jar.mn +++ b/toolkit/themes/windows/mozapps/jar.mn @@ -16,7 +16,6 @@ toolkit.jar: * skin/classic/mozapps/extensions/extensions.css (extensions/extensions.css) * skin/classic/mozapps/extensions/selectAddons.css (extensions/selectAddons.css) skin/classic/mozapps/extensions/update.css (extensions/update.css) - skin/classic/mozapps/extensions/extensions.svg (extensions/extensions.svg) skin/classic/mozapps/extensions/category-search.png (extensions/category-search.png) skin/classic/mozapps/extensions/category-discover.png (extensions/category-discover.png) skin/classic/mozapps/extensions/category-languages.png (extensions/localeGeneric.png) @@ -99,7 +98,6 @@ toolkit.jar: * skin/classic/aero/mozapps/extensions/extensions.css (extensions/extensions-aero.css) * skin/classic/aero/mozapps/extensions/selectAddons.css (extensions/selectAddons-aero.css) skin/classic/aero/mozapps/extensions/update.css (extensions/update.css) - skin/classic/aero/mozapps/extensions/extensions.svg (extensions/extensions.svg) skin/classic/aero/mozapps/extensions/category-search.png (extensions/category-search.png) skin/classic/aero/mozapps/extensions/category-discover.png (extensions/category-discover-aero.png) skin/classic/aero/mozapps/extensions/category-languages.png (extensions/localeGeneric-aero.png) From 75d06ad770c57498fc2b44700afda116c3950d6c Mon Sep 17 00:00:00 2001 From: Simon Lindholm Date: Wed, 1 Oct 2014 17:39:09 +0100 Subject: [PATCH 03/46] Bug 1075665 - Fix typo in font inspector. r=paul --HG-- extra : rebase_source : f14d846e129ec461128636add62bddcacab6b6e0 --- browser/devtools/fontinspector/font-inspector.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/devtools/fontinspector/font-inspector.js b/browser/devtools/fontinspector/font-inspector.js index 44f792e8e3a8..5d1b409e28f8 100644 --- a/browser/devtools/fontinspector/font-inspector.js +++ b/browser/devtools/fontinspector/font-inspector.js @@ -41,7 +41,7 @@ FontInspector.prototype = { */ destroy: function FI_destroy() { this.chromeDoc = null; - this.inspector.sidebar.off("layoutview-selected", this.onNewNode); + this.inspector.sidebar.off("fontinspector-selected", this.onNewNode); this.inspector.selection.off("new-node", this.onNewNode); this.showAllButton.removeEventListener("click", this.showAll); }, From 9a575d1772332974ee2a26e1448220b5dcfbbacb Mon Sep 17 00:00:00 2001 From: Brad Lassey Date: Wed, 15 Oct 2014 18:24:34 -0400 Subject: [PATCH 04/46] bug 1054959 - Add 'Send Video To Device' to the context menu for sending videos from desktop to a second screen r=gavin, ui-r=madhava --- browser/base/content/browser-context.inc | 5 + browser/base/content/browser.js | 6 + browser/base/content/nsContextMenu.js | 29 ++++ browser/components/nsBrowserGlue.js | 25 +++ .../locales/en-US/chrome/browser/browser.dtd | 2 + browser/modules/CastingApps.jsm | 160 ++++++++++++++++++ browser/modules/moz.build | 1 + .../secondscreen/SimpleServiceDiscovery.jsm | 4 +- 8 files changed, 231 insertions(+), 1 deletion(-) create mode 100644 browser/modules/CastingApps.jsm diff --git a/browser/base/content/browser-context.inc b/browser/base/content/browser-context.inc index e8a58892b3b1..44fb0cf3ef0f 100644 --- a/browser/base/content/browser-context.inc +++ b/browser/base/content/browser-context.inc @@ -240,6 +240,11 @@ label="&emailVideoCmd.label;" accesskey="&emailVideoCmd.accesskey;" oncommand="gContextMenu.sendMedia();"/> + + + 0 && + CastingApps.getServicesForVideo(this.target).length > 0; + this.setItemAttr("context-castvideo", "disabled", !shouldShowCast); }, initViewItems: function CM_initViewItems() { @@ -1316,6 +1326,25 @@ 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/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js index abd2504a910e..5acb094f716e 100644 --- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -99,6 +99,9 @@ XPCOMUtils.defineLazyModuleGetter(this, "AsyncShutdown", XPCOMUtils.defineLazyModuleGetter(this, "LoginManagerParent", "resource://gre/modules/LoginManagerParent.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "SimpleServiceDiscovery", + "resource://gre/modules/SimpleServiceDiscovery.jsm"); + #ifdef NIGHTLY_BUILD XPCOMUtils.defineLazyModuleGetter(this, "SignInToWebsiteUX", "resource:///modules/SignInToWebsite.jsm"); @@ -747,8 +750,30 @@ BrowserGlue.prototype = { FormValidationHandler.uninit(); }, + _initServiceDiscovery: function () { + var rokuDevice = { + id: "roku:ecp", + target: "roku:ecp", + factory: function(aService) { + Cu.import("resource://gre/modules/RokuApp.jsm"); + return new RokuApp(aService); + }, + mirror: false, + 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")) this._showUpdateNotification(); diff --git a/browser/locales/en-US/chrome/browser/browser.dtd b/browser/locales/en-US/chrome/browser/browser.dtd index 29f515d814c0..e84a5512a5c9 100644 --- a/browser/locales/en-US/chrome/browser/browser.dtd +++ b/browser/locales/en-US/chrome/browser/browser.dtd @@ -484,6 +484,8 @@ These should match what Safari and other Apple applications use on OS X Lion. -- + + diff --git a/browser/modules/CastingApps.jsm b/browser/modules/CastingApps.jsm new file mode 100644 index 000000000000..df974f04f606 --- /dev/null +++ b/browser/modules/CastingApps.jsm @@ -0,0 +1,160 @@ +// -*- 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