From 669319bc2929060d423cd872c730b81d6744ed81 Mon Sep 17 00:00:00 2001 From: Tim Nguyen Date: Fri, 24 Aug 2018 15:21:28 +0100 Subject: [PATCH 01/15] Bug 1485996 - Fix library panel with MOZ_BROWSER_XHTML on. r=bgrins --- .../customizableui/CustomizableWidgets.jsm | 2 +- .../customizableui/content/panelUI.js | 6 +-- .../places/content/browserPlacesViews.js | 40 +++++++++---------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/browser/components/customizableui/CustomizableWidgets.jsm b/browser/components/customizableui/CustomizableWidgets.jsm index 9f8e6390829b..62fb557a8592 100644 --- a/browser/components/customizableui/CustomizableWidgets.jsm +++ b/browser/components/customizableui/CustomizableWidgets.jsm @@ -141,7 +141,7 @@ const CustomizableWidgets = [ if (!elementCount) return; - let body = document.createElement("vbox"); + let body = document.createXULElement("vbox"); body.className = "panel-subview-body"; body.appendChild(fragment); let footer; diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js index 2ea56cb60dae..de37a92defe7 100644 --- a/browser/components/customizableui/content/panelUI.js +++ b/browser/components/customizableui/content/panelUI.js @@ -376,7 +376,7 @@ const PanelUI = { } else if (!aAnchor.open) { aAnchor.open = true; - let tempPanel = document.createElement("panel"); + let tempPanel = document.createXULElement("panel"); tempPanel.setAttribute("type", "arrow"); tempPanel.setAttribute("id", "customizationui-widget-panel"); tempPanel.setAttribute("class", "cui-widget-panel"); @@ -394,7 +394,7 @@ const PanelUI = { tempPanel.classList.toggle("cui-widget-panelWithFooter", viewNode.querySelector(".panel-subview-footer")); - let multiView = document.createElement("panelmultiview"); + let multiView = document.createXULElement("panelmultiview"); multiView.setAttribute("id", "customizationui-widget-multiview"); multiView.setAttribute("viewCacheId", "appMenu-viewCache"); multiView.setAttribute("mainViewId", viewNode.id); @@ -512,7 +512,7 @@ const PanelUI = { container.previousElementSibling.previousElementSibling.hidden = false; let fragment = document.createDocumentFragment(); for (let highlight of highlights) { - let button = document.createElement("toolbarbutton"); + let button = document.createXULElement("toolbarbutton"); button.classList.add("subviewbutton", "highlight", "subviewbutton-iconic", "bookmark-item"); let title = highlight.title || highlight.url; button.setAttribute("label", title); diff --git a/browser/components/places/content/browserPlacesViews.js b/browser/components/places/content/browserPlacesViews.js index 62028378fb04..04885bf05d85 100644 --- a/browser/components/places/content/browserPlacesViews.js +++ b/browser/components/places/content/browserPlacesViews.js @@ -311,7 +311,7 @@ PlacesViewBase.prototype = { function PVB__setEmptyPopupStatus(aPopup, aEmpty) { if (!aPopup._emptyMenuitem) { let label = PlacesUIUtils.getString("bookmarksMenuEmptyFolder"); - aPopup._emptyMenuitem = document.createElement("menuitem"); + aPopup._emptyMenuitem = document.createXULElement("menuitem"); aPopup._emptyMenuitem.setAttribute("label", label); aPopup._emptyMenuitem.setAttribute("disabled", true); aPopup._emptyMenuitem.className = "bookmark-item"; @@ -340,17 +340,17 @@ PlacesViewBase.prototype = { let element; let type = aPlacesNode.type; if (type == Ci.nsINavHistoryResultNode.RESULT_TYPE_SEPARATOR) { - element = document.createElement("menuseparator"); + element = document.createXULElement("menuseparator"); element.setAttribute("class", "small-separator"); } else { let itemId = aPlacesNode.itemId; if (type == Ci.nsINavHistoryResultNode.RESULT_TYPE_URI) { - element = document.createElement("menuitem"); + element = document.createXULElement("menuitem"); element.className = "menuitem-iconic bookmark-item menuitem-with-favicon"; element.setAttribute("scheme", PlacesUIUtils.guessUrlSchemeForUI(aPlacesNode.uri)); } else if (PlacesUtils.containerTypes.includes(type)) { - element = document.createElement("menu"); + element = document.createXULElement("menu"); element.setAttribute("container", "true"); if (aPlacesNode.type == Ci.nsINavHistoryResultNode.RESULT_TYPE_QUERY) { @@ -375,7 +375,7 @@ PlacesViewBase.prototype = { }, () => undefined); } - let popup = document.createElement("menupopup"); + let popup = document.createXULElement("menupopup"); popup._placesNode = PlacesUtils.asContainer(aPlacesNode); if (!this._nativeView) { @@ -431,7 +431,7 @@ PlacesViewBase.prototype = { aPopup._siteURIMenuseparator = null; } else if (siteUrl && !aPopup._siteURIMenuitem) { // Add "Open (Feed Name)" menuitem. - aPopup._siteURIMenuitem = document.createElement("menuitem"); + aPopup._siteURIMenuitem = document.createXULElement("menuitem"); aPopup._siteURIMenuitem.className = "openlivemarksite-menuitem"; if (typeof this.options.extraClasses.entry == "string") { aPopup._siteURIMenuitem.classList.add(this.options.extraClasses.entry); @@ -453,7 +453,7 @@ PlacesViewBase.prototype = { aPopup._siteURIMenuitem.setAttribute("label", label); aPopup.insertBefore(aPopup._siteURIMenuitem, aPopup._startMarker); - aPopup._siteURIMenuseparator = document.createElement("menuseparator"); + aPopup._siteURIMenuseparator = document.createXULElement("menuseparator"); aPopup.insertBefore(aPopup._siteURIMenuseparator, aPopup._startMarker); } }, @@ -470,7 +470,7 @@ PlacesViewBase.prototype = { let statusMenuitem = aPopup._statusMenuitem; if (!statusMenuitem) { // Create the status menuitem and cache it in the popup object. - statusMenuitem = document.createElement("menuitem"); + statusMenuitem = document.createXULElement("menuitem"); statusMenuitem.className = "livemarkstatus-menuitem"; if (typeof this.options.extraClasses.entry == "string") { statusMenuitem.classList.add(this.options.extraClasses.entry); @@ -845,12 +845,12 @@ PlacesViewBase.prototype = { } } else if (!aPopup._endOptOpenAllInTabs) { // Create a separator before options. - aPopup._endOptSeparator = document.createElement("menuseparator"); + aPopup._endOptSeparator = document.createXULElement("menuseparator"); aPopup._endOptSeparator.className = "bookmarks-actions-menuseparator"; aPopup.appendChild(aPopup._endOptSeparator); // Add the "Open All in Tabs" menuitem. - aPopup._endOptOpenAllInTabs = document.createElement("menuitem"); + aPopup._endOptOpenAllInTabs = document.createXULElement("menuitem"); aPopup._endOptOpenAllInTabs.className = "openintabs-menuitem"; if (typeof this.options.extraClasses.entry == "string") @@ -880,7 +880,7 @@ PlacesViewBase.prototype = { return; // _startMarker is an hidden menuseparator that lives before places nodes. - aPopup._startMarker = document.createElement("menuseparator"); + aPopup._startMarker = document.createXULElement("menuseparator"); aPopup._startMarker.hidden = true; aPopup.insertBefore(aPopup._startMarker, aPopup.firstElementChild); @@ -891,7 +891,7 @@ PlacesViewBase.prototype = { if (node) { aPopup._endMarker = node; } else { - aPopup._endMarker = document.createElement("menuseparator"); + aPopup._endMarker = document.createXULElement("menuseparator"); aPopup._endMarker.hidden = true; } aPopup.appendChild(aPopup._endMarker); @@ -1109,9 +1109,9 @@ PlacesToolbar.prototype = { let type = aChild.type; let button; if (type == Ci.nsINavHistoryResultNode.RESULT_TYPE_SEPARATOR) { - button = document.createElement("toolbarseparator"); + button = document.createXULElement("toolbarseparator"); } else { - button = document.createElement("toolbarbutton"); + button = document.createXULElement("toolbarbutton"); button.className = "bookmark-item"; button.setAttribute("label", aChild.title || ""); @@ -1131,7 +1131,7 @@ PlacesToolbar.prototype = { }, () => undefined); } - let popup = document.createElement("menupopup"); + let popup = document.createXULElement("menupopup"); popup.setAttribute("placespopup", "true"); button.appendChild(popup); popup._placesNode = PlacesUtils.asContainer(aChild); @@ -2007,10 +2007,10 @@ PlacesPanelMenuView.prototype = { let type = aChild.type; let button; if (type == Ci.nsINavHistoryResultNode.RESULT_TYPE_SEPARATOR) { - button = document.createElement("toolbarseparator"); + button = document.createXULElement("toolbarseparator"); button.setAttribute("class", "small-separator"); } else { - button = document.createElement("toolbarbutton"); + button = document.createXULElement("toolbarbutton"); button.className = "bookmark-item"; if (typeof this.options.extraClasses.entry == "string") button.classList.add(this.options.extraClasses.entry); @@ -2231,12 +2231,12 @@ this.PlacesPanelview = class extends PlacesViewBase { let element; let type = placesNode.type; if (type == Ci.nsINavHistoryResultNode.RESULT_TYPE_SEPARATOR) { - element = document.createElement("toolbarseparator"); + element = document.createXULElement("toolbarseparator"); } else { if (type != Ci.nsINavHistoryResultNode.RESULT_TYPE_URI) throw "Unexpected node"; - element = document.createElement("toolbarbutton"); + element = document.createXULElement("toolbarbutton"); element.classList.add("subviewbutton", "subviewbutton-iconic", "bookmark-item"); element.setAttribute("scheme", PlacesUIUtils.guessUrlSchemeForUI(placesNode.uri)); element.setAttribute("label", PlacesUIUtils.getBestTitle(placesNode)); @@ -2256,7 +2256,7 @@ this.PlacesPanelview = class extends PlacesViewBase { _setEmptyPopupStatus(panelview, empty = false) { if (!panelview._emptyMenuitem) { let label = PlacesUIUtils.getString("bookmarksMenuEmptyFolder"); - panelview._emptyMenuitem = document.createElement("toolbarbutton"); + panelview._emptyMenuitem = document.createXULElement("toolbarbutton"); panelview._emptyMenuitem.setAttribute("label", label); panelview._emptyMenuitem.setAttribute("disabled", true); panelview._emptyMenuitem.className = "subviewbutton"; From 0c4e2828e6e989c33e91471c3f60b19487d58bf0 Mon Sep 17 00:00:00 2001 From: Tim Nguyen Date: Thu, 23 Aug 2018 15:22:22 +0100 Subject: [PATCH 02/15] Bug 1485678 - Clean up synced tabs sidebar styling. r=dao --- browser/themes/linux/syncedtabs/sidebar.css | 11 ----------- browser/themes/osx/syncedtabs/sidebar.css | 17 ++--------------- .../themes/shared/syncedtabs/sidebar.inc.css | 4 +++- browser/themes/windows/syncedtabs/sidebar.css | 7 ------- 4 files changed, 5 insertions(+), 34 deletions(-) diff --git a/browser/themes/linux/syncedtabs/sidebar.css b/browser/themes/linux/syncedtabs/sidebar.css index bc42477b64db..f50031d48258 100644 --- a/browser/themes/linux/syncedtabs/sidebar.css +++ b/browser/themes/linux/syncedtabs/sidebar.css @@ -6,22 +6,11 @@ /* These styles are intended to mimic XUL trees and the XUL search box. */ -html { - background-color: -moz-Field; - color: -moz-FieldText; - box-sizing: border-box; -} - -.item { - padding-inline-end: 0; -} - .item-title { margin: 1px 0 0; margin-inline-end: 6px; } - .search-box { -moz-appearance: textfield; cursor: text; diff --git a/browser/themes/osx/syncedtabs/sidebar.css b/browser/themes/osx/syncedtabs/sidebar.css index 41f3c9867a90..a2b84831e347 100644 --- a/browser/themes/osx/syncedtabs/sidebar.css +++ b/browser/themes/osx/syncedtabs/sidebar.css @@ -11,10 +11,6 @@ -moz-font-smoothing-background-color: -moz-mac-source-list; } -.item { - color: -moz-DialogText; -} - .item-title-container { box-sizing: border-box; align-items: center; @@ -22,11 +18,6 @@ font-size: 12px; } -.item.selected > .item-title-container { - color: HighlightText; - font-weight: bold; -} - .item.selected > .item-title-container { -moz-appearance: -moz-mac-source-list-selection; -moz-font-smoothing-background-color: -moz-mac-source-list-selection; @@ -37,14 +28,10 @@ -moz-font-smoothing-background-color: -moz-mac-active-source-list-selection; } -@media (-moz-mac-yosemite-theme) { +@media (-moz-mac-yosemite-theme: 0) { .item.selected > .item-title-container { - color: -moz-dialogtext; - font-weight: 500; - } - - .item.selected:focus > .item-title-container { color: #fff; + font-weight: bold; } } diff --git a/browser/themes/shared/syncedtabs/sidebar.inc.css b/browser/themes/shared/syncedtabs/sidebar.inc.css index 0c04f430dfbf..18d8bb90cab2 100644 --- a/browser/themes/shared/syncedtabs/sidebar.inc.css +++ b/browser/themes/shared/syncedtabs/sidebar.inc.css @@ -6,13 +6,15 @@ html { height: 100%; + box-sizing: border-box; } body { height: 100%; margin: 0; font: message-box; - color: #333333; + background-color: -moz-Field; + color: -moz-FieldText; -moz-user-select: none; } diff --git a/browser/themes/windows/syncedtabs/sidebar.css b/browser/themes/windows/syncedtabs/sidebar.css index 1a687b146731..b3bf4014a713 100644 --- a/browser/themes/windows/syncedtabs/sidebar.css +++ b/browser/themes/windows/syncedtabs/sidebar.css @@ -6,15 +6,8 @@ /* These styles are intended to mimic XUL trees and the XUL search box. */ -.item { - padding-inline-end: 0; -} - .item-title { margin: 1px 0 0; -} - -.item-title { margin-inline-end: 6px; } From 4ba5a12fb00c804caf95407466962b72b16120ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Fri, 24 Aug 2018 17:33:12 +0200 Subject: [PATCH 03/15] Bug 1446168 - Load tabbox.css as a document stylesheet. r=bgrins --- browser/base/content/tabbrowser.xml | 3 ++- browser/themes/shared/tabs.inc.css | 4 ++-- layout/reftests/xul/mac-tab-toolbar-ref.xul | 1 + layout/reftests/xul/mac-tab-toolbar.xul | 1 + toolkit/content/widgets.css | 1 + toolkit/content/widgets/tabbox.xml | 17 ----------------- 6 files changed, 7 insertions(+), 20 deletions(-) diff --git a/browser/base/content/tabbrowser.xml b/browser/base/content/tabbrowser.xml index 665c8416871e..bcab9b118989 100644 --- a/browser/base/content/tabbrowser.xml +++ b/browser/base/content/tabbrowser.xml @@ -553,7 +553,8 @@ for (let i = numPinned - 1; i >= 0; i--) { let tab = this.children[i]; width += layoutData.pinnedTabWidth; - tab.style.marginInlineStart = -(width + layoutData.scrollButtonWidth) + "px"; + tab.style.setProperty("margin-inline-start", + -(width + layoutData.scrollButtonWidth) + "px", "important"); tab._pinnedUnscrollable = true; } this.style.paddingInlineStart = width + "px"; diff --git a/browser/themes/shared/tabs.inc.css b/browser/themes/shared/tabs.inc.css index eb2dd0f4d3b2..5464ce44ceb7 100644 --- a/browser/themes/shared/tabs.inc.css +++ b/browser/themes/shared/tabs.inc.css @@ -70,8 +70,8 @@ background-color: transparent; border-radius: 0; border-width: 0; - margin: 0; - padding: 0; + margin: 0 !important /* override tabbox.css */; + padding: 0 !important /* override tabbox.css */; -moz-box-align: stretch; } diff --git a/layout/reftests/xul/mac-tab-toolbar-ref.xul b/layout/reftests/xul/mac-tab-toolbar-ref.xul index 9b23091e3542..836df2788cc4 100644 --- a/layout/reftests/xul/mac-tab-toolbar-ref.xul +++ b/layout/reftests/xul/mac-tab-toolbar-ref.xul @@ -1,4 +1,5 @@ + diff --git a/layout/reftests/xul/mac-tab-toolbar.xul b/layout/reftests/xul/mac-tab-toolbar.xul index f5d4c7f18a86..4c2c1eada69a 100644 --- a/layout/reftests/xul/mac-tab-toolbar.xul +++ b/layout/reftests/xul/mac-tab-toolbar.xul @@ -1,4 +1,5 @@ + diff --git a/toolkit/content/widgets.css b/toolkit/content/widgets.css index 6b664cb4447f..d217013c7cf6 100644 --- a/toolkit/content/widgets.css +++ b/toolkit/content/widgets.css @@ -18,5 +18,6 @@ @import url("chrome://global/skin/progressmeter.css"); @import url("chrome://global/skin/richlistbox.css"); @import url("chrome://global/skin/splitter.css"); +@import url("chrome://global/skin/tabbox.css"); @import url("chrome://global/skin/toolbar.css"); @import url("chrome://global/skin/wizard.css"); diff --git a/toolkit/content/widgets/tabbox.xml b/toolkit/content/widgets/tabbox.xml index 3fe02a14624c..c8e86f619c55 100644 --- a/toolkit/content/widgets/tabbox.xml +++ b/toolkit/content/widgets/tabbox.xml @@ -8,12 +8,7 @@ xmlns="http://www.mozilla.org/xbl" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xbl="http://www.mozilla.org/xbl"> - - - - - @@ -217,10 +212,6 @@ - - - - @@ -533,10 +524,6 @@ - - - - @@ -649,10 +636,6 @@ - - - - Date: Fri, 24 Aug 2018 13:41:13 -0500 Subject: [PATCH 04/15] Bug 1486027 - don't oom on failed ModuleGenerator memory reservations (r=bbouvier) --- js/src/wasm/WasmGenerator.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/js/src/wasm/WasmGenerator.cpp b/js/src/wasm/WasmGenerator.cpp index ecf85e262e85..67725e4f64d3 100644 --- a/js/src/wasm/WasmGenerator.cpp +++ b/js/src/wasm/WasmGenerator.cpp @@ -21,6 +21,7 @@ #include "mozilla/CheckedInt.h" #include "mozilla/EnumeratedRange.h" #include "mozilla/SHA1.h" +#include "mozilla/Unused.h" #include #include @@ -39,6 +40,7 @@ using namespace js::wasm; using mozilla::CheckedInt; using mozilla::MakeEnumeratedRange; +using mozilla::Unused; bool CompiledCode::swap(MacroAssembler& masm) @@ -200,24 +202,22 @@ ModuleGenerator::init(Metadata* maybeAsmJSMetadata) // Pre-reserve space for large Vectors to avoid the significant cost of the // final reallocs. In particular, the MacroAssembler can be enormous, so be - // extra conservative. Note, podResizeToFit calls at the end will trim off - // unneeded capacity. + // extra conservative. Since large over-reservations may fail when the + // actual allocations will succeed, ignore OOM failures. Note, + // podResizeToFit calls at the end will trim off unneeded capacity. size_t codeSectionSize = env_->codeSection ? env_->codeSection->size : 0; - size_t estimatedCodeSize = 1.2 * EstimateCompiledCodeSize(tier(), codeSectionSize); - if (!masm_.reserve(Min(estimatedCodeSize, MaxCodeBytesPerProcess))) - return false; - if (!metadataTier_->codeRanges.reserve(2 * env_->numFuncDefs())) - return false; + size_t estimatedCodeSize = 1.2 * EstimateCompiledCodeSize(tier(), codeSectionSize); + Unused << masm_.reserve(Min(estimatedCodeSize, MaxCodeBytesPerProcess)); + + Unused << metadataTier_->codeRanges.reserve(2 * env_->numFuncDefs()); const size_t ByteCodesPerCallSite = 50; - if (!metadataTier_->callSites.reserve(codeSectionSize / ByteCodesPerCallSite)) - return false; + Unused << metadataTier_->callSites.reserve(codeSectionSize / ByteCodesPerCallSite); const size_t ByteCodesPerOOBTrap = 10; - if (!metadataTier_->trapSites[Trap::OutOfBounds].reserve(codeSectionSize / ByteCodesPerOOBTrap)) - return false; + Unused << metadataTier_->trapSites[Trap::OutOfBounds].reserve(codeSectionSize / ByteCodesPerOOBTrap); // Allocate space in TlsData for declarations that need it. From e8759c8fb08272b5106ec557d76df7cabfb14ae5 Mon Sep 17 00:00:00 2001 From: Ryan VanderMeulen Date: Fri, 24 Aug 2018 15:41:56 -0400 Subject: [PATCH 05/15] No bug - Remove trailing whitespace from l10n-changesets.json. r=me DONTBUILD --HG-- extra : rebase_source : 2d6a90abbb84d4df25814f141d0d63d90e14f8d3 --- browser/locales/l10n-changesets.json | 2266 +++++++++++++------------- 1 file changed, 1133 insertions(+), 1133 deletions(-) diff --git a/browser/locales/l10n-changesets.json b/browser/locales/l10n-changesets.json index 2fa271ee83e7..50692caddf2b 100644 --- a/browser/locales/l10n-changesets.json +++ b/browser/locales/l10n-changesets.json @@ -1,1552 +1,1552 @@ { "ach": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "af": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "an": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ar": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "as": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ast": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "az": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "be": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "bg": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "bn-BD": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "bn-IN": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "br": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "bs": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ca": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "cak": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "crh": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "cs": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "cy": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "da": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "de": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "dsb": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "el": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "en-CA": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "en-GB": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "en-ZA": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "eo": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "es-AR": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "es-CL": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "es-ES": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "es-MX": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "et": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "eu": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "fa": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ff": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "fi": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "fr": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "fy-NL": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ga-IE": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "gd": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "gl": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "gn": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "gu-IN": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "he": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "hi-IN": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "hr": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "hsb": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "hu": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "hy-AM": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ia": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "id": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "is": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "it": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ja": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ja-JP-mac": { "platforms": [ - "macosx64", + "macosx64", "macosx64-devedition" - ], + ], "revision": "default" - }, + }, "ka": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "kab": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "kk": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "km": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "kn": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ko": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "lij": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "lo": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "lt": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ltg": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "lv": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "mai": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "mk": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ml": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "mr": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ms": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "my": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "nb-NO": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ne-NP": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "nl": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "nn-NO": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "oc": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "or": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "pa-IN": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "pl": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "pt-BR": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "pt-PT": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "rm": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ro": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ru": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "si": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "sk": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "sl": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "son": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "sq": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "sr": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "sv-SE": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ta": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "te": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "th": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "tl": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "tr": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "uk": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "ur": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "uz": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "vi": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "wo": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "xh": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "zh-CN": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" - }, + }, "zh-TW": { "platforms": [ - "linux", - "linux-devedition", - "linux64", - "linux64-devedition", - "macosx64", - "macosx64-devedition", - "win32", - "win32-devedition", - "win64", + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", "win64-devedition" - ], + ], "revision": "default" } } From dd36aade7ddce61a30e556dda010843610a47559 Mon Sep 17 00:00:00 2001 From: Eitan Isaacson Date: Fri, 24 Aug 2018 13:34:00 +0300 Subject: [PATCH 06/15] Bug 1485862 - Set correct text-input-type for input[type=number]. r=surkov --- accessible/html/HTMLFormControlAccessible.cpp | 6 +++++- accessible/tests/mochitest/attributes/test_obj.html | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/accessible/html/HTMLFormControlAccessible.cpp b/accessible/html/HTMLFormControlAccessible.cpp index a36b60bcfb20..338ef8a4169e 100644 --- a/accessible/html/HTMLFormControlAccessible.cpp +++ b/accessible/html/HTMLFormControlAccessible.cpp @@ -307,7 +307,11 @@ HTMLTextFieldAccessible::NativeAttributes() // Expose type for text input elements as it gives some useful context, // especially for mobile. nsAutoString type; - if (mContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::type, type)) { + // In the case of input[type=number], mContent is anonymous and is an + // input[type=text]. Getting the root not-anonymous content will give + // us the right type. In case of other input types, this returns the same node. + nsIContent* content = mContent->FindFirstNonChromeOnlyAccessContent(); + if (content->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::type, type)) { nsAccUtils::SetAccAttr(attributes, nsGkAtoms::textInputType, type); if (!ARIARoleMap() && type.EqualsLiteral("search")) { nsAccUtils::SetAccAttr(attributes, nsGkAtoms::xmlroles, diff --git a/accessible/tests/mochitest/attributes/test_obj.html b/accessible/tests/mochitest/attributes/test_obj.html index bc481e4f730d..17520d21efce 100644 --- a/accessible/tests/mochitest/attributes/test_obj.html +++ b/accessible/tests/mochitest/attributes/test_obj.html @@ -114,6 +114,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=558036 testAttrs("search", {"text-input-type": "search"}, true); testAttrs("tel", {"text-input-type": "tel"}, true); testAttrs("url", {"text-input-type": "url"}, true); + testAttrs(getAccessible("number").firstChild, {"text-input-type": "number"}, true); // ARIA testAttrs("searchbox", {"text-input-type": "search"}, true); @@ -220,6 +221,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=558036 + From 43c8cdcaae04d7610336b43a3be22892e2607363 Mon Sep 17 00:00:00 2001 From: Tom Prince Date: Fri, 17 Aug 2018 10:37:21 -0600 Subject: [PATCH 07/15] Bug 1484012: [fetch-content] Pass `MOZ_FETCHES` as json; r=gps,ahal Rather than trying to parse strings, just pass a json blob. This will allow us to easily do things like mark artifacts to be left unextracted. Differential Revision: https://phabricator.services.mozilla.com/D3553 --HG-- extra : rebase_source : 4e762c65d1c9f13361d5bae2e4608ba09bb39a91 --- taskcluster/ci/source-test/python.yml | 12 ++++--- taskcluster/scripts/misc/fetch-content | 19 ++++------- taskcluster/scripts/run-task | 9 +++-- .../taskgraph/transforms/job/__init__.py | 31 +++++++++++++---- .../mozharness/mozharness/mozilla/fetches.py | 33 ++++++++++--------- 5 files changed, 61 insertions(+), 43 deletions(-) diff --git a/taskcluster/ci/source-test/python.yml b/taskcluster/ci/source-test/python.yml index 05af7cf737a9..9193a54c57e7 100644 --- a/taskcluster/ci/source-test/python.yml +++ b/taskcluster/ci/source-test/python.yml @@ -74,8 +74,10 @@ mochitest-harness: fetches: build: - target.tar.bz2 - - target.common.tests.tar.gz>tests - - target.mochitest.tests.tar.gz>tests + - artifact: target.common.tests.tar.gz + dest: tests + - artifact: target.mochitest.tests.tar.gz + dest: tests when: files-changed: - 'testing/mochitest/**' @@ -187,8 +189,10 @@ reftest-harness: fetches: build: - target.tar.bz2 - - target.common.tests.tar.gz>tests - - target.reftest.tests.tar.gz>tests + - artifact: target.common.tests.tar.gz + dest: tests + - artifact: target.reftest.tests.tar.gz + dest: tests when: files-changed: - 'layout/tools/reftest/**' diff --git a/taskcluster/scripts/misc/fetch-content b/taskcluster/scripts/misc/fetch-content index 2051cf9c2d2e..2132b0e7cb0e 100755 --- a/taskcluster/scripts/misc/fetch-content +++ b/taskcluster/scripts/misc/fetch-content @@ -8,6 +8,7 @@ import bz2 import concurrent.futures import gzip import hashlib +import json import lzma import multiprocessing import os @@ -280,19 +281,15 @@ def command_static_url(args): def command_task_artifacts(args): + fetches = json.loads(os.environ['MOZ_FETCHES']) downloads = [] - for word in args.artifacts: - # Format is name[>dest]@task - artifact, task_id = word.split('@', 1) + for fetch in fetches: extdir = pathlib.Path(args.dest) - - if '>' in artifact: - artifact, subdir = artifact.rsplit('>', 1) - extdir = extdir.joinpath(subdir) - + if 'dest' in fetch: + extdir = extdir.joinpath(fetch['dest']) extdir.mkdir(parents=True, exist_ok=True) - url = ARTIFACT_URL.format(task=task_id, - artifact=artifact) + url = ARTIFACT_URL.format(task=fetch['task'], + artifact=fetch['artifact']) downloads.append((url, extdir)) fetch_urls(downloads) @@ -322,8 +319,6 @@ def main(): artifacts.add_argument('-d', '--dest', default=os.environ.get('MOZ_FETCHES_DIR'), help='Destination directory which will contain all ' 'artifacts (defaults to $MOZ_FETCHES_DIR)') - artifacts.add_argument('artifacts', nargs='+', - help='Artifacts to fetch. Of form path@task_id') args = parser.parse_args() diff --git a/taskcluster/scripts/run-task b/taskcluster/scripts/run-task index b87639c9d018..6159ed49c835 100755 --- a/taskcluster/scripts/run-task +++ b/taskcluster/scripts/run-task @@ -480,7 +480,7 @@ def vcs_checkout(source_repo, dest, store_path, return revision -def fetch_artifacts(fetches): +def fetch_artifacts(): print_line(b'fetches', b'fetching artifacts\n') fetch_content = shutil.which('fetch-content') @@ -492,7 +492,7 @@ def fetch_artifacts(fetches): print(FETCH_CONTENT_NOT_FOUND) sys.exit(1) - cmd = [fetch_content, 'task-artifacts'] + fetches.split() + cmd = [fetch_content, 'task-artifacts'] subprocess.run(cmd, check=True, env=os.environ) print_line(b'fetches', b'finished fetching artifacts\n') @@ -738,9 +738,8 @@ def main(args): return 1 try: - fetches = os.environ.get('MOZ_FETCHES') - if fetches: - fetch_artifacts(fetches) + if 'MOZ_FETCHES' in os.environ: + fetch_artifacts() return run_and_prefix_output(b'task', task_args) finally: diff --git a/taskcluster/taskgraph/transforms/job/__init__.py b/taskcluster/taskgraph/transforms/job/__init__.py index 7628793a3d26..95a7a4144828 100644 --- a/taskcluster/taskgraph/transforms/job/__init__.py +++ b/taskcluster/taskgraph/transforms/job/__init__.py @@ -13,6 +13,7 @@ from __future__ import absolute_import, print_function, unicode_literals import copy import logging +import json import os from taskgraph.transforms.base import TransformSequence @@ -80,7 +81,10 @@ job_description_schema = Schema({ # A list of artifacts to install from 'fetch' tasks. Optional('fetches'): { - basestring: [basestring], + basestring: [basestring, { + Required('artifact'): basestring, + Optional('dest'): basestring, + }], }, # A description of how to run this job. @@ -182,19 +186,34 @@ def use_fetches(config, jobs): dep = 'fetch-{}'.format(fetch) dependencies[dep] = dep - job_fetches.append('{path}@<{dep}>'.format(path=path, dep=dep)) + job_fetches.append({ + 'artifact': path, + 'task': '<{dep}>'.format(dep=dep), + }) else: if kind not in dependencies: raise Exception("{name} can't fetch {kind} artifacts because " "it has no {kind} dependencies!".format(name=name, kind=kind)) - for path in artifacts: - job_fetches.append('{prefix}/{path}@<{dep}>'.format( - prefix=prefix, path=path, dep=kind)) + for artifact in artifacts: + if isinstance(artifact, basestring): + path = artifact + dest = None + else: + path = artifact['artifact'] + dest = artifact.get('dest') + + fetch = { + 'artifact': '{prefix}/{path}'.format(prefix=prefix, path=path), + 'task': '<{dep}>'.format(dep=kind), + } + if dest is not None: + fetch['dest'] = dest + job_fetches.append(fetch) env = job.setdefault('worker', {}).setdefault('env', {}) - env['MOZ_FETCHES'] = {'task-reference': ' '.join(job_fetches)} + env['MOZ_FETCHES'] = {'task-reference': json.dumps(job_fetches, sort_keys=True)} workdir = job['run'].get('workdir', '/builds/worker') env.setdefault('MOZ_FETCHES_DIR', '{}/fetches'.format(workdir)) diff --git a/testing/mozharness/mozharness/mozilla/fetches.py b/testing/mozharness/mozharness/mozilla/fetches.py index 15090858f58e..c0f7510281ba 100644 --- a/testing/mozharness/mozharness/mozilla/fetches.py +++ b/testing/mozharness/mozharness/mozilla/fetches.py @@ -4,6 +4,7 @@ import os from distutils.spawn import find_executable +import json import mozfile @@ -30,30 +31,30 @@ class FetchesMixin(object): self.warning('no fetches to download') return - fetches = os.environ['MOZ_FETCHES'].split() - if not self.fetch_script or not os.path.isfile(self.fetch_script): self.warning("fetch-content script not found, downloading manually") - self._download_fetches(fetches) + self._download_fetches() return - cmd = [self.fetch_script, 'task-artifacts'] + fetches + cmd = [self.fetch_script, 'task-artifacts'] self.run_command(cmd, env=os.environ, throw_exception=True) - def _download_fetches(self, fetches): + def _download_fetches(self): # TODO: make sure fetch-content script is available everywhere # so this isn't needed - for word in fetches: - artifact, task = word.split('@', 1) - extdir = os.environ['MOZ_FETCHES_DIR'] + fetches_dir = os.environ['MOZ_FETCHES_DIR'] - if '>' in artifact: - artifact, subdir = artifact.rsplit('>', 1) - extdir = os.path.join(extdir, subdir) + fetches = json.loads(os.environ.get('MOZ_FETCHES', '{}')) + for fetch in fetches: + extdir = fetches_dir + if 'dest' in 'fetch': + extdir = os.path.join(extdir, fetch['dest']) + artifact = fetch['artifact'] + if not artifact.startswith('public/'): + raise Exception('Private artifacts in `MOZ_FETCHES` not supported.') + url = ARTIFACT_URL.format(artifact=artifact, task=fetch['task']) - url = ARTIFACT_URL.format(artifact=artifact, task=task) - self.download_file(url) + path = self.download_file(url, parent_dir=extdir) - filename = os.path.basename(artifact) - mozfile.extract(filename, extdir) - os.remove(filename) + mozfile.extract(path, extdir) + os.remove(path) From 6701e41a4c84d11ad673eaf7108596bfbf35e8c0 Mon Sep 17 00:00:00 2001 From: Tom Prince Date: Wed, 15 Aug 2018 15:16:49 -0600 Subject: [PATCH 08/15] Bug 1484012: [fetch-content] Add an option to not unpack downloaded artifacts; r=gps Differential Revision: https://phabricator.services.mozilla.com/D3554 --HG-- extra : rebase_source : 58bba31bd921d29d4a40ad8d9ba09c4c7ac1f8dc --- taskcluster/scripts/misc/fetch-content | 7 +++++-- taskcluster/taskgraph/transforms/job/__init__.py | 5 +++++ testing/mozharness/mozharness/mozilla/fetches.py | 5 +++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/taskcluster/scripts/misc/fetch-content b/taskcluster/scripts/misc/fetch-content index 2132b0e7cb0e..14f9047d13da 100755 --- a/taskcluster/scripts/misc/fetch-content +++ b/taskcluster/scripts/misc/fetch-content @@ -218,7 +218,7 @@ def extract_archive(path, dest_dir, typ): log('%s extracted in %.3fs' % (path, time.time() - t0)) -def fetch_and_extract(url, dest_dir, sha256=None, size=None): +def fetch_and_extract(url, dest_dir, extract=True, sha256=None, size=None): """Fetch a URL and extract it to a destination path. If the downloaded URL is an archive, it is extracted automatically @@ -231,6 +231,9 @@ def fetch_and_extract(url, dest_dir, sha256=None, size=None): download_to_path(url, dest_path, sha256=sha256, size=size) + if not extract: + return + typ = archive_type(dest_path) if typ: extract_archive(dest_path, dest_dir, typ) @@ -290,7 +293,7 @@ def command_task_artifacts(args): extdir.mkdir(parents=True, exist_ok=True) url = ARTIFACT_URL.format(task=fetch['task'], artifact=fetch['artifact']) - downloads.append((url, extdir)) + downloads.append((url, extdir, fetch['extract'])) fetch_urls(downloads) diff --git a/taskcluster/taskgraph/transforms/job/__init__.py b/taskcluster/taskgraph/transforms/job/__init__.py index 95a7a4144828..1387a0fd44a9 100644 --- a/taskcluster/taskgraph/transforms/job/__init__.py +++ b/taskcluster/taskgraph/transforms/job/__init__.py @@ -84,6 +84,7 @@ job_description_schema = Schema({ basestring: [basestring, { Required('artifact'): basestring, Optional('dest'): basestring, + Optional('extract'): bool, }], }, @@ -189,6 +190,7 @@ def use_fetches(config, jobs): job_fetches.append({ 'artifact': path, 'task': '<{dep}>'.format(dep=dep), + 'extract': True, }) else: @@ -200,13 +202,16 @@ def use_fetches(config, jobs): if isinstance(artifact, basestring): path = artifact dest = None + extract = True else: path = artifact['artifact'] dest = artifact.get('dest') + extract = artifact.get('extract', True) fetch = { 'artifact': '{prefix}/{path}'.format(prefix=prefix, path=path), 'task': '<{dep}>'.format(dep=kind), + 'extract': extract, } if dest is not None: fetch['dest'] = dest diff --git a/testing/mozharness/mozharness/mozilla/fetches.py b/testing/mozharness/mozharness/mozilla/fetches.py index c0f7510281ba..6df9cf38e587 100644 --- a/testing/mozharness/mozharness/mozilla/fetches.py +++ b/testing/mozharness/mozharness/mozilla/fetches.py @@ -56,5 +56,6 @@ class FetchesMixin(object): path = self.download_file(url, parent_dir=extdir) - mozfile.extract(path, extdir) - os.remove(path) + if fetch['extract']: + mozfile.extract(path, extdir) + os.remove(path) From 9fd238c7e3c3bab5c7f71bb648247d5797568c45 Mon Sep 17 00:00:00 2001 From: Tom Prince Date: Wed, 15 Aug 2018 15:53:27 -0600 Subject: [PATCH 09/15] Bug 1484012: [fetch-content] Transparently decompress artifacts; r=gps generic-worker transparently compresses uncompressed artifacts. Teach fetch-content to decompress those artifacts. Differential Revision: https://phabricator.services.mozilla.com/D3555 --HG-- extra : rebase_source : 3e1847b545de5443fd4349f75acc605ea5a46701 --- taskcluster/scripts/misc/fetch-content | 3 +++ 1 file changed, 3 insertions(+) diff --git a/taskcluster/scripts/misc/fetch-content b/taskcluster/scripts/misc/fetch-content index 14f9047d13da..863544b7f4e0 100755 --- a/taskcluster/scripts/misc/fetch-content +++ b/taskcluster/scripts/misc/fetch-content @@ -60,6 +60,9 @@ def stream_download(url, sha256=None, size=None): t0 = time.time() with urllib.request.urlopen(url) as fh: + if not url.endswith('.gz') and fh.info().get('Content-Encoding') == 'gzip': + fh = gzip.GzipFile(fileobj=fh) + while True: chunk = fh.read(65536) if not chunk: From 83067e26038596b572d68beee768dcc7286e4738 Mon Sep 17 00:00:00 2001 From: Tom Prince Date: Thu, 16 Aug 2018 15:13:02 -0600 Subject: [PATCH 10/15] Bug 1484012: [fetch-content] Add support for downloading private artifacts; r=gps Differential Revision: https://phabricator.services.mozilla.com/D3556 --HG-- extra : rebase_source : 8207be2e99ee8fdc75209f62c4a357b5c827edce --- taskcluster/scripts/misc/fetch-content | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/taskcluster/scripts/misc/fetch-content b/taskcluster/scripts/misc/fetch-content index 863544b7f4e0..68b61fac8d2b 100755 --- a/taskcluster/scripts/misc/fetch-content +++ b/taskcluster/scripts/misc/fetch-content @@ -25,8 +25,10 @@ except ImportError: zstandard = None -ARTIFACT_URL = ('https://queue.taskcluster.net/v1/task/{task}/artifacts/' - '{artifact}') +PUBLIC_ARTIFACT_URL = ('https://queue.taskcluster.net/v1/task/{task}/artifacts/' + '{artifact}') +PRIVATE_ARTIFACT_URL = ('https://taskcluster/queue/v1/task/{task}/artifacts/' + '{artifact}') CONCURRENCY = multiprocessing.cpu_count() @@ -294,8 +296,12 @@ def command_task_artifacts(args): if 'dest' in fetch: extdir = extdir.joinpath(fetch['dest']) extdir.mkdir(parents=True, exist_ok=True) - url = ARTIFACT_URL.format(task=fetch['task'], - artifact=fetch['artifact']) + if fetch['artifact'].startswith('public/'): + url = PUBLIC_ARTIFACT_URL.format(task=fetch['task'], + artifact=fetch['artifact']) + else: + url = PRIVATE_ARTIFACT_URL.format(task=fetch['task'], + artifact=fetch['artifact']) downloads.append((url, extdir, fetch['extract'])) fetch_urls(downloads) From 8db33dc52b85d39102000f97cc5943126b0268a5 Mon Sep 17 00:00:00 2001 From: Tom Prince Date: Thu, 9 Aug 2018 12:51:31 -0600 Subject: [PATCH 11/15] Bug 1484012: [taskgraph] Allow windows mozharness tasks to use `fetch-content`; r=gps Differential Revision: https://phabricator.services.mozilla.com/D3557 --HG-- extra : rebase_source : 45014a59ef2300c6462bbb70471468b36c60eb7d --- taskcluster/taskgraph/transforms/job/__init__.py | 9 +++++++-- taskcluster/taskgraph/transforms/job/mozharness.py | 11 +++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/taskcluster/taskgraph/transforms/job/__init__.py b/taskcluster/taskgraph/transforms/job/__init__.py index 1387a0fd44a9..3af8e7f83fa6 100644 --- a/taskcluster/taskgraph/transforms/job/__init__.py +++ b/taskcluster/taskgraph/transforms/job/__init__.py @@ -220,8 +220,13 @@ def use_fetches(config, jobs): env = job.setdefault('worker', {}).setdefault('env', {}) env['MOZ_FETCHES'] = {'task-reference': json.dumps(job_fetches, sort_keys=True)} - workdir = job['run'].get('workdir', '/builds/worker') - env.setdefault('MOZ_FETCHES_DIR', '{}/fetches'.format(workdir)) + impl, os = worker_type_implementation(job['worker-type']) + if os == 'windows': + env.setdefault('MOZ_FETCHES_DIR', 'fetches') + else: + workdir = job['run'].get('workdir', '/builds/worker') + env.setdefault('MOZ_FETCHES_DIR', '{}/fetches'.format(workdir)) + yield job diff --git a/taskcluster/taskgraph/transforms/job/mozharness.py b/taskcluster/taskgraph/transforms/job/mozharness.py index edbe6242ea95..ce05a298dc8f 100644 --- a/taskcluster/taskgraph/transforms/job/mozharness.py +++ b/taskcluster/taskgraph/transforms/job/mozharness.py @@ -312,6 +312,16 @@ def mozharness_on_generic_worker(config, job, taskdesc): head_rev=env['COMM_HEAD_REV'], path=r'.\build\src\comm')) + fetch_commands = [] + if 'MOZ_FETCHES' in env: + # When Bug 1436037 is fixed, run-task can be used for this task, + # and this call can go away + fetch_commands.append(' '.join([ + r'c:\mozilla-build\python3\python3.exe', + r'build\src\taskcluster\scripts\misc\fetch-content', + 'task-artifacts', + ])) + worker['command'] = [] if taskdesc.get('needs-sccache'): worker['command'].extend([ @@ -329,6 +339,7 @@ def mozharness_on_generic_worker(config, job, taskdesc): ]) worker['command'].extend(hg_commands) + worker['command'].extend(fetch_commands) worker['command'].extend([ ' '.join(mh_command) ]) From c60045308b3514d6ec276746e9b839ff32517c68 Mon Sep 17 00:00:00 2001 From: Tom Prince Date: Tue, 7 Aug 2018 11:53:00 -0600 Subject: [PATCH 12/15] Bug 1484012: [mozharness] Hard-code repackage input/output directories, since they don't vary meaningfully; r=Callek Differential Revision: https://phabricator.services.mozilla.com/D3558 --HG-- extra : rebase_source : d70cd0f390cee6b1561869edbe7ca49c469bf065 --- taskcluster/taskgraph/transforms/repackage.py | 10 ++++---- .../taskgraph/transforms/repackage_partner.py | 6 +++-- .../configs/repackage/linux32_signed.py | 9 +++----- .../configs/repackage/linux64_signed.py | 9 +++----- .../configs/repackage/osx_partner.py | 6 ++--- .../configs/repackage/osx_signed.py | 12 ++++------ .../configs/repackage/win32_partner.py | 9 +++----- .../configs/repackage/win32_signed.py | 19 +++++++-------- .../configs/repackage/win64_partner.py | 9 +++----- .../configs/repackage/win64_signed.py | 15 +++++------- testing/mozharness/scripts/repackage.py | 23 ++++++++----------- 11 files changed, 53 insertions(+), 74 deletions(-) diff --git a/taskcluster/taskgraph/transforms/repackage.py b/taskcluster/taskgraph/transforms/repackage.py index f3f0b7274c09..c8b673a7bf23 100644 --- a/taskcluster/taskgraph/transforms/repackage.py +++ b/taskcluster/taskgraph/transforms/repackage.py @@ -197,6 +197,8 @@ def make_job_description(config, jobs): project=config.params["project"]), 'chain-of-trust': True, 'max-run-time': 7200 if build_platform.startswith('win') else 3600, + # Don't add generic artifact directory. + 'skip-artifacts': True, } if locale: @@ -292,7 +294,7 @@ def _generate_task_output_files(task, build_platform, locale=None, project=None) if build_platform.startswith('linux') or build_platform.startswith('macosx'): output_files = [{ 'type': 'file', - 'path': '/builds/worker/workspace/build/artifacts/{}target.complete.mar' + 'path': '/builds/worker/workspace/build/outputs/{}target.complete.mar' .format(locale_output_path), 'name': '{}/{}target.complete.mar'.format(artifact_prefix, locale_output_path), }] @@ -300,7 +302,7 @@ def _generate_task_output_files(task, build_platform, locale=None, project=None) if build_platform.startswith('macosx'): output_files.append({ 'type': 'file', - 'path': '/builds/worker/workspace/build/artifacts/{}target.dmg' + 'path': '/builds/worker/workspace/build/outputs/{}target.dmg' .format(locale_output_path), 'name': '{}/{}target.dmg'.format(artifact_prefix, locale_output_path), }) @@ -308,11 +310,11 @@ def _generate_task_output_files(task, build_platform, locale=None, project=None) elif build_platform.startswith('win'): output_files = [{ 'type': 'file', - 'path': '{}/{}target.installer.exe'.format(artifact_prefix, locale_output_path), + 'path': 'build/outputs/{}target.installer.exe'.format(locale_output_path), 'name': '{}/{}target.installer.exe'.format(artifact_prefix, locale_output_path), }, { 'type': 'file', - 'path': '{}/{}target.complete.mar'.format(artifact_prefix, locale_output_path), + 'path': 'build/outputs/{}target.complete.mar'.format(locale_output_path), 'name': '{}/{}target.complete.mar'.format(artifact_prefix, locale_output_path), }] diff --git a/taskcluster/taskgraph/transforms/repackage_partner.py b/taskcluster/taskgraph/transforms/repackage_partner.py index 1289a85d7a9e..0c33027a578f 100644 --- a/taskcluster/taskgraph/transforms/repackage_partner.py +++ b/taskcluster/taskgraph/transforms/repackage_partner.py @@ -165,6 +165,8 @@ def make_job_description(config, jobs): 'chain-of-trust': True, 'max-run-time': 7200 if build_platform.startswith('win') else 3600, 'taskcluster-proxy': True if get_artifact_prefix(dep_job) else False, + # Don't add generic artifact directory. + 'skip-artifacts': True, } worker['env'].update(REPACK_ID=repack_id) @@ -251,7 +253,7 @@ def _generate_task_output_files(task, build_platform, partner): if build_platform.startswith('macosx'): output_files = [{ 'type': 'file', - 'path': '/builds/worker/workspace/build/artifacts/{}target.dmg' + 'path': '/builds/worker/workspace/build/outputs/{}target.dmg' .format(partner_output_path), 'name': '{}/{}target.dmg'.format(artifact_prefix, partner_output_path), }] @@ -259,7 +261,7 @@ def _generate_task_output_files(task, build_platform, partner): elif build_platform.startswith('win'): output_files = [{ 'type': 'file', - 'path': '{}/{}target.installer.exe'.format(artifact_prefix, partner_output_path), + 'path': 'build/outputs/{}target.installer.exe'.format(partner_output_path), 'name': '{}/{}target.installer.exe'.format(artifact_prefix, partner_output_path), }] diff --git a/testing/mozharness/configs/repackage/linux32_signed.py b/testing/mozharness/configs/repackage/linux32_signed.py index 69750d613cfd..8e96d2f0b000 100644 --- a/testing/mozharness/configs/repackage/linux32_signed.py +++ b/testing/mozharness/configs/repackage/linux32_signed.py @@ -3,9 +3,6 @@ import os platform = "linux32" config = { - "input_home": "{abs_work_dir}/inputs", - "output_home": "{abs_work_dir}/artifacts{locale}", - "locale": os.environ.get("LOCALE"), "download_config": { @@ -15,9 +12,9 @@ config = { "repackage_config": [[ "mar", - "-i", "{abs_work_dir}/inputs/target.tar.gz", - "--mar", "{abs_work_dir}/inputs/mar", - "-o", "{output_home}/target.complete.mar" + "-i", "{abs_input_dir}/target.tar.gz", + "--mar", "{abs_input_dir}/mar", + "-o", "{abs_output_dir}/target.complete.mar" ]], # ToolTool diff --git a/testing/mozharness/configs/repackage/linux64_signed.py b/testing/mozharness/configs/repackage/linux64_signed.py index 3917821e4fe4..0d96ca45d13b 100644 --- a/testing/mozharness/configs/repackage/linux64_signed.py +++ b/testing/mozharness/configs/repackage/linux64_signed.py @@ -3,9 +3,6 @@ import os platform = "linux64" config = { - "input_home": "{abs_work_dir}/inputs", - "output_home": "{abs_work_dir}/artifacts{locale}", - "locale": os.environ.get("LOCALE"), "download_config": { @@ -15,9 +12,9 @@ config = { "repackage_config": [[ "mar", - "-i", "{abs_work_dir}/inputs/target.tar.gz", - "--mar", "{abs_work_dir}/inputs/mar", - "-o", "{output_home}/target.complete.mar" + "-i", "{abs_input_dir}/target.tar.gz", + "--mar", "{abs_input_dir}/mar", + "-o", "{abs_output_dir}/target.complete.mar" ]], # ToolTool diff --git a/testing/mozharness/configs/repackage/osx_partner.py b/testing/mozharness/configs/repackage/osx_partner.py index f1ff119e3eea..d063781f4596 100644 --- a/testing/mozharness/configs/repackage/osx_partner.py +++ b/testing/mozharness/configs/repackage/osx_partner.py @@ -1,8 +1,6 @@ import os config = { - "input_home": "{abs_work_dir}/inputs", - "output_home": "{abs_work_dir}/artifacts{repack_id}", "src_mozconfig": "browser/config/mozconfigs/macosx64/repack", "repack_id": os.environ.get("REPACK_ID"), @@ -13,8 +11,8 @@ config = { "repackage_config": [[ "dmg", - "-i", "{abs_work_dir}/inputs/target.tar.gz", - "-o", "{output_home}/target.dmg" + "-i", "{abs_input_dir}/target.tar.gz", + "-o", "{abs_output_dir}/target.dmg" ]], # ToolTool diff --git a/testing/mozharness/configs/repackage/osx_signed.py b/testing/mozharness/configs/repackage/osx_signed.py index cb5932b54cc4..2661d57958a0 100644 --- a/testing/mozharness/configs/repackage/osx_signed.py +++ b/testing/mozharness/configs/repackage/osx_signed.py @@ -1,8 +1,6 @@ import os config = { - "input_home": "{abs_work_dir}/inputs", - "output_home": "{abs_work_dir}/artifacts{locale}", "src_mozconfig": "browser/config/mozconfigs/macosx64/repack", "locale": os.environ.get("LOCALE"), @@ -14,13 +12,13 @@ config = { "repackage_config": [[ "dmg", - "-i", "{abs_work_dir}/inputs/target.tar.gz", - "-o", "{output_home}/target.dmg" + "-i", "{abs_input_dir}/target.tar.gz", + "-o", "{abs_output_dir}/target.dmg" ], [ "mar", - "-i", "{abs_work_dir}/inputs/target.tar.gz", - "--mar", "{abs_work_dir}/inputs/mar", - "-o", "{output_home}/target.complete.mar" + "-i", "{abs_input_dir}/target.tar.gz", + "--mar", "{abs_input_dir}/mar", + "-o", "{abs_output_dir}/target.complete.mar" ]], # ToolTool diff --git a/testing/mozharness/configs/repackage/win32_partner.py b/testing/mozharness/configs/repackage/win32_partner.py index 6e42bf727de9..7768e349ef71 100644 --- a/testing/mozharness/configs/repackage/win32_partner.py +++ b/testing/mozharness/configs/repackage/win32_partner.py @@ -10,17 +10,14 @@ download_config = { repackage_config = [[ "installer", "--package-name", "firefox", - "--package", "{abs_work_dir}\\inputs\\target.zip", + "--package", "{abs_input_dir}\\target.zip", "--tag", "{abs_mozilla_dir}\\browser\\installer\\windows\\app.tag", - "--setupexe", "{abs_work_dir}\\inputs\\setup.exe", - "-o", "{output_home}\\target.installer.exe", + "--setupexe", "{abs_input_dir}\\setup.exe", + "-o", "{abs_output_dir}\\target.installer.exe", "--sfx-stub", "other-licenses/7zstub/firefox/7zSD.sfx", ]] config = { - "input_home": "{abs_work_dir}\\inputs", - "output_home": "{base_work_dir}\\releng\\partner\\{repack_id}", - "repack_id": os.environ.get("REPACK_ID"), "download_config": download_config, diff --git a/testing/mozharness/configs/repackage/win32_signed.py b/testing/mozharness/configs/repackage/win32_signed.py index c3c977db2a14..8bc332eff5ca 100644 --- a/testing/mozharness/configs/repackage/win32_signed.py +++ b/testing/mozharness/configs/repackage/win32_signed.py @@ -18,16 +18,16 @@ if not os.environ.get("NO_STUB_INSTALLER"): repackage_config = [[ "installer", "--package-name", "firefox", - "--package", "{abs_work_dir}\\inputs\\target.zip", + "--package", "{abs_input_dir}\\target.zip", "--tag", "{abs_mozilla_dir}\\browser\\installer\\windows\\app.tag", - "--setupexe", "{abs_work_dir}\\inputs\\setup.exe", - "-o", "{output_home}\\target.installer.exe", + "--setupexe", "{abs_input_dir}\\setup.exe", + "-o", "{abs_output_dir}\\target.installer.exe", "--sfx-stub", "other-licenses/7zstub/firefox/7zSD.sfx", ], [ "mar", - "-i", "{abs_work_dir}\\inputs\\target.zip", - "--mar", "{abs_work_dir}\\inputs\\mar.exe", - "-o", "{output_home}\\target.complete.mar", + "-i", "{abs_input_dir}\\target.zip", + "--mar", "{abs_input_dir}\\mar.exe", + "-o", "{abs_output_dir}\\target.complete.mar", ]] if not os.environ.get("NO_STUB_INSTALLER"): @@ -35,15 +35,12 @@ if not os.environ.get("NO_STUB_INSTALLER"): repackage_config.append([ "installer", "--tag", "{abs_mozilla_dir}\\browser\\installer\\windows\\stub.tag", - "--setupexe", "{abs_work_dir}\\inputs\\setup-stub.exe", - "-o", "{output_home}\\target.stub-installer.exe", + "--setupexe", "{abs_input_dir}\\setup-stub.exe", + "-o", "{abs_output_dir}\\target.stub-installer.exe", "--sfx-stub", "other-licenses/7zstub/firefox/7zSD.sfx", ]) config = { - "input_home": "{abs_work_dir}\\inputs", - "output_home": "{base_work_dir}\\public\\build{locale}", - "locale": os.environ.get("LOCALE"), "download_config": download_config, diff --git a/testing/mozharness/configs/repackage/win64_partner.py b/testing/mozharness/configs/repackage/win64_partner.py index 504346098c5e..23a516bdd36b 100644 --- a/testing/mozharness/configs/repackage/win64_partner.py +++ b/testing/mozharness/configs/repackage/win64_partner.py @@ -10,17 +10,14 @@ download_config = { repackage_config = [[ "installer", "--package-name", "firefox", - "--package", "{abs_work_dir}\\inputs\\target.zip", + "--package", "{abs_input_dir}\\target.zip", "--tag", "{abs_mozilla_dir}\\browser\\installer\\windows\\app.tag", - "--setupexe", "{abs_work_dir}\\inputs\\setup.exe", - "-o", "{output_home}\\target.installer.exe", + "--setupexe", "{abs_input_dir}\\setup.exe", + "-o", "{abs_output_dir}\\target.installer.exe", "--sfx-stub", "other-licenses/7zstub/firefox/7zSD.sfx", ]] config = { - "input_home": "{abs_work_dir}\\inputs", - "output_home": "{base_work_dir}\\releng\\partner\\{repack_id}", - "repack_id": os.environ.get("REPACK_ID"), "download_config": download_config, diff --git a/testing/mozharness/configs/repackage/win64_signed.py b/testing/mozharness/configs/repackage/win64_signed.py index be998e4ccb5b..4ba61d870c82 100644 --- a/testing/mozharness/configs/repackage/win64_signed.py +++ b/testing/mozharness/configs/repackage/win64_signed.py @@ -11,22 +11,19 @@ download_config = { repackage_config = [[ "installer", "--package-name", "firefox", - "--package", "{abs_work_dir}\\inputs\\target.zip", + "--package", "{abs_input_dir}\\target.zip", "--tag", "{abs_mozilla_dir}\\browser\\installer\\windows\\app.tag", - "--setupexe", "{abs_work_dir}\\inputs\\setup.exe", - "-o", "{output_home}\\target.installer.exe", + "--setupexe", "{abs_input_dir}\\setup.exe", + "-o", "{abs_output_dir}\\target.installer.exe", "--sfx-stub", "other-licenses/7zstub/firefox/7zSD.sfx", ], [ "mar", - "-i", "{abs_work_dir}\\inputs\\target.zip", - "--mar", "{abs_work_dir}\\inputs\\mar.exe", - "-o", "{output_home}\\target.complete.mar", + "-i", "{abs_input_dir}\\target.zip", + "--mar", "{abs_input_dir}\\mar.exe", + "-o", "{abs_output_dir}\\target.complete.mar", ]] config = { - "input_home": "{abs_work_dir}\\inputs", - "output_home": "{base_work_dir}\\public\\build{locale}", - "locale": os.environ.get("LOCALE"), "download_config": download_config, diff --git a/testing/mozharness/scripts/repackage.py b/testing/mozharness/scripts/repackage.py index 46d80de97d0d..7141d132ecd3 100644 --- a/testing/mozharness/scripts/repackage.py +++ b/testing/mozharness/scripts/repackage.py @@ -27,18 +27,18 @@ class Repackage(BaseScript): config = self.config dirs = self.query_abs_dirs() - input_home = config['input_home'].format(**dirs) + input_dir = dirs['abs_input_dir'] for path, url in config["download_config"].items(): status = self.download_file(url=url, file_name=path, - parent_dir=input_home) + parent_dir=input_dir) if not status: self.fatal("Unable to fetch signed input from %s" % url) if 'mar' in path: # Ensure mar is executable - self.chmod(os.path.join(input_home, path), 0755) + self.chmod(os.path.join(input_dir, path), 0755) def setup(self): self._run_tooltool() @@ -55,17 +55,14 @@ class Repackage(BaseScript): dirs = {} dirs['abs_tools_dir'] = os.path.join(abs_dirs['abs_work_dir'], 'tools') dirs['abs_mozilla_dir'] = os.path.join(abs_dirs['abs_work_dir'], 'src') - locale_dir = '' + dirs['abs_input_dir'] = os.path.join(abs_dirs['abs_work_dir'], 'inputs') + output_dir_suffix = [] if config.get('locale'): - locale_dir = "{}{}".format(os.path.sep, config['locale']) - repack_id_dir = '' + output_dir_suffix.append(config['locale']) if config.get('repack_id'): - repack_id_dir = "{}{}".format(os.path.sep, config['repack_id']) - dirs['output_home'] = config['output_home'].format( - locale=locale_dir, - repack_id=repack_id_dir, - **abs_dirs - ) + output_dir_suffix.append(config['repack_id']) + dirs['abs_output_dir'] = os.path.join( + abs_dirs['abs_work_dir'], 'outputs', *output_dir_suffix) for key in dirs.keys(): if key not in abs_dirs: abs_dirs[key] = dirs[key] @@ -77,7 +74,7 @@ class Repackage(BaseScript): dirs = self.query_abs_dirs() # Make sure the upload dir is around. - self.mkdir_p(dirs['output_home']) + self.mkdir_p(dirs['abs_output_dir']) for repack_config in config["repackage_config"]: command = [sys.executable, 'mach', '--log-no-times', 'repackage'] + \ From 5b57b4221527a1d9c123b8d2ef7225d4bd416673 Mon Sep 17 00:00:00 2001 From: Tom Prince Date: Wed, 15 Aug 2018 15:12:33 -0600 Subject: [PATCH 13/15] Bug 1484012: [mozharness] Use fetch-content to download inputs in repackage tasks; r=Callek Differential Revision: https://phabricator.services.mozilla.com/D3559 --HG-- extra : rebase_source : c910810629d16dbf507241fc609f3955afcf50e8 --- taskcluster/taskgraph/transforms/repackage.py | 68 ++++++++++--------- .../taskgraph/transforms/repackage_partner.py | 41 +++++------ .../configs/repackage/linux32_signed.py | 7 +- .../configs/repackage/linux64_signed.py | 7 +- .../configs/repackage/osx_partner.py | 4 -- .../configs/repackage/osx_signed.py | 5 -- .../configs/repackage/win32_partner.py | 7 -- .../configs/repackage/win32_signed.py | 15 ---- .../configs/repackage/win64_partner.py | 7 -- .../configs/repackage/win64_signed.py | 8 --- testing/mozharness/scripts/repackage.py | 29 ++++---- 11 files changed, 73 insertions(+), 125 deletions(-) diff --git a/taskcluster/taskgraph/transforms/repackage.py b/taskcluster/taskgraph/transforms/repackage.py index c8b673a7bf23..cb4fbca6fdac 100644 --- a/taskcluster/taskgraph/transforms/repackage.py +++ b/taskcluster/taskgraph/transforms/repackage.py @@ -17,7 +17,7 @@ from taskgraph.util.schema import ( resolve_keyed_by, Schema, ) -from taskgraph.util.taskcluster import get_taskcluster_artifact_prefix, get_artifact_prefix +from taskgraph.util.taskcluster import get_artifact_prefix from taskgraph.transforms.task import task_description_schema from voluptuous import Any, Required, Optional @@ -165,8 +165,6 @@ def make_job_description(config, jobs): dependencies['build'] = "build-{}/opt".format( dependencies[build_task][13:dependencies[build_task].rfind('-')]) build_task = 'build' - signing_task_ref = "<{}>".format(signing_task) - build_task_ref = "<{}>".format(build_task) attributes = copy_attributes_from_dependent_job(dep_job) attributes['repackage_type'] = 'repackage' @@ -184,14 +182,11 @@ def make_job_description(config, jobs): 'using': 'mozharness', 'script': 'mozharness/scripts/repackage.py', 'job-script': 'taskcluster/scripts/builder/repackage.sh', - 'actions': ['download_input', 'setup', 'repackage'], + 'actions': ['setup', 'repackage'], 'extra-workspace-cache-key': 'repackage', }) worker = { - 'env': _generate_task_env(dep_job, build_platform, build_task_ref, - signing_task_ref, locale=locale, - project=config.params["project"]), 'artifacts': _generate_task_output_files(dep_job, build_platform, locale=locale, project=config.params["project"]), @@ -203,7 +198,11 @@ def make_job_description(config, jobs): if locale: # Make sure we specify the locale-specific upload dir - worker['env'].update(LOCALE=locale) + worker.setdefault('env', {}).update(LOCALE=locale) + + use_stub = attributes.get('stub-installer') + if not use_stub: + worker.setdefault('env', {})['NO_STUB_INSTALLER'] = '1' if build_platform.startswith('win'): worker_type = 'aws-provisioner-v1/gecko-%s-b-win2012' % level @@ -240,6 +239,9 @@ def make_job_description(config, jobs): 'extra': job.get('extra', {}), 'worker': worker, 'run': run, + 'fetches': _generate_download_config(dep_job, build_platform, build_task, + signing_task, locale=locale, + project=config.params["project"]), } if build_platform.startswith('macosx'): @@ -251,38 +253,42 @@ def make_job_description(config, jobs): yield task -def _generate_task_env(task, build_platform, build_task_ref, signing_task_ref, locale=None, - project=None): - mar_prefix = get_taskcluster_artifact_prefix( - task, build_task_ref, postfix='host/bin/', locale=None - ) - signed_prefix = get_taskcluster_artifact_prefix(task, signing_task_ref, locale=locale) +def _generate_download_config(task, build_platform, build_task, signing_task, locale=None, + project=None): + locale_path = '{}/'.format(locale) if locale else '' if build_platform.startswith('linux') or build_platform.startswith('macosx'): tarball_extension = 'bz2' if build_platform.startswith('linux') else 'gz' return { - 'SIGNED_INPUT': {'task-reference': '{}target.tar.{}'.format( - signed_prefix, tarball_extension - )}, - 'UNSIGNED_MAR': {'task-reference': '{}mar'.format(mar_prefix)}, + signing_task: [ + { + 'artifact': '{}target.tar.{}'.format(locale_path, tarball_extension), + 'extract': False, + }, + ], + build_task: [ + 'host/bin/mar', + ], } elif build_platform.startswith('win'): - task_env = { - 'SIGNED_ZIP': {'task-reference': '{}target.zip'.format(signed_prefix)}, - 'SIGNED_SETUP': {'task-reference': '{}setup.exe'.format(signed_prefix)}, - 'UNSIGNED_MAR': {'task-reference': '{}mar.exe'.format(mar_prefix)}, + fetch_config = { + signing_task: [ + { + 'artifact': '{}target.zip'.format(locale_path), + 'extract': False, + }, + '{}setup.exe'.format(locale_path), + ], + build_task: [ + 'host/bin/mar.exe', + ], } use_stub = task.attributes.get('stub-installer') if use_stub: - task_env['SIGNED_SETUP_STUB'] = { - 'task-reference': '{}setup-stub.exe'.format(signed_prefix), - } - elif '32' in build_platform: - # Stub installer is only attempted on win32 - task_env['NO_STUB_INSTALLER'] = '1' + fetch_config[signing_task].append('{}setup-stub.exe'.format(locale_path)) - return task_env + return fetch_config raise NotImplementedError('Unsupported build_platform: "{}"'.format(build_platform)) @@ -322,8 +328,8 @@ def _generate_task_output_files(task, build_platform, locale=None, project=None) if use_stub: output_files.append({ 'type': 'file', - 'path': '{}/{}target.stub-installer.exe'.format( - artifact_prefix, locale_output_path + 'path': 'build/outputs/{}target.stub-installer.exe'.format( + locale_output_path ), 'name': '{}/{}target.stub-installer.exe'.format( artifact_prefix, locale_output_path diff --git a/taskcluster/taskgraph/transforms/repackage_partner.py b/taskcluster/taskgraph/transforms/repackage_partner.py index 0c33027a578f..f3a52fa11f4d 100644 --- a/taskcluster/taskgraph/transforms/repackage_partner.py +++ b/taskcluster/taskgraph/transforms/repackage_partner.py @@ -17,7 +17,7 @@ from taskgraph.util.schema import ( resolve_keyed_by, Schema, ) -from taskgraph.util.taskcluster import get_taskcluster_artifact_prefix, get_artifact_prefix +from taskgraph.util.taskcluster import get_artifact_prefix from taskgraph.util.partners import check_if_partners_enabled from taskgraph.transforms.task import task_description_schema from voluptuous import Any, Required, Optional @@ -142,7 +142,6 @@ def make_job_description(config, jobs): signing_task = dependency elif build_platform.startswith('win') and dependency.endswith('repack'): signing_task = dependency - signing_task_ref = "<{}>".format(signing_task) attributes['repackage_type'] = 'repackage' @@ -159,12 +158,11 @@ def make_job_description(config, jobs): }) worker = { - 'env': _generate_task_env(build_platform, signing_task, signing_task_ref, - partner=repack_id), 'artifacts': _generate_task_output_files(dep_job, build_platform, partner=repack_id), 'chain-of-trust': True, 'max-run-time': 7200 if build_platform.startswith('win') else 3600, 'taskcluster-proxy': True if get_artifact_prefix(dep_job) else False, + 'env': {}, # Don't add generic artifact directory. 'skip-artifacts': True, } @@ -206,6 +204,9 @@ def make_job_description(config, jobs): 'extra': job.get('extra', {}), 'worker': worker, 'run': run, + 'fetches': _generate_download_config(dep_job, build_platform, + signing_task, partner=repack_id, + project=config.params["project"]), } if build_platform.startswith('macosx'): @@ -217,28 +218,30 @@ def make_job_description(config, jobs): yield task -def _generate_task_env(build_platform, signing_task, signing_task_ref, partner): - # Force private artifacts here, until we can populate our dependency map - # with actual task definitions rather than labels. - # (get_taskcluster_artifact_prefix requires the task definition to find - # the artifact_prefix attribute). - signed_prefix = get_taskcluster_artifact_prefix( - signing_task, signing_task_ref, locale=partner, force_private=True - ) - signed_prefix = signed_prefix.replace('public/build', 'releng/partner') +def _generate_download_config(task, build_platform, signing_task, partner=None, + project=None): + locale_path = '{}/'.format(partner) if partner else '' if build_platform.startswith('macosx'): return { - 'SIGNED_INPUT': {'task-reference': '{}target.tar.gz'.format(signed_prefix)}, + signing_task: [ + { + 'artifact': '{}target.tar.gz'.format(locale_path), + 'extract': False, + }, + ], } elif build_platform.startswith('win'): - task_env = { - 'SIGNED_ZIP': {'task-reference': '{}target.zip'.format(signed_prefix)}, - 'SIGNED_SETUP': {'task-reference': '{}setup.exe'.format(signed_prefix)}, + return { + signing_task: [ + { + 'artifact': '{}target.zip'.format(locale_path), + 'extract': False, + }, + '{}setup.exe'.format(locale_path), + ], } - return task_env - raise NotImplementedError('Unsupported build_platform: "{}"'.format(build_platform)) diff --git a/testing/mozharness/configs/repackage/linux32_signed.py b/testing/mozharness/configs/repackage/linux32_signed.py index 8e96d2f0b000..6e4671be65c7 100644 --- a/testing/mozharness/configs/repackage/linux32_signed.py +++ b/testing/mozharness/configs/repackage/linux32_signed.py @@ -5,14 +5,9 @@ platform = "linux32" config = { "locale": os.environ.get("LOCALE"), - "download_config": { - "target.tar.gz": os.environ.get("SIGNED_INPUT"), - "mar": os.environ.get("UNSIGNED_MAR"), - }, - "repackage_config": [[ "mar", - "-i", "{abs_input_dir}/target.tar.gz", + "-i", "{abs_input_dir}/target.tar.bz2", "--mar", "{abs_input_dir}/mar", "-o", "{abs_output_dir}/target.complete.mar" ]], diff --git a/testing/mozharness/configs/repackage/linux64_signed.py b/testing/mozharness/configs/repackage/linux64_signed.py index 0d96ca45d13b..4ea1808e275f 100644 --- a/testing/mozharness/configs/repackage/linux64_signed.py +++ b/testing/mozharness/configs/repackage/linux64_signed.py @@ -5,14 +5,9 @@ platform = "linux64" config = { "locale": os.environ.get("LOCALE"), - "download_config": { - "target.tar.gz": os.environ.get("SIGNED_INPUT"), - "mar": os.environ.get("UNSIGNED_MAR"), - }, - "repackage_config": [[ "mar", - "-i", "{abs_input_dir}/target.tar.gz", + "-i", "{abs_input_dir}/target.tar.bz2", "--mar", "{abs_input_dir}/mar", "-o", "{abs_output_dir}/target.complete.mar" ]], diff --git a/testing/mozharness/configs/repackage/osx_partner.py b/testing/mozharness/configs/repackage/osx_partner.py index d063781f4596..a4c8db3b9251 100644 --- a/testing/mozharness/configs/repackage/osx_partner.py +++ b/testing/mozharness/configs/repackage/osx_partner.py @@ -5,10 +5,6 @@ config = { "repack_id": os.environ.get("REPACK_ID"), - "download_config": { - "target.tar.gz": os.environ.get("SIGNED_INPUT"), - }, - "repackage_config": [[ "dmg", "-i", "{abs_input_dir}/target.tar.gz", diff --git a/testing/mozharness/configs/repackage/osx_signed.py b/testing/mozharness/configs/repackage/osx_signed.py index 2661d57958a0..1b2a708c70cb 100644 --- a/testing/mozharness/configs/repackage/osx_signed.py +++ b/testing/mozharness/configs/repackage/osx_signed.py @@ -5,11 +5,6 @@ config = { "locale": os.environ.get("LOCALE"), - "download_config": { - "target.tar.gz": os.environ.get("SIGNED_INPUT"), - "mar": os.environ.get("UNSIGNED_MAR"), - }, - "repackage_config": [[ "dmg", "-i", "{abs_input_dir}/target.tar.gz", diff --git a/testing/mozharness/configs/repackage/win32_partner.py b/testing/mozharness/configs/repackage/win32_partner.py index 7768e349ef71..30055f80ea12 100644 --- a/testing/mozharness/configs/repackage/win32_partner.py +++ b/testing/mozharness/configs/repackage/win32_partner.py @@ -2,11 +2,6 @@ import os platform = "win32" -download_config = { - "target.zip": os.environ.get("SIGNED_ZIP"), - "setup.exe": os.environ.get("SIGNED_SETUP"), - } - repackage_config = [[ "installer", "--package-name", "firefox", @@ -20,8 +15,6 @@ repackage_config = [[ config = { "repack_id": os.environ.get("REPACK_ID"), - "download_config": download_config, - "repackage_config": repackage_config, # ToolTool diff --git a/testing/mozharness/configs/repackage/win32_signed.py b/testing/mozharness/configs/repackage/win32_signed.py index 8bc332eff5ca..c2a0956673ed 100644 --- a/testing/mozharness/configs/repackage/win32_signed.py +++ b/testing/mozharness/configs/repackage/win32_signed.py @@ -2,19 +2,6 @@ import os platform = "win32" -download_config = { - "target.zip": os.environ.get("SIGNED_ZIP"), - "setup.exe": os.environ.get("SIGNED_SETUP"), - "mar.exe": os.environ.get("UNSIGNED_MAR"), -} - -if not os.environ.get("NO_STUB_INSTALLER"): - # Some channels, like esr don't build a stub installer - download_config.update({ - # stub installer is only built on win32 - "setup-stub.exe": os.environ.get("SIGNED_SETUP_STUB"), - }) - repackage_config = [[ "installer", "--package-name", "firefox", @@ -43,8 +30,6 @@ if not os.environ.get("NO_STUB_INSTALLER"): config = { "locale": os.environ.get("LOCALE"), - "download_config": download_config, - "repackage_config": repackage_config, # ToolTool diff --git a/testing/mozharness/configs/repackage/win64_partner.py b/testing/mozharness/configs/repackage/win64_partner.py index 23a516bdd36b..22933a3f697c 100644 --- a/testing/mozharness/configs/repackage/win64_partner.py +++ b/testing/mozharness/configs/repackage/win64_partner.py @@ -2,11 +2,6 @@ import os platform = "win64" -download_config = { - "target.zip": os.environ.get("SIGNED_ZIP"), - "setup.exe": os.environ.get("SIGNED_SETUP"), - } - repackage_config = [[ "installer", "--package-name", "firefox", @@ -20,8 +15,6 @@ repackage_config = [[ config = { "repack_id": os.environ.get("REPACK_ID"), - "download_config": download_config, - "repackage_config": repackage_config, # ToolTool diff --git a/testing/mozharness/configs/repackage/win64_signed.py b/testing/mozharness/configs/repackage/win64_signed.py index 4ba61d870c82..dcad7d90b5ff 100644 --- a/testing/mozharness/configs/repackage/win64_signed.py +++ b/testing/mozharness/configs/repackage/win64_signed.py @@ -2,12 +2,6 @@ import os platform = "win64" -download_config = { - "target.zip": os.environ.get("SIGNED_ZIP"), - "setup.exe": os.environ.get("SIGNED_SETUP"), - "mar.exe": os.environ.get("UNSIGNED_MAR"), - } - repackage_config = [[ "installer", "--package-name", "firefox", @@ -26,8 +20,6 @@ repackage_config = [[ config = { "locale": os.environ.get("LOCALE"), - "download_config": download_config, - "repackage_config": repackage_config, # ToolTool diff --git a/testing/mozharness/scripts/repackage.py b/testing/mozharness/scripts/repackage.py index 7141d132ecd3..cb2435566847 100644 --- a/testing/mozharness/scripts/repackage.py +++ b/testing/mozharness/scripts/repackage.py @@ -23,25 +23,17 @@ class Repackage(BaseScript): **script_kwargs ) - def download_input(self): - config = self.config + def setup(self): dirs = self.query_abs_dirs() - input_dir = dirs['abs_input_dir'] - - for path, url in config["download_config"].items(): - status = self.download_file(url=url, - file_name=path, - parent_dir=input_dir) - if not status: - self.fatal("Unable to fetch signed input from %s" % url) - - if 'mar' in path: - # Ensure mar is executable - self.chmod(os.path.join(input_dir, path), 0755) - - def setup(self): self._run_tooltool() + + mar_path = os.path.join(dirs['abs_input_dir'], 'mar') + if self._is_windows(): + mar_path += '.exe' + if mar_path: + self.chmod(mar_path, 0755) + if self.config.get("run_configure", True): self._get_mozconfig() self._run_configure() @@ -55,7 +47,10 @@ class Repackage(BaseScript): dirs = {} dirs['abs_tools_dir'] = os.path.join(abs_dirs['abs_work_dir'], 'tools') dirs['abs_mozilla_dir'] = os.path.join(abs_dirs['abs_work_dir'], 'src') - dirs['abs_input_dir'] = os.path.join(abs_dirs['abs_work_dir'], 'inputs') + dirs['abs_input_dir'] = os.path.join( + abs_dirs['base_work_dir'], + os.environ.get('MOZ_FETCHES_DIR', 'fetches'), + ) output_dir_suffix = [] if config.get('locale'): output_dir_suffix.append(config['locale']) From a093c19492c5cc229d7e97e2e7d6f3d7ea39d388 Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Tue, 21 Aug 2018 23:51:46 -0400 Subject: [PATCH 14/15] Bug 1485247 - Remove the XPCOM component registration for Cocoa popup windows; r=mstange --- widget/cocoa/nsChildView.h | 4 +--- widget/cocoa/nsCocoaWindow.h | 4 +--- widget/cocoa/nsWidgetFactory.mm | 5 ----- widget/nsWidgetsCID.h | 5 ----- 4 files changed, 2 insertions(+), 16 deletions(-) diff --git a/widget/cocoa/nsChildView.h b/widget/cocoa/nsChildView.h index 986f653c61e1..ff7f6cd968c0 100644 --- a/widget/cocoa/nsChildView.h +++ b/widget/cocoa/nsChildView.h @@ -563,9 +563,7 @@ protected: virtual already_AddRefed AllocateChildPopupWidget() override { - static NS_DEFINE_IID(kCPopUpCID, NS_POPUP_CID); - nsCOMPtr widget = do_CreateInstance(kCPopUpCID); - return widget.forget(); + return nsIWidget::CreateTopLevelWindow(); } void ConfigureAPZCTreeManager() override; diff --git a/widget/cocoa/nsCocoaWindow.h b/widget/cocoa/nsCocoaWindow.h index c42064f77a96..9aa5def73a63 100644 --- a/widget/cocoa/nsCocoaWindow.h +++ b/widget/cocoa/nsCocoaWindow.h @@ -362,9 +362,7 @@ protected: virtual already_AddRefed AllocateChildPopupWidget() override { - static NS_DEFINE_IID(kCPopUpCID, NS_POPUP_CID); - nsCOMPtr widget = do_CreateInstance(kCPopUpCID); - return widget.forget(); + return nsIWidget::CreateTopLevelWindow(); } nsIWidget* mParent; // if we're a popup, this is our parent [WEAK] diff --git a/widget/cocoa/nsWidgetFactory.mm b/widget/cocoa/nsWidgetFactory.mm index 7a25d5ccde02..1b4f5db7641d 100644 --- a/widget/cocoa/nsWidgetFactory.mm +++ b/widget/cocoa/nsWidgetFactory.mm @@ -12,7 +12,6 @@ #include "nsWidgetsCID.h" #include "nsChildView.h" -#include "nsCocoaWindow.h" #include "nsAppShell.h" #include "nsAppShellSingleton.h" #include "nsFilePicker.h" @@ -65,7 +64,6 @@ nsClipboardConstructor(nsISupports *aOuter, REFNSIID aIID, return inst->QueryInterface(aIID, aResult); } -NS_GENERIC_FACTORY_CONSTRUCTOR(nsCocoaWindow) NS_GENERIC_FACTORY_CONSTRUCTOR(nsFilePicker) NS_GENERIC_FACTORY_CONSTRUCTOR(nsColorPicker) NS_GENERIC_FACTORY_CONSTRUCTOR(nsSound) @@ -113,7 +111,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(GfxInfo, Init) } // namespace widget } // namespace mozilla -NS_DEFINE_NAMED_CID(NS_POPUP_CID); NS_DEFINE_NAMED_CID(NS_FILEPICKER_CID); NS_DEFINE_NAMED_CID(NS_COLORPICKER_CID); NS_DEFINE_NAMED_CID(NS_APPSHELL_CID); @@ -141,7 +138,6 @@ NS_DEFINE_NAMED_CID(NS_MACSYSTEMSTATUSBAR_CID); NS_DEFINE_NAMED_CID(NS_GFXINFO_CID); static const mozilla::Module::CIDEntry kWidgetCIDs[] = { - { &kNS_POPUP_CID, false, NULL, nsCocoaWindowConstructor }, { &kNS_FILEPICKER_CID, false, NULL, nsFilePickerConstructor, mozilla::Module::MAIN_PROCESS_ONLY }, { &kNS_COLORPICKER_CID, false, NULL, nsColorPickerConstructor, @@ -178,7 +174,6 @@ static const mozilla::Module::CIDEntry kWidgetCIDs[] = { }; static const mozilla::Module::ContractIDEntry kWidgetContracts[] = { - { "@mozilla.org/widgets/popup/mac;1", &kNS_POPUP_CID }, { "@mozilla.org/filepicker;1", &kNS_FILEPICKER_CID, mozilla::Module::MAIN_PROCESS_ONLY }, { "@mozilla.org/colorpicker;1", &kNS_COLORPICKER_CID, diff --git a/widget/nsWidgetsCID.h b/widget/nsWidgetsCID.h index 59e96973f639..751dfa423f4b 100644 --- a/widget/nsWidgetsCID.h +++ b/widget/nsWidgetsCID.h @@ -3,11 +3,6 @@ * 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/. */ -/* BA7DE611-6088-11d3-A83E-00105A183419 */ -#define NS_POPUP_CID \ -{ 0xba7de611, 0x6088, 0x11d3, \ - { 0xa8, 0x3e, 0x0, 0x10, 0x5a, 0x18, 0x34, 0x19 } } - /* bd57cee8-1dd1-11b2-9fe7-95cf4709aea3 */ #define NS_FILEPICKER_CID \ { 0xbd57cee8, 0x1dd1, 0x11b2, \ From 8ad0bfd9c0d8bce1cdf4ad9511f3eb2cd5468141 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Fri, 24 Aug 2018 17:10:29 -0700 Subject: [PATCH 15/15] Bug 1484496: Follow-up: Fix more busted JS enumerators. r=bustage CLOSED TREE --HG-- extra : amend_source : b6753494cab68add325af09442239e72ea0c4501 --- mobile/android/components/FilePicker.js | 3 +++ mobile/android/components/geckoview/GeckoViewPrompt.js | 8 ++++++++ toolkit/mozapps/update/nsUpdateService.js | 4 ++++ 3 files changed, 15 insertions(+) diff --git a/mobile/android/components/FilePicker.js b/mobile/android/components/FilePicker.js index dac1f5ffc948..f4ffc95b590c 100644 --- a/mobile/android/components/FilePicker.js +++ b/mobile/android/components/FilePicker.js @@ -253,6 +253,9 @@ FilePicker.prototype = { QueryInterface: ChromeUtils.generateQI([Ci.nsISimpleEnumerator]), mFiles: files, mIndex: 0, + [Symbol.iterator]() { + return this.mFiles.values(); + }, hasMoreElements: function() { return (this.mIndex < this.mFiles.length); }, diff --git a/mobile/android/components/geckoview/GeckoViewPrompt.js b/mobile/android/components/geckoview/GeckoViewPrompt.js index 083024e05455..9ce063ae0db2 100644 --- a/mobile/android/components/geckoview/GeckoViewPrompt.js +++ b/mobile/android/components/geckoview/GeckoViewPrompt.js @@ -873,6 +873,14 @@ FilePickerDelegate.prototype = { QueryInterface: ChromeUtils.generateQI([Ci.nsISimpleEnumerator]), _owner: this, _index: 0, + * [Symbol.iterator]() { + for (let file of this._owner._files) { + if (aDOMFile) { + yield this._owner._getDOMFile(file); + } + yield new FileUtils.File(file); + } + }, hasMoreElements: function() { return this._index < this._owner._files.length; }, diff --git a/toolkit/mozapps/update/nsUpdateService.js b/toolkit/mozapps/update/nsUpdateService.js index 4b0e738d5d62..079f648224fb 100644 --- a/toolkit/mozapps/update/nsUpdateService.js +++ b/toolkit/mozapps/update/nsUpdateService.js @@ -829,6 +829,10 @@ ArrayEnumerator.prototype = { _index: 0, _contents: [], + [Symbol.iterator]() { + return this._contents.values(); + }, + hasMoreElements: function ArrayEnumerator_hasMoreElements() { return this._index < this._contents.length; },