Features/Desktop/Downloads API

From MozillaWiki
Jump to: navigation, search
Please use "Edit with form" above to edit this page.

Status

Downloads API
Stage Landed
Status In progress
Release target Firefox 26
Health OK
Status note https://wiki.mozilla.org/Performance#Downloads_API_Rewrite

Team

Product manager `
Directly Responsible Individual Paolo Amadini
Lead engineer Paolo Amadini
Security lead `
Privacy lead `
Localization lead `
Accessibility lead `
QA lead `
UX lead `
Product marketing lead `
Operations lead `
Additional members Neil Deakin, Felipe Gomes, Raymond Lee, Mihai Morar

Open issues/risks

`

Stage 1: Definition

1. Feature overview

The current storage back-end for downloads, based on the synchronous nsIDownloadManager interface and an associated SQLite database, causes noticeable performance issues when starting and finishing downloads.

The new Downloads API will improve the responsiveness of Firefox for Desktop, by removing the main-thread I/O caused by access to downloads.sqlite.

2. Users & use cases

The Downloads Panel is the main user of the Downloads API in Firefox for Desktop. Since the new API is part of Toolkit, other Mozilla products will be able to adopt it for improved performance.

3. Dependencies

`

4. Requirements

The concrete goal is to ensure that SQL statements involving moz_downloads no longer appear in the "slow SQL" Telemetry dashboard.

Non-goals

This feature does not involve changes to the user interface and interaction model. Minor changes in behavior are expected, because the API is a complete reimplementation of the back-end.

Stage 2: Design

5. Functional specification

The overall design is documented in the download architecture improvements page.

6. User experience design

`

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

Feature tracking bug:

  • bug 825588 (covers work across all Mozilla products)

Key implementation bugs:

  • bug 847863: Use the JavaScript API instead of nsIDownloadManager as the back-end for the panel.

Additional steps needed to test the feature:

  • In Firefox 25, the feature can be enabled by toggling the browser.download.useJSTransfer preference and restarting.
      • This is only useful for early testing by add-on developers, as the feature is not ready in Firefox 25.
  • In Firefox 26, the feature is enabled by default.

Work required to release and enable the feature for everyone:

  • Work is completed and the feature is now enabled.

    Stage 5: Release

    10. Landing criteria

    `


    Feature details

    Priority Unprioritized
    Rank 999
    Theme / Goal `
    Roadmap `
    Secondary roadmap `
    Feature list Desktop
    Project Responsiveness
    Engineering team Desktop front-end

    Team status notes

      status notes
    Products ` `
    Engineering ` `
    Security sec-review-needed assigned to mgoodwin to look at via sec-review? in bug 825588
    Privacy ` `
    Localization ` `
    Accessibility ` `
    Quality assurance ` `
    User experience ` `
    Product marketing ` `
    Operations ` `