Loading services/core/java/com/android/server/notification/EventConditionProvider.java +25 −12 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.server.notification; import android.annotation.Nullable; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; Loading Loading @@ -68,7 +67,7 @@ public class EventConditionProvider extends SystemConditionProviderService { private final Handler mWorker; private final HandlerThread mThread; @Nullable private UserHandle mCurrentUser; private UserHandle mCurrentUser = UserHandle.SYSTEM; private boolean mConnected; private boolean mRegistered; private boolean mBootComplete; // don't hammer the calendar provider until boot completes. Loading Loading @@ -119,18 +118,19 @@ public class EventConditionProvider extends SystemConditionProviderService { @Override public void onReceive(Context context, Intent intent) { if (android.app.Flags.modesHsum()) { if (mCurrentUser != null) { // Possibly the intent signals a profile added on a different user, but it // doesn't matter (except for a bit of wasted work here). We will reload // trackers for that user when we switch. reloadTrackers(mCurrentUser); } } else { reloadTrackers(); } } }, filter); if (!android.app.Flags.modesHsum()) { if (android.app.Flags.modesHsum()) { reloadTrackers(UserHandle.SYSTEM); } else { reloadTrackers(); } } Loading @@ -138,9 +138,11 @@ public class EventConditionProvider extends SystemConditionProviderService { @Override public void onUserSwitched(UserHandle user) { if (DEBUG) Slog.d(TAG, "onUserSwitched: " + user); if (mCurrentUser.getIdentifier() != user.getIdentifier()) { mCurrentUser = user; reloadTrackers(user); } } @Override public void onConnected() { Loading Loading @@ -274,12 +276,23 @@ public class EventConditionProvider extends SystemConditionProviderService { final int userId = EventInfo.resolveUserId(event.userId); final CalendarTracker tracker = mTrackers.get(userId); if (tracker == null) { Slog.w(TAG, "No calendar tracker found for user " + userId); Slog.w(TAG, "No calendar tracker found for user " + userId + " and calendar = " + event.calName); conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE)); continue; } result = tracker.checkEvent(event, now); } if (result == null) { Slog.e(TAG, "No CheckEventResult for userId=" + event.userId + ", calId=" + event.calendarId + ", calName=" + event.calName + "; trackers count is " + mTrackers.size()); conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE)); continue; } if (result.recheckAt != 0 && (reevaluateAt == 0 || result.recheckAt < reevaluateAt)) { reevaluateAt = result.recheckAt; Loading services/tests/uiservicestests/src/com/android/server/notification/EventConditionProviderTest.java +22 −2 Original line number Diff line number Diff line Loading @@ -124,9 +124,12 @@ public class EventConditionProviderTest extends UiServiceTestCase { @Test @EnableFlags(android.app.Flags.FLAG_MODES_HSUM) public void onBootComplete_waitsForUserSwitched() { public void onBootComplete_loadsTrackersForSystemUser() { mService.onBootComplete(); assertThat(mService.getTrackers().size()).isEqualTo(0); assertThat(mService.getTrackers().size()).isEqualTo(1); assertThat(mService.getTrackers().keyAt(0)).isEqualTo(UserHandle.USER_SYSTEM); assertThat(mService.getTrackers().valueAt(0).getUserId()).isEqualTo(UserHandle.USER_SYSTEM); } @Test Loading Loading @@ -158,4 +161,21 @@ public class EventConditionProviderTest extends UiServiceTestCase { assertThat(mService.getTrackers().keyAt(1)).isEqualTo(43); assertThat(mService.getTrackers().valueAt(1).getUserId()).isEqualTo(43); } @Test @EnableFlags(android.app.Flags.FLAG_MODES_HSUM) public void onUserSwitched_sameUser_doesNothing() { UserHandle someUser = UserHandle.of(42); when(mUserManager.getProfiles(eq(42))).thenReturn(List.of(new UserInfo(42, "user 42", 0))); mService.onUserSwitched(someUser); assertThat(mService.getTrackers().size()).isEqualTo(1); assertThat(mService.getTrackers().keyAt(0)).isEqualTo(42); CalendarTracker originalTracker = mService.getTrackers().valueAt(0); mService.onUserSwitched(someUser); assertThat(mService.getTrackers().size()).isEqualTo(1); assertThat(mService.getTrackers().keyAt(0)).isEqualTo(42); assertThat(mService.getTrackers().valueAt(0)).isSameInstanceAs(originalTracker); } } Loading
services/core/java/com/android/server/notification/EventConditionProvider.java +25 −12 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.server.notification; import android.annotation.Nullable; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; Loading Loading @@ -68,7 +67,7 @@ public class EventConditionProvider extends SystemConditionProviderService { private final Handler mWorker; private final HandlerThread mThread; @Nullable private UserHandle mCurrentUser; private UserHandle mCurrentUser = UserHandle.SYSTEM; private boolean mConnected; private boolean mRegistered; private boolean mBootComplete; // don't hammer the calendar provider until boot completes. Loading Loading @@ -119,18 +118,19 @@ public class EventConditionProvider extends SystemConditionProviderService { @Override public void onReceive(Context context, Intent intent) { if (android.app.Flags.modesHsum()) { if (mCurrentUser != null) { // Possibly the intent signals a profile added on a different user, but it // doesn't matter (except for a bit of wasted work here). We will reload // trackers for that user when we switch. reloadTrackers(mCurrentUser); } } else { reloadTrackers(); } } }, filter); if (!android.app.Flags.modesHsum()) { if (android.app.Flags.modesHsum()) { reloadTrackers(UserHandle.SYSTEM); } else { reloadTrackers(); } } Loading @@ -138,9 +138,11 @@ public class EventConditionProvider extends SystemConditionProviderService { @Override public void onUserSwitched(UserHandle user) { if (DEBUG) Slog.d(TAG, "onUserSwitched: " + user); if (mCurrentUser.getIdentifier() != user.getIdentifier()) { mCurrentUser = user; reloadTrackers(user); } } @Override public void onConnected() { Loading Loading @@ -274,12 +276,23 @@ public class EventConditionProvider extends SystemConditionProviderService { final int userId = EventInfo.resolveUserId(event.userId); final CalendarTracker tracker = mTrackers.get(userId); if (tracker == null) { Slog.w(TAG, "No calendar tracker found for user " + userId); Slog.w(TAG, "No calendar tracker found for user " + userId + " and calendar = " + event.calName); conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE)); continue; } result = tracker.checkEvent(event, now); } if (result == null) { Slog.e(TAG, "No CheckEventResult for userId=" + event.userId + ", calId=" + event.calendarId + ", calName=" + event.calName + "; trackers count is " + mTrackers.size()); conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE)); continue; } if (result.recheckAt != 0 && (reevaluateAt == 0 || result.recheckAt < reevaluateAt)) { reevaluateAt = result.recheckAt; Loading
services/tests/uiservicestests/src/com/android/server/notification/EventConditionProviderTest.java +22 −2 Original line number Diff line number Diff line Loading @@ -124,9 +124,12 @@ public class EventConditionProviderTest extends UiServiceTestCase { @Test @EnableFlags(android.app.Flags.FLAG_MODES_HSUM) public void onBootComplete_waitsForUserSwitched() { public void onBootComplete_loadsTrackersForSystemUser() { mService.onBootComplete(); assertThat(mService.getTrackers().size()).isEqualTo(0); assertThat(mService.getTrackers().size()).isEqualTo(1); assertThat(mService.getTrackers().keyAt(0)).isEqualTo(UserHandle.USER_SYSTEM); assertThat(mService.getTrackers().valueAt(0).getUserId()).isEqualTo(UserHandle.USER_SYSTEM); } @Test Loading Loading @@ -158,4 +161,21 @@ public class EventConditionProviderTest extends UiServiceTestCase { assertThat(mService.getTrackers().keyAt(1)).isEqualTo(43); assertThat(mService.getTrackers().valueAt(1).getUserId()).isEqualTo(43); } @Test @EnableFlags(android.app.Flags.FLAG_MODES_HSUM) public void onUserSwitched_sameUser_doesNothing() { UserHandle someUser = UserHandle.of(42); when(mUserManager.getProfiles(eq(42))).thenReturn(List.of(new UserInfo(42, "user 42", 0))); mService.onUserSwitched(someUser); assertThat(mService.getTrackers().size()).isEqualTo(1); assertThat(mService.getTrackers().keyAt(0)).isEqualTo(42); CalendarTracker originalTracker = mService.getTrackers().valueAt(0); mService.onUserSwitched(someUser); assertThat(mService.getTrackers().size()).isEqualTo(1); assertThat(mService.getTrackers().keyAt(0)).isEqualTo(42); assertThat(mService.getTrackers().valueAt(0)).isSameInstanceAs(originalTracker); } }