From 16e4f12b8c331d9fc6810d4381ff46ad9c385523 Mon Sep 17 00:00:00 2001 From: Ghislain 'Aus' Lacroix Date: Tue, 25 Feb 2014 17:35:23 -0800 Subject: [PATCH] bug 952695 * Clear all completed downloads from mozDownloadManager when Gaia Download Manager inits. * update mockMozDownloadManager to have getDownloads() and clearAllDone() for unit-test purposes. r=crdlc --- apps/system/js/download/download_manager.js | 6 ++++++ .../unit/mock_navigator_moz_download_manager.js | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/apps/system/js/download/download_manager.js b/apps/system/js/download/download_manager.js index f67d427b7b24..6c1bbfb21dbe 100644 --- a/apps/system/js/download/download_manager.js +++ b/apps/system/js/download/download_manager.js @@ -24,6 +24,12 @@ var DownloadManager = (function() { var notifications = {}; var started = false; + // Clear all previously completed downloads from the Downloads API + // We don't need those in there anymore since we're tracking everything + // in our own datastore (see download_store.js). + mozDownloadManager.clearAllDone(); + + // Set our download start handler. mozDownloadManager.ondownloadstart = function onDownloadStart(ev) { if (started) { createDownloadNotification(ev.download); diff --git a/apps/system/test/unit/mock_navigator_moz_download_manager.js b/apps/system/test/unit/mock_navigator_moz_download_manager.js index 4a98085d3a91..bce2deea3173 100644 --- a/apps/system/test/unit/mock_navigator_moz_download_manager.js +++ b/apps/system/test/unit/mock_navigator_moz_download_manager.js @@ -4,7 +4,23 @@ var realMozDownloadManager = navigator.mozDownloadManager; navigator.mozDownloadManager = { + // Should always be an array of DOM Download like objects. + mDownloads: [], + mSuiteTeardown: function mdm_mSuiteTeardown() { window.navigator.mozDownloadManager = realMozDownloadManager; + }, + + clearAllDone: function() { + this.mDownloads = this.mDownloads.filter(function(download) { + if (download.state === 'succeeded' || download.state === 'finalized') { + return false; + } + return true; + }); + }, + + getDownloads: function() { + return this.mDownloads; } };