| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.toolbar; | 5 package org.chromium.chrome.browser.toolbar; |
| 6 | 6 |
| 7 import android.annotation.SuppressLint; | 7 import android.annotation.SuppressLint; |
| 8 import android.content.Context; | 8 import android.content.Context; |
| 9 import android.graphics.Canvas; | 9 import android.graphics.Canvas; |
| 10 import android.graphics.Rect; | 10 import android.graphics.Rect; |
| 11 import android.graphics.drawable.Drawable; | 11 import android.graphics.drawable.Drawable; |
| 12 import android.os.SystemClock; | 12 import android.os.SystemClock; |
| 13 import android.util.AttributeSet; | 13 import android.util.AttributeSet; |
| 14 import android.view.Gravity; | 14 import android.view.Gravity; |
| 15 import android.view.MotionEvent; | 15 import android.view.MotionEvent; |
| 16 import android.view.View; | 16 import android.view.View; |
| 17 import android.view.ViewGroup; | 17 import android.view.ViewGroup; |
| 18 import android.widget.FrameLayout; | 18 import android.widget.FrameLayout; |
| 19 import android.widget.ProgressBar; | 19 import android.widget.ProgressBar; |
| 20 import android.widget.Toast; | 20 import android.widget.Toast; |
| 21 | 21 |
| 22 import org.chromium.chrome.R; | 22 import org.chromium.chrome.R; |
| 23 import org.chromium.chrome.browser.Tab; | 23 import org.chromium.chrome.browser.Tab; |
| 24 import org.chromium.chrome.browser.appmenu.AppMenuButtonHelper; | 24 import org.chromium.chrome.browser.appmenu.AppMenuButtonHelper; |
| 25 import org.chromium.chrome.browser.compositor.Invalidator; | 25 import org.chromium.chrome.browser.compositor.Invalidator; |
| 26 import org.chromium.chrome.browser.ntp.NewTabPage; | 26 import org.chromium.chrome.browser.ntp.NewTabPage; |
| 27 import org.chromium.chrome.browser.omnibox.LocationBar; | 27 import org.chromium.chrome.browser.omnibox.LocationBar; |
| 28 import org.chromium.chrome.browser.util.ViewUtils; | 28 import org.chromium.chrome.browser.util.ViewUtils; |
| 29 import org.chromium.chrome.browser.widget.SmoothProgressBar; |
| 29 import org.chromium.chrome.browser.widget.TintedImageButton; | 30 import org.chromium.chrome.browser.widget.TintedImageButton; |
| 30 import org.chromium.chrome.browser.widget.ToolbarProgressBar; | |
| 31 import org.chromium.ui.UiUtils; | 31 import org.chromium.ui.UiUtils; |
| 32 | 32 |
| 33 /** | 33 /** |
| 34 * Layout class that contains the base shared logic for manipulating the toolbar
component. For | 34 * Layout class that contains the base shared logic for manipulating the toolbar
component. For |
| 35 * interaction that are not from Views inside Toolbar hierarchy all interactions
should be done | 35 * interaction that are not from Views inside Toolbar hierarchy all interactions
should be done |
| 36 * through {@link Toolbar} rather than using this class directly. | 36 * through {@link Toolbar} rather than using this class directly. |
| 37 */ | 37 */ |
| 38 abstract class ToolbarLayout extends FrameLayout implements Toolbar { | 38 abstract class ToolbarLayout extends FrameLayout implements Toolbar { |
| 39 protected static final int BACKGROUND_TRANSITION_DURATION_MS = 400; | 39 protected static final int BACKGROUND_TRANSITION_DURATION_MS = 400; |
| 40 | 40 |
| 41 private Invalidator mInvalidator; | 41 private Invalidator mInvalidator; |
| 42 | 42 |
| 43 private final int[] mTempPosition = new int[2]; | 43 private final int[] mTempPosition = new int[2]; |
| 44 | 44 |
| 45 /** | 45 /** |
| 46 * The ImageButton view that represents the menu button. | 46 * The ImageButton view that represents the menu button. |
| 47 */ | 47 */ |
| 48 protected TintedImageButton mMenuButton; | 48 protected TintedImageButton mMenuButton; |
| 49 private AppMenuButtonHelper mAppMenuButtonHelper; | 49 private AppMenuButtonHelper mAppMenuButtonHelper; |
| 50 | 50 |
| 51 private ToolbarDataProvider mToolbarDataProvider; | 51 private ToolbarDataProvider mToolbarDataProvider; |
| 52 private ToolbarTabController mToolbarTabController; | 52 private ToolbarTabController mToolbarTabController; |
| 53 private ToolbarProgressBar mProgressBar; | 53 private SmoothProgressBar mProgressBar; |
| 54 | 54 |
| 55 private boolean mNativeLibraryReady; | 55 private boolean mNativeLibraryReady; |
| 56 private boolean mUrlHasFocus; | 56 private boolean mUrlHasFocus; |
| 57 | 57 |
| 58 private long mFirstDrawTimeMs; | 58 private long mFirstDrawTimeMs; |
| 59 | 59 |
| 60 protected final int mToolbarHeightWithoutShadow; | 60 protected final int mToolbarHeightWithoutShadow; |
| 61 | 61 |
| 62 private boolean mFindInPageToolbarShowing; | 62 private boolean mFindInPageToolbarShowing; |
| 63 | 63 |
| 64 /** | 64 /** |
| 65 * Basic constructor for {@link ToolbarLayout}. | 65 * Basic constructor for {@link ToolbarLayout}. |
| 66 */ | 66 */ |
| 67 public ToolbarLayout(Context context, AttributeSet attrs) { | 67 public ToolbarLayout(Context context, AttributeSet attrs) { |
| 68 super(context, attrs); | 68 super(context, attrs); |
| 69 mToolbarHeightWithoutShadow = getResources().getDimensionPixelOffset( | 69 mToolbarHeightWithoutShadow = getResources().getDimensionPixelOffset( |
| 70 getToolbarHeightWithoutShadowResId()); | 70 getToolbarHeightWithoutShadowResId()); |
| 71 } | 71 } |
| 72 | 72 |
| 73 @Override | 73 @Override |
| 74 protected void onFinishInflate() { | 74 protected void onFinishInflate() { |
| 75 super.onFinishInflate(); | 75 super.onFinishInflate(); |
| 76 | 76 |
| 77 mProgressBar = (ToolbarProgressBar) findViewById(R.id.progress); | 77 mProgressBar = (SmoothProgressBar) findViewById(R.id.progress); |
| 78 if (mProgressBar != null) { | 78 if (mProgressBar != null) { |
| 79 removeView(mProgressBar); | 79 removeView(mProgressBar); |
| 80 Drawable progressDrawable = mProgressBar.getProgressDrawable(); |
| 80 getFrameLayoutParams(mProgressBar).topMargin = mToolbarHeightWithout
Shadow | 81 getFrameLayoutParams(mProgressBar).topMargin = mToolbarHeightWithout
Shadow |
| 81 - getFrameLayoutParams(mProgressBar).height; | 82 - progressDrawable.getIntrinsicHeight(); |
| 82 } | 83 } |
| 83 | 84 |
| 84 mMenuButton = (TintedImageButton) findViewById(R.id.menu_button); | 85 mMenuButton = (TintedImageButton) findViewById(R.id.menu_button); |
| 85 // Initialize the provider to an empty version to avoid null checking ev
erywhere. | 86 // Initialize the provider to an empty version to avoid null checking ev
erywhere. |
| 86 mToolbarDataProvider = new ToolbarDataProvider() { | 87 mToolbarDataProvider = new ToolbarDataProvider() { |
| 87 @Override | 88 @Override |
| 88 public boolean isIncognito() { | 89 public boolean isIncognito() { |
| 89 return false; | 90 return false; |
| 90 } | 91 } |
| 91 | 92 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 103 public boolean wouldReplaceURL() { | 104 public boolean wouldReplaceURL() { |
| 104 return false; | 105 return false; |
| 105 } | 106 } |
| 106 | 107 |
| 107 @Override | 108 @Override |
| 108 public NewTabPage getNewTabPageForCurrentTab() { | 109 public NewTabPage getNewTabPageForCurrentTab() { |
| 109 return null; | 110 return null; |
| 110 } | 111 } |
| 111 | 112 |
| 112 @Override | 113 @Override |
| 114 public int getLoadProgress() { |
| 115 return 0; |
| 116 } |
| 117 |
| 118 @Override |
| 113 public String getCorpusChipText() { | 119 public String getCorpusChipText() { |
| 114 return null; | 120 return null; |
| 115 } | 121 } |
| 116 | 122 |
| 117 @Override | 123 @Override |
| 118 public int getPrimaryColor() { | 124 public int getPrimaryColor() { |
| 119 return 0; | 125 return 0; |
| 120 } | 126 } |
| 121 | 127 |
| 122 @Override | 128 @Override |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 /** | 179 /** |
| 174 * @return The menu button view. | 180 * @return The menu button view. |
| 175 */ | 181 */ |
| 176 protected View getMenuButton() { | 182 protected View getMenuButton() { |
| 177 return mMenuButton; | 183 return mMenuButton; |
| 178 } | 184 } |
| 179 | 185 |
| 180 /** | 186 /** |
| 181 * @return The {@link ProgressBar} this layout uses. | 187 * @return The {@link ProgressBar} this layout uses. |
| 182 */ | 188 */ |
| 183 ToolbarProgressBar getProgressBar() { | 189 SmoothProgressBar getProgressBar() { |
| 184 return mProgressBar; | 190 return mProgressBar; |
| 185 } | 191 } |
| 186 | 192 |
| 187 @Override | 193 @Override |
| 188 public void getPositionRelativeToContainer(View containerView, int[] positio
n) { | 194 public void getPositionRelativeToContainer(View containerView, int[] positio
n) { |
| 189 ViewUtils.getRelativeDrawPosition(containerView, this, position); | 195 ViewUtils.getRelativeDrawPosition(containerView, this, position); |
| 190 } | 196 } |
| 191 | 197 |
| 192 /** | 198 /** |
| 193 * @return The helper for menu button UI interactions. | 199 * @return The helper for menu button UI interactions. |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 return mFirstDrawTimeMs; | 496 return mFirstDrawTimeMs; |
| 491 } | 497 } |
| 492 | 498 |
| 493 /** | 499 /** |
| 494 * Notified when a navigation to a different page has occurred. | 500 * Notified when a navigation to a different page has occurred. |
| 495 */ | 501 */ |
| 496 protected void onNavigatedToDifferentPage() { | 502 protected void onNavigatedToDifferentPage() { |
| 497 } | 503 } |
| 498 | 504 |
| 499 /** | 505 /** |
| 500 * Starts load progress. | |
| 501 */ | |
| 502 protected void startLoadProgress() { | |
| 503 if (mProgressBar != null) { | |
| 504 mProgressBar.start(); | |
| 505 } | |
| 506 } | |
| 507 | |
| 508 /** | |
| 509 * Sets load progress. | 506 * Sets load progress. |
| 510 * @param progress The load progress between 0 and 1. | 507 * @param progress The load progress between 0 and 100. |
| 511 */ | 508 */ |
| 512 protected void setLoadProgress(float progress) { | 509 protected void setLoadProgress(int progress) { |
| 513 if (mProgressBar != null) { | 510 if (mProgressBar != null) mProgressBar.setProgress(progress); |
| 514 mProgressBar.setProgress(progress); | |
| 515 } | |
| 516 } | 511 } |
| 517 | 512 |
| 518 /** | 513 /** |
| 519 * Finishes load progress. | |
| 520 * @param delayed Whether hiding progress bar should be delayed to give enou
gh time for user to | |
| 521 * recognize the last state. | |
| 522 */ | |
| 523 protected void finishLoadProgress(boolean delayed) { | |
| 524 if (mProgressBar != null) { | |
| 525 mProgressBar.finish(delayed); | |
| 526 } | |
| 527 } | |
| 528 | |
| 529 /** | |
| 530 * Finish any toolbar animations. | 514 * Finish any toolbar animations. |
| 531 */ | 515 */ |
| 532 public void finishAnimations() { } | 516 public void finishAnimations() { } |
| 533 | 517 |
| 534 /** | 518 /** |
| 535 * @return The current View showing in the Tab. | 519 * @return The current View showing in the Tab. |
| 536 */ | 520 */ |
| 537 protected View getCurrentTabView() { | 521 protected View getCurrentTabView() { |
| 538 Tab tab = mToolbarDataProvider.getTab(); | 522 Tab tab = mToolbarDataProvider.getTab(); |
| 539 if (tab != null) { | 523 if (tab != null) { |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 584 } | 568 } |
| 585 | 569 |
| 586 /** | 570 /** |
| 587 * Opens hompage in the current tab. | 571 * Opens hompage in the current tab. |
| 588 */ | 572 */ |
| 589 protected void openHomepage() { | 573 protected void openHomepage() { |
| 590 getLocationBar().hideSuggestions(); | 574 getLocationBar().hideSuggestions(); |
| 591 if (mToolbarTabController != null) mToolbarTabController.openHomepage(); | 575 if (mToolbarTabController != null) mToolbarTabController.openHomepage(); |
| 592 } | 576 } |
| 593 } | 577 } |
| OLD | NEW |