Stop complications from hiding if animations are disabled.
When device is set to no animation, the entry transition animation finishes before smartspace is ready. This causes smartspace to have its visibility set to off. Bug: 268532256 Test: atest ComplicationHostViewControllerTest Change-Id: If970924615f0e8c7dbcf38d32d69450331705b20
This commit is contained in:
@@ -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