| Index: chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java
|
| diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java
|
| deleted file mode 100644
|
| index d8b9541f3db316e038f9eddfc50ad7689bdf3f2d..0000000000000000000000000000000000000000
|
| --- a/chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java
|
| +++ /dev/null
|
| @@ -1,514 +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.annotation.SuppressLint;
|
| -import android.content.Context;
|
| -import android.graphics.Bitmap;
|
| -import android.graphics.Canvas;
|
| -import android.graphics.Rect;
|
| -import android.graphics.drawable.Drawable;
|
| -import android.os.SystemClock;
|
| -import android.util.AttributeSet;
|
| -import android.view.MotionEvent;
|
| -import android.view.View;
|
| -import android.view.ViewGroup;
|
| -import android.widget.FrameLayout;
|
| -import android.widget.ProgressBar;
|
| -
|
| -import org.chromium.chrome.R;
|
| -import org.chromium.chrome.browser.Tab;
|
| -import org.chromium.chrome.browser.appmenu.AppMenuButtonHelper;
|
| -import org.chromium.chrome.browser.compositor.Invalidator;
|
| -import org.chromium.chrome.browser.ntp.NewTabPage;
|
| -import org.chromium.chrome.browser.omnibox.LocationBar;
|
| -import org.chromium.chrome.browser.util.ViewUtils;
|
| -import org.chromium.chrome.browser.widget.SmoothProgressBar;
|
| -import org.chromium.chrome.browser.widget.TintedImageButton;
|
| -import org.chromium.ui.UiUtils;
|
| -
|
| -/**
|
| - * Layout class that contains the base shared logic for manipulating the toolbar component. For
|
| - * interaction that are not from Views inside Toolbar hierarchy all interactions should be done
|
| - * through {@link Toolbar} rather than using this class directly.
|
| - */
|
| -abstract class ToolbarLayout extends FrameLayout implements Toolbar {
|
| - protected static final int BACKGROUND_TRANSITION_DURATION_MS = 400;
|
| -
|
| - private Invalidator mInvalidator;
|
| -
|
| - private final int[] mTempPosition = new int[2];
|
| -
|
| - /**
|
| - * The ImageButton view that represents the menu button.
|
| - */
|
| - protected TintedImageButton mMenuButton;
|
| - private AppMenuButtonHelper mAppMenuButtonHelper;
|
| -
|
| - private ToolbarDataProvider mToolbarDataProvider;
|
| - private ToolbarTabController mToolbarTabController;
|
| - private SmoothProgressBar mProgressBar;
|
| -
|
| - private boolean mNativeLibraryReady;
|
| - private boolean mUrlHasFocus;
|
| -
|
| - private long mFirstDrawTimeMs;
|
| -
|
| - protected final int mToolbarHeightWithoutShadow;
|
| -
|
| - private boolean mFindInPageToolbarShowing;
|
| -
|
| - /**
|
| - * Basic constructor for {@link ToolbarLayout}.
|
| - */
|
| - public ToolbarLayout(Context context, AttributeSet attrs) {
|
| - super(context, attrs);
|
| - mToolbarHeightWithoutShadow = getResources().getDimensionPixelOffset(
|
| - getToolbarHeightWithoutShadowResId());
|
| - }
|
| -
|
| - @Override
|
| - protected void onFinishInflate() {
|
| - super.onFinishInflate();
|
| -
|
| - mProgressBar = (SmoothProgressBar) findViewById(R.id.progress);
|
| - if (mProgressBar != null) {
|
| - removeView(mProgressBar);
|
| - Drawable progressDrawable = mProgressBar.getProgressDrawable();
|
| - getFrameLayoutParams(mProgressBar).topMargin = mToolbarHeightWithoutShadow
|
| - - progressDrawable.getIntrinsicHeight();
|
| - }
|
| -
|
| - mMenuButton = (TintedImageButton) findViewById(R.id.menu_button);
|
| - // Initialize the provider to an empty version to avoid null checking everywhere.
|
| - mToolbarDataProvider = new ToolbarDataProvider() {
|
| - @Override
|
| - public boolean isIncognito() {
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public Tab getTab() {
|
| - return null;
|
| - }
|
| -
|
| - @Override
|
| - public String getText() {
|
| - return null;
|
| - }
|
| -
|
| - @Override
|
| - public boolean wouldReplaceURL() {
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public NewTabPage getNewTabPageForCurrentTab() {
|
| - return null;
|
| - }
|
| -
|
| - @Override
|
| - public int getLoadProgress() {
|
| - return 0;
|
| - }
|
| -
|
| - @Override
|
| - public String getCorpusChipText() {
|
| - return null;
|
| - }
|
| -
|
| - @Override
|
| - public int getPrimaryColor() {
|
| - return 0;
|
| - }
|
| -
|
| - @Override
|
| - public boolean isUsingBrandColor() {
|
| - return false;
|
| - }
|
| - };
|
| - }
|
| -
|
| - /**
|
| - * Quick getter for LayoutParams for a View inside a FrameLayout.
|
| - * @param view {@link View} to fetch the layout params for.
|
| - * @return {@link LayoutParams} the given {@link View} is currently using.
|
| - */
|
| - protected FrameLayout.LayoutParams getFrameLayoutParams(View view) {
|
| - return ((FrameLayout.LayoutParams) view.getLayoutParams());
|
| - }
|
| -
|
| - /**
|
| - * @return The resource id to be used while getting the toolbar height with no shadow.
|
| - */
|
| - protected int getToolbarHeightWithoutShadowResId() {
|
| - return R.dimen.toolbar_height_no_shadow;
|
| - }
|
| -
|
| - @Override
|
| - public void initialize(ToolbarDataProvider toolbarDataProvider,
|
| - ToolbarTabController tabController, AppMenuButtonHelper appMenuButtonHelper) {
|
| - mToolbarDataProvider = toolbarDataProvider;
|
| - mToolbarTabController = tabController;
|
| -
|
| - mMenuButton.setOnTouchListener(new OnTouchListener() {
|
| - @Override
|
| - @SuppressLint("ClickableViewAccessibility")
|
| - public boolean onTouch(View v, MotionEvent event) {
|
| - return mAppMenuButtonHelper.onTouch(v, event);
|
| - }
|
| - });
|
| - mAppMenuButtonHelper = appMenuButtonHelper;
|
| - }
|
| -
|
| - /**
|
| - * This function handles native dependent initialization for this class
|
| - */
|
| - public void onNativeLibraryReady() {
|
| - mNativeLibraryReady = true;
|
| - }
|
| -
|
| - /**
|
| - * @return The menu button view.
|
| - */
|
| - protected View getMenuButton() {
|
| - return mMenuButton;
|
| - }
|
| -
|
| - /**
|
| - * @return The {@link ProgressBar} this layout uses.
|
| - */
|
| - SmoothProgressBar getProgressBar() {
|
| - return mProgressBar;
|
| - }
|
| -
|
| - @Override
|
| - public void getPositionRelativeToContainer(View containerView, int[] position) {
|
| - ViewUtils.getRelativeDrawPosition(containerView, this, position);
|
| - }
|
| -
|
| - /**
|
| - * @return The helper for menu button UI interactions.
|
| - */
|
| - protected AppMenuButtonHelper getMenuButtonHelper() {
|
| - return mAppMenuButtonHelper;
|
| - }
|
| -
|
| - /**
|
| - * @return Whether or not the native library is loaded and ready.
|
| - */
|
| - protected boolean isNativeLibraryReady() {
|
| - return mNativeLibraryReady;
|
| - }
|
| -
|
| - @Override
|
| - protected void onDraw(Canvas canvas) {
|
| - super.onDraw(canvas);
|
| - recordFirstDrawTime();
|
| - }
|
| -
|
| - @Override
|
| - protected void onAttachedToWindow() {
|
| - super.onAttachedToWindow();
|
| - if (mProgressBar != null) {
|
| - ViewGroup controlContainer =
|
| - (ViewGroup) getRootView().findViewById(R.id.control_container);
|
| - int progressBarPosition = UiUtils.insertAfter(
|
| - controlContainer, mProgressBar, (View) getParent());
|
| - assert progressBarPosition >= 0;
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * @return The provider for toolbar related data.
|
| - */
|
| - protected ToolbarDataProvider getToolbarDataProvider() {
|
| - return mToolbarDataProvider;
|
| - }
|
| -
|
| - @Override
|
| - public void setPaintInvalidator(Invalidator invalidator) {
|
| - mInvalidator = invalidator;
|
| - }
|
| -
|
| - /**
|
| - * Triggers a paint but allows the {@link Invalidator} set by
|
| - * {@link #setPaintInvalidator(Invalidator)} to decide when to actually invalidate.
|
| - * @param client A {@link Invalidator.Client} instance that wants to be invalidated.
|
| - */
|
| - protected void triggerPaintInvalidate(Invalidator.Client client) {
|
| - if (mInvalidator == null) {
|
| - client.doInvalidate();
|
| - } else {
|
| - mInvalidator.invalidate(client);
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Gives inheriting classes the chance to respond to
|
| - * {@link org.chromium.chrome.browser.widget.findinpage.FindToolbar} state changes.
|
| - * @param showing Whether or not the {@code FindToolbar} will be showing.
|
| - */
|
| - protected void handleFindToolbarStateChange(boolean showing) {
|
| - mFindInPageToolbarShowing = showing;
|
| - }
|
| -
|
| - @Override
|
| - public void setOnTabSwitcherClickHandler(OnClickListener listener) { }
|
| -
|
| - @Override
|
| - public void setOnNewTabClickHandler(OnClickListener listener) { }
|
| -
|
| - @Override
|
| - public void setBookmarkClickHandler(OnClickListener listener) { }
|
| -
|
| - @Override
|
| - public void setCustomTabReturnClickHandler(OnClickListener listener) { }
|
| -
|
| - /**
|
| - * Gives inheriting classes the chance to update the visibility of the
|
| - * back button.
|
| - * @param canGoBack Whether or not the current tab has any history to go back to.
|
| - */
|
| - protected void updateBackButtonVisibility(boolean canGoBack) { }
|
| -
|
| - /**
|
| - * Gives inheriting classes the chance to update the visibility of the
|
| - * forward button.
|
| - * @param canGoForward Whether or not the current tab has any history to go forward to.
|
| - */
|
| - protected void updateForwardButtonVisibility(boolean canGoForward) { }
|
| -
|
| - /**
|
| - * Gives inheriting classes the chance to update the visibility of the
|
| - * reload button.
|
| - * @param isReloading Whether or not the current tab is loading.
|
| - */
|
| - protected void updateReloadButtonVisibility(boolean isReloading) { }
|
| -
|
| - /**
|
| - * Gives inheriting classes the chance to update the visibility of the
|
| - * bookmark button.
|
| - * @param isBookmarked Whether or not the current tab is already bookmarked.
|
| - */
|
| - protected void updateBookmarkButtonVisibility(boolean isBookmarked) { }
|
| -
|
| - /**
|
| - * Gives inheriting classes the chance to respond to accessibility state changes.
|
| - * @param enabled Whether or not accessibility is enabled.
|
| - */
|
| - protected void onAccessibilityStatusChanged(boolean enabled) { }
|
| -
|
| - /**
|
| - * Gives inheriting classes the chance to do the necessary UI operations after Chrome is
|
| - * restored to a previously saved state.
|
| - */
|
| - protected void onStateRestored() { }
|
| -
|
| - /**
|
| - * Gives inheriting classes the chance to update home button UI if home button preference is
|
| - * changed.
|
| - * @param homeButtonEnabled Whether or not home button is enabled in preference.
|
| - */
|
| - protected void onHomeButtonUpdate(boolean homeButtonEnabled) { }
|
| -
|
| - /**
|
| - * Triggered when the current tab or model has changed.
|
| - * <p>
|
| - * As there are cases where you can select a model with no tabs (i.e. having incognito
|
| - * tabs but no normal tabs will still allow you to select the normal model), this should
|
| - * not guarantee that the model's current tab is non-null.
|
| - */
|
| - protected void onTabOrModelChanged() {
|
| - NewTabPage ntp = getToolbarDataProvider().getNewTabPageForCurrentTab();
|
| - if (ntp != null) getLocationBar().onTabLoadingNTP(ntp);
|
| -
|
| - getLocationBar().updateMicButtonState();
|
| - }
|
| -
|
| - /**
|
| - * For extending classes to override and carry out the changes related with the primary color
|
| - * for the current tab changing.
|
| - */
|
| - protected void onPrimaryColorChanged() { }
|
| -
|
| - @Override
|
| - public void addCustomActionButton(Bitmap buttonSource, OnClickListener listener) { }
|
| -
|
| - /**
|
| - * Triggered when the content view for the specified tab has changed.
|
| - */
|
| - protected void onTabContentViewChanged() {
|
| - NewTabPage ntp = getToolbarDataProvider().getNewTabPageForCurrentTab();
|
| - if (ntp != null) getLocationBar().onTabLoadingNTP(ntp);
|
| - }
|
| -
|
| - @Override
|
| - public boolean isReadyForTextureCapture() {
|
| - return true;
|
| - }
|
| -
|
| - /**
|
| - * @param attached Whether or not the web content is attached to the view heirarchy.
|
| - */
|
| - protected void setContentAttached(boolean attached) { }
|
| -
|
| - /**
|
| - * Gives inheriting classes the chance to show or hide the TabSwitcher mode of this toolbar.
|
| - * @param inTabSwitcherMode Whether or not TabSwitcher mode should be shown or hidden.
|
| - * @param showToolbar Whether or not to show the normal toolbar while animating.
|
| - * @param delayAnimation Whether or not to delay the animation until after the transition has
|
| - * finished (which can be detected by a call to
|
| - * {@link #onTabSwitcherTransitionFinished()}).
|
| - */
|
| - protected void setTabSwitcherMode(
|
| - boolean inTabSwitcherMode, boolean showToolbar, boolean delayAnimation) { }
|
| -
|
| - /**
|
| - * Gives inheriting classes the chance to update their state when the TabSwitcher transition has
|
| - * finished.
|
| - */
|
| - protected void onTabSwitcherTransitionFinished() { }
|
| -
|
| - /**
|
| - * Gives inheriting classes the chance to update themselves based on the
|
| - * number of tabs in the current TabModel.
|
| - * @param numberOfTabs The number of tabs in the current model.
|
| - */
|
| - protected void updateTabCountVisuals(int numberOfTabs) { }
|
| -
|
| - /**
|
| - * Gives inheriting classes the chance to update themselves based on default search engine
|
| - * changes.
|
| - */
|
| - protected void onDefaultSearchEngineChanged() { }
|
| -
|
| - @Override
|
| - public void getLocationBarContentRect(Rect outRect) {
|
| - View container = getLocationBar().getContainerView();
|
| - outRect.set(container.getPaddingLeft(), container.getPaddingTop(),
|
| - container.getWidth() - container.getPaddingRight(),
|
| - container.getHeight() - container.getPaddingBottom());
|
| - ViewUtils.getRelativeDrawPosition(
|
| - this, getLocationBar().getContainerView(), mTempPosition);
|
| - outRect.offset(mTempPosition[0], mTempPosition[1]);
|
| - }
|
| -
|
| - @Override
|
| - public void setTextureCaptureMode(boolean textureMode) { }
|
| -
|
| - @Override
|
| - public boolean shouldIgnoreSwipeGesture() {
|
| - return mUrlHasFocus
|
| - || (mAppMenuButtonHelper != null && mAppMenuButtonHelper.isAppMenuActive())
|
| - || mFindInPageToolbarShowing;
|
| - }
|
| -
|
| - /**
|
| - * @return Whether or not the url bar has focus.
|
| - */
|
| - protected boolean urlHasFocus() {
|
| - return mUrlHasFocus;
|
| - }
|
| -
|
| - /**
|
| - * Triggered when the URL input field has gained or lost focus.
|
| - * @param hasFocus Whether the URL field has gained focus.
|
| - */
|
| - protected void onUrlFocusChange(boolean hasFocus) {
|
| - mUrlHasFocus = hasFocus;
|
| - }
|
| -
|
| - protected boolean shouldShowMenuButton() {
|
| - return true;
|
| - }
|
| -
|
| - /**
|
| - * Keeps track of the first time the toolbar is drawn.
|
| - */
|
| - private void recordFirstDrawTime() {
|
| - if (mFirstDrawTimeMs == 0) mFirstDrawTimeMs = SystemClock.elapsedRealtime();
|
| - }
|
| -
|
| - @Override
|
| - public long getFirstDrawTime() {
|
| - return mFirstDrawTimeMs;
|
| - }
|
| -
|
| - /**
|
| - * Notified when a navigation to a different page has occurred.
|
| - */
|
| - protected void onNavigatedToDifferentPage() {
|
| - }
|
| -
|
| - /**
|
| - * Sets load progress.
|
| - * @param progress The load progress between 0 and 100.
|
| - */
|
| - protected void setLoadProgress(int progress) {
|
| - if (mProgressBar != null) mProgressBar.setProgress(progress);
|
| - }
|
| -
|
| - @Override
|
| - public void finishAnimations() { }
|
| -
|
| - /**
|
| - * @return The current View showing in the Tab.
|
| - */
|
| - protected View getCurrentTabView() {
|
| - Tab tab = mToolbarDataProvider.getTab();
|
| - if (tab != null) {
|
| - return tab.getView();
|
| - }
|
| - return null;
|
| - }
|
| -
|
| - /**
|
| - * @return Whether or not the toolbar is incognito.
|
| - */
|
| - protected boolean isIncognito() {
|
| - return mToolbarDataProvider.isIncognito();
|
| - }
|
| -
|
| - @Override
|
| - public abstract LocationBar getLocationBar();
|
| -
|
| - /**
|
| - * Navigates the current Tab back.
|
| - * @return Whether or not the current Tab did go back.
|
| - */
|
| - protected boolean back() {
|
| - getLocationBar().hideSuggestions();
|
| - return mToolbarTabController != null ? mToolbarTabController.back() : false;
|
| - }
|
| -
|
| - /**
|
| - * Navigates the current Tab forward.
|
| - * @return Whether or not the current Tab did go forward.
|
| - */
|
| - protected boolean forward() {
|
| - getLocationBar().hideSuggestions();
|
| - return mToolbarTabController != null ? mToolbarTabController.forward() : false;
|
| - }
|
| -
|
| - /**
|
| - * If the page is currently loading, this will trigger the tab to stop. If the page is fully
|
| - * loaded, this will trigger a refresh.
|
| - *
|
| - * <p>The buttons of the toolbar will be updated as a result of making this call.
|
| - */
|
| - protected void stopOrReloadCurrentTab() {
|
| - getLocationBar().hideSuggestions();
|
| - if (mToolbarTabController != null) mToolbarTabController.stopOrReloadCurrentTab();
|
| - }
|
| -
|
| - /**
|
| - * Opens hompage in the current tab.
|
| - */
|
| - protected void openHomepage() {
|
| - getLocationBar().hideSuggestions();
|
| - if (mToolbarTabController != null) mToolbarTabController.openHomepage();
|
| - }
|
| -}
|
|
|