Bug 1455737 - Remove the result object from DownloadHistory when removing the view
MozReview-Commit-ID: 5Qb5j30eqFO
--- a/toolkit/components/downloads/DownloadHistory.jsm
+++ b/toolkit/components/downloads/DownloadHistory.jsm
@@ -450,16 +450,27 @@ this.DownloadHistoryList.prototype = {
if (this._result) {
this._result.root.containerOpen = true;
PlacesUtils.annotations.addObserver(this);
}
},
_result: null,
/**
+ * Remove the view that belongs to this list via DownloadList's removeView. In
+ * addition, delete the result object to ensure there are no memory leaks.
+ */
+ removeView(aView) {
+ DownloadList.prototype.removeView.call(this, aView);
+
+ // Clean up any active results that might still be observing. See bug 1455737
+ this.result = null;
+ },
+
+ /**
* Index of the first slot that contains a session download. This is equal to
* the length of the list when there are no session downloads.
*/
_firstSessionSlotIndex: 0,
_insertSlot({ slot, index, slotsForUrl }) {
// Add the slot to the ordered array.
this._slots.splice(index, 0, slot);