User:P.A./Panel-based Download Manager
Status
Panel-based Download Manager | |
Stage | Development |
Status | In progress |
Release target | Firefox 9 |
Health | OK |
Status note | ` |
{{#set:Feature name=Panel-based Download Manager
|Feature stage=Development |Feature status=In progress |Feature version=Firefox 9 |Feature health=OK |Feature status note=` }}
Team
Product manager | Asa Dotzler |
Directly Responsible Individual | Marco Bonardo |
Lead engineer | Paolo Amadini, Jared Wein |
Security lead | ` |
Privacy lead | ` |
Localization lead | ` |
Accessibility lead | ` |
QA lead | Simona Badau |
UX lead | Alexander Limi |
Product marketing lead | ` |
Operations lead | ` |
Additional members | Sinchan Banerjee, Stephen Horlander, Shawn Wilsher, Mehdi Mulani |
{{#set:Feature product manager=Asa Dotzler
|Feature feature manager=Marco Bonardo |Feature lead engineer=Paolo Amadini, Jared Wein |Feature security lead=` |Feature privacy lead=` |Feature localization lead=` |Feature accessibility lead=` |Feature qa lead=Simona Badau |Feature ux lead=Alexander Limi |Feature product marketing lead=` |Feature operations lead=` |Feature additional members=Sinchan Banerjee, Stephen Horlander, Shawn Wilsher, Mehdi Mulani }}
Open issues/risks
`
Stage 1: Definition
1. Feature overview
This is a page I'm using to track the current status of the Panel-based Download Manager feature at a level of detail I'm comfortable working with. This feature is part of the download user experience improvements.
If you have questions (or better, answers!) the best way to provide feedback is to add a comment to the relevant bug.
I'll update this page periodically to reflect the current status and make sure that all the relevant items are tracked.
I've read all bug comments, and updated this page accordingly, up to this point:
It's possible that some of the latest comments are not yet reflected in this page. See below for detailed tracking of individual items.
The current Download Manager user interface is not optimized for several common use cases, and is not yet integrated with the latest Firefox user experience design. Integrating this interface with the latest design is the first step to improve the downloads user experience.
In the new design, an easily accessible panel shows you current state of downloads, your recent downloads, and gives you a good indicator of how far along your download is. Advanced operations like searching, clearing entries, sorting, and everything else related to download history is integrated with the interface for browsing history.
Goals
- Fit in with the overall goals of download user experience improvements.
- Remove the need for a separate Download Manager window.
- Unify download history with browsing history.
- Support common use cases, but not necessarily all of those supported previously.
- Improve the user interface code, and use asynchronous database queries.
2. Users & use cases
- Downloading and running a setup program (Bug 564934, comment 68 and attachment 467459).
We also probably want to consider some, but not all, of the use cases previously suggested for the Download Manager. Note that the current Download Manager does not support all of suggested use cases, while some of them are in the scope of different download user experience improvements.
3. Dependencies
`
4. Requirements
`
Non-goals
- Power user fuctionality, like handling many concurrent downloads.
- File management, except for showing where the target file is located.
- Improve download performance or general front-end responsiveness.
- Note that we still don't want to introduce significant regressions.
- Improve the Download Manager or Places back-end C++ code, or make it asynchronous.
- Any other improvement already defined as download user experience improvements.
- For example, streamlining the entire download process.
Stage 2: Design
5. Functional specification
`
6. User experience design
We'll reach the stated goals by moving the interface for handling current downloads in a panel, anchored to a status indicator in the main browser window, and adding a new Downloads predefined folder to the Library window.
In the following sections, entries are marked with these indicators:
- [ON TRACK] Not yet implemented.
- [INPUT] Needs design feedback, or a prototype implementation to understand what to do.
- [DONE] Has an initial implementation that can be tested.
Downloads indicator
Provides a status overview, visible during normal browsing when there are download notifications.
- [ON TRACK] Only shown when there are download items in the panel, either active or completed.
- [INPUT] Maybe, also shown after the last download is removed from the panel, giving access to downloads history only.
- [ON TRACK] When there are no active downloads, shows the classic button icon (downwards arrow).
- [DONE] When there are active downloads, shows the number of active downloads.
- [DONE] Has a progress bar or circular progress indicator.
- [INPUT] The radial one works, but is not necessarily consistent with the linear progress bar you see across the OS.
Provides visual indication of new downloads or completed downloads.
- [ON TRACK] New downloads make the indicator flash or glow briefly, unless the panel is shown.
- [ON TRACK] Finished or failed downloads make the indicator flash or glow until the panel is displayed.
- [ON TRACK] If the indicator is removed from the toolbars, or moved to an invisible toolbar, we replace the download completion notification with a screen-level notification.
Provides the anchor for the panel.
- [DONE] Located in the tab bar by default, which by default is always visible, except in Panorama mode.
- [ON TRACK] If the indicator is removed from the toolbars, or moved to an invisible toolbar, we show it temporarily in the default tab bar position when the panel is opened, until the panel is closed.
- If we need to show the panel and the tab bar is not visible, then:
- [INPUT] For user-initiated requests (like the Downloads menu item), if the current browser window is in Panorama mode, we can either:
- Switch out of Panorama mode and show the panel, or
- show the panel without the anchor, as an exception.
- [ON TRACK] For user-initiated requests, if there is no browser window open (like clicking a screen-level notification, or the Downloads menu item on OSX), open a new browser window and show the panel there.
- [ON TRACK] For background-initiated requests, do nothing.
- [INPUT] For user-initiated requests (like the Downloads menu item), if the current browser window is in Panorama mode, we can either:
Downloads panel
The entries in the popup panel are just notifications saying that a download is going on, and that a download has finished.
The panel works as follows:
- [ON TRACK] The panel should be shown automatically for the first download of the browsing session.
- [DONE] The panel can be fixed-width.
- Resizeability is not as much of an issue with the downloads panel as it is with the bookmarks panel, because the downloads panel is less of a "management" interface. The full title of a download is shown in a tooltip.
- [ON TRACK] Notifications are sorted by start time, most recent first.
- It's consistent with notification sorting in other platforms, and the order doesn't change unexpectedly while the panel is open.
- Another option is to show first the items on which an action is more likely, i.e. completed downloads first, then failed, then running downloads.
Individual notifications have the following behavior:
- Notifications should disappear as soon as the user is done with them. We can't know the exact moment, so we use a set of heuristics.
- [DONE] Opening the target file or folder makes the notification disappear.
- [ON TRACK] Canceling a running download makes the notification disappear.
- [ON TRACK] Completed downloads are removed from the list when the session ends, but are restored when the session is restored.
- Active downloads have no session boundary. When the browser is closed and reopened, they're paused and resumed automatically whenever possible.
- [DONE] Manually removing a download from the list is possible, but not a top-level interaction.
- [INPUT] Sinchan to follow-up with quick user studies to understand if we might want a top-level remove button for completed downloads, that would be the same button that cancels running downloads.
- There are no actions that make sense on more than one notification at a time.
The layout of a notification includes a main area with the download's distinctive details, and an optional action button. In some states of the download, the main area can be clicked. Double-clicking the main area, instead, is not a supported interaction.
A context menu for the item can always be displayed, though it never contains commands already available through a top-level interaction.
- [DONE] When the main area can be clicked, a link-style mouse cursor is displayed on hover.
- When the download is ongoing [not paused or finished or canceled]:
- [ON TRACK] The button cancels the download.
- [INPUT] Clicking the main area might indicate to open the download when it's finished, however this could be surprising.
- [ON TRACK] The context menu has commands to pause, open containing folder, go to download page, copy download link.
- When the download is paused:
- [DONE] The button resumes the download.
- [ON TRACK] The context menu has commands to cancel, open containing folder, go to download page, copy download link.
- When the download has finished:
- [DONE] Clicking the main area opens the file.
- [DONE] The button opens the containing folder.
- [ON TRACK] The context menu has commands to remove from list, go to download page, copy download link.
Library window
The Library window allows the user to find and open previous downloads.
- [DONE] Items can be found by source location or original target file name.
- Note that downloaded entries can be mixed with normal pages in history results, and a normal web page can be downloaded locally.
- [ON TRACK] You can see the full target path of the download.
- [INPUT] In all history views, we want to visually mark those entries that are downloads and whose target file exists, unless the entry was also visited as a normal page.
- [ON TRACK] Double-clicking those entries opens the target file instead of navigating to the source URL.
- In other words, we open the file in those cases where we expect that double-clicking the history entry would make the download dialog appear.
- [ON TRACK] In the Downloads view, the size of file, and time should be there too.
Stage 3: Planning
7. Implementation plan
`
8. Reviews
Security review
`
Privacy review
`
Localization review
`
Accessibility
`
Quality Assurance review
`
Operations review
`
Stage 4: Development
9. Implementation
Bugs list and patch queue
Patches on the following bugs are required, in order, to complete the feature:
Bug number | Description | Status |
bug 653261 | Add a function to format the date and time displayed in the Download Manager. | Ready |
bug 591289 | Save chosen download file name and other metadata in Places history. | On hold |
bug 564900 | Add folder to Library sidebar specifically for downloads. | On hold |
bug 669905 | Searching in the new Downloads folder should limit the search to downloads. | On hold |
bug 564934 | Implement new Download Manager UI for browser. | Active |
bug 663772 | Implement new Download Manager status indicator for browser. | Active |
Open tasks and questions
Description | References | Difficult? | Blocking? | People |
Theming the downloads panel for all the supported platforms. | Maybe | Yes | Unassigned | |
Theming and XBL review. | Bug 564934, comment 280 | No | Yes | r=Frank?,Dão? |
Update implementation based on recent designs, and code review. | Yes | Yes | d=Paolo, r=Shawn | |
Port the relevant automated regression tests from the Download Manager. | Yes | Yes | d=Paolo, r=Shawn | |
No feedback when the "open download page" link is clicked and the target page is not available. | Bug 564934, comment 191 | Maybe | Maybe | ui=Sinchan |
Define the behavior when the target file is removed from disk, and understand at which point we should detect the condition. | Maybe | Yes | ui=Sinchan | |
Accessibility review | Bug 564934, comment 258 and comment 276 | Yes | Yes | d=Paolo, r=? |
Where to put the manual testing procedures, for example those for toolbar migration? | Bug 564934, comment 85 | No | No | |
Test behavior when a download starts and no browser window is open. | Bug 564934, comment 87 and comment 88 | No | Yes | d=Paolo |
Test behavior when a download finishes and no browser window is open. | Bug 564934, comment 93 | No | Yes | d=Paolo |
Move original nsDownloadManagerUI.js to mozapps/downloads. | Bug 564934, comment 192 | No | No | d=Paolo |
Minor style questions. | Bug 564934, comment 182 | No | No | r=Shawn |
What is the desired selection and focus behavior? | Yes | Yes | d=Paolo, r=Shawn | |
How to migrate users with many downloads in the database to use the Library? | Maybe | Maybe | ui=Sinchan | |
The arrow panel's height should be limited by the screen height. | Bug 564934, comment 230 | Yes | Yes | Unassigned |
Move fileExecutableSecurityWarning to a common place in Toolkit. | No | No | d=Paolo, r=?, sr=? | |
Share DownloadsData across windows and move (import) the XUL nodes across documents. | Yes | No | ||
Address drag-and-drop section code review. | Bug 564934, comment 250 Scroll to @@ +673,5 @@ Read through @@ +710,5 @@ |
No | Yes | d=Paolo, r=Marco |
Allow asynchronous termination functions in the testing framework | Bug 564934, comment 259 Scroll to @@ +47,5 @@ |
Yes | No | |
Understand if the two makefiles in the patch can be checked in and retain public domain status | Bug 564934, comment 272 | No | No | Gerv |
Security implementation review (should only concern opening executables, no back-end code changes). | No | Yes | Unassigned |
Follow-ups
This section lists non-blocking, suggested follow-ups that need more work before filing a proper bug. Often a search for existing bugs is required before filing a separate bug.
Description | References |
Cu.import failures don't show up in the Error Console, or the test logs. | Bug 564934, comment 224 |
Stage 5: Release
10. Landing criteria
` {{#set:Feature open issues and risks=` |Feature overview=This is a page I'm using to track the current status of the Panel-based Download Manager feature at a level of detail I'm comfortable working with. This feature is part of the download user experience improvements.
If you have questions (or better, answers!) the best way to provide feedback is to add a comment to the relevant bug.
I'll update this page periodically to reflect the current status and make sure that all the relevant items are tracked.
I've read all bug comments, and updated this page accordingly, up to this point:
It's possible that some of the latest comments are not yet reflected in this page. See below for detailed tracking of individual items.
The current Download Manager user interface is not optimized for several common use cases, and is not yet integrated with the latest Firefox user experience design. Integrating this interface with the latest design is the first step to improve the downloads user experience.
In the new design, an easily accessible panel shows you current state of downloads, your recent downloads, and gives you a good indicator of how far along your download is. Advanced operations like searching, clearing entries, sorting, and everything else related to download history is integrated with the interface for browsing history.
Goals
- Fit in with the overall goals of download user experience improvements.
- Remove the need for a separate Download Manager window.
- Unify download history with browsing history.
- Support common use cases, but not necessarily all of those supported previously.
- Improve the user interface code, and use asynchronous database queries.
|Feature users and use cases=* Downloading and running a setup program (Bug 564934, comment 68 and attachment 467459).
We also probably want to consider some, but not all, of the use cases previously suggested for the Download Manager. Note that the current Download Manager does not support all of suggested use cases, while some of them are in the scope of different download user experience improvements. |Feature dependencies=` |Feature requirements=` |Feature non-goals=* Power user fuctionality, like handling many concurrent downloads.
- File management, except for showing where the target file is located.
- Improve download performance or general front-end responsiveness.
- Note that we still don't want to introduce significant regressions.
- Improve the Download Manager or Places back-end C++ code, or make it asynchronous.
- Any other improvement already defined as download user experience improvements.
- For example, streamlining the entire download process.
|Feature functional spec=` |Feature ux design=We'll reach the stated goals by moving the interface for handling current downloads in a panel, anchored to a status indicator in the main browser window, and adding a new Downloads predefined folder to the Library window.
In the following sections, entries are marked with these indicators:
- [ON TRACK] Not yet implemented.
- [INPUT] Needs design feedback, or a prototype implementation to understand what to do.
- [DONE] Has an initial implementation that can be tested.
Downloads indicator
Provides a status overview, visible during normal browsing when there are download notifications.
- [ON TRACK] Only shown when there are download items in the panel, either active or completed.
- [INPUT] Maybe, also shown after the last download is removed from the panel, giving access to downloads history only.
- [ON TRACK] When there are no active downloads, shows the classic button icon (downwards arrow).
- [DONE] When there are active downloads, shows the number of active downloads.
- [DONE] Has a progress bar or circular progress indicator.
- [INPUT] The radial one works, but is not necessarily consistent with the linear progress bar you see across the OS.
Provides visual indication of new downloads or completed downloads.
- [ON TRACK] New downloads make the indicator flash or glow briefly, unless the panel is shown.
- [ON TRACK] Finished or failed downloads make the indicator flash or glow until the panel is displayed.
- [ON TRACK] If the indicator is removed from the toolbars, or moved to an invisible toolbar, we replace the download completion notification with a screen-level notification.
Provides the anchor for the panel.
- [DONE] Located in the tab bar by default, which by default is always visible, except in Panorama mode.
- [ON TRACK] If the indicator is removed from the toolbars, or moved to an invisible toolbar, we show it temporarily in the default tab bar position when the panel is opened, until the panel is closed.
- If we need to show the panel and the tab bar is not visible, then:
- [INPUT] For user-initiated requests (like the Downloads menu item), if the current browser window is in Panorama mode, we can either:
- Switch out of Panorama mode and show the panel, or
- show the panel without the anchor, as an exception.
- [ON TRACK] For user-initiated requests, if there is no browser window open (like clicking a screen-level notification, or the Downloads menu item on OSX), open a new browser window and show the panel there.
- [ON TRACK] For background-initiated requests, do nothing.
- [INPUT] For user-initiated requests (like the Downloads menu item), if the current browser window is in Panorama mode, we can either:
Downloads panel
The entries in the popup panel are just notifications saying that a download is going on, and that a download has finished.
The panel works as follows:
- [ON TRACK] The panel should be shown automatically for the first download of the browsing session.
- [DONE] The panel can be fixed-width.
- Resizeability is not as much of an issue with the downloads panel as it is with the bookmarks panel, because the downloads panel is less of a "management" interface. The full title of a download is shown in a tooltip.
- [ON TRACK] Notifications are sorted by start time, most recent first.
- It's consistent with notification sorting in other platforms, and the order doesn't change unexpectedly while the panel is open.
- Another option is to show first the items on which an action is more likely, i.e. completed downloads first, then failed, then running downloads.
Individual notifications have the following behavior:
- Notifications should disappear as soon as the user is done with them. We can't know the exact moment, so we use a set of heuristics.
- [DONE] Opening the target file or folder makes the notification disappear.
- [ON TRACK] Canceling a running download makes the notification disappear.
- [ON TRACK] Completed downloads are removed from the list when the session ends, but are restored when the session is restored.
- Active downloads have no session boundary. When the browser is closed and reopened, they're paused and resumed automatically whenever possible.
- [DONE] Manually removing a download from the list is possible, but not a top-level interaction.
- [INPUT] Sinchan to follow-up with quick user studies to understand if we might want a top-level remove button for completed downloads, that would be the same button that cancels running downloads.
- There are no actions that make sense on more than one notification at a time.
The layout of a notification includes a main area with the download's distinctive details, and an optional action button. In some states of the download, the main area can be clicked. Double-clicking the main area, instead, is not a supported interaction.
A context menu for the item can always be displayed, though it never contains commands already available through a top-level interaction.
- [DONE] When the main area can be clicked, a link-style mouse cursor is displayed on hover.
- When the download is ongoing [not paused or finished or canceled]:
- [ON TRACK] The button cancels the download.
- [INPUT] Clicking the main area might indicate to open the download when it's finished, however this could be surprising.
- [ON TRACK] The context menu has commands to pause, open containing folder, go to download page, copy download link.
- When the download is paused:
- [DONE] The button resumes the download.
- [ON TRACK] The context menu has commands to cancel, open containing folder, go to download page, copy download link.
- When the download has finished:
- [DONE] Clicking the main area opens the file.
- [DONE] The button opens the containing folder.
- [ON TRACK] The context menu has commands to remove from list, go to download page, copy download link.
Library window
The Library window allows the user to find and open previous downloads.
- [DONE] Items can be found by source location or original target file name.
- Note that downloaded entries can be mixed with normal pages in history results, and a normal web page can be downloaded locally.
- [ON TRACK] You can see the full target path of the download.
- [INPUT] In all history views, we want to visually mark those entries that are downloads and whose target file exists, unless the entry was also visited as a normal page.
- [ON TRACK] Double-clicking those entries opens the target file instead of navigating to the source URL.
- In other words, we open the file in those cases where we expect that double-clicking the history entry would make the download dialog appear.
- [ON TRACK] In the Downloads view, the size of file, and time should be there too.
|Feature implementation plan=` |Feature security review=` |Feature privacy review=` |Feature localization review=` |Feature accessibility review=` |Feature qa review=` |Feature operations review=` |Feature implementation notes===== Bugs list and patch queue ==== Patches on the following bugs are required, in order, to complete the feature:
Bug number | Description | Status |
bug 653261 | Add a function to format the date and time displayed in the Download Manager. | Ready |
bug 591289 | Save chosen download file name and other metadata in Places history. | On hold |
bug 564900 | Add folder to Library sidebar specifically for downloads. | On hold |
bug 669905 | Searching in the new Downloads folder should limit the search to downloads. | On hold |
bug 564934 | Implement new Download Manager UI for browser. | Active |
bug 663772 | Implement new Download Manager status indicator for browser. | Active |
Open tasks and questions
Description | References | Difficult? | Blocking? | People |
Theming the downloads panel for all the supported platforms. | Maybe | Yes | Unassigned | |
Theming and XBL review. | Bug 564934, comment 280 | No | Yes | r=Frank?,Dão? |
Update implementation based on recent designs, and code review. | Yes | Yes | d=Paolo, r=Shawn | |
Port the relevant automated regression tests from the Download Manager. | Yes | Yes | d=Paolo, r=Shawn | |
No feedback when the "open download page" link is clicked and the target page is not available. | Bug 564934, comment 191 | Maybe | Maybe | ui=Sinchan |
Define the behavior when the target file is removed from disk, and understand at which point we should detect the condition. | Maybe | Yes | ui=Sinchan | |
Accessibility review | Bug 564934, comment 258 and comment 276 | Yes | Yes | d=Paolo, r=? |
Where to put the manual testing procedures, for example those for toolbar migration? | Bug 564934, comment 85 | No | No | |
Test behavior when a download starts and no browser window is open. | Bug 564934, comment 87 and comment 88 | No | Yes | d=Paolo |
Test behavior when a download finishes and no browser window is open. | Bug 564934, comment 93 | No | Yes | d=Paolo |
Move original nsDownloadManagerUI.js to mozapps/downloads. | Bug 564934, comment 192 | No | No | d=Paolo |
Minor style questions. | Bug 564934, comment 182 | No | No | r=Shawn |
What is the desired selection and focus behavior? | Yes | Yes | d=Paolo, r=Shawn | |
How to migrate users with many downloads in the database to use the Library? | Maybe | Maybe | ui=Sinchan | |
The arrow panel's height should be limited by the screen height. | Bug 564934, comment 230 | Yes | Yes | Unassigned |
Move fileExecutableSecurityWarning to a common place in Toolkit. | No | No | d=Paolo, r=?, sr=? | |
Share DownloadsData across windows and move (import) the XUL nodes across documents. | Yes | No | ||
Address drag-and-drop section code review. | Bug 564934, comment 250 Scroll to @@ +673,5 @@ Read through @@ +710,5 @@ |
No | Yes | d=Paolo, r=Marco |
Allow asynchronous termination functions in the testing framework | Bug 564934, comment 259 Scroll to @@ +47,5 @@ |
Yes | No | |
Understand if the two makefiles in the patch can be checked in and retain public domain status | Bug 564934, comment 272 | No | No | Gerv |
Security implementation review (should only concern opening executables, no back-end code changes). | No | Yes | Unassigned |
Follow-ups
This section lists non-blocking, suggested follow-ups that need more work before filing a proper bug. Often a search for existing bugs is required before filing a separate bug.
Description | References |
Cu.import failures don't show up in the Error Console, or the test logs. | Bug 564934, comment 224 |
|Feature landing criteria=` }}
Feature details
Priority | P2 |
Rank | 999 |
Theme / Goal | ` |
Roadmap | Firefox Desktop |
Secondary roadmap | ` |
Feature list | Desktop |
Project | ` |
Engineering team | Desktop front-end |
{{#set:Feature priority=P2
|Feature rank=999 |Feature theme=` |Feature roadmap=Firefox Desktop |Feature secondary roadmap=` |Feature list=Desktop |Feature project=` |Feature engineering team=Desktop front-end }}
Team status notes
status | notes | |
Products | ` | ` |
Engineering | ` | ` |
Security | ` | ` |
Privacy | ` | ` |
Localization | ` | ` |
Accessibility | ` | ` |
Quality assurance | ` | ` |
User experience | ` | ` |
Product marketing | ` | ` |
Operations | ` | ` |
{{#set:Feature products status=`
|Feature products notes=` |Feature engineering status=` |Feature engineering notes=` |Feature security status=` |Feature security health=` |Feature security notes=` |Feature privacy status=` |Feature privacy notes=` |Feature localization status=` |Feature localization notes=` |Feature accessibility status=` |Feature accessibility notes=` |Feature qa status=` |Feature qa notes=` |Feature ux status=` |Feature ux notes=` |Feature product marketing status=` |Feature product marketing notes=` |Feature operations status=` |Feature operations notes=` }}