Merge "Enable common logic for proto 1 and proto 2" into tm-qpr-dev am: 4613b0f07d am: e4f6f17610

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20653236

Change-Id: I40cc33a9f4a543eba2d77b7000f1c498ad121957
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Ats Jenk
2022-12-09 00:57:59 +00:00
committed by Automerger Merge Worker
6 changed files with 34 additions and 14 deletions

View File

@@ -702,7 +702,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();
@@ -719,7 +719,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();