Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc07a60e authored by Eghosa Ewansiha-Vlachavas's avatar Eghosa Ewansiha-Vlachavas Committed by Automerger Merge Worker
Browse files

Merge "Create new display rotation compat toast string for multi-window" into...

Merge "Create new display rotation compat toast string for multi-window" into udc-dev am: 5fa932d5

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



Change-Id: I29ee64ab11bd386716a8c8deb86588e97bb16a55
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents b5ff652f 5fa932d5
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -5037,8 +5037,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>
+1 −1
Original line number Diff line number Diff line
@@ -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" />
+6 −0
Original line number Diff line number Diff line
@@ -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",
+22 −1
Original line number Diff line number Diff line
@@ -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.",
+19 −4
Original line number Diff line number Diff line
@@ -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