Bug 1366672 - part6: Clean up ToolbarProgressView draft
authorJulian_Chu <walkingice0204@gmail.com>
Tue, 15 Aug 2017 13:25:19 +0800
changeset 651220 517cbc4cb38c34e5212b4ce22bf9faa9b992d925
parent 651219 c9b4d121392cb49dc81c2275d393c29100e16215
child 651221 13962c7077e24f9e7aa643f884e3649a5d4ab280
push id75642
push userbmo:walkingice0204@gmail.com
push dateWed, 23 Aug 2017 11:27:33 +0000
bugs1366672
milestone57.0a1
Bug 1366672 - part6: Clean up ToolbarProgressView We invovled another implementation. We can get it back from repository easily for any reason, so remove it for now. MozReview-Commit-ID: c4H8wW41Dr
mobile/android/base/java/org/mozilla/gecko/toolbar/ToolbarProgressView.java
mobile/android/base/moz.build
deleted file mode 100644
--- a/mobile/android/base/java/org/mozilla/gecko/toolbar/ToolbarProgressView.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.mozilla.gecko.toolbar;
-
-import android.support.v4.content.ContextCompat;
-
-import org.mozilla.gecko.R;
-import org.mozilla.gecko.widget.themed.ThemedImageView;
-import org.mozilla.gecko.util.WeakReferenceHandler;
-import org.mozilla.gecko.DynamicToolbar;
-import org.mozilla.gecko.DynamicToolbar.VisibilityTransition;
-import org.mozilla.gecko.gfx.DynamicToolbarAnimator.PinReason;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffColorFilter;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.os.Handler;
-import android.os.Message;
-import android.support.v4.view.ViewCompat;
-import android.util.AttributeSet;
-import android.view.View;
-
-/**
- * Progress view used for page loads.
- *
- * Because we're given limited information about the page load progress, the
- * bar also includes incremental animation between each step to improve
- * perceived performance.
- */
-public class ToolbarProgressView extends ThemedImageView {
-    private static final int MAX_PROGRESS = 10000;
-    private static final int MSG_UPDATE = 0;
-    private static final int MSG_HIDE = 1;
-    private static final int STEPS = 10;
-    private static final int DELAY = 40;
-
-    private int mTargetProgress;
-    private int mIncrement;
-    private ProgressBounds mBounds;
-    private Handler mHandler;
-    private int mCurrentProgress;
-    private DynamicToolbar mDynamicToolbar;
-
-    private PorterDuffColorFilter mPrivateBrowsingColorFilter;
-
-    public ToolbarProgressView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-        init(context);
-    }
-
-    public ToolbarProgressView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        init(context);
-    }
-
-    public void setDynamicToolbar(DynamicToolbar toolbar) {
-        mDynamicToolbar = toolbar;
-    }
-
-    private void init(Context ctx) {
-        mBounds = new ProgressBounds();
-
-        mTargetProgress = 0;
-
-        mPrivateBrowsingColorFilter = new PorterDuffColorFilter(
-                ContextCompat.getColor(ctx, R.color.private_browsing_purple), PorterDuff.Mode.SRC_IN);
-
-        mHandler = new ToolbarProgressHandler(this);
-    }
-
-    void pinDynamicToolbar() {
-        if ((mDynamicToolbar != null) && mDynamicToolbar.isEnabled()) {
-            mDynamicToolbar.setPinned(true, PinReason.PAGE_LOADING);
-            mDynamicToolbar.setVisible(true, VisibilityTransition.ANIMATE);
-        }
-    }
-
-    void unpinDynamicToolbar() {
-        if ((mDynamicToolbar != null) && mDynamicToolbar.isEnabled()) {
-            mDynamicToolbar.setPinned(false, PinReason.PAGE_LOADING);
-        }
-    }
-
-    @Override
-    public void onLayout(boolean f, int l, int t, int r, int b) {
-        mBounds.setLayoutRtl(ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_RTL);
-        mBounds.onLayout(f, l, t, r, b);
-    }
-
-    @Override
-    public void onDraw(Canvas canvas) {
-        final Drawable d = getDrawable();
-        d.setBounds(mBounds.getBounds());
-        d.draw(canvas);
-    }
-
-    /**
-     * Immediately sets the progress bar to the given progress percentage.
-     *
-     * @param progressPercentage Percentage (0-100) to which progress bar should be set
-     */
-    void setProgress(int progressPercentage) {
-        mCurrentProgress = mTargetProgress = getAbsoluteProgress(progressPercentage);
-        updateBounds();
-
-        clearMessages();
-    }
-
-    /**
-     * Animates the progress bar from the current progress value to the given
-     * progress percentage.
-     *
-     * @param progressPercentage Percentage (0-100) to which progress bar should be animated
-     */
-    void animateProgress(int progressPercentage) {
-        final int absoluteProgress = getAbsoluteProgress(progressPercentage);
-        if (absoluteProgress <= mTargetProgress) {
-            // After we manually click stop, we can still receive page load
-            // events (e.g., DOMContentLoaded). Updating for other updates
-            // after a STOP event can freeze the progress bar, so guard against
-            // that here.
-            return;
-        }
-
-        mTargetProgress = absoluteProgress;
-        mIncrement = (mTargetProgress - mCurrentProgress) / STEPS;
-
-        clearMessages();
-        mHandler.sendEmptyMessage(MSG_UPDATE);
-    }
-
-    private void clearMessages() {
-        mHandler.removeMessages(MSG_UPDATE);
-        mHandler.removeMessages(MSG_HIDE);
-    }
-
-    private int getAbsoluteProgress(int progressPercentage) {
-        if (progressPercentage < 0) {
-            return 0;
-        }
-
-        if (progressPercentage > 100) {
-            return 100;
-        }
-
-        return progressPercentage * MAX_PROGRESS / 100;
-    }
-
-    private void updateBounds() {
-        mBounds.updateBounds();
-        invalidate();
-    }
-
-    @Override
-    public void setPrivateMode(final boolean isPrivate) {
-        super.setPrivateMode(isPrivate);
-
-        // Note: android:tint is better but ColorStateLists are not supported until API 21.
-        if (isPrivate) {
-            setColorFilter(mPrivateBrowsingColorFilter);
-        } else {
-            clearColorFilter();
-        }
-    }
-
-    private static class ToolbarProgressHandler extends WeakReferenceHandler<ToolbarProgressView> {
-        public ToolbarProgressHandler(final ToolbarProgressView that) {
-            super(that);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            final ToolbarProgressView that = mTarget.get();
-            if (that == null) {
-                return;
-            }
-
-            switch (msg.what) {
-                case MSG_UPDATE:
-                    that.mCurrentProgress = Math.min(that.mTargetProgress, that.mCurrentProgress + that.mIncrement);
-
-                    that.updateBounds();
-
-                    if (that.mCurrentProgress < that.mTargetProgress) {
-                        final int delay = (that.mTargetProgress < MAX_PROGRESS) ? DELAY : DELAY / 4;
-                        sendMessageDelayed(that.mHandler.obtainMessage(msg.what), delay);
-                    } else if (that.mCurrentProgress == MAX_PROGRESS) {
-                        sendMessageDelayed(that.mHandler.obtainMessage(MSG_HIDE), DELAY);
-                    }
-                    break;
-
-                case MSG_HIDE:
-                    that.setVisibility(View.GONE);
-                    that.unpinDynamicToolbar();
-                    break;
-            }
-        }
-    };
-
-    private final class ProgressBounds {
-
-        final Rect bounds;
-        boolean isLayoutRtl = false;
-
-        ProgressBounds() {
-            bounds = new Rect();
-        }
-
-        public Rect getBounds() {
-            return bounds;
-        }
-
-        void setLayoutRtl(boolean isLayoutRtl) {
-            this.isLayoutRtl = isLayoutRtl;
-        }
-
-        void updateBounds() {
-            int progressWidth = getWidth() * mCurrentProgress / MAX_PROGRESS;
-            if (isLayoutRtl) {
-                bounds.left = getWidth() - progressWidth;
-            } else {
-                bounds.right = progressWidth;
-            }
-        }
-
-        void onLayout(boolean f, int l, int t, int r, int b) {
-            bounds.top = 0;
-            bounds.bottom = b - t;
-            int progressWidth = (r - l) * mCurrentProgress / MAX_PROGRESS;
-            ;
-            if (isLayoutRtl) {
-                bounds.left = r - progressWidth;
-                bounds.right = r;
-            } else {
-                bounds.left = 0;
-                bounds.right = progressWidth;
-            }
-        }
-    }
-}
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -938,17 +938,16 @@ gbjar.sources += ['java/org/mozilla/geck
     'toolbar/PhoneTabsButton.java',
     'toolbar/SecurityModeUtil.java',
     'toolbar/ShapedButton.java',
     'toolbar/ShapedButtonFrameLayout.java',
     'toolbar/SiteIdentityPopup.java',
     'toolbar/ToolbarEditLayout.java',
     'toolbar/ToolbarEditText.java',
     'toolbar/ToolbarPrefs.java',
-    'toolbar/ToolbarProgressView.java',
     'trackingprotection/TrackingProtectionPrompt.java',
     'updater/PostUpdateHandler.java',
     'updater/UpdateService.java',
     'updater/UpdateServiceHelper.java',
     'util/ColorUtil.java',
     'util/DrawableUtil.java',
     'util/JavaUtil.java',
     'util/ResourceDrawableUtils.java',