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

Unified Diff: content/public/android/java/src/org/chromium/content/browser/ViewPositionObserver.java

Issue 407893003: Implement clearListener() method for PositionObserver to clear all registered listeners when Con (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 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
« no previous file with comments | « content/public/android/java/src/org/chromium/content/browser/PositionObserver.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/public/android/java/src/org/chromium/content/browser/ViewPositionObserver.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ViewPositionObserver.java b/content/public/android/java/src/org/chromium/content/browser/ViewPositionObserver.java
index 8f55f2f252752849b10505ad214e40340afc1bd6..d9f8807612bdd045b3800e58cc6824ae58502d03 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ViewPositionObserver.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ViewPositionObserver.java
@@ -7,7 +7,7 @@ package org.chromium.content.browser;
import android.view.View;
import android.view.ViewTreeObserver;
-import java.util.ArrayList;
+import org.chromium.base.ObserverList;
/**
* Used to register listeners that can be notified of changes to the position of a view.
@@ -17,7 +17,7 @@ public class ViewPositionObserver implements PositionObserver {
// Absolute position of the container view relative to its parent window.
private final int[] mPosition = new int[2];
- private final ArrayList<Listener> mListeners;
+ private final ObserverList<Listener> mListeners;
Yaron 2014/07/22 19:20:25 Note that there is slightly more overhead to using
wajahat 2014/07/23 04:24:16 ok reverting this change
private ViewTreeObserver.OnPreDrawListener mPreDrawListener;
/**
@@ -25,7 +25,7 @@ public class ViewPositionObserver implements PositionObserver {
*/
public ViewPositionObserver(View view) {
mView = view;
- mListeners = new ArrayList<Listener>();
+ mListeners = new ObserverList<Listener>();
updatePosition();
mPreDrawListener = new ViewTreeObserver.OnPreDrawListener() {
@Override
@@ -61,14 +61,12 @@ public class ViewPositionObserver implements PositionObserver {
*/
@Override
public void addListener(Listener listener) {
- if (mListeners.contains(listener)) return;
Yaron 2014/07/22 19:20:25 This is different than what ObserverList is deisgn
wajahat 2014/07/23 04:24:16 ok, reverting this change
-
if (mListeners.isEmpty()) {
mView.getViewTreeObserver().addOnPreDrawListener(mPreDrawListener);
updatePosition();
}
- mListeners.add(listener);
+ mListeners.addObserver(listener);
}
/**
@@ -76,9 +74,7 @@ public class ViewPositionObserver implements PositionObserver {
*/
@Override
public void removeListener(Listener listener) {
- if (!mListeners.contains(listener)) return;
-
- mListeners.remove(listener);
+ mListeners.removeObserver(listener);
if (mListeners.isEmpty()) {
mView.getViewTreeObserver().removeOnPreDrawListener(mPreDrawListener);
@@ -86,8 +82,8 @@ public class ViewPositionObserver implements PositionObserver {
}
private void notifyListeners() {
- for (int i = 0; i < mListeners.size(); i++) {
- mListeners.get(i).onPositionChanged(mPosition[0], mPosition[1]);
+ for (PositionObserver.Listener listener : mListeners) {
+ listener.onPositionChanged(mPosition[0], mPosition[1]);
}
}
@@ -99,5 +95,12 @@ public class ViewPositionObserver implements PositionObserver {
notifyListeners();
}
}
+
+ /**
+ * Clears installed listener(s).
+ */
+ public void clearListener() {
+ mListeners.clear();
+ }
}
« no previous file with comments | « content/public/android/java/src/org/chromium/content/browser/PositionObserver.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698