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

Commit dccbda11 authored by Victor Truong's avatar Victor Truong Committed by Android (Google) Code Review
Browse files

Merge "Stop complications from hiding if animations are disabled." into tm-qpr-dev

parents c19d2fe0 ea2cf6c2
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -22,14 +22,18 @@ import static com.android.systemui.dreams.complication.dagger.ComplicationModule
import android.graphics.Rect;
import android.graphics.Region;
import android.os.Debug;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.Log;
import android.view.View;

import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.lifecycle.LifecycleOwner;

import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.settings.SecureSettings;

import java.util.Collection;
import java.util.HashMap;
@@ -54,6 +58,8 @@ public class ComplicationHostViewController extends ViewController<ConstraintLay
    private final LifecycleOwner mLifecycleOwner;
    private final ComplicationCollectionViewModel mComplicationCollectionViewModel;
    private final HashMap<ComplicationId, Complication.ViewHolder> mComplications = new HashMap<>();
    @VisibleForTesting
    boolean mIsAnimationEnabled;

    // Whether dream entry animations are finished.
    private boolean mEntryAnimationsFinished = false;
@@ -64,7 +70,8 @@ public class ComplicationHostViewController extends ViewController<ConstraintLay
            ComplicationLayoutEngine layoutEngine,
            DreamOverlayStateController dreamOverlayStateController,
            LifecycleOwner lifecycleOwner,
            @Named(SCOPED_COMPLICATIONS_MODEL) ComplicationCollectionViewModel viewModel) {
            @Named(SCOPED_COMPLICATIONS_MODEL) ComplicationCollectionViewModel viewModel,
            SecureSettings secureSettings) {
        super(view);
        mLayoutEngine = layoutEngine;
        mLifecycleOwner = lifecycleOwner;
@@ -78,6 +85,10 @@ public class ComplicationHostViewController extends ViewController<ConstraintLay
                        mDreamOverlayStateController.areEntryAnimationsFinished();
            }
        });

        // Whether animations are enabled.
        mIsAnimationEnabled = secureSettings.getFloatForUser(
                Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f, UserHandle.USER_CURRENT) != 0.0f;
    }

    @Override
@@ -148,7 +159,7 @@ public class ComplicationHostViewController extends ViewController<ConstraintLay

                    // Complications to be added before dream entry animations are finished are set
                    // to invisible and are animated in.
                    if (!mEntryAnimationsFinished) {
                    if (!mEntryAnimationsFinished && mIsAnimationEnabled) {
                        view.setVisibility(View.INVISIBLE);
                    }
                    mComplications.put(id, viewHolder);
+31 −1
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.os.UserHandle;
import android.provider.Settings;
import android.testing.AndroidTestingRunner;
import android.view.View;

@@ -33,6 +35,8 @@ import androidx.test.filters.SmallTest;

import com.android.systemui.SysuiTestCase;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.util.settings.FakeSettings;
import com.android.systemui.util.settings.SecureSettings;

import org.junit.Before;
import org.junit.Test;
@@ -96,6 +100,10 @@ public class ComplicationHostViewControllerTest extends SysuiTestCase {

    private ComplicationHostViewController mController;

    private SecureSettings mSecureSettings;

    private static final int CURRENT_USER_ID = UserHandle.USER_SYSTEM;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
@@ -108,12 +116,17 @@ public class ComplicationHostViewControllerTest extends SysuiTestCase {
        when(mViewHolder.getLayoutParams()).thenReturn(mComplicationLayoutParams);
        when(mComplicationView.getParent()).thenReturn(mComplicationHostView);

        mSecureSettings = new FakeSettings();
        mSecureSettings.putFloatForUser(
                        Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f, CURRENT_USER_ID);

        mController = new ComplicationHostViewController(
                mComplicationHostView,
                mLayoutEngine,
                mDreamOverlayStateController,
                mLifecycleOwner,
                mViewModel);
                mViewModel,
                mSecureSettings);

        mController.init();
    }
@@ -188,6 +201,23 @@ public class ComplicationHostViewControllerTest extends SysuiTestCase {
        verify(mComplicationView, never()).setVisibility(View.INVISIBLE);
    }

    @Test
    public void testAnimationsDisabled_ComplicationsNeverSetToInvisible() {
        //Disable animations
        mController.mIsAnimationEnabled = false;

        final Observer<Collection<ComplicationViewModel>> observer =
                captureComplicationViewModelsObserver();

        // Add a complication before entry animations are finished.
        final HashSet<ComplicationViewModel> complications = new HashSet<>(
                Collections.singletonList(mComplicationViewModel));
        observer.onChanged(complications);

        // The complication view should not be set to invisible.
        verify(mComplicationView, never()).setVisibility(View.INVISIBLE);
    }

    private Observer<Collection<ComplicationViewModel>> captureComplicationViewModelsObserver() {
        verify(mComplicationViewModelLiveData).observe(eq(mLifecycleOwner),
                mObserverCaptor.capture());