Firefox:Download Manager

From MozillaWiki
Revision as of 10:30, 3 February 2006 by Kroc (talk | contribs) (→‎Features: Gauge size of download queue by user's connection speed.)
Jump to navigation Jump to search

Background

There are a couple of problems existing in the way we do downloads right now that affect users in various ways:

  • it is not possible to resume downloads across sessions. If the user knows their network connection is going down they can use our limited "Pause" support now but only so long as the browser is open.
  • it is not possible to pause or resume downloads of components being installed via XPInstall, because the download progress notification back end is different.
  • there is much code duplication relating to file and path name validation in the browser and external helper app service due to the lack of a simple API for file transfer that coalesces all such code. This results in bloat and multiple sites to consider when addressing security issues.
  • performance of the download list is sluggish when the download history is long.
  • download list does not properly implement accessibility features that people are used to, does not scroll with key navigation, etc.
  • download Manager does not support Torrents or similar distributed downloading systems

Features

The following features are required for 3.0:

  • cross session resume
  • storage back end
  • unified download back end with XPInstall, etc.
  • unified API for invoking download operations (e.g. unify code paths between link clicks and Save Target As... and other potential uses - single API to take a url and transfer)
  • accessibility - listview implements accessibility APIs and proper keyboard navigation support
  • download queue - user set the maximum number of simultaneous downloads (per site and total) and the download manager queue the downloads. save queued downloads across sessions.
    • Possibly gauge size of download queue based on the user's connection speed. (e.g. 2 for dialup, 10 for broadband)
  • download speed limitation

Design

  • revised design for function "links"

Work Tasks

What follows is a more detailed breakdown of implementation of the above features and individual work estimates.

Cross Session Resume

Requires persistence of URL as well as referer URL across sessions, otherwise resume will not be possible on many sites. There still might be problems with sites relying on temporary cookies to authorize downloads, but this is unavoidable.

Download resuming

Signed Object Support

(Signed XPIs, Signed EXEs)

Unified Invocation API

Will require passing not only the URL of the file to download but referer URL as well in many cases.

Storage Back End

Accessible Download Widget

General Design