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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java

Issue 1983353002: [Android] Coordinate Infobars and Snackbars (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 7 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
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);

Powered by Google App Engine
This is Rietveld 408576698