am 43423549: Merge "Fix LauncherApps registerCallback adding duplicate callbacks." into mnc-dev

* commit '434235496c6356dd5e2fc9977c5f1d0609fd3d2a':
  Fix LauncherApps registerCallback adding duplicate callbacks.
This commit is contained in:
Kenny Guy
2015-06-22 16:55:08 +00:00
committed by Android Git Automerger

View File

@@ -294,7 +294,7 @@ public class LauncherApps {
*/
public void registerCallback(Callback callback, Handler handler) {
synchronized (this) {
if (callback != null && !mCallbacks.contains(callback)) {
if (callback != null && findCallbackLocked(callback) < 0) {
boolean addedFirstCallback = mCallbacks.size() == 0;
addCallbackLocked(callback, handler);
if (addedFirstCallback) {
@@ -325,17 +325,25 @@ public class LauncherApps {
}
}
private void removeCallbackLocked(Callback callback) {
/** @return position in mCallbacks for callback or -1 if not present. */
private int findCallbackLocked(Callback callback) {
if (callback == null) {
throw new IllegalArgumentException("Callback cannot be null");
}
final int size = mCallbacks.size();
for (int i = 0; i < size; ++i) {
if (mCallbacks.get(i).mCallback == callback) {
mCallbacks.remove(i);
return;
return i;
}
}
return -1;
}
private void removeCallbackLocked(Callback callback) {
int pos = findCallbackLocked(callback);
if (pos >= 0) {
mCallbacks.remove(pos);
}
}
private void addCallbackLocked(Callback callback, Handler handler) {