Merge "Create new display rotation compat toast string for multi-window" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
5fa932d5a8
@@ -5035,8 +5035,8 @@
|
||||
<string name="display_rotation_camera_compat_toast_after_rotation">Rotate for a better view</string>
|
||||
|
||||
<!-- Text on a toast shown when a camera view is started within the app that may not be able
|
||||
to display the camera preview correctly while in split screen. [CHAR LIMIT=NONE] -->
|
||||
<string name="display_rotation_camera_compat_toast_in_split_screen">Exit split screen for a better view</string>
|
||||
to display the camera preview correctly while in multi-window. [CHAR LIMIT=NONE] -->
|
||||
<string name="display_rotation_camera_compat_toast_in_multi_window">Open <xliff:g id="name" example="MyApp">%s</xliff:g> in full screen for a better view</string>
|
||||
|
||||
<!-- Label for button to confirm chosen date or time [CHAR LIMIT=30] -->
|
||||
<string name="done_label">Done</string>
|
||||
|
||||
@@ -2533,7 +2533,7 @@
|
||||
<java-symbol type="string" name="zen_mode_default_events_name" />
|
||||
<java-symbol type="string" name="zen_mode_default_every_night_name" />
|
||||
<java-symbol type="string" name="display_rotation_camera_compat_toast_after_rotation" />
|
||||
<java-symbol type="string" name="display_rotation_camera_compat_toast_in_split_screen" />
|
||||
<java-symbol type="string" name="display_rotation_camera_compat_toast_in_multi_window" />
|
||||
<java-symbol type="array" name="config_system_condition_providers" />
|
||||
<java-symbol type="string" name="muted_by" />
|
||||
<java-symbol type="string" name="zen_mode_alarm" />
|
||||
|
||||
@@ -1813,6 +1813,12 @@
|
||||
"group": "WM_DEBUG_KEEP_SCREEN_ON",
|
||||
"at": "com\/android\/server\/wm\/RootWindowContainer.java"
|
||||
},
|
||||
"-479665533": {
|
||||
"message": "DisplayRotationCompatPolicy: Multi-window toast not shown as package '%s' cannot be found.",
|
||||
"level": "ERROR",
|
||||
"group": "WM_DEBUG_ORIENTATION",
|
||||
"at": "com\/android\/server\/wm\/DisplayRotationCompatPolicy.java"
|
||||
},
|
||||
"-464564167": {
|
||||
"message": "Current transition prevents automatic focus change",
|
||||
"level": "VERBOSE",
|
||||
|
||||
@@ -42,6 +42,7 @@ import android.app.servertransaction.ClientTransaction;
|
||||
import android.app.servertransaction.RefreshCallbackItem;
|
||||
import android.app.servertransaction.ResumeActivityItem;
|
||||
import android.content.pm.ActivityInfo.ScreenOrientation;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.hardware.camera2.CameraManager;
|
||||
import android.os.Handler;
|
||||
@@ -423,7 +424,18 @@ final class DisplayRotationCompatPolicy {
|
||||
// for the activity embedding case.
|
||||
if (topActivity.getTask().getWindowingMode() == WINDOWING_MODE_MULTI_WINDOW
|
||||
&& isTreatmentEnabledForActivity(topActivity, /* mustBeFullscreen */ false)) {
|
||||
showToast(R.string.display_rotation_camera_compat_toast_in_split_screen);
|
||||
final PackageManager packageManager = mWmService.mContext.getPackageManager();
|
||||
try {
|
||||
showToast(
|
||||
R.string.display_rotation_camera_compat_toast_in_multi_window,
|
||||
(String) packageManager.getApplicationLabel(
|
||||
packageManager.getApplicationInfo(packageName, /* flags */ 0)));
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
ProtoLog.e(WM_DEBUG_ORIENTATION,
|
||||
"DisplayRotationCompatPolicy: Multi-window toast not shown as "
|
||||
+ "package '%s' cannot be found.",
|
||||
packageName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -434,6 +446,15 @@ final class DisplayRotationCompatPolicy {
|
||||
() -> Toast.makeText(mWmService.mContext, stringRes, Toast.LENGTH_LONG).show());
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void showToast(@StringRes int stringRes, @NonNull String applicationLabel) {
|
||||
UiThread.getHandler().post(
|
||||
() -> Toast.makeText(
|
||||
mWmService.mContext,
|
||||
mWmService.mContext.getString(stringRes, applicationLabel),
|
||||
Toast.LENGTH_LONG).show());
|
||||
}
|
||||
|
||||
private synchronized void notifyCameraClosed(@NonNull String cameraId) {
|
||||
ProtoLog.v(WM_DEBUG_ORIENTATION,
|
||||
"Display id=%d is notified that Camera %s is closed, scheduling rotation update.",
|
||||
|
||||
@@ -40,7 +40,9 @@ import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.times;
|
||||
@@ -51,6 +53,8 @@ import android.app.servertransaction.RefreshCallbackItem;
|
||||
import android.app.servertransaction.ResumeActivityItem;
|
||||
import android.content.ComponentName;
|
||||
import android.content.pm.ActivityInfo.ScreenOrientation;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Configuration.Orientation;
|
||||
import android.hardware.camera2.CameraManager;
|
||||
@@ -84,7 +88,7 @@ public final class DisplayRotationCompatPolicyTests extends WindowTestsBase {
|
||||
private static final String TEST_PACKAGE_2 = "com.test.package.two";
|
||||
private static final String CAMERA_ID_1 = "camera-1";
|
||||
private static final String CAMERA_ID_2 = "camera-2";
|
||||
|
||||
private static final String TEST_PACKAGE_1_LABEL = "testPackage1";
|
||||
private CameraManager mMockCameraManager;
|
||||
private Handler mMockHandler;
|
||||
private LetterboxConfiguration mLetterboxConfiguration;
|
||||
@@ -133,17 +137,27 @@ public final class DisplayRotationCompatPolicyTests extends WindowTestsBase {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOpenedCameraInSplitScreen_showToast() {
|
||||
public void testOpenedCameraInSplitScreen_showToast() throws Exception {
|
||||
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
|
||||
spyOn(mTask);
|
||||
spyOn(mDisplayRotationCompatPolicy);
|
||||
doReturn(WINDOWING_MODE_MULTI_WINDOW).when(mActivity).getWindowingMode();
|
||||
doReturn(WINDOWING_MODE_MULTI_WINDOW).when(mTask).getWindowingMode();
|
||||
|
||||
final PackageManager mockPackageManager = mock(PackageManager.class);
|
||||
final ApplicationInfo mockApplicationInfo = mock(ApplicationInfo.class);
|
||||
when(mContext.getPackageManager()).thenReturn(mockPackageManager);
|
||||
when(mockPackageManager.getApplicationInfo(anyString(), anyInt()))
|
||||
.thenReturn(mockApplicationInfo);
|
||||
|
||||
doReturn(TEST_PACKAGE_1_LABEL).when(mockPackageManager)
|
||||
.getApplicationLabel(mockApplicationInfo);
|
||||
|
||||
mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
|
||||
|
||||
verify(mDisplayRotationCompatPolicy).showToast(
|
||||
R.string.display_rotation_camera_compat_toast_in_split_screen);
|
||||
R.string.display_rotation_camera_compat_toast_in_multi_window,
|
||||
TEST_PACKAGE_1_LABEL);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -157,7 +171,8 @@ public final class DisplayRotationCompatPolicyTests extends WindowTestsBase {
|
||||
mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
|
||||
|
||||
verify(mDisplayRotationCompatPolicy, never()).showToast(
|
||||
R.string.display_rotation_camera_compat_toast_in_split_screen);
|
||||
R.string.display_rotation_camera_compat_toast_in_multi_window,
|
||||
TEST_PACKAGE_1_LABEL);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user