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

Commit 6ef16ed5 authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Automerger Merge Worker
Browse files

QSTileImpl is set to DESTROYED when handleDestroy am: c5291680

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1720470

Change-Id: I787d855e1cf696ec9c81f92c582a2cec38ce4b53
parents 9400e32b c5291680
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@

package com.android.systemui.qs.tileimpl;

import static androidx.lifecycle.Lifecycle.State.DESTROYED;
import static androidx.lifecycle.Lifecycle.State.RESUMED;
import static androidx.lifecycle.Lifecycle.State.STARTED;

@@ -475,6 +476,8 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy
        }
        mCallbacks.clear();
        mHandler.removeCallbacksAndMessages(null);
        // This will force it to be removed from all controllers that may have it registered.
        mLifecycle.setCurrentState(DESTROYED);
    }

    protected void checkIfRestrictionEnforcedByAdminOnly(State state, String userRestriction) {
+8 −0
Original line number Diff line number Diff line
@@ -259,6 +259,14 @@ public class QSTileImplTest extends SysuiTestCase {
        verify(mTile, never()).handleStale();
    }

    @Test
    public void testHandleDestroyLifecycle() {
        assertNotEquals(DESTROYED, mTile.getLifecycle().getCurrentState());
        mTile.handleDestroy();

        assertEquals(DESTROYED, mTile.getLifecycle().getCurrentState());
    }

    @Test
    public void testHandleDestroy_log() {
        mTile.handleDestroy();
+30 −0
Original line number Diff line number Diff line
@@ -23,10 +23,12 @@ import static org.mockito.Mockito.verify;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper.RunWithLooper;

import androidx.annotation.NonNull;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.Lifecycle.Event;
import androidx.lifecycle.LifecycleEventObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LifecycleRegistry;
import androidx.test.filters.SmallTest;

import com.android.systemui.SysuiTestCase;
@@ -76,6 +78,34 @@ public class CallbackControllerTest extends SysuiTestCase {
        verify(controller).removeCallback(eq(callback));
    }

    @Test
    public void testCallbackIsRemovedOnDestroy() {
        SimpleLifecycleOwner owner = new SimpleLifecycleOwner();

        Object callback = new Object();
        Controller controller = mock(Controller.class);
        controller.observe(owner, callback);

        owner.setState(Lifecycle.State.RESUMED);
        verify(controller).addCallback(callback);

        owner.setState(Lifecycle.State.DESTROYED);
        verify(controller).removeCallback(callback);
    }

    private static class SimpleLifecycleOwner implements LifecycleOwner {
        LifecycleRegistry mLifecycle = new LifecycleRegistry(this);
        @NonNull
        @Override
        public Lifecycle getLifecycle() {
            return mLifecycle;
        }

        public void setState(Lifecycle.State state) {
            mLifecycle.setCurrentState(state);
        }
    }

    private static class Controller implements CallbackController<Object> {
        @Override
        public void addCallback(Object listener) {