mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 962968 - Replace HashMap with SparseArray in Favicons (r=rnewman)
This commit is contained in:
parent
9323b7194a
commit
e0b73c5963
@ -23,15 +23,14 @@ import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class Favicons {
|
||||
@ -62,7 +61,7 @@ public class Favicons {
|
||||
// The density-adjusted maximum Favicon dimensions.
|
||||
public static int sLargestFaviconSize;
|
||||
|
||||
private static final Map<Integer, LoadFaviconTask> sLoadTasks = Collections.synchronizedMap(new HashMap<Integer, LoadFaviconTask>());
|
||||
private static final SparseArray<LoadFaviconTask> sLoadTasks = new SparseArray<LoadFaviconTask>();
|
||||
|
||||
// Cache to hold mappings between page URLs and Favicon URLs. Used to avoid going to the DB when
|
||||
// doing so is not necessary.
|
||||
@ -217,7 +216,9 @@ public class Favicons {
|
||||
// No joy using in-memory resources. Go to background thread and ask the database.
|
||||
LoadFaviconTask task = new LoadFaviconTask(ThreadUtils.getBackgroundHandler(), pageURL, targetURL, 0, callback, targetSize, true);
|
||||
int taskId = task.getId();
|
||||
sLoadTasks.put(taskId, task);
|
||||
synchronized(sLoadTasks) {
|
||||
sLoadTasks.put(taskId, task);
|
||||
}
|
||||
task.execute();
|
||||
return taskId;
|
||||
}
|
||||
@ -282,7 +283,9 @@ public class Favicons {
|
||||
LoadFaviconTask task = new LoadFaviconTask(ThreadUtils.getBackgroundHandler(), pageUrl, faviconUrl, flags, listener, targetSize, false);
|
||||
|
||||
int taskId = task.getId();
|
||||
sLoadTasks.put(taskId, task);
|
||||
synchronized(sLoadTasks) {
|
||||
sLoadTasks.put(taskId, task);
|
||||
}
|
||||
|
||||
task.execute();
|
||||
|
||||
@ -325,7 +328,7 @@ public class Favicons {
|
||||
|
||||
boolean cancelled;
|
||||
synchronized (sLoadTasks) {
|
||||
if (!sLoadTasks.containsKey(taskId))
|
||||
if (sLoadTasks.indexOfKey(taskId) < 0)
|
||||
return false;
|
||||
|
||||
Log.d(LOGTAG, "Cancelling favicon load (" + taskId + ")");
|
||||
@ -341,11 +344,9 @@ public class Favicons {
|
||||
|
||||
// Cancel any pending tasks
|
||||
synchronized (sLoadTasks) {
|
||||
Set<Integer> taskIds = sLoadTasks.keySet();
|
||||
Iterator<Integer> iter = taskIds.iterator();
|
||||
while (iter.hasNext()) {
|
||||
int taskId = iter.next();
|
||||
cancelFaviconLoad(taskId);
|
||||
final int count = sLoadTasks.size();
|
||||
for (int i = 0; i < count; i++) {
|
||||
cancelFaviconLoad(sLoadTasks.keyAt(i));
|
||||
}
|
||||
sLoadTasks.clear();
|
||||
}
|
||||
@ -449,7 +450,9 @@ public class Favicons {
|
||||
}
|
||||
|
||||
public static void removeLoadTask(int taskId) {
|
||||
sLoadTasks.remove(taskId);
|
||||
synchronized(sLoadTasks) {
|
||||
sLoadTasks.delete(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user