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

This commit is contained in:
Victor Truong
2023-03-06 19:20:16 +00:00
committed by Android (Google) Code Review
2 changed files with 44 additions and 3 deletions

View File

@@ -22,14 +22,18 @@ import static com.android.systemui.dreams.complication.dagger.ComplicationModule
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.Region; import android.graphics.Region;
import android.os.Debug; import android.os.Debug;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleOwner;
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.dreams.DreamOverlayStateController; import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.util.ViewController; import com.android.systemui.util.ViewController;
import com.android.systemui.util.settings.SecureSettings;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
@@ -54,6 +58,8 @@ public class ComplicationHostViewController extends ViewController<ConstraintLay
private final LifecycleOwner mLifecycleOwner; private final LifecycleOwner mLifecycleOwner;
private final ComplicationCollectionViewModel mComplicationCollectionViewModel; private final ComplicationCollectionViewModel mComplicationCollectionViewModel;
private final HashMap<ComplicationId, Complication.ViewHolder> mComplications = new HashMap<>(); private final HashMap<ComplicationId, Complication.ViewHolder> mComplications = new HashMap<>();
@VisibleForTesting
boolean mIsAnimationEnabled;
// Whether dream entry animations are finished. // Whether dream entry animations are finished.
private boolean mEntryAnimationsFinished = false; private boolean mEntryAnimationsFinished = false;
@@ -64,7 +70,8 @@ public class ComplicationHostViewController extends ViewController<ConstraintLay
ComplicationLayoutEngine layoutEngine, ComplicationLayoutEngine layoutEngine,
DreamOverlayStateController dreamOverlayStateController, DreamOverlayStateController dreamOverlayStateController,
LifecycleOwner lifecycleOwner, LifecycleOwner lifecycleOwner,
@Named(SCOPED_COMPLICATIONS_MODEL) ComplicationCollectionViewModel viewModel) { @Named(SCOPED_COMPLICATIONS_MODEL) ComplicationCollectionViewModel viewModel,
SecureSettings secureSettings) {
super(view); super(view);
mLayoutEngine = layoutEngine; mLayoutEngine = layoutEngine;
mLifecycleOwner = lifecycleOwner; mLifecycleOwner = lifecycleOwner;
@@ -78,6 +85,10 @@ public class ComplicationHostViewController extends ViewController<ConstraintLay
mDreamOverlayStateController.areEntryAnimationsFinished(); mDreamOverlayStateController.areEntryAnimationsFinished();
} }
}); });
// Whether animations are enabled.
mIsAnimationEnabled = secureSettings.getFloatForUser(
Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f, UserHandle.USER_CURRENT) != 0.0f;
} }
@Override @Override
@@ -148,7 +159,7 @@ public class ComplicationHostViewController extends ViewController<ConstraintLay
// Complications to be added before dream entry animations are finished are set // Complications to be added before dream entry animations are finished are set
// to invisible and are animated in. // to invisible and are animated in.
if (!mEntryAnimationsFinished) { if (!mEntryAnimationsFinished && mIsAnimationEnabled) {
view.setVisibility(View.INVISIBLE); view.setVisibility(View.INVISIBLE);
} }
mComplications.put(id, viewHolder); mComplications.put(id, viewHolder);

View File

@@ -22,6 +22,8 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.os.UserHandle;
import android.provider.Settings;
import android.testing.AndroidTestingRunner; import android.testing.AndroidTestingRunner;
import android.view.View; import android.view.View;
@@ -33,6 +35,8 @@ import androidx.test.filters.SmallTest;
import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase;
import com.android.systemui.dreams.DreamOverlayStateController; 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.Before;
import org.junit.Test; import org.junit.Test;
@@ -96,6 +100,10 @@ public class ComplicationHostViewControllerTest extends SysuiTestCase {
private ComplicationHostViewController mController; private ComplicationHostViewController mController;
private SecureSettings mSecureSettings;
private static final int CURRENT_USER_ID = UserHandle.USER_SYSTEM;
@Before @Before
public void setup() { public void setup() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
@@ -108,12 +116,17 @@ public class ComplicationHostViewControllerTest extends SysuiTestCase {
when(mViewHolder.getLayoutParams()).thenReturn(mComplicationLayoutParams); when(mViewHolder.getLayoutParams()).thenReturn(mComplicationLayoutParams);
when(mComplicationView.getParent()).thenReturn(mComplicationHostView); when(mComplicationView.getParent()).thenReturn(mComplicationHostView);
mSecureSettings = new FakeSettings();
mSecureSettings.putFloatForUser(
Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f, CURRENT_USER_ID);
mController = new ComplicationHostViewController( mController = new ComplicationHostViewController(
mComplicationHostView, mComplicationHostView,
mLayoutEngine, mLayoutEngine,
mDreamOverlayStateController, mDreamOverlayStateController,
mLifecycleOwner, mLifecycleOwner,
mViewModel); mViewModel,
mSecureSettings);
mController.init(); mController.init();
} }
@@ -188,6 +201,23 @@ public class ComplicationHostViewControllerTest extends SysuiTestCase {
verify(mComplicationView, never()).setVisibility(View.INVISIBLE); 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() { private Observer<Collection<ComplicationViewModel>> captureComplicationViewModelsObserver() {
verify(mComplicationViewModelLiveData).observe(eq(mLifecycleOwner), verify(mComplicationViewModelLiveData).observe(eq(mLifecycleOwner),
mObserverCaptor.capture()); mObserverCaptor.capture());