Index: chrome/android/java/src/org/chromium/chrome/browser/tab/TabContentViewParent.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContentViewParent.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContentViewParent.java |
deleted file mode 100644 |
index 0543f10dbf1ce7c7d35be3b9d5a0ab0c6851e6d5..0000000000000000000000000000000000000000 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContentViewParent.java |
+++ /dev/null |
@@ -1,134 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package org.chromium.chrome.browser.tab; |
- |
-import android.content.Context; |
-import android.support.design.widget.CoordinatorLayout; |
-import android.support.design.widget.CoordinatorLayout.Behavior; |
-import android.view.Gravity; |
-import android.view.View; |
-import android.widget.FrameLayout; |
- |
-import org.chromium.chrome.R; |
-import org.chromium.chrome.browser.banners.SwipableOverlayView; |
-import org.chromium.ui.UiUtils; |
-import org.chromium.ui.base.DeviceFormFactor; |
- |
-/** |
- * Parent {@link FrameLayout} holding the infobar and content of a tab. The content could be either |
- * a native page or a content view. |
- */ |
-public class TabContentViewParent extends FrameLayout { |
- private static final int CONTENT_INDEX = 0; |
- |
- // A wrapper is needed because infobar's translation is controlled by SwipableOverlayView. |
- // Setting infobar's translation directly from this class will cause UI flickering. |
- private final FrameLayout mInfobarWrapper; |
- private final Behavior<?> mBehavior = new SnackbarAwareBehavior(); |
- |
- private EmptyTabObserver mTabObserver = new EmptyTabObserver() { |
- /** |
- * @return the {@link View} to show for the given {@link Tab}. |
- */ |
- private View getViewToShow(Tab tab) { |
- if (tab.getNativePage() != null) { |
- return tab.getNativePage().getView(); |
- } else if (tab.getBlimpContents() != null) { |
- return tab.getBlimpContents().getView(); |
- } else { |
- return tab.getContentViewCore().getContainerView(); |
- } |
- } |
- |
- @Override |
- public void onContentChanged(Tab tab) { |
- // If the tab is frozen, both native page and content view are not ready. |
- if (tab.isFrozen()) return; |
- |
- View viewToShow = getViewToShow(tab); |
- if (isShowing(viewToShow)) return; |
- |
- removeCurrentContent(); |
- LayoutParams lp = (LayoutParams) viewToShow.getLayoutParams(); |
- if (lp == null) { |
- lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); |
- } |
- // Weirdly enough, if gravity is not top, top_margin is not respected by FrameLayout. |
- // Yet for many native pages on tablet, top_margin is necessary to not overlap the tab |
- // switcher. |
- lp.gravity = Gravity.TOP; |
- UiUtils.removeViewFromParent(viewToShow); |
- addView(viewToShow, CONTENT_INDEX, lp); |
- viewToShow.requestFocus(); |
- } |
- }; |
- |
- public TabContentViewParent(Context context, Tab tab) { |
- super(context); |
- mInfobarWrapper = new FrameLayout(context); |
- mInfobarWrapper.setFocusable(true); |
- mInfobarWrapper.setFocusableInTouchMode(true); |
- addView(mInfobarWrapper, |
- new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); |
- tab.addObserver(mTabObserver); |
- } |
- |
- /** |
- * Attach the infobar container to the view hierarchy. |
- */ |
- public void addInfobarView(SwipableOverlayView infobarView, MarginLayoutParams lp) { |
- mInfobarWrapper.addView(infobarView, lp); |
- } |
- |
- /** |
- * @return The {@link Behavior} that controls how children of this class animate together. |
- */ |
- public Behavior<?> getBehavior() { |
- return mBehavior; |
- } |
- |
- @Override |
- protected void onDetachedFromWindow() { |
- super.onDetachedFromWindow(); |
- mInfobarWrapper.setTranslationY(0f); |
- } |
- |
- /** |
- * @return Whether the given {@link View} is already in the view hierarchy. |
- */ |
- private boolean isShowing(View view) { |
- return view.getParent() == this; |
- } |
- |
- private void removeCurrentContent() { |
- // Native page or content view should always be at index 0. |
- if (getChildCount() > 1) removeViewAt(CONTENT_INDEX); |
- } |
- |
- private static class SnackbarAwareBehavior |
- extends CoordinatorLayout.Behavior<TabContentViewParent> { |
- @Override |
- public boolean layoutDependsOn(CoordinatorLayout parent, TabContentViewParent child, |
- View dependency) { |
- // Disable coordination on tablet as they appear at different location on tablet. |
- return dependency.getId() == R.id.snackbar |
- && !DeviceFormFactor.isTablet(child.getContext()); |
- } |
- |
- @Override |
- public boolean onDependentViewChanged(CoordinatorLayout parent, TabContentViewParent child, |
- View dependency) { |
- child.mInfobarWrapper |
- .setTranslationY(dependency.getTranslationY() - dependency.getHeight()); |
- return true; |
- } |
- |
- @Override |
- public void onDependentViewRemoved(CoordinatorLayout parent, TabContentViewParent child, |
- View dependency) { |
- child.mInfobarWrapper.setTranslationY(0); |
- } |
- } |
-} |