| 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);
|
|
|