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

Commit 431c9757 authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Android (Google) Code Review
Browse files

Merge "QSTileImpl is set to DESTROYED when handleDestroy"

parents 958b084b c6db4059
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) {