Enable common logic for proto 1 and proto 2

Check for either of the proto 1 or proto 2 flag to be enabled when
guarding logic that is common for both prototypes.

Bug: 260645044
Test: manual, build sysui, check desktop mode 1 works
Change-Id: Iba1d4f84032b1e059dcd100f64f20fec79e43113
This commit is contained in:
Ats Jenk
2022-12-02 11:22:52 -08:00
parent 5b7da895e2
commit 619f7b37c0
6 changed files with 34 additions and 14 deletions

View File

@@ -692,7 +692,7 @@ public abstract class WMShellBaseModule {
// Use optional-of-lazy for the dependency that this provider relies on.
// Lazy ensures that this provider will not be the cause the dependency is created
// when it will not be returned due to the condition below.
if (DesktopModeStatus.IS_SUPPORTED) {
if (DesktopModeStatus.isProto1Enabled()) {
return desktopModeController.map(Lazy::get);
}
return Optional.empty();
@@ -709,7 +709,7 @@ public abstract class WMShellBaseModule {
// Use optional-of-lazy for the dependency that this provider relies on.
// Lazy ensures that this provider will not be the cause the dependency is created
// when it will not be returned due to the condition below.
if (DesktopModeStatus.IS_SUPPORTED) {
if (DesktopModeStatus.isAnyEnabled()) {
return desktopModeTaskRepository.map(Lazy::get);
}
return Optional.empty();

View File

@@ -100,7 +100,7 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll
mDesktopModeTaskRepository = desktopModeTaskRepository;
mMainExecutor = mainExecutor;
mSettingsObserver = new SettingsObserver(mContext, mainHandler);
if (DesktopModeStatus.isSupported()) {
if (DesktopModeStatus.isProto1Enabled()) {
shellInit.addInitCallback(this::onInit, this);
}
}

View File

@@ -33,16 +33,37 @@ public class DesktopModeStatus {
/**
* Flag to indicate whether desktop mode is available on the device
*/
public static final boolean IS_SUPPORTED = SystemProperties.getBoolean(
private static final boolean IS_SUPPORTED = SystemProperties.getBoolean(
"persist.wm.debug.desktop_mode", false);
/**
* Flag to indicate whether desktop mode proto 2 is available on the device
*/
private static final boolean IS_PROTO2_ENABLED = SystemProperties.getBoolean(
"persist.wm.debug.desktop_mode_2", false);
/**
* Return {@code true} if desktop mode support is enabled
*/
public static boolean isSupported() {
public static boolean isProto1Enabled() {
return IS_SUPPORTED;
}
/**
* Return {@code true} is desktop windowing proto 2 is enabled
*/
public static boolean isProto2Enabled() {
return IS_PROTO2_ENABLED;
}
/**
* Return {@code true} if proto 1 or 2 is enabled.
* Can be used to guard logic that is common for both prototypes.
*/
public static boolean isAnyEnabled() {
return isProto1Enabled() || isProto2Enabled();
}
/**
* Check if desktop mode is active
*
@@ -61,5 +82,4 @@ public class DesktopModeStatus {
return false;
}
}
}

View File

@@ -68,7 +68,7 @@ public class FreeformTaskListener implements ShellTaskOrganizer.TaskListener,
private void onInit() {
mShellTaskOrganizer.addListenerForType(this, TASK_LISTENER_TYPE_FREEFORM);
if (DesktopModeStatus.IS_SUPPORTED) {
if (DesktopModeStatus.isAnyEnabled()) {
mShellTaskOrganizer.addFocusListener(this);
}
}
@@ -90,7 +90,7 @@ public class FreeformTaskListener implements ShellTaskOrganizer.TaskListener,
t.apply();
}
if (DesktopModeStatus.IS_SUPPORTED) {
if (DesktopModeStatus.isAnyEnabled()) {
mDesktopModeTaskRepository.ifPresent(repository -> {
repository.addOrMoveFreeformTaskToTop(taskInfo.taskId);
if (taskInfo.isVisible) {
@@ -110,7 +110,7 @@ public class FreeformTaskListener implements ShellTaskOrganizer.TaskListener,
taskInfo.taskId);
mTasks.remove(taskInfo.taskId);
if (DesktopModeStatus.IS_SUPPORTED) {
if (DesktopModeStatus.isAnyEnabled()) {
mDesktopModeTaskRepository.ifPresent(repository -> {
repository.removeFreeformTask(taskInfo.taskId);
if (repository.removeActiveTask(taskInfo.taskId)) {
@@ -134,7 +134,7 @@ public class FreeformTaskListener implements ShellTaskOrganizer.TaskListener,
taskInfo.taskId);
mWindowDecorationViewModel.onTaskInfoChanged(state.mTaskInfo);
if (DesktopModeStatus.IS_SUPPORTED) {
if (DesktopModeStatus.isAnyEnabled()) {
mDesktopModeTaskRepository.ifPresent(repository -> {
if (taskInfo.isVisible) {
if (repository.addActiveTask(taskInfo.taskId)) {
@@ -152,7 +152,7 @@ public class FreeformTaskListener implements ShellTaskOrganizer.TaskListener,
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TASK_ORG,
"Freeform Task Focus Changed: #%d focused=%b",
taskInfo.taskId, taskInfo.isFocused);
if (DesktopModeStatus.IS_SUPPORTED && taskInfo.isFocused) {
if (DesktopModeStatus.isAnyEnabled() && taskInfo.isFocused) {
mDesktopModeTaskRepository.ifPresent(repository -> {
repository.addOrMoveFreeformTaskToTop(taskInfo.taskId);
});

View File

@@ -517,7 +517,7 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel {
private boolean shouldShowWindowDecor(RunningTaskInfo taskInfo) {
if (taskInfo.getWindowingMode() == WINDOWING_MODE_FREEFORM) return true;
return DesktopModeStatus.IS_SUPPORTED
return DesktopModeStatus.isAnyEnabled()
&& taskInfo.getActivityType() == ACTIVITY_TYPE_STANDARD
&& mDisplayController.getDisplayContext(taskInfo.displayId)
.getResources().getConfiguration().smallestScreenWidthDp >= 600;

View File

@@ -100,7 +100,7 @@ public class DesktopModeControllerTest extends ShellTestCase {
@Before
public void setUp() {
mMockitoSession = mockitoSession().mockStatic(DesktopModeStatus.class).startMocking();
when(DesktopModeStatus.isSupported()).thenReturn(true);
when(DesktopModeStatus.isProto1Enabled()).thenReturn(true);
when(DesktopModeStatus.isActive(any())).thenReturn(true);
mShellInit = Mockito.spy(new ShellInit(mTestExecutor));
@@ -129,7 +129,7 @@ public class DesktopModeControllerTest extends ShellTestCase {
@Test
public void instantiate_flagOff_doNotAddInitCallback() {
when(DesktopModeStatus.isSupported()).thenReturn(false);
when(DesktopModeStatus.isProto1Enabled()).thenReturn(false);
clearInvocations(mShellInit);
createController();