| Index: chrome/android/java/src/org/chromium/chrome/browser/SwipeRefreshHandler.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/SwipeRefreshHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/SwipeRefreshHandler.java
|
| index 6543a19062599063a3ac9df68aae16da4a9ff796..0991a72f377c8516f6e18d603576cb67e50b2d4b 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/SwipeRefreshHandler.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/SwipeRefreshHandler.java
|
| @@ -8,6 +8,7 @@ import android.content.Context;
|
| import android.view.ViewGroup.LayoutParams;
|
|
|
| import org.chromium.base.TraceEvent;
|
| +import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.base.metrics.RecordUserAction;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| @@ -51,6 +52,9 @@ public class SwipeRefreshHandler implements OverscrollRefreshHandler {
|
| // Accessibility utterance used to indicate refresh activation.
|
| private String mAccessibilityRefreshString;
|
|
|
| + // Pointer to the C++ SwipeRefreshHandler
|
| + private long mNativeSwipeRefreshHandler;
|
| +
|
| /**
|
| * Simple constructor to use when creating an OverscrollRefresh instance from code.
|
| *
|
| @@ -61,6 +65,8 @@ public class SwipeRefreshHandler implements OverscrollRefreshHandler {
|
| mTab = tab;
|
| mContentViewCore = mTab.getContentViewCore();
|
|
|
| + mNativeSwipeRefreshHandler = nativeInit();
|
| +
|
| mSwipeRefreshLayout = new SwipeRefreshLayout(context);
|
| mSwipeRefreshLayout.setLayoutParams(
|
| new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
|
| @@ -100,8 +106,6 @@ public class SwipeRefreshHandler implements OverscrollRefreshHandler {
|
| mSwipeRefreshLayout.post(mDetachLayoutRunnable);
|
| }
|
| });
|
| -
|
| - mContentViewCore.setOverscrollRefreshHandler(this);
|
| }
|
|
|
| /**
|
| @@ -111,7 +115,7 @@ public class SwipeRefreshHandler implements OverscrollRefreshHandler {
|
| setEnabled(false);
|
| cancelStopRefreshingRunnable();
|
| mSwipeRefreshLayout.setOnRefreshListener(null);
|
| - mContentViewCore.setOverscrollRefreshHandler(null);
|
| + nativeDestroy(mNativeSwipeRefreshHandler);
|
| }
|
|
|
| /**
|
| @@ -127,12 +131,14 @@ public class SwipeRefreshHandler implements OverscrollRefreshHandler {
|
| }
|
|
|
| @Override
|
| + @CalledByNative
|
| public boolean start() {
|
| attachSwipeRefreshLayoutIfNecessary();
|
| return mSwipeRefreshLayout.start();
|
| }
|
|
|
| @Override
|
| + @CalledByNative
|
| public void pull(float delta) {
|
| TraceEvent.begin("SwipeRefreshHandler.pull");
|
| mSwipeRefreshLayout.pull(delta);
|
| @@ -140,6 +146,7 @@ public class SwipeRefreshHandler implements OverscrollRefreshHandler {
|
| }
|
|
|
| @Override
|
| + @CalledByNative
|
| public void release(boolean allowRefresh) {
|
| TraceEvent.begin("SwipeRefreshHandler.release");
|
| mSwipeRefreshLayout.release(allowRefresh);
|
| @@ -147,6 +154,7 @@ public class SwipeRefreshHandler implements OverscrollRefreshHandler {
|
| }
|
|
|
| @Override
|
| + @CalledByNative
|
| public void reset() {
|
| cancelStopRefreshingRunnable();
|
| mSwipeRefreshLayout.reset();
|
| @@ -183,6 +191,10 @@ public class SwipeRefreshHandler implements OverscrollRefreshHandler {
|
| return mStopRefreshingRunnable;
|
| }
|
|
|
| + public long getNativePtr() {
|
| + return mNativeSwipeRefreshHandler;
|
| + }
|
| +
|
| // The animation view is attached/detached on-demand to minimize overlap
|
| // with composited SurfaceView content.
|
| private void attachSwipeRefreshLayoutIfNecessary() {
|
| @@ -198,4 +210,7 @@ public class SwipeRefreshHandler implements OverscrollRefreshHandler {
|
| mContentViewCore.getContainerView().removeView(mSwipeRefreshLayout);
|
| }
|
| }
|
| +
|
| + private native long nativeInit();
|
| + private native void nativeDestroy(long nativeSwipeRefreshHandler);
|
| }
|
|
|