diff options
author | 2022-05-04 18:36:26 +0800 | |
---|---|---|
committer | 2022-05-04 22:53:17 +0800 | |
commit | 4bf606c57867a1c571e893f913708d67fbc15fcf (patch) | |
tree | 9fb6e00672934697a802cb323c908aa88dae0821 | |
parent | 923e43dc704a2f62c9d016ae40a61cbe2ae1dbca (diff) |
Move some IWindowManager methods to internal interface
The methods are only used in system server. It is unnecessary to
declare in aidl.
This also eliminates the confusion of missing permission check
for updateRotation().
Bug: 230863943
Test: atest WindowManagerPermissionTests
Change-Id: I703830650bab3a792982cada99aa1512430658a4
6 files changed, 22 insertions, 49 deletions
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl index c83869c9ee68..ee49d7bf5c28 100644 --- a/core/java/android/view/IWindowManager.aidl +++ b/core/java/android/view/IWindowManager.aidl @@ -251,18 +251,6 @@ interface IWindowManager */ void refreshScreenCaptureDisabled(); - // These can only be called with the SET_ORIENTATION permission. - /** - * Update the current screen rotation based on the current state of - * the world. - * @param alwaysSendConfiguration Flag to force a new configuration to - * be evaluated. This can be used when there are other parameters in - * configuration that are changing. - * @param forceRelayout If true, the window manager will always do a relayout - * of its windows even if the rotation hasn't changed. - */ - void updateRotation(boolean alwaysSendConfiguration, boolean forceRelayout); - /** * Retrieve the current orientation of the primary screen. * @return Constant as per {@link android.view.Surface.Rotation}. @@ -443,11 +431,6 @@ interface IWindowManager boolean isSafeModeEnabled(); /** - * Enables the screen if all conditions are met. - */ - void enableScreenIfNeeded(); - - /** * Clears the frame statistics for a given window. * * @param token The window token. diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index f14bdca90977..ba4175b05d27 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -171,7 +171,6 @@ import android.util.proto.ProtoOutputStream; import android.view.Display; import android.view.HapticFeedbackConstants; import android.view.IDisplayFoldListener; -import android.view.IWindowManager; import android.view.InputDevice; import android.view.KeyCharacterMap; import android.view.KeyCharacterMap.FallbackAction; @@ -383,7 +382,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { private final SparseArray<ScreenOnListener> mScreenOnListeners = new SparseArray<>(); Context mContext; - IWindowManager mWindowManager; WindowManagerFuncs mWindowManagerFuncs; WindowManagerInternal mWindowManagerInternal; PowerManager mPowerManager; @@ -1883,10 +1881,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { /** {@inheritDoc} */ @Override - public void init(Context context, IWindowManager windowManager, - WindowManagerFuncs windowManagerFuncs) { + public void init(Context context, WindowManagerFuncs windowManagerFuncs) { mContext = context; - mWindowManager = windowManager; mWindowManagerFuncs = windowManagerFuncs; mWindowManagerInternal = LocalServices.getService(WindowManagerInternal.class); mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class); @@ -4814,10 +4810,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } if (enableScreen) { - try { - mWindowManager.enableScreenIfNeeded(); - } catch (RemoteException unhandled) { - } + mWindowManagerFuncs.enableScreenIfNeeded(); } } @@ -5274,12 +5267,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } void updateRotation(boolean alwaysSendConfiguration) { - try { - // Set orientation on WindowManager. - mWindowManager.updateRotation(alwaysSendConfiguration, false /* forceRelayout */); - } catch (RemoteException e) { - // Ignore - } + mWindowManagerFuncs.updateRotation(alwaysSendConfiguration, false /* forceRelayout */); } /** diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java index 7ca09ab5154f..e8a3dcd5635f 100644 --- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java +++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java @@ -78,7 +78,6 @@ import android.util.Slog; import android.util.proto.ProtoOutputStream; import android.view.Display; import android.view.IDisplayFoldListener; -import android.view.IWindowManager; import android.view.KeyEvent; import android.view.WindowManager; import android.view.WindowManagerGlobal; @@ -343,6 +342,22 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { * @return {@code true} if app transition state is idle on the default display. */ boolean isAppTransitionStateIdle(); + + /** + * Enables the screen if all conditions are met. + */ + void enableScreenIfNeeded(); + + /** + * Updates the current screen rotation based on the current state of the world. + * + * @param alwaysSendConfiguration Flag to force a new configuration to be evaluated. + * This can be used when there are other parameters in + * configuration that are changing. + * @param forceRelayout If true, the window manager will always do a relayout of its + * windows even if the rotation hasn't changed. + */ + void updateRotation(boolean alwaysSendConfiguration, boolean forceRelayout); } /** @@ -391,8 +406,7 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { * * @param context The system context we are running in. */ - public void init(Context context, IWindowManager windowManager, - WindowManagerFuncs windowManagerFuncs); + void init(Context context, WindowManagerFuncs windowManagerFuncs); /** * Check permissions when adding a window. diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 8ff1130cea52..842b61db3f3b 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -1173,7 +1173,7 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void run() { WindowManagerPolicyThread.set(Thread.currentThread(), Looper.myLooper()); - mPolicy.init(mContext, WindowManagerService.this, WindowManagerService.this); + mPolicy.init(mContext, WindowManagerService.this); } }, 0); } diff --git a/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java b/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java index ea98b6b17e83..92457c73b315 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java +++ b/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java @@ -26,7 +26,6 @@ import android.os.IBinder; import android.os.PowerManager.GoToSleepReason; import android.os.PowerManager.WakeReason; import android.util.proto.ProtoOutputStream; -import android.view.IWindowManager; import android.view.KeyEvent; import android.view.WindowManager; import android.view.animation.Animation; @@ -50,8 +49,7 @@ class TestWindowManagerPolicy implements WindowManagerPolicy { } @Override - public void init(Context context, IWindowManager windowManager, - WindowManagerFuncs windowManagerFuncs) { + public void init(Context context, WindowManagerFuncs windowManagerFuncs) { } public void setDefaultDisplay(DisplayContentInfo displayContentInfo) { diff --git a/tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java b/tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java index 1fe13fe97fbe..06cbeb5368a5 100644 --- a/tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java +++ b/tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java @@ -124,16 +124,6 @@ public class WindowManagerPermissionTests extends TestCase { @SmallTest public void testSET_ORIENTATION() { try { - mWm.updateRotation(true, false); - fail("IWindowManager.updateRotation did not throw SecurityException as" - + " expected"); - } catch (SecurityException e) { - // expected - } catch (RemoteException e) { - fail("Unexpected remote exception"); - } - - try { mWm.freezeRotation(-1); fail("IWindowManager.freezeRotation did not throw SecurityException as" + " expected"); |