Merge "Check appOp in testWakefulnessAwake_AcquireCausesWakeup" into tm-dev am: fbcba37205
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17399949 Change-Id: I72920ee2620b3f990948591ac825211fd7677009 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -293,6 +293,7 @@ public final class PowerManagerService extends SystemService
|
|||||||
private final Clock mClock;
|
private final Clock mClock;
|
||||||
private final Injector mInjector;
|
private final Injector mInjector;
|
||||||
|
|
||||||
|
private AppOpsManager mAppOpsManager;
|
||||||
private LightsManager mLightsManager;
|
private LightsManager mLightsManager;
|
||||||
private BatteryManagerInternal mBatteryManagerInternal;
|
private BatteryManagerInternal mBatteryManagerInternal;
|
||||||
private DisplayManagerInternal mDisplayManagerInternal;
|
private DisplayManagerInternal mDisplayManagerInternal;
|
||||||
@@ -990,6 +991,10 @@ public final class PowerManagerService extends SystemService
|
|||||||
LowPowerStandbyController createLowPowerStandbyController(Context context, Looper looper) {
|
LowPowerStandbyController createLowPowerStandbyController(Context context, Looper looper) {
|
||||||
return new LowPowerStandbyController(context, looper, SystemClock::elapsedRealtime);
|
return new LowPowerStandbyController(context, looper, SystemClock::elapsedRealtime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AppOpsManager createAppOpsManager(Context context) {
|
||||||
|
return context.getSystemService(AppOpsManager.class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final Constants mConstants;
|
final Constants mConstants;
|
||||||
@@ -1044,6 +1049,8 @@ public final class PowerManagerService extends SystemService
|
|||||||
mInattentiveSleepWarningOverlayController =
|
mInattentiveSleepWarningOverlayController =
|
||||||
mInjector.createInattentiveSleepWarningController();
|
mInjector.createInattentiveSleepWarningController();
|
||||||
|
|
||||||
|
mAppOpsManager = injector.createAppOpsManager(mContext);
|
||||||
|
|
||||||
mPowerGroupWakefulnessChangeListener = new PowerGroupWakefulnessChangeListener();
|
mPowerGroupWakefulnessChangeListener = new PowerGroupWakefulnessChangeListener();
|
||||||
|
|
||||||
// Save brightness values:
|
// Save brightness values:
|
||||||
@@ -1562,8 +1569,7 @@ public final class PowerManagerService extends SystemService
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (mContext.getSystemService(AppOpsManager.class).checkOpNoThrow(
|
if (mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_TURN_SCREEN_ON, opUid, opPackageName)
|
||||||
AppOpsManager.OP_TURN_SCREEN_ON, opUid, opPackageName)
|
|
||||||
== AppOpsManager.MODE_ALLOWED) {
|
== AppOpsManager.MODE_ALLOWED) {
|
||||||
if (DEBUG_SPEW) {
|
if (DEBUG_SPEW) {
|
||||||
Slog.d(TAG, "Allowing device wake-up for app with special access " + opPackageName);
|
Slog.d(TAG, "Allowing device wake-up for app with special access " + opPackageName);
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ package com.android.server.power;
|
|||||||
|
|
||||||
import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP;
|
import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP;
|
||||||
import static android.app.ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE;
|
import static android.app.ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE;
|
||||||
|
import static android.app.AppOpsManager.MODE_ALLOWED;
|
||||||
|
import static android.app.AppOpsManager.MODE_ERRORED;
|
||||||
import static android.os.PowerManagerInternal.WAKEFULNESS_ASLEEP;
|
import static android.os.PowerManagerInternal.WAKEFULNESS_ASLEEP;
|
||||||
import static android.os.PowerManagerInternal.WAKEFULNESS_AWAKE;
|
import static android.os.PowerManagerInternal.WAKEFULNESS_AWAKE;
|
||||||
import static android.os.PowerManagerInternal.WAKEFULNESS_DOZING;
|
import static android.os.PowerManagerInternal.WAKEFULNESS_DOZING;
|
||||||
@@ -46,6 +48,7 @@ import static org.mockito.Mockito.verify;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.app.ActivityManagerInternal;
|
import android.app.ActivityManagerInternal;
|
||||||
|
import android.app.AppOpsManager;
|
||||||
import android.attention.AttentionManagerInternal;
|
import android.attention.AttentionManagerInternal;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.ContextWrapper;
|
import android.content.ContextWrapper;
|
||||||
@@ -140,6 +143,7 @@ public class PowerManagerServiceTest {
|
|||||||
@Mock private WirelessChargerDetector mWirelessChargerDetectorMock;
|
@Mock private WirelessChargerDetector mWirelessChargerDetectorMock;
|
||||||
@Mock private AmbientDisplayConfiguration mAmbientDisplayConfigurationMock;
|
@Mock private AmbientDisplayConfiguration mAmbientDisplayConfigurationMock;
|
||||||
@Mock private SystemPropertiesWrapper mSystemPropertiesMock;
|
@Mock private SystemPropertiesWrapper mSystemPropertiesMock;
|
||||||
|
@Mock private AppOpsManager mAppOpsManagerMock;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private InattentiveSleepWarningController mInattentiveSleepWarningControllerMock;
|
private InattentiveSleepWarningController mInattentiveSleepWarningControllerMock;
|
||||||
@@ -297,6 +301,11 @@ public class PowerManagerServiceTest {
|
|||||||
return new LowPowerStandbyController(context, mTestLooper.getLooper(),
|
return new LowPowerStandbyController(context, mTestLooper.getLooper(),
|
||||||
SystemClock::elapsedRealtime);
|
SystemClock::elapsedRealtime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
AppOpsManager createAppOpsManager(Context context) {
|
||||||
|
return mAppOpsManagerMock;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
return mService;
|
return mService;
|
||||||
}
|
}
|
||||||
@@ -461,7 +470,7 @@ public class PowerManagerServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWakefulnessAwake_AcquireCausesWakeup() {
|
public void testWakefulnessAwake_AcquireCausesWakeup_turnScreenOnAllowed() {
|
||||||
createService();
|
createService();
|
||||||
startSystem();
|
startSystem();
|
||||||
forceSleep();
|
forceSleep();
|
||||||
@@ -469,6 +478,8 @@ public class PowerManagerServiceTest {
|
|||||||
IBinder token = new Binder();
|
IBinder token = new Binder();
|
||||||
String tag = "acq_causes_wakeup";
|
String tag = "acq_causes_wakeup";
|
||||||
String packageName = "pkg.name";
|
String packageName = "pkg.name";
|
||||||
|
when(mAppOpsManagerMock.checkOpNoThrow(AppOpsManager.OP_TURN_SCREEN_ON,
|
||||||
|
Binder.getCallingUid(), packageName)).thenReturn(MODE_ALLOWED);
|
||||||
|
|
||||||
// First, ensure that a normal full wake lock does not cause a wakeup
|
// First, ensure that a normal full wake lock does not cause a wakeup
|
||||||
int flags = PowerManager.FULL_WAKE_LOCK;
|
int flags = PowerManager.FULL_WAKE_LOCK;
|
||||||
@@ -492,6 +503,27 @@ public class PowerManagerServiceTest {
|
|||||||
mService.getBinderServiceInstance().releaseWakeLock(token, 0 /* flags */);
|
mService.getBinderServiceInstance().releaseWakeLock(token, 0 /* flags */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWakefulnessAwake_AcquireCausesWakeup_turnScreenOnDenied() {
|
||||||
|
createService();
|
||||||
|
startSystem();
|
||||||
|
forceSleep();
|
||||||
|
|
||||||
|
IBinder token = new Binder();
|
||||||
|
String tag = "acq_causes_wakeup";
|
||||||
|
String packageName = "pkg.name";
|
||||||
|
when(mAppOpsManagerMock.checkOpNoThrow(AppOpsManager.OP_TURN_SCREEN_ON,
|
||||||
|
Binder.getCallingUid(), packageName)).thenReturn(MODE_ERRORED);
|
||||||
|
|
||||||
|
|
||||||
|
// Verify that flag has no effect when OP_TURN_SCREEN_ON is not allowed
|
||||||
|
int flags = PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;
|
||||||
|
mService.getBinderServiceInstance().acquireWakeLock(token, flags, tag, packageName,
|
||||||
|
null /* workSource */, null /* historyTag */, Display.INVALID_DISPLAY, null);
|
||||||
|
assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_ASLEEP);
|
||||||
|
mService.getBinderServiceInstance().releaseWakeLock(token, 0 /* flags */);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWakefulnessAwake_IPowerManagerWakeUp() {
|
public void testWakefulnessAwake_IPowerManagerWakeUp() {
|
||||||
createService();
|
createService();
|
||||||
|
|||||||
Reference in New Issue
Block a user