| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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.shell; | 5 package org.chromium.chrome.shell; |
| 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.content.res.Configuration; | 9 import android.content.res.Configuration; |
| 10 import android.util.AttributeSet; | 10 import android.util.AttributeSet; |
| 11 import android.view.KeyEvent; | 11 import android.view.KeyEvent; |
| 12 import android.view.MotionEvent; | 12 import android.view.MotionEvent; |
| 13 import android.view.View; | 13 import android.view.View; |
| 14 import android.view.inputmethod.EditorInfo; | 14 import android.view.inputmethod.EditorInfo; |
| 15 import android.view.inputmethod.InputMethodManager; | 15 import android.view.inputmethod.InputMethodManager; |
| 16 import android.widget.EditText; | 16 import android.widget.EditText; |
| 17 import android.widget.ImageButton; | 17 import android.widget.ImageButton; |
| 18 import android.widget.LinearLayout; | 18 import android.widget.LinearLayout; |
| 19 import android.widget.TextView; | 19 import android.widget.TextView; |
| 20 import android.widget.TextView.OnEditorActionListener; | 20 import android.widget.TextView.OnEditorActionListener; |
| 21 | 21 |
| 22 import org.chromium.base.ApiCompatibilityUtils; | 22 import org.chromium.base.ApiCompatibilityUtils; |
| 23 import org.chromium.base.CommandLine; | 23 import org.chromium.base.CommandLine; |
| 24 import org.chromium.chrome.browser.EmptyTabObserver; | 24 import org.chromium.chrome.browser.EmptyTabObserver; |
| 25 import org.chromium.chrome.browser.Tab; | 25 import org.chromium.chrome.browser.Tab; |
| 26 import org.chromium.chrome.browser.TabObserver; | 26 import org.chromium.chrome.browser.TabObserver; |
| 27 import org.chromium.chrome.browser.UrlUtilities; | 27 import org.chromium.chrome.browser.UrlUtilities; |
| 28 import org.chromium.chrome.browser.appmenu.AppMenuButtonHelper; | 28 import org.chromium.chrome.browser.appmenu.AppMenuButtonHelper; |
| 29 import org.chromium.chrome.browser.appmenu.AppMenuHandler; | 29 import org.chromium.chrome.browser.appmenu.AppMenuHandler; |
| 30 import org.chromium.chrome.browser.widget.ClipDrawableProgressBar; | 30 import org.chromium.chrome.browser.widget.SmoothProgressBar; |
| 31 import org.chromium.chrome.shell.omnibox.SuggestionPopup; | 31 import org.chromium.chrome.shell.omnibox.SuggestionPopup; |
| 32 import org.chromium.content.common.ContentSwitches; | 32 import org.chromium.content.common.ContentSwitches; |
| 33 | 33 |
| 34 /** | 34 /** |
| 35 * A Toolbar {@link View} that shows the URL and navigation buttons. | 35 * A Toolbar {@link View} that shows the URL and navigation buttons. |
| 36 */ | 36 */ |
| 37 public class ChromeShellToolbar extends LinearLayout { | 37 public class ChromeShellToolbar extends LinearLayout { |
| 38 private static final long COMPLETED_PROGRESS_TIMEOUT_MS = 200; |
| 39 |
| 40 private final Runnable mClearProgressRunnable = new Runnable() { |
| 41 @Override |
| 42 public void run() { |
| 43 mProgressBar.setProgress(0); |
| 44 } |
| 45 }; |
| 38 | 46 |
| 39 private final Runnable mUpdateProgressRunnable = new Runnable() { | 47 private final Runnable mUpdateProgressRunnable = new Runnable() { |
| 40 @Override | 48 @Override |
| 41 public void run() { | 49 public void run() { |
| 42 mProgressBar.setProgress(100 * mProgress); | 50 mProgressBar.setProgress(mProgress); |
| 43 if (mLoading) { | 51 if (mLoading) { |
| 44 mStopReloadButton.setImageResource( | 52 mStopReloadButton.setImageResource( |
| 45 R.drawable.btn_close); | 53 R.drawable.btn_close); |
| 46 } else { | 54 } else { |
| 47 mStopReloadButton.setImageResource(R.drawable.btn_toolbar_reload
); | 55 mStopReloadButton.setImageResource(R.drawable.btn_toolbar_reload
); |
| 56 ApiCompatibilityUtils.postOnAnimationDelayed(ChromeShellToolbar.
this, |
| 57 mClearProgressRunnable, COMPLETED_PROGRESS_TIMEOUT_MS); |
| 48 } | 58 } |
| 49 } | 59 } |
| 50 }; | 60 }; |
| 51 | 61 |
| 52 private EditText mUrlTextView; | 62 private EditText mUrlTextView; |
| 53 private ClipDrawableProgressBar mProgressBar; | 63 private SmoothProgressBar mProgressBar; |
| 54 | 64 |
| 55 private ChromeShellTab mTab; | 65 private ChromeShellTab mTab; |
| 56 private final TabObserver mTabObserver; | 66 private final TabObserver mTabObserver; |
| 57 | 67 |
| 58 private AppMenuHandler mMenuHandler; | 68 private AppMenuHandler mMenuHandler; |
| 59 private AppMenuButtonHelper mAppMenuButtonHelper; | 69 private AppMenuButtonHelper mAppMenuButtonHelper; |
| 60 | 70 |
| 61 private TabManager mTabManager; | 71 private TabManager mTabManager; |
| 62 | 72 |
| 63 private SuggestionPopup mSuggestionPopup; | 73 private SuggestionPopup mSuggestionPopup; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 */ | 116 */ |
| 107 public void setTabManager(TabManager tabManager) { | 117 public void setTabManager(TabManager tabManager) { |
| 108 mTabManager = tabManager; | 118 mTabManager = tabManager; |
| 109 } | 119 } |
| 110 | 120 |
| 111 private void onUpdateUrl(String url) { | 121 private void onUpdateUrl(String url) { |
| 112 mUrlTextView.setText(url); | 122 mUrlTextView.setText(url); |
| 113 } | 123 } |
| 114 | 124 |
| 115 private void onLoadProgressChanged(int progress) { | 125 private void onLoadProgressChanged(int progress) { |
| 126 removeCallbacks(mClearProgressRunnable); |
| 116 removeCallbacks(mUpdateProgressRunnable); | 127 removeCallbacks(mUpdateProgressRunnable); |
| 117 mProgress = progress; | 128 mProgress = progress; |
| 118 mLoading = progress != 100; | 129 mLoading = progress != 100; |
| 119 ApiCompatibilityUtils.postOnAnimation(this, mUpdateProgressRunnable); | 130 ApiCompatibilityUtils.postOnAnimation(this, mUpdateProgressRunnable); |
| 120 } | 131 } |
| 121 | 132 |
| 122 /** | 133 /** |
| 123 * Closes the suggestion popup. | 134 * Closes the suggestion popup. |
| 124 */ | 135 */ |
| 125 public void hideSuggestions() { | 136 public void hideSuggestions() { |
| 126 if (mSuggestionPopup != null) mSuggestionPopup.hideSuggestions(); | 137 if (mSuggestionPopup != null) mSuggestionPopup.hideSuggestions(); |
| 127 } | 138 } |
| 128 | 139 |
| 129 @Override | 140 @Override |
| 130 protected void onFinishInflate() { | 141 protected void onFinishInflate() { |
| 131 super.onFinishInflate(); | 142 super.onFinishInflate(); |
| 132 | 143 |
| 133 mProgressBar = (ClipDrawableProgressBar) findViewById(R.id.progress); | 144 mProgressBar = (SmoothProgressBar) findViewById(R.id.progress); |
| 134 initializeUrlField(); | 145 initializeUrlField(); |
| 135 initializeTabSwitcherButton(); | 146 initializeTabSwitcherButton(); |
| 136 initializeMenuButton(); | 147 initializeMenuButton(); |
| 137 initializeStopReloadButton(); | 148 initializeStopReloadButton(); |
| 138 initializeAddButton(); | 149 initializeAddButton(); |
| 139 } | 150 } |
| 140 | 151 |
| 141 void setMenuHandler(AppMenuHandler menuHandler) { | 152 void setMenuHandler(AppMenuHandler menuHandler) { |
| 142 mMenuHandler = menuHandler; | 153 mMenuHandler = menuHandler; |
| 143 mAppMenuButtonHelper = new AppMenuButtonHelper(mMenuHandler); | 154 mAppMenuButtonHelper = new AppMenuButtonHelper(mMenuHandler); |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 public void onLoadProgressChanged(Tab tab, int progress) { | 299 public void onLoadProgressChanged(Tab tab, int progress) { |
| 289 if (tab == mTab) ChromeShellToolbar.this.onLoadProgressChanged(progr
ess); | 300 if (tab == mTab) ChromeShellToolbar.this.onLoadProgressChanged(progr
ess); |
| 290 } | 301 } |
| 291 | 302 |
| 292 @Override | 303 @Override |
| 293 public void onUpdateUrl(Tab tab, String url) { | 304 public void onUpdateUrl(Tab tab, String url) { |
| 294 if (tab == mTab) ChromeShellToolbar.this.onUpdateUrl(url); | 305 if (tab == mTab) ChromeShellToolbar.this.onUpdateUrl(url); |
| 295 } | 306 } |
| 296 } | 307 } |
| 297 } | 308 } |
| OLD | NEW |