Loading core/java/android/app/ActivityManagerNative.java +6 −3 Original line number Diff line number Diff line Loading @@ -1527,7 +1527,9 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM case SET_LOCK_SCREEN_SHOWN_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); setLockScreenShown(data.readInt() != 0); final boolean showing = data.readInt() != 0; final boolean occluded = data.readInt() != 0; setLockScreenShown(showing, occluded); reply.writeNoException(); return true; } Loading Loading @@ -4922,12 +4924,13 @@ class ActivityManagerProxy implements IActivityManager reply.recycle(); return pfd; } public void setLockScreenShown(boolean shown) throws RemoteException public void setLockScreenShown(boolean showing, boolean occluded) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeInt(shown ? 1 : 0); data.writeInt(showing ? 1 : 0); data.writeInt(occluded ? 1 : 0); mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0); reply.readException(); data.recycle(); Loading core/java/android/app/IActivityManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -331,7 +331,7 @@ public interface IActivityManager extends IInterface { public void forceStopPackage(final String packageName, int userId) throws RemoteException; // Note: probably don't want to allow applications access to these. public void setLockScreenShown(boolean shown) throws RemoteException; public void setLockScreenShown(boolean showing, boolean occluded) throws RemoteException; public void unhandledBack() throws RemoteException; public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException; Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +1 −1 Original line number Diff line number Diff line Loading @@ -1542,7 +1542,7 @@ public class KeyguardViewMediator extends SystemUI { private void updateActivityLockScreenState() { try { ActivityManagerNative.getDefault().setLockScreenShown(mShowing && !mOccluded); ActivityManagerNative.getDefault().setLockScreenShown(mShowing, mOccluded); } catch (RemoteException e) { } } Loading services/core/java/com/android/server/am/ActivityManagerService.java +12 −3 Original line number Diff line number Diff line Loading @@ -11476,7 +11476,7 @@ public final class ActivityManagerService extends ActivityManagerNative mWindowManager.setEventDispatching(mBooted && !mShuttingDown); } public void setLockScreenShown(boolean shown) { public void setLockScreenShown(boolean showing, boolean occluded) { if (checkCallingPermission(android.Manifest.permission.DEVICE_POWER) != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Requires permission " Loading @@ -11486,8 +11486,17 @@ public final class ActivityManagerService extends ActivityManagerNative synchronized(this) { long ident = Binder.clearCallingIdentity(); try { if (DEBUG_LOCKSCREEN) logLockScreen(" shown=" + shown); mLockScreenShown = shown ? LOCK_SCREEN_SHOWN : LOCK_SCREEN_HIDDEN; if (DEBUG_LOCKSCREEN) logLockScreen(" showing=" + showing + " occluded=" + occluded); mLockScreenShown = (showing && !occluded) ? LOCK_SCREEN_SHOWN : LOCK_SCREEN_HIDDEN; if (showing && occluded) { // The lock screen is currently showing, but is occluded by a window that can // show on top of the lock screen. In this can we want to dismiss the docked // stack since it will be complicated/risky to try to put the activity on top // of the lock screen in the right fullscreen configuration. mStackSupervisor.moveTasksToFullscreenStackLocked(DOCKED_STACK_ID, mStackSupervisor.mFocusedStack.getStackId() == DOCKED_STACK_ID); } updateSleepIfNeededLocked(); } finally { Binder.restoreCallingIdentity(ident); Loading Loading
core/java/android/app/ActivityManagerNative.java +6 −3 Original line number Diff line number Diff line Loading @@ -1527,7 +1527,9 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM case SET_LOCK_SCREEN_SHOWN_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); setLockScreenShown(data.readInt() != 0); final boolean showing = data.readInt() != 0; final boolean occluded = data.readInt() != 0; setLockScreenShown(showing, occluded); reply.writeNoException(); return true; } Loading Loading @@ -4922,12 +4924,13 @@ class ActivityManagerProxy implements IActivityManager reply.recycle(); return pfd; } public void setLockScreenShown(boolean shown) throws RemoteException public void setLockScreenShown(boolean showing, boolean occluded) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeInt(shown ? 1 : 0); data.writeInt(showing ? 1 : 0); data.writeInt(occluded ? 1 : 0); mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0); reply.readException(); data.recycle(); Loading
core/java/android/app/IActivityManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -331,7 +331,7 @@ public interface IActivityManager extends IInterface { public void forceStopPackage(final String packageName, int userId) throws RemoteException; // Note: probably don't want to allow applications access to these. public void setLockScreenShown(boolean shown) throws RemoteException; public void setLockScreenShown(boolean showing, boolean occluded) throws RemoteException; public void unhandledBack() throws RemoteException; public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException; Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +1 −1 Original line number Diff line number Diff line Loading @@ -1542,7 +1542,7 @@ public class KeyguardViewMediator extends SystemUI { private void updateActivityLockScreenState() { try { ActivityManagerNative.getDefault().setLockScreenShown(mShowing && !mOccluded); ActivityManagerNative.getDefault().setLockScreenShown(mShowing, mOccluded); } catch (RemoteException e) { } } Loading
services/core/java/com/android/server/am/ActivityManagerService.java +12 −3 Original line number Diff line number Diff line Loading @@ -11476,7 +11476,7 @@ public final class ActivityManagerService extends ActivityManagerNative mWindowManager.setEventDispatching(mBooted && !mShuttingDown); } public void setLockScreenShown(boolean shown) { public void setLockScreenShown(boolean showing, boolean occluded) { if (checkCallingPermission(android.Manifest.permission.DEVICE_POWER) != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Requires permission " Loading @@ -11486,8 +11486,17 @@ public final class ActivityManagerService extends ActivityManagerNative synchronized(this) { long ident = Binder.clearCallingIdentity(); try { if (DEBUG_LOCKSCREEN) logLockScreen(" shown=" + shown); mLockScreenShown = shown ? LOCK_SCREEN_SHOWN : LOCK_SCREEN_HIDDEN; if (DEBUG_LOCKSCREEN) logLockScreen(" showing=" + showing + " occluded=" + occluded); mLockScreenShown = (showing && !occluded) ? LOCK_SCREEN_SHOWN : LOCK_SCREEN_HIDDEN; if (showing && occluded) { // The lock screen is currently showing, but is occluded by a window that can // show on top of the lock screen. In this can we want to dismiss the docked // stack since it will be complicated/risky to try to put the activity on top // of the lock screen in the right fullscreen configuration. mStackSupervisor.moveTasksToFullscreenStackLocked(DOCKED_STACK_ID, mStackSupervisor.mFocusedStack.getStackId() == DOCKED_STACK_ID); } updateSleepIfNeededLocked(); } finally { Binder.restoreCallingIdentity(ident); Loading