Index: chrome/android/java_staging/src/org/chromium/chrome/browser/omnibox/UrlContainer.java |
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/omnibox/UrlContainer.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/omnibox/UrlContainer.java |
deleted file mode 100644 |
index 284bd8ea069c4d1665f0cceb9fd8db7b60579006..0000000000000000000000000000000000000000 |
--- a/chrome/android/java_staging/src/org/chromium/chrome/browser/omnibox/UrlContainer.java |
+++ /dev/null |
@@ -1,273 +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.omnibox; |
- |
-import android.animation.Animator; |
-import android.animation.AnimatorListenerAdapter; |
-import android.animation.AnimatorSet; |
-import android.animation.ObjectAnimator; |
-import android.annotation.SuppressLint; |
-import android.content.Context; |
-import android.os.SystemClock; |
-import android.text.Layout; |
-import android.text.TextUtils; |
-import android.util.AttributeSet; |
-import android.util.LayoutDirection; |
-import android.view.View; |
-import android.view.ViewGroup; |
-import android.widget.TextView; |
- |
-import org.chromium.base.ApiCompatibilityUtils; |
-import org.chromium.chrome.R; |
-import org.chromium.chrome.browser.util.MathUtils; |
-import org.chromium.ui.interpolators.BakedBezierInterpolator; |
- |
-/** |
- * Widget that handles displaying the URL. Adds the capability to show the trailing portion |
- * of the URL in a separate text widget for animations. |
- */ |
-public class UrlContainer extends ViewGroup { |
- private static final int MIN_TRAILING_TEXT_SHOW_DURATION_MS = 3000; |
- private static final int MAX_TRAILING_TEXT_SHOW_DURATION_MS = 6000; |
- private static final int TRAILING_TEXT_ANIMATION_DURATION_MS = 200; |
- private static final float TRAILING_TEXT_TRANSLATION_X = 50f; |
- |
- private final Runnable mTriggerHideRunnable; |
- private final Runnable mTriggerHideAnimationRunnable; |
- |
- private UrlBar mUrlBarView; |
- private TextView mTrailingTextView; |
- |
- private int mUrlBarTextWidth; |
- private boolean mShowTrailingText; |
- private Animator mTrailingTextAnimator; |
- private long mLastShowRequestTime; |
- private boolean mUseDarkColors; |
- |
- /** |
- * Constructor used to inflate from XML. |
- */ |
- public UrlContainer(Context context, AttributeSet attrs) { |
- super(context, attrs); |
- |
- mTriggerHideRunnable = new Runnable() { |
- @Override |
- public void run() { |
- setTrailingTextVisible(false); |
- } |
- }; |
- mTriggerHideAnimationRunnable = new Runnable() { |
- @Override |
- public void run() { |
- hideTrailingText(); |
- } |
- }; |
- |
- mUseDarkColors = true; |
- } |
- |
- @Override |
- protected void onFinishInflate() { |
- super.onFinishInflate(); |
- |
- mUrlBarView = (UrlBar) findViewById(R.id.url_bar); |
- assert mUrlBarView != null : "url_bar is not defined as a child."; |
- |
- mTrailingTextView = (TextView) findViewById(R.id.trailing_text); |
- assert mTrailingTextView != null : "trailing_text is not defined as a child."; |
- |
- setClickable(true); |
- } |
- |
- @Override |
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { |
- super.onMeasure(widthMeasureSpec, heightMeasureSpec); |
- |
- int specWidth = MeasureSpec.getSize(widthMeasureSpec); |
- mUrlBarView.measure( |
- MeasureSpec.makeMeasureSpec(specWidth, MeasureSpec.EXACTLY), heightMeasureSpec); |
- |
- if (TextUtils.isEmpty(mUrlBarView.getText())) { |
- mUrlBarTextWidth = specWidth; |
- } else if (mUrlBarView.hasFocus()) { |
- mUrlBarTextWidth = specWidth; |
- } else { |
- mUrlBarTextWidth = (int) Math.ceil(Math.min(specWidth, |
- Layout.getDesiredWidth(mUrlBarView.getText(), mUrlBarView.getPaint()))); |
- } |
- mTrailingTextView.measure( |
- MeasureSpec.makeMeasureSpec(specWidth - mUrlBarTextWidth, MeasureSpec.EXACTLY), |
- heightMeasureSpec); |
- } |
- |
- @SuppressLint("NewApi") |
- @Override |
- public void onRtlPropertiesChanged(int layoutDirection) { |
- super.onRtlPropertiesChanged(layoutDirection); |
- |
- // Layout direction is driven by the text direction of the URL bar, so we just force |
- // the path text view to match. |
- switch (layoutDirection) { |
- case LayoutDirection.LTR: |
- ApiCompatibilityUtils.setTextDirection(mTrailingTextView, TEXT_DIRECTION_LTR); |
- break; |
- case LayoutDirection.RTL: |
- ApiCompatibilityUtils.setTextDirection(mTrailingTextView, TEXT_DIRECTION_RTL); |
- break; |
- case LayoutDirection.LOCALE: |
- ApiCompatibilityUtils.setTextDirection(mTrailingTextView, TEXT_DIRECTION_LOCALE); |
- break; |
- case LayoutDirection.INHERIT: |
- default: |
- ApiCompatibilityUtils.setTextDirection(mTrailingTextView, TEXT_DIRECTION_INHERIT); |
- break; |
- } |
- } |
- |
- @Override |
- protected void onLayout(boolean changed, int l, int t, int r, int b) { |
- int height = b - t; |
- layoutChild(mUrlBarView, height, 0); |
- if (ApiCompatibilityUtils.isLayoutRtl(mUrlBarView)) { |
- layoutChild(mTrailingTextView, height, 0); |
- } else { |
- layoutChild(mTrailingTextView, height, mUrlBarTextWidth); |
- } |
- } |
- |
- private static void layoutChild(View view, int parentHeight, int childLeft) { |
- int childTop = (parentHeight - view.getMeasuredHeight()) / 2; |
- view.layout( |
- childLeft, |
- childTop, |
- childLeft + view.getMeasuredWidth(), |
- childTop + view.getMeasuredHeight()); |
- } |
- |
- /** |
- * Sets the text to be displayed. |
- * |
- * @param displayText The primary display text to be shown. |
- * @param trailingText The additional trailing text to be shown after the display text. |
- * @param originalText The text that will be displayed if no display text is specified, and |
- * is also supplied to features such as cut and copy. |
- * @return Whether any components of the URL have changed. |
- */ |
- public boolean setUrlText(String displayText, String trailingText, String originalText) { |
- boolean changed = mUrlBarView.setUrl(originalText, displayText); |
- if (changed && mTrailingTextView.getVisibility() == VISIBLE) requestLayout(); |
- |
- if (trailingText == null) trailingText = ""; |
- if (!trailingText.equals(mTrailingTextView.getText())) { |
- mTrailingTextView.setText(trailingText); |
- changed |= true; |
- } |
- return changed; |
- } |
- |
- /** |
- * Specifies whether the trailing URL text should use dark text colors or light colors. |
- * @param useDarkColors Whether the text colors should be dark (i.e. appropriate for use |
- * on a light background). |
- */ |
- public void setUseDarkTextColors(boolean useDarkColors) { |
- mUseDarkColors = useDarkColors; |
- mUrlBarView.setUseDarkTextColors(mUseDarkColors); |
- |
- int trailingTextColorId = R.color.url_emphasis_non_emphasized_text; |
- if (!mUseDarkColors) { |
- trailingTextColorId = R.color.url_emphasis_light_non_emphasized_text; |
- } |
- mTrailingTextView.setTextColor(getResources().getColor(trailingTextColorId)); |
- } |
- |
- /** |
- * Updates the visibility of the trailing text view. |
- * @param visible Whether the trailing text view should be visible. |
- */ |
- public void setTrailingTextVisible(boolean visible) { |
- if (visible) mLastShowRequestTime = SystemClock.uptimeMillis(); |
- |
- if (visible == mShowTrailingText) return; |
- mShowTrailingText = visible; |
- |
- removeCallbacks(mTriggerHideRunnable); |
- removeCallbacks(mTriggerHideAnimationRunnable); |
- |
- if (visible) { |
- if (mTrailingTextAnimator != null && mTrailingTextAnimator.isRunning()) { |
- mTrailingTextAnimator.cancel(); |
- } else { |
- float translationX = MathUtils.flipSignIf( |
- TRAILING_TEXT_TRANSLATION_X, ApiCompatibilityUtils.isLayoutRtl(this)); |
- mTrailingTextView.setAlpha(0f); |
- mTrailingTextView.setTranslationX(translationX); |
- } |
- // Canceling the other animation will set the visibility to GONE, so only update |
- // this to VISIBLE after the above call to cancel(). |
- mTrailingTextView.setVisibility(VISIBLE); |
- |
- if (!TextUtils.isEmpty(mTrailingTextView.getText())) { |
- mUrlBarView.setAccessibilityTextOverride( |
- TextUtils.concat(mUrlBarView.getText(), mTrailingTextView.getText()) |
- .toString()); |
- } |
- |
- AnimatorSet set = new AnimatorSet(); |
- set.playTogether( |
- ObjectAnimator.ofFloat(mTrailingTextView, ALPHA, 1f), |
- ObjectAnimator.ofFloat(mTrailingTextView, TRANSLATION_X, 0f)); |
- set.setDuration(TRAILING_TEXT_ANIMATION_DURATION_MS); |
- set.setInterpolator(BakedBezierInterpolator.FADE_IN_CURVE); |
- set.addListener(new AnimatorListenerAdapter() { |
- @Override |
- public void onAnimationEnd(Animator animation) { |
- super.onAnimationEnd(animation); |
- mTrailingTextAnimator = null; |
- } |
- }); |
- set.start(); |
- mTrailingTextAnimator = set; |
- |
- postDelayed(mTriggerHideRunnable, MAX_TRAILING_TEXT_SHOW_DURATION_MS); |
- } else { |
- long elapsedTime = SystemClock.uptimeMillis() - mLastShowRequestTime; |
- if (elapsedTime >= MIN_TRAILING_TEXT_SHOW_DURATION_MS) { |
- hideTrailingText(); |
- } else { |
- postDelayed(mTriggerHideAnimationRunnable, |
- MIN_TRAILING_TEXT_SHOW_DURATION_MS - elapsedTime); |
- } |
- } |
- } |
- |
- private void hideTrailingText() { |
- if (mTrailingTextAnimator != null && mTrailingTextAnimator.isRunning()) { |
- mTrailingTextAnimator.cancel(); |
- } |
- |
- mUrlBarView.setAccessibilityTextOverride(null); |
- |
- float translationX = MathUtils.flipSignIf( |
- TRAILING_TEXT_TRANSLATION_X, ApiCompatibilityUtils.isLayoutRtl(this)); |
- |
- AnimatorSet set = new AnimatorSet(); |
- set.playTogether( |
- ObjectAnimator.ofFloat(mTrailingTextView, ALPHA, 0f), |
- ObjectAnimator.ofFloat(mTrailingTextView, TRANSLATION_X, translationX)); |
- set.setDuration(TRAILING_TEXT_ANIMATION_DURATION_MS); |
- set.setInterpolator(BakedBezierInterpolator.FADE_OUT_CURVE); |
- set.addListener(new AnimatorListenerAdapter() { |
- @Override |
- public void onAnimationEnd(Animator animation) { |
- super.onAnimationEnd(animation); |
- mTrailingTextView.setVisibility(GONE); |
- mTrailingTextAnimator = null; |
- } |
- }); |
- set.start(); |
- mTrailingTextAnimator = set; |
- } |
-} |