| Index: chrome/android/java/src/org/chromium/chrome/browser/widget/ClipDrawableProgressBar.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/ClipDrawableProgressBar.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/ClipDrawableProgressBar.java
|
| deleted file mode 100644
|
| index eabd8e3fa80c023bace448cfc7261f561d89fa75..0000000000000000000000000000000000000000
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/widget/ClipDrawableProgressBar.java
|
| +++ /dev/null
|
| @@ -1,248 +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.widget;
|
| -
|
| -import android.content.Context;
|
| -import android.content.res.TypedArray;
|
| -import android.graphics.Color;
|
| -import android.graphics.Rect;
|
| -import android.graphics.drawable.ClipDrawable;
|
| -import android.graphics.drawable.ColorDrawable;
|
| -import android.support.v4.view.ViewCompat;
|
| -import android.util.AttributeSet;
|
| -import android.view.Gravity;
|
| -import android.widget.ImageView;
|
| -
|
| -import org.chromium.base.ApiCompatibilityUtils;
|
| -import org.chromium.chrome.R;
|
| -
|
| -/**
|
| - * An alternative progress bar implemented using ClipDrawable for simplicity and performance.
|
| - */
|
| -public class ClipDrawableProgressBar extends ImageView {
|
| -
|
| - // ClipDrawable's max is a fixed constant 10000.
|
| - // http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html
|
| - private static final int CLIP_DRAWABLE_MAX = 10000;
|
| -
|
| - private final Rect mDirtyBound = new Rect();
|
| - private InvalidationListener mListener;
|
| - private int mProgressBarColor = Color.TRANSPARENT;
|
| - private int mBackgroundColor = Color.TRANSPARENT;
|
| - private boolean mIsLastInvalidationProgressChange;
|
| - private float mProgress;
|
| - private int mDesiredVisibility;
|
| -
|
| - /**
|
| - * Interface for listening to drawing invalidation.
|
| - */
|
| - public interface InvalidationListener {
|
| - /**
|
| - * Called on drawing invalidation.
|
| - * @param dirtyRect Invalidated area.
|
| - */
|
| - void onInvalidation(Rect dirtyRect);
|
| - }
|
| -
|
| - /**
|
| - * Constructor for inflating from XML.
|
| - */
|
| - public ClipDrawableProgressBar(Context context, AttributeSet attrs) {
|
| - super(context, attrs);
|
| - init(context, attrs, 0);
|
| - }
|
| -
|
| - private void init(Context context, AttributeSet attrs, int defStyle) {
|
| - mDesiredVisibility = getVisibility();
|
| -
|
| - assert attrs != null;
|
| - TypedArray a = context.obtainStyledAttributes(
|
| - attrs, R.styleable.ClipDrawableProgressBar, defStyle, 0);
|
| - mProgressBarColor = a.getColor(
|
| - R.styleable.ClipDrawableProgressBar_progressBarColor, Color.TRANSPARENT);
|
| - assert mProgressBarColor != Color.TRANSPARENT;
|
| - mBackgroundColor = a.getColor(
|
| - R.styleable.ClipDrawableProgressBar_backgroundColor, Color.TRANSPARENT);
|
| - a.recycle();
|
| -
|
| - setImageDrawable(new ClipDrawable(new ColorDrawable(mProgressBarColor), Gravity.START,
|
| - ClipDrawable.HORIZONTAL));
|
| - setBackgroundColor(mBackgroundColor);
|
| - }
|
| -
|
| - /**
|
| - * Get the progress bar's current level of progress.
|
| - *
|
| - * @return The current progress, between 0.0 and 1.0.
|
| - */
|
| - public float getProgress() {
|
| - return mProgress;
|
| - }
|
| -
|
| - /**
|
| - * Set the current progress to the specified value.
|
| - *
|
| - * @param progress The new progress, between 0.0 and 1.0.
|
| - */
|
| - public void setProgress(float progress) {
|
| - assert 0.0f <= progress && progress <= 1.0f;
|
| - if (mProgress == progress) return;
|
| -
|
| - float currentProgress = mProgress;
|
| - mProgress = progress;
|
| - getDrawable().setLevel(Math.round(progress * CLIP_DRAWABLE_MAX));
|
| -
|
| - if (getVisibility() == VISIBLE && mListener != null) {
|
| - if (mIsLastInvalidationProgressChange) {
|
| - float left = Math.min(currentProgress, progress);
|
| - float right = Math.max(currentProgress, progress);
|
| -
|
| - if (ApiCompatibilityUtils.isLayoutRtl(this)) {
|
| - float leftTemp = left;
|
| - left = 1.0f - right;
|
| - right = 1.0f - leftTemp;
|
| - }
|
| -
|
| - mDirtyBound.set((int) (left * getWidth()), 0,
|
| - (int) Math.ceil(right * getWidth()), getHeight());
|
| - mListener.onInvalidation(mDirtyBound);
|
| - } else {
|
| - mListener.onInvalidation(null);
|
| - }
|
| -
|
| - mIsLastInvalidationProgressChange = true;
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * @return Background color of this progress bar.
|
| - */
|
| - public int getProgressBarBackgroundColor() {
|
| - return mBackgroundColor;
|
| - }
|
| -
|
| - /**
|
| - * Adds an observer to be notified of drawing invalidation.
|
| - *
|
| - * @param listener The observer to be added.
|
| - */
|
| - public void setInvalidationListener(InvalidationListener listener) {
|
| - mListener = listener;
|
| - mIsLastInvalidationProgressChange = false;
|
| - }
|
| -
|
| - /**
|
| - * Get a rect that contains all the non-opaque pixels.
|
| - * @param alphaBound Instance used to return the result.
|
| - */
|
| - public void getAlphaDrawRegion(Rect alphaBound) {
|
| - if (getAlpha() < 1.0f) {
|
| - alphaBound.set(0, 0, getWidth(), getHeight());
|
| - return;
|
| - }
|
| -
|
| - alphaBound.setEmpty();
|
| - if (Color.alpha(mBackgroundColor) < 255) {
|
| - if (ApiCompatibilityUtils.isLayoutRtl(this)) {
|
| - alphaBound.set(0, 0, (int) Math.ceil(mProgress * getWidth()), getHeight());
|
| - } else {
|
| - alphaBound.set((int) (mProgress * getWidth()), 0, getWidth(), getHeight());
|
| - }
|
| - }
|
| - if (Color.alpha(mProgressBarColor) < 255) {
|
| - if (ApiCompatibilityUtils.isLayoutRtl(this)) {
|
| - alphaBound.union((int) (mProgress * getWidth()), 0, getWidth(), getHeight());
|
| - } else {
|
| - alphaBound.union(0, 0, (int) Math.ceil(mProgress * getWidth()), getHeight());
|
| - }
|
| - }
|
| -
|
| - return;
|
| - }
|
| -
|
| - /**
|
| - * @return Whether the actual internal visibility is changed.
|
| - */
|
| - private boolean updateInternalVisibility() {
|
| - int oldVisibility = getVisibility();
|
| - int newVisibility = mDesiredVisibility;
|
| - if (getAlpha() == 0 && mDesiredVisibility == VISIBLE) {
|
| - newVisibility = INVISIBLE;
|
| - }
|
| -
|
| - if (oldVisibility != newVisibility) {
|
| - super.setVisibility(newVisibility);
|
| - if (mListener != null) {
|
| - mListener.onInvalidation(null);
|
| - mIsLastInvalidationProgressChange = false;
|
| - }
|
| - return true;
|
| - }
|
| -
|
| - return false;
|
| - }
|
| -
|
| - // View implementations.
|
| -
|
| - /**
|
| - * Note that this visibility might not be respected for optimization. For example, if alpha
|
| - * is 0, it will remain View#INVISIBLE even if this is called with View#VISIBLE.
|
| - */
|
| - @Override
|
| - public void setVisibility(int visibility) {
|
| - mDesiredVisibility = visibility;
|
| - updateInternalVisibility();
|
| - }
|
| -
|
| - @Override
|
| - public void setBackgroundColor(int color) {
|
| - if (color == Color.TRANSPARENT) {
|
| - setBackground(null);
|
| - } else {
|
| - super.setBackgroundColor(color);
|
| - }
|
| -
|
| - mBackgroundColor = color;
|
| -
|
| - if (mListener != null && getVisibility() == VISIBLE) {
|
| - mListener.onInvalidation(null);
|
| - mIsLastInvalidationProgressChange = false;
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - protected boolean onSetAlpha(int alpha) {
|
| - boolean result = super.onSetAlpha(alpha);
|
| -
|
| - if (mListener != null && !updateInternalVisibility()) {
|
| - mListener.onInvalidation(null);
|
| - mIsLastInvalidationProgressChange = false;
|
| - }
|
| -
|
| - return result;
|
| - }
|
| -
|
| - @Override
|
| - protected void onSizeChanged(int w, int h, int oldw, int oldh) {
|
| - super.onSizeChanged(w, h, oldw, oldh);
|
| -
|
| - if (mListener != null && getVisibility() == VISIBLE && (w != oldw || h != oldh)) {
|
| - mListener.onInvalidation(null);
|
| - mIsLastInvalidationProgressChange = false;
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - public void onRtlPropertiesChanged(int layoutDirection) {
|
| - int currentLayoutDirection = ViewCompat.getLayoutDirection(this);
|
| - super.onRtlPropertiesChanged(layoutDirection);
|
| -
|
| - if (mListener != null && getVisibility() == VISIBLE
|
| - && currentLayoutDirection != layoutDirection) {
|
| - mListener.onInvalidation(null);
|
| - mIsLastInvalidationProgressChange = false;
|
| - }
|
| - }
|
| -}
|
|
|