Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java |
index f7ec706ecbad6d577fda9f48dd4ab18451df9637..6e220d4bbb7dde32438db038d93cc204cddb7c04 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java |
@@ -12,6 +12,7 @@ import android.graphics.Rect; |
import android.graphics.RectF; |
import android.os.Bundle; |
import android.os.Handler; |
+import android.support.design.widget.CoordinatorLayout; |
import android.support.v4.view.ViewCompat; |
import android.support.v4.view.accessibility.AccessibilityEventCompat; |
import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; |
@@ -44,6 +45,7 @@ import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager; |
import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager.FullscreenListener; |
import org.chromium.chrome.browser.tab.EmptyTabObserver; |
import org.chromium.chrome.browser.tab.Tab; |
+import org.chromium.chrome.browser.tab.TabContentViewParent; |
import org.chromium.chrome.browser.tab.TabObserver; |
import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver; |
import org.chromium.chrome.browser.tabmodel.TabCreatorManager; |
@@ -70,7 +72,7 @@ import java.util.List; |
* This class also holds the {@link LayoutManager} responsible to describe the items to be |
* drawn by the UI compositor on the native side. |
*/ |
-public class CompositorViewHolder extends FrameLayout |
+public class CompositorViewHolder extends CoordinatorLayout |
implements LayoutManagerHost, LayoutRenderHost, Invalidator.Host, FullscreenListener { |
private static List<View> sCachedViewList = new ArrayList<View>(); |
private static List<ContentViewCore> sCachedCVCList = new ArrayList<ContentViewCore>(); |
@@ -338,7 +340,8 @@ public class CompositorViewHolder extends FrameLayout |
@Override |
public boolean onInterceptTouchEvent(MotionEvent e) { |
- super.onInterceptTouchEvent(e); |
+ boolean consumedBySuper = super.onInterceptTouchEvent(e); |
+ if (consumedBySuper) return true; |
if (mLayoutManager == null) return false; |
@@ -356,6 +359,9 @@ public class CompositorViewHolder extends FrameLayout |
@Override |
public boolean onTouchEvent(MotionEvent e) { |
+ boolean consumedBySuper = super.onTouchEvent(e); |
+ if (consumedBySuper) return true; |
+ |
if (mFullscreenManager != null) mFullscreenManager.onMotionEvent(e); |
if (mFullscreenTouchEvent) return true; |
boolean consumed = mLayoutManager != null && mLayoutManager.onTouchEvent(e); |
@@ -671,13 +677,13 @@ public class CompositorViewHolder extends FrameLayout |
} |
@Override |
- protected void onAttachedToWindow() { |
+ public void onAttachedToWindow() { |
mInvalidator.set(this); |
super.onAttachedToWindow(); |
} |
@Override |
- protected void onDetachedFromWindow() { |
+ public void onDetachedFromWindow() { |
if (mLayoutManager != null) mLayoutManager.destroy(); |
flushInvalidation(); |
mInvalidator.set(null); |
@@ -779,7 +785,7 @@ public class CompositorViewHolder extends FrameLayout |
} |
} |
- FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams( |
+ CoordinatorLayout.LayoutParams layoutParams = new CoordinatorLayout.LayoutParams( |
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); |
if (mView.getLayoutParams() instanceof MarginLayoutParams) { |
MarginLayoutParams existingLayoutParams = |
@@ -789,7 +795,13 @@ public class CompositorViewHolder extends FrameLayout |
layoutParams.topMargin = existingLayoutParams.topMargin; |
layoutParams.bottomMargin = existingLayoutParams.bottomMargin; |
} |
- addView(mView, layoutParams); |
+ if (mView instanceof TabContentViewParent) { |
+ layoutParams.setBehavior(((TabContentViewParent) mView).getBehavior()); |
+ } |
+ // CompositorView has index of 0; TabContentViewParent has index of 1; Snackbar (if |
+ // any) has index of 2. Setting index here explicitly to avoid TabContentViewParent |
+ // hiding the snackbar. |
+ addView(mView, 1, layoutParams); |
setFocusable(false); |
setFocusableInTouchMode(false); |