Merge "DO NOT MERGE: Move AlarmManager to apex" into mainline-prod

This commit is contained in:
Julien Desprez
2021-03-04 17:14:33 +00:00
committed by Android (Google) Code Review
18 changed files with 88 additions and 69 deletions

View File

@@ -2,10 +2,7 @@ filegroup {
name: "framework-jobscheduler-sources", name: "framework-jobscheduler-sources",
srcs: [ srcs: [
"java/**/*.java", "java/**/*.java",
"java/android/app/job/IJobCallback.aidl", "java/**/*.aidl",
"java/android/app/job/IJobScheduler.aidl",
"java/android/app/job/IJobService.aidl",
"java/android/os/IDeviceIdleController.aidl",
], ],
path: "java", path: "java",
visibility: ["//frameworks/base"], visibility: ["//frameworks/base"],

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.server; package com.android.server.alarm;
import static android.app.AlarmManager.ELAPSED_REALTIME; import static android.app.AlarmManager.ELAPSED_REALTIME;
import static android.app.AlarmManager.ELAPSED_REALTIME_WAKEUP; import static android.app.AlarmManager.ELAPSED_REALTIME_WAKEUP;
@@ -97,7 +97,14 @@ import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.LocalLog; import com.android.internal.util.LocalLog;
import com.android.internal.util.StatLogger; import com.android.internal.util.StatLogger;
import com.android.server.AlarmManagerInternal;
import com.android.server.AppStateTracker;
import com.android.server.AppStateTracker.Listener; import com.android.server.AppStateTracker.Listener;
import com.android.server.DeviceIdleInternal;
import com.android.server.EventLogTags;
import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.SystemServiceManager;
import com.android.server.usage.AppStandbyInternal; import com.android.server.usage.AppStandbyInternal;
import com.android.server.usage.AppStandbyInternal.AppIdleStateChangeListener; import com.android.server.usage.AppStandbyInternal.AppIdleStateChangeListener;
@@ -127,7 +134,7 @@ import java.util.function.Predicate;
* Unit test: * Unit test:
atest $ANDROID_BUILD_TOP/frameworks/base/services/tests/servicestests/src/com/android/server/AlarmManagerServiceTest.java atest $ANDROID_BUILD_TOP/frameworks/base/services/tests/servicestests/src/com/android/server/AlarmManagerServiceTest.java
*/ */
class AlarmManagerService extends SystemService { public class AlarmManagerService extends SystemService {
private static final int RTC_WAKEUP_MASK = 1 << RTC_WAKEUP; private static final int RTC_WAKEUP_MASK = 1 << RTC_WAKEUP;
private static final int RTC_MASK = 1 << RTC; private static final int RTC_MASK = 1 << RTC;
private static final int ELAPSED_REALTIME_WAKEUP_MASK = 1 << ELAPSED_REALTIME_WAKEUP; private static final int ELAPSED_REALTIME_WAKEUP_MASK = 1 << ELAPSED_REALTIME_WAKEUP;
@@ -920,7 +927,7 @@ class AlarmManagerService extends SystemService {
mInjector = injector; mInjector = injector;
} }
AlarmManagerService(Context context) { public AlarmManagerService(Context context) {
this(context, new Injector(context)); this(context, new Injector(context));
} }

View File

@@ -0,0 +1,24 @@
{
"presubmit": [
{
"name": "FrameworksMockingServicesTests",
"options": [
{
"include-filter": "com.android.server.alarm"
},
{
"include-annotation": "android.platform.test.annotations.Presubmit"
},
{
"exclude-annotation": "androidx.test.filters.FlakyTest"
}
]
}
],
"postsubmit": [
{
"name": "CtsAlarmManagerTestCases"
}
]
}

View File

@@ -34,7 +34,7 @@ import "frameworks/base/core/proto/android/os/statsdata.proto";
import "frameworks/base/core/proto/android/os/system_properties.proto"; import "frameworks/base/core/proto/android/os/system_properties.proto";
import "frameworks/base/core/proto/android/providers/settings.proto"; import "frameworks/base/core/proto/android/providers/settings.proto";
import "frameworks/base/core/proto/android/server/activitymanagerservice.proto"; import "frameworks/base/core/proto/android/server/activitymanagerservice.proto";
import "frameworks/base/core/proto/android/server/alarmmanagerservice.proto"; import "frameworks/base/core/proto/android/server/alarm/alarmmanagerservice.proto";
import "frameworks/base/core/proto/android/server/bluetooth_manager_service.proto"; import "frameworks/base/core/proto/android/server/bluetooth_manager_service.proto";
import "frameworks/base/core/proto/android/server/fingerprint.proto"; import "frameworks/base/core/proto/android/server/fingerprint.proto";
import "frameworks/base/core/proto/android/server/jobscheduler.proto"; import "frameworks/base/core/proto/android/server/jobscheduler.proto";
@@ -317,7 +317,7 @@ message IncidentProto {
(section).args = "activity --proto processes" (section).args = "activity --proto processes"
]; ];
optional com.android.server.AlarmManagerServiceDumpProto alarm = 3016 [ optional com.android.server.alarm.AlarmManagerServiceDumpProto alarm = 3016 [
(section).type = SECTION_DUMPSYS, (section).type = SECTION_DUMPSYS,
(section).args = "alarm --proto" (section).args = "alarm --proto"
]; ];

View File

@@ -23,7 +23,7 @@ import "frameworks/base/core/proto/android/os/worksource.proto";
import "frameworks/base/core/proto/android/server/appstatetracker.proto"; import "frameworks/base/core/proto/android/server/appstatetracker.proto";
import "frameworks/base/core/proto/android/privacy.proto"; import "frameworks/base/core/proto/android/privacy.proto";
package com.android.server; package com.android.server.alarm;
option java_multiple_files = true; option java_multiple_files = true;

View File

@@ -23,7 +23,6 @@ import android.app.AppOpsManager.PackageOps;
import android.app.IActivityManager; import android.app.IActivityManager;
import android.app.IUidObserver; import android.app.IUidObserver;
import android.app.usage.UsageStatsManager; import android.app.usage.UsageStatsManager;
import android.app.usage.UsageStatsManagerInternal;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -53,7 +52,6 @@ import com.android.internal.app.IAppOpsCallback;
import com.android.internal.app.IAppOpsService; import com.android.internal.app.IAppOpsService;
import com.android.internal.util.ArrayUtils; import com.android.internal.util.ArrayUtils;
import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
import com.android.internal.util.StatLogger; import com.android.internal.util.StatLogger;
import com.android.server.AppStateTrackerProto.ExemptedPackage; import com.android.server.AppStateTrackerProto.ExemptedPackage;
import com.android.server.AppStateTrackerProto.RunAnyInBackgroundRestrictedPackages; import com.android.server.AppStateTrackerProto.RunAnyInBackgroundRestrictedPackages;
@@ -1181,7 +1179,7 @@ public class AppStateTracker {
* @return whether force all apps standby is enabled or not. * @return whether force all apps standby is enabled or not.
* *
*/ */
boolean isForceAllAppsStandbyEnabled() { public boolean isForceAllAppsStandbyEnabled() {
synchronized (mLock) { synchronized (mLock) {
return mForceAllAppsStandby; return mForceAllAppsStandby;
} }

View File

@@ -1,20 +1,5 @@
{ {
"presubmit": [ "presubmit": [
{
"name": "FrameworksMockingServicesTests",
"file_patterns": ["AlarmManagerService\\.java"],
"options": [
{
"include-filter": "com.android.server."
},
{
"include-annotation": "android.platform.test.annotations.Presubmit"
},
{
"exclude-annotation": "androidx.test.filters.FlakyTest"
}
]
},
{ {
"name": "CtsLocationFineTestCases" "name": "CtsLocationFineTestCases"
}, },

View File

@@ -76,7 +76,7 @@ cc_library_static {
product_variables: { product_variables: {
arc: { arc: {
exclude_srcs: [ exclude_srcs: [
"com_android_server_AlarmManagerService.cpp", "com_android_server_alarm_AlarmManagerService.cpp",
], ],
srcs: [ srcs: [
":arctimersrcs", ":arctimersrcs",
@@ -197,6 +197,6 @@ filegroup {
filegroup { filegroup {
name: "lib_alarmManagerService_native", name: "lib_alarmManagerService_native",
srcs: [ srcs: [
"com_android_server_AlarmManagerService.cpp", "com_android_server_alarm_AlarmManagerService.cpp",
], ],
} }

View File

@@ -210,7 +210,7 @@ int AlarmImpl::waitForAlarm()
return result; return result;
} }
static jint android_server_AlarmManagerService_setKernelTime(JNIEnv*, jobject, jlong nativeData, jlong millis) static jint android_server_alarm_AlarmManagerService_setKernelTime(JNIEnv*, jobject, jlong nativeData, jlong millis)
{ {
AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData); AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData);
struct timeval tv; struct timeval tv;
@@ -234,7 +234,7 @@ static jint android_server_AlarmManagerService_setKernelTime(JNIEnv*, jobject, j
return ret; return ret;
} }
static jint android_server_AlarmManagerService_setKernelTimezone(JNIEnv*, jobject, jlong, jint minswest) static jint android_server_alarm_AlarmManagerService_setKernelTimezone(JNIEnv*, jobject, jlong, jint minswest)
{ {
struct timezone tz; struct timezone tz;
@@ -337,7 +337,7 @@ static void log_timerfd_create_error(clockid_t id)
ALOGE("timerfd_create(%u) failed: %s", id, strerror(errno)); ALOGE("timerfd_create(%u) failed: %s", id, strerror(errno));
} }
static jlong android_server_AlarmManagerService_init(JNIEnv*, jobject) static jlong android_server_alarm_AlarmManagerService_init(JNIEnv*, jobject)
{ {
int epollfd; int epollfd;
TimerFds fds; TimerFds fds;
@@ -392,7 +392,7 @@ static jlong android_server_AlarmManagerService_init(JNIEnv*, jobject)
return reinterpret_cast<jlong>(ret); return reinterpret_cast<jlong>(ret);
} }
static jlong android_server_AlarmManagerService_getNextAlarm(JNIEnv*, jobject, jlong nativeData, jint type) static jlong android_server_alarm_AlarmManagerService_getNextAlarm(JNIEnv*, jobject, jlong nativeData, jint type)
{ {
AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData); AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData);
struct itimerspec spec; struct itimerspec spec;
@@ -409,13 +409,13 @@ static jlong android_server_AlarmManagerService_getNextAlarm(JNIEnv*, jobject, j
return static_cast<jlong>(millis); return static_cast<jlong>(millis);
} }
static void android_server_AlarmManagerService_close(JNIEnv*, jobject, jlong nativeData) static void android_server_alarm_AlarmManagerService_close(JNIEnv*, jobject, jlong nativeData)
{ {
AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData); AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData);
delete impl; delete impl;
} }
static jint android_server_AlarmManagerService_set(JNIEnv*, jobject, jlong nativeData, jint type, jlong seconds, jlong nanoseconds) static jint android_server_alarm_AlarmManagerService_set(JNIEnv*, jobject, jlong nativeData, jint type, jlong seconds, jlong nanoseconds)
{ {
AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData); AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData);
struct timespec ts; struct timespec ts;
@@ -432,7 +432,7 @@ static jint android_server_AlarmManagerService_set(JNIEnv*, jobject, jlong nativ
return result >= 0 ? 0 : errno; return result >= 0 ? 0 : errno;
} }
static jint android_server_AlarmManagerService_waitForAlarm(JNIEnv*, jobject, jlong nativeData) static jint android_server_alarm_AlarmManagerService_waitForAlarm(JNIEnv*, jobject, jlong nativeData)
{ {
AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData); AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData);
int result = 0; int result = 0;
@@ -453,18 +453,18 @@ static jint android_server_AlarmManagerService_waitForAlarm(JNIEnv*, jobject, jl
static const JNINativeMethod sMethods[] = { static const JNINativeMethod sMethods[] = {
/* name, signature, funcPtr */ /* name, signature, funcPtr */
{"init", "()J", (void*)android_server_AlarmManagerService_init}, {"init", "()J", (void*)android_server_alarm_AlarmManagerService_init},
{"close", "(J)V", (void*)android_server_AlarmManagerService_close}, {"close", "(J)V", (void*)android_server_alarm_AlarmManagerService_close},
{"set", "(JIJJ)I", (void*)android_server_AlarmManagerService_set}, {"set", "(JIJJ)I", (void*)android_server_alarm_AlarmManagerService_set},
{"waitForAlarm", "(J)I", (void*)android_server_AlarmManagerService_waitForAlarm}, {"waitForAlarm", "(J)I", (void*)android_server_alarm_AlarmManagerService_waitForAlarm},
{"setKernelTime", "(JJ)I", (void*)android_server_AlarmManagerService_setKernelTime}, {"setKernelTime", "(JJ)I", (void*)android_server_alarm_AlarmManagerService_setKernelTime},
{"setKernelTimezone", "(JI)I", (void*)android_server_AlarmManagerService_setKernelTimezone}, {"setKernelTimezone", "(JI)I", (void*)android_server_alarm_AlarmManagerService_setKernelTimezone},
{"getNextAlarm", "(JI)J", (void*)android_server_AlarmManagerService_getNextAlarm}, {"getNextAlarm", "(JI)J", (void*)android_server_alarm_AlarmManagerService_getNextAlarm},
}; };
int register_android_server_AlarmManagerService(JNIEnv* env) int register_android_server_alarm_AlarmManagerService(JNIEnv* env)
{ {
return jniRegisterNativeMethods(env, "com/android/server/AlarmManagerService", return jniRegisterNativeMethods(env, "com/android/server/alarm/AlarmManagerService",
sMethods, NELEM(sMethods)); sMethods, NELEM(sMethods));
} }

View File

@@ -24,7 +24,7 @@
#include "BroadcastRadio/Tuner.h" #include "BroadcastRadio/Tuner.h"
namespace android { namespace android {
int register_android_server_AlarmManagerService(JNIEnv* env); int register_android_server_alarm_AlarmManagerService(JNIEnv* env);
int register_android_server_BatteryStatsService(JNIEnv* env); int register_android_server_BatteryStatsService(JNIEnv* env);
int register_android_server_ConsumerIrService(JNIEnv *env); int register_android_server_ConsumerIrService(JNIEnv *env);
int register_android_server_InputManager(JNIEnv* env); int register_android_server_InputManager(JNIEnv* env);
@@ -85,7 +85,7 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
register_android_server_SerialService(env); register_android_server_SerialService(env);
register_android_server_InputManager(env); register_android_server_InputManager(env);
register_android_server_LightsService(env); register_android_server_LightsService(env);
register_android_server_AlarmManagerService(env); register_android_server_alarm_AlarmManagerService(env);
register_android_server_UsbDeviceManager(env); register_android_server_UsbDeviceManager(env);
register_android_server_UsbMidiDevice(env); register_android_server_UsbMidiDevice(env);
register_android_server_UsbAlsaJackDetector(env); register_android_server_UsbAlsaJackDetector(env);

View File

@@ -306,6 +306,8 @@ public final class SystemServer {
"com.android.server.blob.BlobStoreManagerService"; "com.android.server.blob.BlobStoreManagerService";
private static final String ROLLBACK_MANAGER_SERVICE_CLASS = private static final String ROLLBACK_MANAGER_SERVICE_CLASS =
"com.android.server.rollback.RollbackManagerService"; "com.android.server.rollback.RollbackManagerService";
private static final String ALARM_MANAGER_SERVICE_CLASS =
"com.android.server.alarm.AlarmManagerService";
private static final String TETHERING_CONNECTOR_CLASS = "android.net.ITetheringConnector"; private static final String TETHERING_CONNECTOR_CLASS = "android.net.ITetheringConnector";
@@ -1143,7 +1145,7 @@ public final class SystemServer {
} }
t.traceBegin("StartAlarmManagerService"); t.traceBegin("StartAlarmManagerService");
mSystemServiceManager.startService(new AlarmManagerService(context)); mSystemServiceManager.startService(ALARM_MANAGER_SERVICE_CLASS);
t.traceEnd(); t.traceEnd();
t.traceBegin("StartInputManagerService"); t.traceBegin("StartInputManagerService");

View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.android.server; package com.android.server.alarm;
import static android.app.AlarmManager.ELAPSED_REALTIME; import static android.app.AlarmManager.ELAPSED_REALTIME;
import static android.app.AlarmManager.ELAPSED_REALTIME_WAKEUP; import static android.app.AlarmManager.ELAPSED_REALTIME_WAKEUP;
@@ -26,7 +26,6 @@ import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_RESTRICTED;
import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_WORKING_SET; import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_WORKING_SET;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doCallRealMethod; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doCallRealMethod;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doThrow; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doThrow;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
@@ -34,20 +33,20 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSess
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.when; import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
import static com.android.server.AlarmManagerService.ACTIVE_INDEX; import static com.android.server.alarm.AlarmManagerService.ACTIVE_INDEX;
import static com.android.server.AlarmManagerService.AlarmHandler.APP_STANDBY_BUCKET_CHANGED; import static com.android.server.alarm.AlarmManagerService.AlarmHandler.APP_STANDBY_BUCKET_CHANGED;
import static com.android.server.AlarmManagerService.AlarmHandler.CHARGING_STATUS_CHANGED; import static com.android.server.alarm.AlarmManagerService.AlarmHandler.CHARGING_STATUS_CHANGED;
import static com.android.server.AlarmManagerService.AlarmHandler.REMOVE_FOR_CANCELED; import static com.android.server.alarm.AlarmManagerService.AlarmHandler.REMOVE_FOR_CANCELED;
import static com.android.server.AlarmManagerService.Constants.KEY_ALLOW_WHILE_IDLE_LONG_TIME; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_ALLOW_WHILE_IDLE_LONG_TIME;
import static com.android.server.AlarmManagerService.Constants.KEY_ALLOW_WHILE_IDLE_SHORT_TIME; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_ALLOW_WHILE_IDLE_SHORT_TIME;
import static com.android.server.AlarmManagerService.Constants.KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION;
import static com.android.server.AlarmManagerService.Constants.KEY_LISTENER_TIMEOUT; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_LISTENER_TIMEOUT;
import static com.android.server.AlarmManagerService.Constants.KEY_MAX_INTERVAL; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_MAX_INTERVAL;
import static com.android.server.AlarmManagerService.Constants.KEY_MIN_FUTURITY; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_MIN_FUTURITY;
import static com.android.server.AlarmManagerService.Constants.KEY_MIN_INTERVAL; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_MIN_INTERVAL;
import static com.android.server.AlarmManagerService.IS_WAKEUP_MASK; import static com.android.server.alarm.AlarmManagerService.IS_WAKEUP_MASK;
import static com.android.server.AlarmManagerService.TIME_CHANGED_MASK; import static com.android.server.alarm.AlarmManagerService.TIME_CHANGED_MASK;
import static com.android.server.AlarmManagerService.WORKING_INDEX; import static com.android.server.alarm.AlarmManagerService.WORKING_INDEX;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
@@ -77,6 +76,7 @@ import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.PowerManager; import android.os.PowerManager;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle; import android.os.UserHandle;
import android.platform.test.annotations.Presubmit; import android.platform.test.annotations.Presubmit;
import android.provider.Settings; import android.provider.Settings;
@@ -87,6 +87,10 @@ import androidx.test.runner.AndroidJUnit4;
import com.android.dx.mockito.inline.extended.MockedVoidMethod; import com.android.dx.mockito.inline.extended.MockedVoidMethod;
import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.GuardedBy;
import com.android.server.AlarmManagerInternal;
import com.android.server.AppStateTracker;
import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.usage.AppStandbyInternal; import com.android.server.usage.AppStandbyInternal;
import org.junit.After; import org.junit.After;
@@ -255,7 +259,8 @@ public class AlarmManagerServiceTest {
.spyStatic(ActivityManager.class) .spyStatic(ActivityManager.class)
.mockStatic(LocalServices.class) .mockStatic(LocalServices.class)
.spyStatic(Looper.class) .spyStatic(Looper.class)
.spyStatic(Settings.Global.class) .mockStatic(Settings.Global.class)
.mockStatic(ServiceManager.class)
.spyStatic(UserHandle.class) .spyStatic(UserHandle.class)
.strictness(Strictness.WARN) .strictness(Strictness.WARN)
.startMocking(); .startMocking();
@@ -280,7 +285,6 @@ public class AlarmManagerServiceTest {
mInjector = new Injector(mMockContext); mInjector = new Injector(mMockContext);
mService = new AlarmManagerService(mMockContext, mInjector); mService = new AlarmManagerService(mMockContext, mInjector);
spyOn(mService); spyOn(mService);
doNothing().when(mService).publishBinderService(any(), any());
mService.onStart(); mService.onStart();
spyOn(mService.mHandler); spyOn(mService.mHandler);

View File

@@ -13,26 +13,28 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.android.server; package com.android.server.alarm;
import static android.app.AlarmManager.RTC; import static android.app.AlarmManager.RTC;
import static android.app.AlarmManager.RTC_WAKEUP; import static android.app.AlarmManager.RTC_WAKEUP;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import android.platform.test.annotations.Presubmit;
import android.util.SparseArray; import android.util.SparseArray;
import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4; import androidx.test.runner.AndroidJUnit4;
import com.android.internal.util.ObjectUtils; import com.android.internal.util.ObjectUtils;
import com.android.server.AlarmManagerService.Alarm; import com.android.server.alarm.AlarmManagerService.Alarm;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import java.util.ArrayList; import java.util.ArrayList;
@Presubmit
@SmallTest @SmallTest
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class BackgroundRestrictedAlarmsTest { public class BackgroundRestrictedAlarmsTest {