Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a43922d authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge changes Iac20cc7b,I87ce6320

* changes:
  Fixing potential issue with wrong task descriptions being loaded.
  Refactoring to AnimatedEvent.
parents 9943e097 296278a0
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -20,7 +20,7 @@
    android:layout_height="@dimen/recents_task_bar_height"
    android:layout_height="@dimen/recents_task_bar_height"
    android:layout_gravity="top|center_horizontal">
    android:layout_gravity="top|center_horizontal">
    <com.android.systemui.recents.views.FixedSizeImageView
    <com.android.systemui.recents.views.FixedSizeImageView
        android:id="@+id/application_icon"
        android:id="@+id/icon"
        android:contentDescription="@string/recents_app_info_button_label"
        android:contentDescription="@string/recents_app_info_button_label"
        android:layout_width="@dimen/recents_task_view_application_icon_size"
        android:layout_width="@dimen/recents_task_view_application_icon_size"
        android:layout_height="@dimen/recents_task_view_application_icon_size"
        android:layout_height="@dimen/recents_task_view_application_icon_size"
@@ -29,7 +29,7 @@
        android:padding="8dp"
        android:padding="8dp"
        android:background="@drawable/recents_button_bg" />
        android:background="@drawable/recents_button_bg" />
    <TextView
    <TextView
        android:id="@+id/activity_description"
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|start"
        android:layout_gravity="center_vertical|start"
+11 −23
Original line number Original line Diff line number Diff line
@@ -246,10 +246,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
    boolean dismissHistory() {
    boolean dismissHistory() {
        // Try and hide the history view first
        // Try and hide the history view first
        if (mHistoryView != null && mHistoryView.isVisible()) {
        if (mHistoryView != null && mHistoryView.isVisible()) {
            ReferenceCountedTrigger t = new ReferenceCountedTrigger(this);
            EventBus.getDefault().send(new HideHistoryEvent(true /* animate */));
            t.increment();
            EventBus.getDefault().send(new HideHistoryEvent(true /* animate */, t));
            t.decrement();
            return true;
            return true;
        }
        }
        return false;
        return false;
@@ -301,8 +298,8 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
     */
     */
    void dismissRecentsToHome(boolean animated) {
    void dismissRecentsToHome(boolean animated) {
        if (animated) {
        if (animated) {
            ReferenceCountedTrigger exitTrigger = new ReferenceCountedTrigger(this,
            ReferenceCountedTrigger exitTrigger = new ReferenceCountedTrigger(null,
                    null, mFinishLaunchHomeRunnable, null);
                    mFinishLaunchHomeRunnable, null);
            mRecentsView.startExitToHomeAnimation(
            mRecentsView.startExitToHomeAnimation(
                    new ViewAnimation.TaskViewExitContext(exitTrigger));
                    new ViewAnimation.TaskViewExitContext(exitTrigger));
        } else {
        } else {
@@ -439,10 +436,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
        // Reset some states
        // Reset some states
        mIgnoreAltTabRelease = false;
        mIgnoreAltTabRelease = false;
        if (mHistoryView != null) {
        if (mHistoryView != null) {
            ReferenceCountedTrigger t = new ReferenceCountedTrigger(this);
            EventBus.getDefault().send(new HideHistoryEvent(false /* animate */));
            t.increment();
            EventBus.getDefault().send(new HideHistoryEvent(false /* animate */, t));
            t.decrement();
        }
        }


        // Notify that recents is now hidden
        // Notify that recents is now hidden
@@ -511,11 +505,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        super.onRestoreInstanceState(savedInstanceState);
        if (savedInstanceState.getBoolean(KEY_SAVED_STATE_HISTORY_VISIBLE, false)) {
        if (savedInstanceState.getBoolean(KEY_SAVED_STATE_HISTORY_VISIBLE, false)) {
            ReferenceCountedTrigger postHideStackAnimationTrigger =
            EventBus.getDefault().send(new ShowHistoryEvent());
                    new ReferenceCountedTrigger(this);
            postHideStackAnimationTrigger.increment();
            EventBus.getDefault().send(new ShowHistoryEvent(postHideStackAnimationTrigger));
            postHideStackAnimationTrigger.decrement();
        }
        }
    }
    }


@@ -644,16 +634,14 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
        } else if (event.triggeredFromHomeKey) {
        } else if (event.triggeredFromHomeKey) {
            // Otherwise, dismiss Recents to Home
            // Otherwise, dismiss Recents to Home
            if (mHistoryView != null && mHistoryView.isVisible()) {
            if (mHistoryView != null && mHistoryView.isVisible()) {
                ReferenceCountedTrigger t = new ReferenceCountedTrigger(this);
                HideHistoryEvent hideEvent = new HideHistoryEvent(true /* animate */);
                t.increment();
                hideEvent.addPostAnimationCallback(new Runnable() {
                t.addLastDecrementRunnable(new Runnable() {
                    @Override
                    @Override
                    public void run() {
                    public void run() {
                        dismissRecentsToHome(true /* animated */);
                        dismissRecentsToHome(true /* animated */);
                    }
                    }
                });
                });
                EventBus.getDefault().send(new HideHistoryEvent(true, t));
                EventBus.getDefault().send(hideEvent);
                t.decrement();


            } else {
            } else {
                dismissRecentsToHome(true /* animated */);
                dismissRecentsToHome(true /* animated */);
@@ -665,7 +653,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD


    public final void onBusEvent(EnterRecentsWindowAnimationCompletedEvent event) {
    public final void onBusEvent(EnterRecentsWindowAnimationCompletedEvent event) {
        // Try and start the enter animation (or restart it on configuration changed)
        // Try and start the enter animation (or restart it on configuration changed)
        ReferenceCountedTrigger t = new ReferenceCountedTrigger(this);
        ReferenceCountedTrigger t = new ReferenceCountedTrigger();
        ViewAnimation.TaskViewEnterContext ctx = new ViewAnimation.TaskViewEnterContext(t);
        ViewAnimation.TaskViewEnterContext ctx = new ViewAnimation.TaskViewEnterContext(t);
        ctx.postAnimationTrigger.increment();
        ctx.postAnimationTrigger.increment();
        if (mSearchWidgetInfo != null) {
        if (mSearchWidgetInfo != null) {
@@ -784,11 +772,11 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
            // provided.
            // provided.
            mHistoryView.setSystemInsets(mRecentsView.getSystemInsets());
            mHistoryView.setSystemInsets(mRecentsView.getSystemInsets());
        }
        }
        mHistoryView.show(mRecentsView.getTaskStack(), event.postHideStackAnimationTrigger);
        mHistoryView.show(mRecentsView.getTaskStack(), event.getAnimationTrigger());
    }
    }


    public final void onBusEvent(HideHistoryEvent event) {
    public final void onBusEvent(HideHistoryEvent event) {
        mHistoryView.hide(event.animate, event.postHideHistoryAnimationTrigger);
        mHistoryView.hide(event.animate, event.getAnimationTrigger());
    }
    }


    private void refreshSearchWidgetView() {
    private void refreshSearchWidgetView() {
+3 −3
Original line number Original line Diff line number Diff line
@@ -207,7 +207,7 @@ public class RecentsImpl extends IRecentsNonSystemUserCallbacks.Stub implements
        RecentsTaskLoadPlan plan = loader.createLoadPlan(mContext);
        RecentsTaskLoadPlan plan = loader.createLoadPlan(mContext);
        loader.preloadTasks(plan, true /* isTopTaskHome */);
        loader.preloadTasks(plan, true /* isTopTaskHome */);
        RecentsTaskLoadPlan.Options launchOpts = new RecentsTaskLoadPlan.Options();
        RecentsTaskLoadPlan.Options launchOpts = new RecentsTaskLoadPlan.Options();
        launchOpts.numVisibleTasks = loader.getApplicationIconCacheSize();
        launchOpts.numVisibleTasks = loader.getIconCacheSize();
        launchOpts.numVisibleTaskThumbnails = loader.getThumbnailCacheSize();
        launchOpts.numVisibleTaskThumbnails = loader.getThumbnailCacheSize();
        launchOpts.onlyLoadForCache = true;
        launchOpts.onlyLoadForCache = true;
        loader.loadTasks(mContext, plan, launchOpts);
        loader.loadTasks(mContext, plan, launchOpts);
@@ -452,7 +452,7 @@ public class RecentsImpl extends IRecentsNonSystemUserCallbacks.Stub implements
        }
        }


        // Launch the task
        // Launch the task
        ssp.startActivityFromRecents(mContext, toTask.key.id, toTask.activityLabel, launchOpts);
        ssp.startActivityFromRecents(mContext, toTask.key.id, toTask.title, launchOpts);
    }
    }


    /**
    /**
@@ -524,7 +524,7 @@ public class RecentsImpl extends IRecentsNonSystemUserCallbacks.Stub implements
        MetricsLogger.count(mContext, "overview_affiliated_task_launch", 1);
        MetricsLogger.count(mContext, "overview_affiliated_task_launch", 1);


        // Launch the task
        // Launch the task
        ssp.startActivityFromRecents(mContext, toTask.key.id, toTask.activityLabel, launchOpts);
        ssp.startActivityFromRecents(mContext, toTask.key.id, toTask.title, launchOpts);
    }
    }


    public void showNextAffiliatedTask() {
    public void showNextAffiliatedTask() {
+79 −0
Original line number Original line Diff line number Diff line
@@ -28,6 +28,8 @@ import android.os.UserHandle;
import android.util.Log;
import android.util.Log;
import android.util.MutableBoolean;
import android.util.MutableBoolean;


import com.android.systemui.recents.misc.ReferenceCountedTrigger;

import java.lang.ref.WeakReference;
import java.lang.ref.WeakReference;
import java.lang.reflect.Constructor;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.InvocationTargetException;
@@ -220,6 +222,20 @@ public class EventBus extends BroadcastReceiver {
        // Only accessible from derived events
        // Only accessible from derived events
        protected Event() {}
        protected Event() {}


        /**
         * Called by the EventBus prior to dispatching this event to any subscriber of this event.
         */
        void onPreDispatch() {
            // Do nothing
        }

        /**
         * Called by the EventBus after dispatching this event to every subscriber of this event.
         */
        void onPostDispatch() {
            // Do nothing
        }

        @Override
        @Override
        protected Object clone() throws CloneNotSupportedException {
        protected Object clone() throws CloneNotSupportedException {
            Event evt = (Event) super.clone();
            Event evt = (Event) super.clone();
@@ -229,6 +245,51 @@ public class EventBus extends BroadcastReceiver {
        }
        }
    }
    }


    /**
     * An event that represents an animated state change, which allows subscribers to coordinate
     * callbacks which happen after the animation has taken place.
     *
     * Internally, it is guaranteed that increment() and decrement() will be called before and the
     * after the event is dispatched.
     */
    public static class AnimatedEvent extends Event {

        private final ReferenceCountedTrigger mTrigger = new ReferenceCountedTrigger();

        // Only accessible from derived events
        protected AnimatedEvent() {}

        /**
         * Returns the reference counted trigger that coordinates the animations for this event.
         */
        public ReferenceCountedTrigger getAnimationTrigger() {
            return mTrigger;
        }

        /**
         * Adds a callback that is guaranteed to be called after the state has changed regardless of
         * whether an actual animation took place.
         */
        public void addPostAnimationCallback(Runnable r) {
            mTrigger.addLastDecrementRunnable(r);
        }

        @Override
        void onPreDispatch() {
            mTrigger.increment();
        }

        @Override
        void onPostDispatch() {
            mTrigger.decrement();
        }

        @Override
        protected Object clone() throws CloneNotSupportedException {
            throw new CloneNotSupportedException();
        }
    }

    /**
    /**
     * An inter-process event super class that allows us to track user state across subscriber
     * An inter-process event super class that allows us to track user state across subscriber
     * invocations.
     * invocations.
@@ -706,6 +767,11 @@ public class EventBus extends BroadcastReceiver {
        if (eventHandlers == null) {
        if (eventHandlers == null) {
            return;
            return;
        }
        }

        // Prepare this event
        boolean hasPostedEvent = false;
        event.onPreDispatch();

        // We need to clone the list in case a subscriber unregisters itself during traversal
        // We need to clone the list in case a subscriber unregisters itself during traversal
        eventHandlers = (ArrayList<EventHandler>) eventHandlers.clone();
        eventHandlers = (ArrayList<EventHandler>) eventHandlers.clone();
        for (final EventHandler eventHandler : eventHandlers) {
        for (final EventHandler eventHandler : eventHandlers) {
@@ -717,11 +783,24 @@ public class EventBus extends BroadcastReceiver {
                            processEvent(eventHandler, event);
                            processEvent(eventHandler, event);
                        }
                        }
                    });
                    });
                    hasPostedEvent = true;
                } else {
                } else {
                    processEvent(eventHandler, event);
                    processEvent(eventHandler, event);
                }
                }
            }
            }
        }
        }

        // Clean up after this event, deferring until all subscribers have been called
        if (hasPostedEvent) {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    event.onPostDispatch();
                }
            });
        } else {
            event.onPostDispatch();
        }
    }
    }


    /**
    /**
+2 −8
Original line number Original line Diff line number Diff line
@@ -22,17 +22,11 @@ import com.android.systemui.recents.misc.ReferenceCountedTrigger;
/**
/**
 * This is sent when the history view will be closed.
 * This is sent when the history view will be closed.
 */
 */
public class HideHistoryEvent extends EventBus.Event {
public class HideHistoryEvent extends EventBus.AnimatedEvent {


    public final boolean animate;
    public final boolean animate;
    public final ReferenceCountedTrigger postHideHistoryAnimationTrigger;


    /**
    public HideHistoryEvent(boolean animate) {
     * @param postHideHistoryAnimationTrigger the trigger that gets called when all the history animations are finished
     *                                        when transitioning from the history view
     */
    public HideHistoryEvent(boolean animate, ReferenceCountedTrigger postHideHistoryAnimationTrigger) {
        this.animate = animate;
        this.animate = animate;
        this.postHideHistoryAnimationTrigger = postHideHistoryAnimationTrigger;
    }
    }
}
}
Loading