Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1099)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/download/ui/FilePathsToDownloadItemsMap.java

Issue 2626903005: [Download Home] Add missing files to map (Closed)
Patch Set: Rebasing Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/download/ui/FilePathsToDownloadItemsMap.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/FilePathsToDownloadItemsMap.java b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/FilePathsToDownloadItemsMap.java
index 31f755ebe76bb4435331a8c4480b3fae220b34e0..9c851ab3dcbb506764aa1cd649bd6bb467de9f3b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/FilePathsToDownloadItemsMap.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/FilePathsToDownloadItemsMap.java
@@ -4,10 +4,12 @@
package org.chromium.chrome.browser.download.ui;
-import java.util.ArrayList;
+import android.text.TextUtils;
+
import java.util.HashMap;
-import java.util.List;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
/**
* Multiple download items may reference the same location on disk. This class maintains a mapping
@@ -15,16 +17,17 @@ import java.util.Map;
* TODO(twellington): remove this class after the backend handles duplicate removal.
*/
class FilePathsToDownloadItemsMap {
- private final Map<String, ArrayList<DownloadHistoryItemWrapper>> mMap = new HashMap<>();
+ private final Map<String, Set<DownloadHistoryItemWrapper>> mMap = new HashMap<>();
/**
- * Adds a DownloadHistoryItemWrapper to the map. This method does not check whether the item
- * already exists in the map.
+ * Adds a DownloadHistoryItemWrapper to the map if it has a valid path.
* @param wrapper The item to add to the map.
*/
void addItem(DownloadHistoryItemWrapper wrapper) {
+ if (TextUtils.isEmpty(wrapper.getFilePath())) return;
+
if (!mMap.containsKey(wrapper.getFilePath())) {
- mMap.put(wrapper.getFilePath(), new ArrayList<DownloadHistoryItemWrapper>());
+ mMap.put(wrapper.getFilePath(), new HashSet<DownloadHistoryItemWrapper>());
}
mMap.get(wrapper.getFilePath()).add(wrapper);
}
@@ -35,21 +38,15 @@ class FilePathsToDownloadItemsMap {
* @param wrapper The item to remove from the map.
*/
void removeItem(DownloadHistoryItemWrapper wrapper) {
- ArrayList<DownloadHistoryItemWrapper> matchingItems = mMap.get(wrapper.getFilePath());
- if (matchingItems == null) return;
-
- for (int i = 0; i < matchingItems.size(); i++) {
- if (!matchingItems.get(i).equals(wrapper)) continue;
+ Set<DownloadHistoryItemWrapper> matchingItems = mMap.get(wrapper.getFilePath());
+ if (matchingItems == null || !matchingItems.contains(wrapper)) return;
+ if (matchingItems.size() == 1) {
// If this is the only DownloadHistoryItemWrapper that references the file path,
// remove the file path from the map.
- if (matchingItems.size() == 1) {
- mMap.remove(wrapper.getFilePath());
- } else {
- matchingItems.remove(i);
- }
-
- return;
+ mMap.remove(wrapper.getFilePath());
+ } else {
+ matchingItems.remove(wrapper);
}
}
@@ -58,7 +55,7 @@ class FilePathsToDownloadItemsMap {
* @param filePath The file path used to retrieve items.
* @return DownloadHistoryItemWrappers associated with filePath.
*/
- List<DownloadHistoryItemWrapper> getItemsForFilePath(String filePath) {
+ Set<DownloadHistoryItemWrapper> getItemsForFilePath(String filePath) {
return mMap.get(filePath);
}
}

Powered by Google App Engine
This is Rietveld 408576698