@Test @Config(minSdk = Build.VERSION_CODES.P) public void testRegisterAppUsageObserver_duplicateObserverIds_shouldOverrideExistingObserver() { PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION1"), 0); usageStatsManager.registerAppUsageObserver( 12, new String[] {"com.package1", "com.package2"}, 123L, TimeUnit.MINUTES, pendingIntent1); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION2"), 0); usageStatsManager.registerAppUsageObserver( 12, new String[] {"com.package3"}, 456L, TimeUnit.SECONDS, pendingIntent2); assertThat(shadowOf(usageStatsManager).getRegisteredAppUsageObservers()) .containsExactly( new AppUsageObserver( 12, ImmutableList.of("com.package3"), 456L, TimeUnit.SECONDS, pendingIntent2)); }
@Test @Config(minSdk = Build.VERSION_CODES.P) public void testUnregisterAppUsageObserver_existingObserverId_shouldRemoveObserver() { PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION1"), 0); usageStatsManager.registerAppUsageObserver( 12, new String[] {"com.package1", "com.package2"}, 123L, TimeUnit.MINUTES, pendingIntent1); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION2"), 0); usageStatsManager.registerAppUsageObserver( 24, new String[] {"com.package3"}, 456L, TimeUnit.SECONDS, pendingIntent2); usageStatsManager.unregisterAppUsageObserver(12); assertThat(shadowOf(usageStatsManager).getRegisteredAppUsageObservers()) .containsExactly( new AppUsageObserver( 24, ImmutableList.of("com.package3"), 456L, TimeUnit.SECONDS, pendingIntent2)); }
@Test @Config(minSdk = Build.VERSION_CODES.P) public void testRegisterAppUsageObserver_uniqueObserverIds_shouldAddBothObservers() { PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION1"), 0); usageStatsManager.registerAppUsageObserver( 12, new String[] {"com.package1", "com.package2"}, 123L, TimeUnit.MINUTES, pendingIntent1); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION2"), 0); usageStatsManager.registerAppUsageObserver( 24, new String[] {"com.package3"}, 456L, TimeUnit.SECONDS, pendingIntent2); assertThat(shadowOf(usageStatsManager).getRegisteredAppUsageObservers()) .containsExactly( new AppUsageObserver( 12, ImmutableList.of("com.package1", "com.package2"), 123L, TimeUnit.MINUTES, pendingIntent1), new AppUsageObserver( 24, ImmutableList.of("com.package3"), 456L, TimeUnit.SECONDS, pendingIntent2)); }
@Test @Config(minSdk = Build.VERSION_CODES.P) public void testUnregisterAppUsageObserver_nonExistentObserverId_shouldBeNoOp() { PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION1"), 0); usageStatsManager.registerAppUsageObserver( 12, new String[] {"com.package1", "com.package2"}, 123L, TimeUnit.MINUTES, pendingIntent1); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION2"), 0); usageStatsManager.registerAppUsageObserver( 24, new String[] {"com.package3"}, 456L, TimeUnit.SECONDS, pendingIntent2); usageStatsManager.unregisterAppUsageObserver(36); assertThat(shadowOf(usageStatsManager).getRegisteredAppUsageObservers()) .containsExactly( new AppUsageObserver( 12, ImmutableList.of("com.package1", "com.package2"), 123L, TimeUnit.MINUTES, pendingIntent1), new AppUsageObserver( 24, ImmutableList.of("com.package3"), 456L, TimeUnit.SECONDS, pendingIntent2)); }
@Test @Config(minSdk = Build.VERSION_CODES.P) public void testTriggerRegisteredAppUsageObserver_shouldSendIntentAndRemoveObserver() { PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION1"), 0); usageStatsManager.registerAppUsageObserver( 12, new String[] {"com.package1", "com.package2"}, 123L, TimeUnit.MINUTES, pendingIntent1); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION2"), 0); usageStatsManager.registerAppUsageObserver( 24, new String[] {"com.package3"}, 456L, TimeUnit.SECONDS, pendingIntent2); shadowOf(usageStatsManager).triggerRegisteredAppUsageObserver(24, 500000L); List<Intent> broadcastIntents = shadowOf(context).getBroadcastIntents(); assertThat(broadcastIntents).hasSize(1); Intent broadcastIntent = broadcastIntents.get(0); assertThat(broadcastIntent.getAction()).isEqualTo("ACTION2"); assertThat(broadcastIntent.getIntExtra(UsageStatsManager.EXTRA_OBSERVER_ID, 0)).isEqualTo(24); assertThat(broadcastIntent.getLongExtra(UsageStatsManager.EXTRA_TIME_LIMIT, 0)) .isEqualTo(456000L); assertThat(broadcastIntent.getLongExtra(UsageStatsManager.EXTRA_TIME_USED, 0)) .isEqualTo(500000L); assertThat(shadowOf(usageStatsManager).getRegisteredAppUsageObservers()) .containsExactly( new AppUsageObserver( 12, ImmutableList.of("com.package1", "com.package2"), 123L, TimeUnit.MINUTES, pendingIntent1)); }