diff options
7 files changed, 47 insertions, 65 deletions
diff --git a/services/core/java/com/android/server/notification/CountdownConditionProvider.java b/services/core/java/com/android/server/notification/CountdownConditionProvider.java index efca5986e35a..c3ace15a8c0f 100644 --- a/services/core/java/com/android/server/notification/CountdownConditionProvider.java +++ b/services/core/java/com/android/server/notification/CountdownConditionProvider.java @@ -19,13 +19,11 @@ package com.android.server.notification; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; import android.service.notification.Condition; -import android.service.notification.IConditionProvider; import android.service.notification.ZenModeConfig; import android.text.format.DateUtils; import android.util.Log; @@ -41,9 +39,6 @@ public class CountdownConditionProvider extends SystemConditionProviderService { private static final String TAG = "ConditionProviders.CCP"; private static final boolean DEBUG = Log.isLoggable("ConditionProviders", Log.DEBUG); - public static final ComponentName COMPONENT = - new ComponentName("android", CountdownConditionProvider.class.getName()); - private static final String ACTION = CountdownConditionProvider.class.getName(); private static final int REQUEST_CODE = 100; private static final String EXTRA_CONDITION_ID = "condition_id"; @@ -60,31 +55,16 @@ public class CountdownConditionProvider extends SystemConditionProviderService { } @Override - public ComponentName getComponent() { - return COMPONENT; - } - - @Override public boolean isValidConditionId(Uri id) { return ZenModeConfig.isValidCountdownConditionId(id); } @Override - public void attachBase(Context base) { - attachBaseContext(base); - } - - @Override public void onBootComplete() { // noop } @Override - public IConditionProvider asInterface() { - return (IConditionProvider) onBind(null); - } - - @Override public void dump(PrintWriter pw, DumpFilter filter) { pw.println(" CountdownConditionProvider:"); pw.print(" mConnected="); pw.println(mConnected); diff --git a/services/core/java/com/android/server/notification/EventConditionProvider.java b/services/core/java/com/android/server/notification/EventConditionProvider.java index 4fe7a27c64c6..00dd547f6c4e 100644 --- a/services/core/java/com/android/server/notification/EventConditionProvider.java +++ b/services/core/java/com/android/server/notification/EventConditionProvider.java @@ -19,7 +19,6 @@ package com.android.server.notification; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -31,7 +30,6 @@ import android.os.Process; import android.os.UserHandle; import android.os.UserManager; import android.service.notification.Condition; -import android.service.notification.IConditionProvider; import android.service.notification.ZenModeConfig; import android.service.notification.ZenModeConfig.EventInfo; import android.util.ArraySet; @@ -54,8 +52,6 @@ public class EventConditionProvider extends SystemConditionProviderService { private static final String TAG = "ConditionProviders.ECP"; private static final boolean DEBUG = Log.isLoggable("ConditionProviders", Log.DEBUG); - public static final ComponentName COMPONENT = - new ComponentName("android", EventConditionProvider.class.getName()); private static final String NOT_SHOWN = "..."; private static final String SIMPLE_NAME = EventConditionProvider.class.getSimpleName(); private static final String ACTION_EVALUATE = SIMPLE_NAME + ".EVALUATE"; @@ -82,11 +78,6 @@ public class EventConditionProvider extends SystemConditionProviderService { } @Override - public ComponentName getComponent() { - return COMPONENT; - } - - @Override public boolean isValidConditionId(Uri id) { return ZenModeConfig.isValidEventConditionId(id); } @@ -166,16 +157,6 @@ public class EventConditionProvider extends SystemConditionProviderService { } } - @Override - public void attachBase(Context base) { - attachBaseContext(base); - } - - @Override - public IConditionProvider asInterface() { - return (IConditionProvider) onBind(null); - } - private void reloadTrackers() { if (DEBUG) Slog.d(TAG, "reloadTrackers"); for (int i = 0; i < mTrackers.size(); i++) { diff --git a/services/core/java/com/android/server/notification/ScheduleConditionProvider.java b/services/core/java/com/android/server/notification/ScheduleConditionProvider.java index 737353dc5151..6efe88f6a155 100644 --- a/services/core/java/com/android/server/notification/ScheduleConditionProvider.java +++ b/services/core/java/com/android/server/notification/ScheduleConditionProvider.java @@ -20,7 +20,6 @@ import android.app.ActivityManager; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -28,7 +27,6 @@ import android.net.Uri; import android.os.Binder; import android.provider.Settings; import android.service.notification.Condition; -import android.service.notification.IConditionProvider; import android.service.notification.ScheduleCalendar; import android.service.notification.ZenModeConfig; import android.text.TextUtils; @@ -54,8 +52,6 @@ public class ScheduleConditionProvider extends SystemConditionProviderService { static final String TAG = "ConditionProviders.SCP"; static final boolean DEBUG = true || Log.isLoggable("ConditionProviders", Log.DEBUG); - public static final ComponentName COMPONENT = - new ComponentName("android", ScheduleConditionProvider.class.getName()); private static final String NOT_SHOWN = "..."; private static final String SIMPLE_NAME = ScheduleConditionProvider.class.getSimpleName(); private static final String ACTION_EVALUATE = SIMPLE_NAME + ".EVALUATE"; @@ -66,7 +62,8 @@ public class ScheduleConditionProvider extends SystemConditionProviderService { private final Context mContext = this; private final ArrayMap<Uri, ScheduleCalendar> mSubscriptions = new ArrayMap<>(); - private ArraySet<Uri> mSnoozedForAlarm = new ArraySet<>(); + @GuardedBy("mSnoozedForAlarm") + private final ArraySet<Uri> mSnoozedForAlarm = new ArraySet<>(); private AlarmManager mAlarmManager; private boolean mConnected; @@ -78,11 +75,6 @@ public class ScheduleConditionProvider extends SystemConditionProviderService { } @Override - public ComponentName getComponent() { - return COMPONENT; - } - - @Override public boolean isValidConditionId(Uri id) { return ZenModeConfig.isValidScheduleConditionId(id); } @@ -103,7 +95,10 @@ public class ScheduleConditionProvider extends SystemConditionProviderService { pw.println(mSubscriptions.get(conditionId).toString()); } } - pw.println(" snoozed due to alarm: " + TextUtils.join(SEPARATOR, mSnoozedForAlarm)); + synchronized (mSnoozedForAlarm) { + pw.println( + " snoozed due to alarm: " + TextUtils.join(SEPARATOR, mSnoozedForAlarm)); + } dumpUpcomingTime(pw, "mNextAlarmTime", mNextAlarmTime, now); } @@ -149,16 +144,6 @@ public class ScheduleConditionProvider extends SystemConditionProviderService { evaluateSubscriptions(); } - @Override - public void attachBase(Context base) { - attachBaseContext(base); - } - - @Override - public IConditionProvider asInterface() { - return (IConditionProvider) onBind(null); - } - private void evaluateSubscriptions() { if (mAlarmManager == null) { mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); @@ -299,6 +284,7 @@ public class ScheduleConditionProvider extends SystemConditionProviderService { } } + @GuardedBy("mSnoozedForAlarm") private void saveSnoozedLocked() { final String setting = TextUtils.join(SEPARATOR, mSnoozedForAlarm); final int currentUser = ActivityManager.getCurrentUser(); diff --git a/services/core/java/com/android/server/notification/SystemConditionProviderService.java b/services/core/java/com/android/server/notification/SystemConditionProviderService.java index 574f04ce670b..97073b77f1f7 100644 --- a/services/core/java/com/android/server/notification/SystemConditionProviderService.java +++ b/services/core/java/com/android/server/notification/SystemConditionProviderService.java @@ -31,12 +31,21 @@ import java.util.Date; public abstract class SystemConditionProviderService extends ConditionProviderService { abstract public void dump(PrintWriter pw, DumpFilter filter); - abstract public void attachBase(Context context); - abstract public IConditionProvider asInterface(); - abstract public ComponentName getComponent(); abstract public boolean isValidConditionId(Uri id); abstract public void onBootComplete(); + final ComponentName getComponent() { + return new ComponentName("android", this.getClass().getName()); + } + + final IConditionProvider asInterface() { + return (IConditionProvider) onBind(null); + } + + final void attachBase(Context context) { + attachBaseContext(context); + } + protected static String ts(long time) { return new Date(time) + " (" + time + ")"; } diff --git a/services/tests/uiservicestests/src/com/android/server/notification/CountdownConditionProviderTest.java b/services/tests/uiservicestests/src/com/android/server/notification/CountdownConditionProviderTest.java index ddb9b43be76f..58a1d9c1b932 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/CountdownConditionProviderTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/CountdownConditionProviderTest.java @@ -16,12 +16,15 @@ package com.android.server.notification; +import static com.google.common.truth.Truth.assertThat; + import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import android.app.Application; import android.app.PendingIntent; +import android.content.ComponentName; import android.content.Intent; import android.net.Uri; import android.testing.AndroidTestingRunner; @@ -66,6 +69,12 @@ public class CountdownConditionProviderTest extends UiServiceTestCase { } @Test + public void getComponent_returnsComponent() { + assertThat(mService.getComponent()).isEqualTo(new ComponentName("android", + "com.android.server.notification.CountdownConditionProvider")); + } + + @Test public void testGetPendingIntent() { PendingIntent pi = mService.getPendingIntent(Uri.EMPTY); assertEquals(PackageManagerService.PLATFORM_PACKAGE_NAME, pi.getIntent().getPackage()); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/EventConditionProviderTest.java b/services/tests/uiservicestests/src/com/android/server/notification/EventConditionProviderTest.java index 4c440cabf9c4..4af96ef4800f 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/EventConditionProviderTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/EventConditionProviderTest.java @@ -16,14 +16,16 @@ package com.android.server.notification; +import static com.google.common.truth.Truth.assertThat; + import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import android.app.Application; import android.app.PendingIntent; +import android.content.ComponentName; import android.content.Intent; -import android.net.Uri; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper.RunWithLooper; @@ -63,7 +65,13 @@ public class EventConditionProviderTest extends UiServiceTestCase { service.onCreate(); service.onBind(startIntent); mService = spy(service); - } + } + + @Test + public void getComponent_returnsComponent() { + assertThat(mService.getComponent()).isEqualTo(new ComponentName("android", + "com.android.server.notification.EventConditionProvider")); + } @Test public void testGetPendingIntent() { diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ScheduleConditionProviderTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ScheduleConditionProviderTest.java index 7d89d87b6efe..fe4ce465e9be 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/ScheduleConditionProviderTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/ScheduleConditionProviderTest.java @@ -1,5 +1,7 @@ package com.android.server.notification; +import static com.google.common.truth.Truth.assertThat; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -8,6 +10,7 @@ import static org.mockito.Mockito.spy; import android.app.Application; import android.app.PendingIntent; +import android.content.ComponentName; import android.content.Intent; import android.net.Uri; import android.service.notification.Condition; @@ -58,6 +61,12 @@ public class ScheduleConditionProviderTest extends UiServiceTestCase { } @Test + public void getComponent_returnsComponent() { + assertThat(mService.getComponent()).isEqualTo(new ComponentName("android", + "com.android.server.notification.ScheduleConditionProvider")); + } + + @Test public void testIsValidConditionId_incomplete() throws Exception { Uri badConditionId = Uri.EMPTY; assertFalse(mService.isValidConditionId(badConditionId)); |