Merge "Stop complications from hiding if animations are disabled." into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
dccbda11b8
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user