Index: chrome/android/java/src/org/chromium/chrome/browser/banners/SwipableOverlayView.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/banners/SwipableOverlayView.java b/chrome/android/java/src/org/chromium/chrome/browser/banners/SwipableOverlayView.java |
index 0471c1c01c42ac764ef7218c853b33b87676c084..e390e2094c35fb7bfc4ae7ad2e12e5d95acb4b28 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/banners/SwipableOverlayView.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/banners/SwipableOverlayView.java |
@@ -250,10 +250,17 @@ public abstract class SwipableOverlayView extends ScrollView { |
protected void onAttachedToWindow() { |
super.onAttachedToWindow(); |
if (!mDoStayInvisible) { |
- ObjectAnimator.ofFloat(this, "alpha", 0.f, 1.f).setDuration(REATTACH_FADE_IN_MS) |
+ ObjectAnimator.ofFloat(this, View.ALPHA, 0.f, 1.f).setDuration(REATTACH_FADE_IN_MS) |
.start(); |
setVisibility(VISIBLE); |
} |
+ if (!isAllowedToAutoHide()) setTranslationY(0.0f); |
+ } |
+ |
+ @Override |
+ public void onWindowFocusChanged(boolean hasWindowFocus) { |
+ super.onWindowFocusChanged(hasWindowFocus); |
+ if (!isAllowedToAutoHide()) setTranslationY(0.0f); |
} |
/** |
@@ -406,7 +413,7 @@ public abstract class SwipableOverlayView extends ScrollView { |
return new GestureStateListener() { |
@Override |
public void onFlingStartGesture(int vx, int vy, int scrollOffsetY, int scrollExtentY) { |
- if (!cancelCurrentAnimation()) return; |
+ if (!isAllowedToAutoHide() || !cancelCurrentAnimation()) return; |
beginGesture(scrollOffsetY, scrollExtentY); |
mGestureState = GESTURE_FLINGING; |
} |
@@ -442,7 +449,7 @@ public abstract class SwipableOverlayView extends ScrollView { |
@Override |
public void onScrollStarted(int scrollOffsetY, int scrollExtentY) { |
- if (!cancelCurrentAnimation()) return; |
+ if (!isAllowedToAutoHide() || !cancelCurrentAnimation()) return; |
beginGesture(scrollOffsetY, scrollExtentY); |
mGestureState = GESTURE_SCROLLING; |
} |
@@ -693,6 +700,13 @@ public abstract class SwipableOverlayView extends ScrollView { |
} |
/** |
+ * @return Whether the SwipableOverlayView is allowed to hide itself on scroll. |
+ */ |
+ protected boolean isAllowedToAutoHide() { |
+ return true; |
+ } |
+ |
+ /** |
* Override gatherTransparentRegion to make this view's layout a placeholder for its |
* animations. This is only called during layout, so it doesn't really make sense to apply |
* post-layout properties like it does by default. Together with setWillNotDraw(false), |