Mobile/Projects/Downloads jsm

From MozillaWiki
Jump to: navigation, search

Tracking

  • bug 901360 - Convert to Downloads.jsm in Firefox for Android. Landed once but caused a lot of regressions:
    • bug 997723 - Regression: Unable to "Save as PDF"
    • bug 997756 - Regression: Tapping on a download notification doesn't do anything
    • bug 1008143 - Regression: Download cannot be paused after saving content through context menu
    • bug 1000552 - about:downloads content no longer persists across restarts
    • bug 1005871 - Downloads are not cleared after clearing private data
    • bug 1005893 - Random "Download started..." toast notifications

Blocks things like

  • bug 936041 - Enable new malware download protection on Android
  • bug 851471 - Decommission nsIDownloadManager

Goals

  • Switch over to the new downloads.jsm in Fennec.
  • Have all our current notifications continue to work
    • This includes buttons in notifications
    • Clicking completed notifications to launch files
    • Clicking in progress notifications to cancel downloads
  • Make about:downloads work with the new system.
    • Long press menus to delete/pause/etc downloads should work
    • Keep private and public downloads separate
    • Show status of downloads (completed/cancelled/failed/etc).
  • Save as PDF should continue to work
  • Save Image should continue to work
  • Malware protection should start working
  • No leaky files
  • Clear private data should continue working as before.

The current code we use was decommisioned a year ago on desktop. B2G has already made this switch. Our code is in maintenance mode right now. This should provide better security, stability and performance for users when they download. It should also help them save storage by not leaving leaked .part files across their sdcards.

Use cases & user stories

  • Jim clicks on malware. Fennec checks the download link against our malware databases and prevents downloading the file
  • Jane downloads a bunch of pdfs but cancels them in the mean time. The halfway done files are deleted from her sdcard so that there is no trace of thd download left behind

UX design

  • None needed.

Justification

  • Our current code is deprecated and unsupported by anyone in toolkit. We need to stop using it. There are security and performance fixes we're missing out on without this.

Quality criteria

  • No user-perceptible performance degradation
  • All goals are met