The front-end download views now maintain the old download state themselves, instead of relying on the DownloadsData object dispatching the onDownloadStateChanged notification.
This allows each view to keep only the state relevant to it, for example the Downloads Panel already keeps the state only for the visible items. This also makes it possible for each view to use a different hash than the one provided by the legacy stateOfDownload method, and allows bypassing the DownloadsData indirection entirely.
MozReview-Commit-ID: 2D1ixsZCkCa
When a new front-end view is added to the DownloadsData object, the Download objects it contains are loaded into the view starting with the newest, which is the opposite of the order used by the underlying DownloadList.
This was originally implemented as an optimization for the Downloads Panel, at a time when the full list of completed downloads was persisted in the same SQLite database as session downloads. This difference is now unnecessary given the low number of session downloads, and can be removed in preparation for bypassing the DownloadsData indirection entirely.
MozReview-Commit-ID: 5EBkqvyXFq4
This was regressed by bug 1264206 while removing legacy array comprehensions, because selectedItems is a NodeList and not an Array.
MozReview-Commit-ID: 61GG3SiiWwS
* Split out the arrow and progressbar in the indicatorOverlay for individual animation.
* Group icon and progressbar parts into addressable elements in a single download-icons.svg
MozReview-Commit-ID: KAn0gFqjKjc
Changes to Promise tests designed to test .then(null) have been reverted, and the browser/extensions directory was excluded because the projects it contains have a separate process for accepting changes.
MozReview-Commit-ID: 1buqgX1EP4P
The height of the "panelmultiview" binding is now determined by the stack layout code, and doesn't have to be calculated manually via JavaScript anymore. This allows the removal of mutation and overflow observers, and reduces the number of synchronous layouts being made.
There is still a workaround included for wrapping blocks not being taken into account in height calculations.
MozReview-Commit-ID: 9rrPU5O5hUx
See also pt. 4. We are moving app menu notification state
into a jsm since it is not specific to one window and this
simplifies work for the new app update UI.
MozReview-Commit-ID: InEp5b0y2n0
This removes the arrowStyledIndicator killswitch and the associated ability for system add-ons to restore the previous design of the Downloads Indicator in the toolbar. The removal includes all the related code, styles, and strings. Based on the original patch by :rexboy.
MozReview-Commit-ID: 2OEBzPNzl0O
There's quite a few changes in here. At a high level, all we're trying to do
is to replace the old update popup with a less intrusive and more modern
doorhanger (set of doorhangers) for various update failure conditions.
MozReview-Commit-ID: 24sESMTosNX
1) In the Downloads Panel, hovering over an item would sometimes not trigger an
actual selection, due to an error in how 'onDownloadMouseOver()' events were
processed - 'aEvent.orginalTarget' doesn't take retargets into account. Fixed
by using 'aEvent.target' instead of 'aEvent.originalTarget'.
2) In the Downloads Panel, right-clicking an item opens a context menu that
lets you act on the selected item. However, if you unintentionally hover over a
different item when the context menu is open, the selection changes. You may,
for example, 'Remove From History' a different, unintended item. Fixed by
inhibiting item selection when a context menu is open for a download item.
MozReview-Commit-ID: DLIAFNcs33N