| Index: chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarControlContainer.java
|
| diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarControlContainer.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarControlContainer.java
|
| deleted file mode 100644
|
| index eb6c5ef8a688ac8a972d51393c9f880f13511c2d..0000000000000000000000000000000000000000
|
| --- a/chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarControlContainer.java
|
| +++ /dev/null
|
| @@ -1,339 +0,0 @@
|
| -// Copyright 2015 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.toolbar;
|
| -
|
| -import android.content.Context;
|
| -import android.graphics.Canvas;
|
| -import android.graphics.PorterDuff;
|
| -import android.graphics.Rect;
|
| -import android.graphics.drawable.Drawable;
|
| -import android.graphics.drawable.LayerDrawable;
|
| -import android.graphics.drawable.ScaleDrawable;
|
| -import android.util.AttributeSet;
|
| -import android.view.MotionEvent;
|
| -import android.view.View;
|
| -import android.widget.FrameLayout;
|
| -
|
| -import org.chromium.chrome.R;
|
| -import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeHandler;
|
| -import org.chromium.chrome.browser.contextualsearch.SwipeRecognizer;
|
| -import org.chromium.chrome.browser.widget.ControlContainer;
|
| -import org.chromium.chrome.browser.widget.SmoothProgressBar;
|
| -import org.chromium.chrome.browser.widget.SmoothProgressBar.ProgressChangeListener;
|
| -import org.chromium.chrome.browser.widget.ViewResourceFrameLayout;
|
| -import org.chromium.ui.UiUtils;
|
| -import org.chromium.ui.resources.dynamics.ViewResourceAdapter;
|
| -
|
| -/**
|
| - * Layout for the browser controls (omnibox, menu, tab strip, etc..).
|
| - */
|
| -public class ToolbarControlContainer extends FrameLayout implements ControlContainer {
|
| - private final float mTabStripHeight;
|
| -
|
| - private Toolbar mToolbar;
|
| - private ToolbarViewResourceFrameLayout mToolbarContainer;
|
| - private View mMenuBtn;
|
| -
|
| - private final SwipeRecognizer mSwipeRecognizer;
|
| - private EdgeSwipeHandler mSwipeHandler;
|
| -
|
| - private ViewResourceAdapter mProgressResourceAdapter;
|
| -
|
| - /**
|
| - * Constructs a new control container.
|
| - * <p>
|
| - * This constructor is used when inflating from XML.
|
| - *
|
| - * @param context The context used to build this view.
|
| - * @param attrs The attributes used to determine how to construct this view.
|
| - */
|
| - public ToolbarControlContainer(Context context, AttributeSet attrs) {
|
| - super(context, attrs);
|
| - mTabStripHeight = context.getResources().getDimension(R.dimen.tab_strip_height);
|
| - mSwipeRecognizer = new SwipeRecognizerImpl(context);
|
| - }
|
| -
|
| - @Override
|
| - public ViewResourceAdapter getProgressResourceAdapter() {
|
| - return mProgressResourceAdapter;
|
| - }
|
| -
|
| - @Override
|
| - public ViewResourceAdapter getToolbarResourceAdapter() {
|
| - return mToolbarContainer.getResourceAdapter();
|
| - }
|
| -
|
| - @Override
|
| - public void setSwipeHandler(EdgeSwipeHandler handler) {
|
| - mSwipeHandler = handler;
|
| - mSwipeRecognizer.setSwipeHandler(handler);
|
| - }
|
| -
|
| - @Override
|
| - public void onFinishInflate() {
|
| - mToolbar = (Toolbar) findViewById(R.id.toolbar);
|
| - mToolbarContainer = (ToolbarViewResourceFrameLayout) findViewById(R.id.toolbar_container);
|
| - mMenuBtn = findViewById(R.id.menu_button);
|
| -
|
| - // TODO(yusufo): Get rid of the calls below and avoid casting to the layout without making
|
| - // the interface bigger.
|
| - SmoothProgressBar progressView = ((ToolbarLayout) mToolbar).getProgressBar();
|
| - if (progressView != null) {
|
| - mProgressResourceAdapter = new ProgressViewResourceAdapter(progressView);
|
| - }
|
| -
|
| - if (mToolbar instanceof ToolbarTablet) {
|
| - // On tablet, draw a fake tab strip and toolbar until the compositor is ready to draw
|
| - // the real tab strip. (On phone, the toolbar is made entirely of Android views, which
|
| - // are already initialized.)
|
| - setBackgroundResource(R.drawable.toolbar_background);
|
| - }
|
| -
|
| - assert mToolbar != null;
|
| - assert mMenuBtn != null;
|
| -
|
| - super.onFinishInflate();
|
| - }
|
| -
|
| - /**
|
| - * Invalidate the entire capturing bitmap region.
|
| - */
|
| - public void invalidateBitmap() {
|
| - ((ToolbarViewResourceAdapter) getToolbarResourceAdapter()).forceInvalidate();
|
| - }
|
| -
|
| - /**
|
| - * Update whether the control container is ready to have the bitmap representation of
|
| - * itself be captured.
|
| - */
|
| - public void setReadyForBitmapCapture(boolean ready) {
|
| - mToolbarContainer.mReadyForBitmapCapture = ready;
|
| - }
|
| -
|
| - /**
|
| - * The layout that handles generating the toolbar view resource.
|
| - */
|
| - // Only publicly visible due to lint warnings.
|
| - public static class ToolbarViewResourceFrameLayout extends ViewResourceFrameLayout {
|
| - private boolean mReadyForBitmapCapture;
|
| -
|
| - public ToolbarViewResourceFrameLayout(Context context, AttributeSet attrs) {
|
| - super(context, attrs);
|
| - }
|
| -
|
| - @Override
|
| - protected ViewResourceAdapter createResourceAdapter() {
|
| - return new ToolbarViewResourceAdapter(
|
| - this, (Toolbar) findViewById(R.id.toolbar));
|
| - }
|
| -
|
| - @Override
|
| - protected boolean isReadyForCapture() {
|
| - return mReadyForBitmapCapture;
|
| - }
|
| - }
|
| -
|
| - private static class ProgressViewResourceAdapter extends ViewResourceAdapter
|
| - implements ProgressChangeListener {
|
| -
|
| - private final SmoothProgressBar mProgressView;
|
| - private final Rect mPreviousDrawBounds = new Rect();
|
| - private int mProgressVisibility;
|
| - private int mProgress;
|
| -
|
| - ProgressViewResourceAdapter(SmoothProgressBar progressView) {
|
| - super(progressView);
|
| -
|
| - mProgressView = progressView;
|
| - mProgressVisibility = mProgressView.getVisibility();
|
| - progressView.addProgressChangeListener(this);
|
| - }
|
| -
|
| - @Override
|
| - public void onProgressChanged(int progress) {
|
| - if (mProgressVisibility != View.VISIBLE) return;
|
| - if (progress < mProgress) {
|
| - mPreviousDrawBounds.setEmpty();
|
| - }
|
| - mProgress = progress;
|
| - invalidate(null);
|
| - }
|
| -
|
| - @Override
|
| - public void onProgressVisibilityChanged(int visibility) {
|
| - if (mProgressVisibility == visibility) return;
|
| -
|
| - if (visibility == View.VISIBLE || mProgressVisibility == View.VISIBLE) {
|
| - invalidate(null);
|
| - mPreviousDrawBounds.setEmpty();
|
| - }
|
| - mProgressVisibility = visibility;
|
| - }
|
| -
|
| - @Override
|
| - protected void onCaptureStart(Canvas canvas, Rect dirtyRect) {
|
| - canvas.save();
|
| - canvas.clipRect(
|
| - mPreviousDrawBounds.right, 0,
|
| - mProgressView.getWidth(), mProgressView.getHeight());
|
| - canvas.drawColor(0, PorterDuff.Mode.CLEAR);
|
| - canvas.restore();
|
| -
|
| - super.onCaptureStart(canvas, dirtyRect);
|
| - }
|
| -
|
| - @Override
|
| - protected void capture(Canvas canvas) {
|
| - if (mProgressVisibility != View.VISIBLE) {
|
| - canvas.drawColor(0, PorterDuff.Mode.CLEAR);
|
| - } else {
|
| - super.capture(canvas);
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - protected void onCaptureEnd() {
|
| - super.onCaptureEnd();
|
| - // If we are unable to get accurate draw bounds, then set the draw bounds to
|
| - // ensure the entire view is cleared.
|
| - mPreviousDrawBounds.setEmpty();
|
| -
|
| - // The secondary drawable has an alpha component, so track the bounds of the
|
| - // primary drawable. This will allow the subsequent draw call to clear the secondary
|
| - // portion not overlapped by the primary to prevent the alpha components from
|
| - // stacking and getting progressively darker.
|
| - Drawable progressDrawable = mProgressView.getProgressDrawable();
|
| - if (progressDrawable instanceof LayerDrawable) {
|
| - LayerDrawable progressLayerDrawable = (LayerDrawable) progressDrawable;
|
| - for (int i = 0; i < progressLayerDrawable.getNumberOfLayers(); i++) {
|
| - if (progressLayerDrawable.getId(i) != android.R.id.progress) continue;
|
| - Drawable primaryProgressDrawable = progressLayerDrawable.getDrawable(i);
|
| - if (!(primaryProgressDrawable instanceof ScaleDrawable)) continue;
|
| -
|
| - ((ScaleDrawable) primaryProgressDrawable).getDrawable().copyBounds(
|
| - mPreviousDrawBounds);
|
| - }
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - protected void computeContentPadding(Rect outContentPadding) {
|
| - super.computeContentPadding(outContentPadding);
|
| - MarginLayoutParams layoutParams =
|
| - (MarginLayoutParams) mProgressView.getLayoutParams();
|
| - outContentPadding.offset(0, layoutParams.topMargin);
|
| - }
|
| - }
|
| -
|
| - private static class ToolbarViewResourceAdapter extends ViewResourceAdapter {
|
| - private final int mToolbarActualHeightPx;
|
| - private final int[] mTempPosition = new int[2];
|
| -
|
| - private final View mToolbarContainer;
|
| - private final Toolbar mToolbar;
|
| -
|
| - /** Builds the resource adapter for the toolbar. */
|
| - public ToolbarViewResourceAdapter(View toolbarContainer, Toolbar toolbar) {
|
| - super(toolbarContainer);
|
| -
|
| - mToolbarContainer = toolbarContainer;
|
| - mToolbar = toolbar;
|
| - mToolbarActualHeightPx = toolbarContainer.getResources().getDimensionPixelSize(
|
| - R.dimen.control_container_height);
|
| - }
|
| -
|
| - /**
|
| - * Force this resource to be recaptured in full, ignoring the checks
|
| - * {@link #invalidate(Rect)} does.
|
| - */
|
| - public void forceInvalidate() {
|
| - super.invalidate(null);
|
| - }
|
| -
|
| - @Override
|
| - public boolean isDirty() {
|
| - return mToolbar != null && mToolbar.isReadyForTextureCapture() && super.isDirty();
|
| - }
|
| -
|
| - @Override
|
| - protected void onCaptureStart(Canvas canvas, Rect dirtyRect) {
|
| - // Erase the shadow component of the bitmap if the clip rect included shadow. Because
|
| - // this region is not opaque painting twice would be bad.
|
| - if (dirtyRect.intersects(
|
| - 0, mToolbarActualHeightPx,
|
| - mToolbarContainer.getWidth(), mToolbarContainer.getHeight())) {
|
| - canvas.save();
|
| - canvas.clipRect(
|
| - 0, mToolbarActualHeightPx,
|
| - mToolbarContainer.getWidth(), mToolbarContainer.getHeight());
|
| - canvas.drawColor(0, PorterDuff.Mode.CLEAR);
|
| - canvas.restore();
|
| - }
|
| -
|
| - mToolbar.setTextureCaptureMode(true);
|
| -
|
| - super.onCaptureStart(canvas, dirtyRect);
|
| - }
|
| -
|
| - @Override
|
| - protected void onCaptureEnd() {
|
| - mToolbar.setTextureCaptureMode(false);
|
| - }
|
| -
|
| - @Override
|
| - protected void computeContentPadding(Rect outContentPadding) {
|
| - outContentPadding.set(0, 0, mToolbarContainer.getWidth(), mToolbarActualHeightPx);
|
| - }
|
| -
|
| - @Override
|
| - protected void computeContentAperture(Rect outContentAperture) {
|
| - mToolbar.getLocationBarContentRect(outContentAperture);
|
| - mToolbar.getPositionRelativeToContainer(mToolbarContainer, mTempPosition);
|
| - outContentAperture.offset(mTempPosition[0], mTempPosition[1]);
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - public boolean onTouchEvent(MotionEvent event) {
|
| - // Don't eat the event if we don't have a handler.
|
| - if (mSwipeHandler == null) return false;
|
| -
|
| - // If we have ACTION_DOWN in this context, that means either no child consumed the event or
|
| - // this class is the top UI at the event position. Then, we don't need to feed the event to
|
| - // mGestureDetector here because the event is already once fed in onInterceptTouchEvent().
|
| - // Moreover, we have to return true so that this class can continue to intercept all the
|
| - // subsequent events.
|
| - if (event.getActionMasked() == MotionEvent.ACTION_DOWN && !isOnTabStrip(event)) {
|
| - return true;
|
| - }
|
| -
|
| - return mSwipeRecognizer.onTouchEvent(event);
|
| - }
|
| -
|
| - @Override
|
| - public boolean onInterceptTouchEvent(MotionEvent event) {
|
| - if (mSwipeHandler == null) return false;
|
| -
|
| - return mSwipeRecognizer.onTouchEvent(event);
|
| - }
|
| -
|
| - private boolean isOnTabStrip(MotionEvent e) {
|
| - return e.getY() <= mTabStripHeight;
|
| - }
|
| -
|
| - private class SwipeRecognizerImpl extends SwipeRecognizer {
|
| - public SwipeRecognizerImpl(Context context) {
|
| - super(context);
|
| - }
|
| -
|
| - @Override
|
| - public boolean shouldRecognizeSwipe(MotionEvent e1, MotionEvent e2) {
|
| - if (isOnTabStrip(e1)) return false;
|
| - if (mToolbar.shouldIgnoreSwipeGesture()) return false;
|
| - if (UiUtils.isKeyboardShowing(getContext(), ToolbarControlContainer.this)) return false;
|
| - return true;
|
| - }
|
| - }
|
| -}
|
|
|