Chromium Code Reviews| 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.content.Context; | 7 import android.content.Context; |
| 8 import android.content.res.Configuration; | 8 import android.content.res.Configuration; |
| 9 import android.graphics.drawable.ClipDrawable; | 9 import android.graphics.drawable.ClipDrawable; |
| 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.CommandLine; | 23 import org.chromium.base.CommandLine; |
| 23 import org.chromium.chrome.browser.EmptyTabObserver; | 24 import org.chromium.chrome.browser.EmptyTabObserver; |
| 24 import org.chromium.chrome.browser.Tab; | 25 import org.chromium.chrome.browser.Tab; |
| 25 import org.chromium.chrome.browser.TabObserver; | 26 import org.chromium.chrome.browser.TabObserver; |
| 26 import org.chromium.chrome.browser.appmenu.AppMenuButtonHelper; | 27 import org.chromium.chrome.browser.appmenu.AppMenuButtonHelper; |
| 27 import org.chromium.chrome.browser.appmenu.AppMenuHandler; | 28 import org.chromium.chrome.browser.appmenu.AppMenuHandler; |
| 28 import org.chromium.chrome.shell.omnibox.SuggestionPopup; | 29 import org.chromium.chrome.shell.omnibox.SuggestionPopup; |
| 29 import org.chromium.content.common.ContentSwitches; | 30 import org.chromium.content.common.ContentSwitches; |
| 30 | 31 |
| 31 /** | 32 /** |
| 32 * A Toolbar {@link View} that shows the URL and navigation buttons. | 33 * A Toolbar {@link View} that shows the URL and navigation buttons. |
| 33 */ | 34 */ |
| 34 public class ChromeShellToolbar extends LinearLayout { | 35 public class ChromeShellToolbar extends LinearLayout { |
| 35 private static final long COMPLETED_PROGRESS_TIMEOUT_MS = 200; | 36 private static final long COMPLETED_PROGRESS_TIMEOUT_MS = 200; |
| 36 | 37 |
| 37 private final Runnable mClearProgressRunnable = new Runnable() { | 38 private final Runnable mClearProgressRunnable = new Runnable() { |
| 38 @Override | 39 @Override |
| 39 public void run() { | 40 public void run() { |
| 40 mProgressDrawable.setLevel(0); | 41 mProgressDrawable.setLevel(0); |
| 41 } | 42 } |
| 42 }; | 43 }; |
| 43 | 44 |
| 45 private final Runnable mUpdateProgressRunnable = new Runnable() { | |
| 46 @Override | |
| 47 public void run() { | |
| 48 mProgressDrawable.setLevel(100 * mProgress); | |
| 49 if (mLoading) { | |
| 50 mStopReloadButton.setImageResource(R.drawable.btn_stop_normal); | |
| 51 } else { | |
| 52 mStopReloadButton.setImageResource(R.drawable.btn_reload_normal) ; | |
| 53 ApiCompatibilityUtils.postOnAnimationDelayed(ChromeShellToolbar. this, | |
| 54 mClearProgressRunnable, COMPLETED_PROGRESS_TIMEOUT_MS); | |
| 55 } | |
| 56 } | |
| 57 }; | |
| 58 | |
| 44 private EditText mUrlTextView; | 59 private EditText mUrlTextView; |
| 45 private ClipDrawable mProgressDrawable; | 60 private ClipDrawable mProgressDrawable; |
| 46 | 61 |
| 47 private ChromeShellTab mTab; | 62 private ChromeShellTab mTab; |
| 48 private final TabObserver mTabObserver; | 63 private final TabObserver mTabObserver; |
| 49 | 64 |
| 50 private AppMenuHandler mMenuHandler; | 65 private AppMenuHandler mMenuHandler; |
| 51 private AppMenuButtonHelper mAppMenuButtonHelper; | 66 private AppMenuButtonHelper mAppMenuButtonHelper; |
| 52 | 67 |
| 53 private SuggestionPopup mSuggestionPopup; | 68 private SuggestionPopup mSuggestionPopup; |
| 54 | 69 |
| 55 private ImageButton mStopReloadButton; | 70 private ImageButton mStopReloadButton; |
| 71 private int mProgress = 0; | |
| 56 private boolean mLoading = true; | 72 private boolean mLoading = true; |
| 57 | 73 |
| 58 /** | 74 /** |
| 59 * @param context The Context the view is running in. | 75 * @param context The Context the view is running in. |
| 60 * @param attrs The attributes of the XML tag that is inflating the view. | 76 * @param attrs The attributes of the XML tag that is inflating the view. |
| 61 */ | 77 */ |
| 62 public ChromeShellToolbar(Context context, AttributeSet attrs) { | 78 public ChromeShellToolbar(Context context, AttributeSet attrs) { |
| 63 super(context, attrs); | 79 super(context, attrs); |
| 64 // When running performance benchmark, we don't want to observe the tab | 80 // When running performance benchmark, we don't want to observe the tab |
| 65 // invalidation which would interfere with browser's processing content | 81 // invalidation which would interfere with browser's processing content |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 81 mTab = tab; | 97 mTab = tab; |
| 82 mTab.addObserver(mTabObserver); | 98 mTab.addObserver(mTabObserver); |
| 83 mUrlTextView.setText(mTab.getWebContents().getUrl()); | 99 mUrlTextView.setText(mTab.getWebContents().getUrl()); |
| 84 } | 100 } |
| 85 | 101 |
| 86 private void onUpdateUrl(String url) { | 102 private void onUpdateUrl(String url) { |
| 87 mUrlTextView.setText(url); | 103 mUrlTextView.setText(url); |
| 88 } | 104 } |
| 89 | 105 |
| 90 private void onLoadProgressChanged(int progress) { | 106 private void onLoadProgressChanged(int progress) { |
| 91 removeCallbacks(mClearProgressRunnable); | 107 removeCallbacks(mClearProgressRunnable); |
|
nyquist
2014/09/18 21:43:23
Should this stay here or move to the other update
jdduke (slow)
2014/09/18 21:59:22
I think it can go there, but then we might have a
| |
| 92 mProgressDrawable.setLevel(100 * progress); | 108 removeCallbacks(mUpdateProgressRunnable); |
| 109 mProgress = progress; | |
| 93 mLoading = progress != 100; | 110 mLoading = progress != 100; |
| 94 if (mLoading) { | 111 ApiCompatibilityUtils.postOnAnimation(this, mUpdateProgressRunnable); |
| 95 mStopReloadButton.setImageResource(R.drawable.btn_stop_normal); | |
| 96 } else { | |
| 97 mStopReloadButton.setImageResource(R.drawable.btn_reload_normal); | |
| 98 postDelayed(mClearProgressRunnable, COMPLETED_PROGRESS_TIMEOUT_MS); | |
| 99 } | |
| 100 } | 112 } |
| 101 | 113 |
| 102 /** | 114 /** |
| 103 * Closes the suggestion popup. | 115 * Closes the suggestion popup. |
| 104 */ | 116 */ |
| 105 public void hideSuggestions() { | 117 public void hideSuggestions() { |
| 106 if (mSuggestionPopup != null) mSuggestionPopup.hideSuggestions(); | 118 if (mSuggestionPopup != null) mSuggestionPopup.hideSuggestions(); |
| 107 } | 119 } |
| 108 | 120 |
| 109 @Override | 121 @Override |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 230 public void onLoadProgressChanged(Tab tab, int progress) { | 242 public void onLoadProgressChanged(Tab tab, int progress) { |
| 231 if (tab == mTab) ChromeShellToolbar.this.onLoadProgressChanged(progr ess); | 243 if (tab == mTab) ChromeShellToolbar.this.onLoadProgressChanged(progr ess); |
| 232 } | 244 } |
| 233 | 245 |
| 234 @Override | 246 @Override |
| 235 public void onUpdateUrl(Tab tab, String url) { | 247 public void onUpdateUrl(Tab tab, String url) { |
| 236 if (tab == mTab) ChromeShellToolbar.this.onUpdateUrl(url); | 248 if (tab == mTab) ChromeShellToolbar.this.onUpdateUrl(url); |
| 237 } | 249 } |
| 238 } | 250 } |
| 239 } | 251 } |
| OLD | NEW |