Merge "Add support for daily and monthly notification maximums"

This commit is contained in:
TreeHugger Robot
2022-12-13 02:43:57 +00:00
committed by Android (Google) Code Review
2 changed files with 24 additions and 8 deletions

View File

@@ -175,7 +175,9 @@ public class SlicePurchaseBroadcastReceiver extends BroadcastReceiver{
&& isPendingIntentValid(intent, SlicePurchaseController.EXTRA_INTENT_REQUEST_FAILED)
&& isPendingIntentValid(intent,
SlicePurchaseController.EXTRA_INTENT_NOT_DEFAULT_DATA_SUBSCRIPTION)
&& isPendingIntentValid(intent, SlicePurchaseController.EXTRA_INTENT_SUCCESS);
&& isPendingIntentValid(intent, SlicePurchaseController.EXTRA_INTENT_SUCCESS)
&& isPendingIntentValid(intent,
SlicePurchaseController.EXTRA_INTENT_NOTIFICATION_SHOWN);
}
private static boolean isPendingIntentValid(@NonNull Intent intent, @NonNull String extra) {
@@ -208,6 +210,8 @@ public class SlicePurchaseBroadcastReceiver extends BroadcastReceiver{
case SlicePurchaseController.EXTRA_INTENT_NOT_DEFAULT_DATA_SUBSCRIPTION:
return "not default data subscription";
case SlicePurchaseController.EXTRA_INTENT_SUCCESS: return "success";
case SlicePurchaseController.EXTRA_INTENT_NOTIFICATION_SHOWN:
return "notification shown";
default: {
loge("Unknown pending intent extra: " + extra);
return "unknown(" + extra + ")";
@@ -220,7 +224,7 @@ public class SlicePurchaseBroadcastReceiver extends BroadcastReceiver{
logd("onReceive intent: " + intent.getAction());
switch (intent.getAction()) {
case SlicePurchaseController.ACTION_START_SLICE_PURCHASE_APP:
onDisplayBoosterNotification(context, intent);
onDisplayNetworkBoostNotification(context, intent);
break;
case SlicePurchaseController.ACTION_SLICE_PURCHASE_APP_RESPONSE_TIMEOUT:
onTimeout(context, intent);
@@ -233,7 +237,8 @@ public class SlicePurchaseBroadcastReceiver extends BroadcastReceiver{
}
}
private void onDisplayBoosterNotification(@NonNull Context context, @NonNull Intent intent) {
private void onDisplayNetworkBoostNotification(@NonNull Context context,
@NonNull Intent intent) {
if (!isIntentValid(intent)) {
sendSlicePurchaseAppResponse(intent,
SlicePurchaseController.EXTRA_INTENT_REQUEST_FAILED);
@@ -280,10 +285,12 @@ public class SlicePurchaseBroadcastReceiver extends BroadcastReceiver{
int capability = intent.getIntExtra(SlicePurchaseController.EXTRA_PREMIUM_CAPABILITY,
SlicePurchaseController.PREMIUM_CAPABILITY_INVALID);
logd("Display the booster notification for capability "
logd("Display the network boost notification for capability "
+ TelephonyManager.convertPremiumCapabilityToString(capability));
context.getSystemService(NotificationManager.class).notifyAsUser(
NETWORK_BOOST_NOTIFICATION_TAG, capability, notification, UserHandle.ALL);
sendSlicePurchaseAppResponse(intent,
SlicePurchaseController.EXTRA_INTENT_NOTIFICATION_SHOWN);
}
/**
@@ -338,7 +345,7 @@ public class SlicePurchaseBroadcastReceiver extends BroadcastReceiver{
+ " timed out.");
if (sSlicePurchaseActivities.get(capability) == null) {
// Notification is still active
logd("Closing booster notification since the user did not respond in time.");
logd("Closing network boost notification since the user did not respond in time.");
context.getSystemService(NotificationManager.class).cancelAsUser(
NETWORK_BOOST_NOTIFICATION_TAG, capability, UserHandle.ALL);
} else {

View File

@@ -64,6 +64,7 @@ public class SlicePurchaseBroadcastReceiverTest {
@Mock PendingIntent mCanceledIntent;
@Mock PendingIntent mContentIntent1;
@Mock PendingIntent mContentIntent2;
@Mock PendingIntent mNotificationShownIntent;
@Mock Context mContext;
@Mock Resources mResources;
@Mock NotificationManager mNotificationManager;
@@ -136,7 +137,7 @@ public class SlicePurchaseBroadcastReceiverTest {
}
@Test
public void testDisplayBoosterNotification() {
public void testDisplayNetworkBoostNotification() throws Exception {
// set up intent
doReturn(SlicePurchaseController.ACTION_START_SLICE_PURCHASE_APP).when(mIntent).getAction();
doReturn(PHONE_ID).when(mIntent).getIntExtra(
@@ -148,11 +149,17 @@ public class SlicePurchaseBroadcastReceiverTest {
doReturn(TAG).when(mIntent).getStringExtra(
eq(SlicePurchaseController.EXTRA_REQUESTING_APP_NAME));
// set up pending intent
// set up pending intents
doReturn(TelephonyManager.PHONE_PROCESS_NAME).when(mPendingIntent).getCreatorPackage();
doReturn(true).when(mPendingIntent).isBroadcast();
doReturn(mPendingIntent).when(mIntent).getParcelableExtra(
anyString(), eq(PendingIntent.class));
doReturn(TelephonyManager.PHONE_PROCESS_NAME).when(mNotificationShownIntent)
.getCreatorPackage();
doReturn(true).when(mNotificationShownIntent).isBroadcast();
doReturn(mNotificationShownIntent).when(mIntent).getParcelableExtra(
eq(SlicePurchaseController.EXTRA_INTENT_NOTIFICATION_SHOWN),
eq(PendingIntent.class));
// set up notification
doReturn(mResources).when(mContext).getResources();
@@ -185,8 +192,10 @@ public class SlicePurchaseBroadcastReceiverTest {
assertEquals(2, notification.actions.length);
assertEquals(mCanceledIntent, notification.actions[0].actionIntent);
assertEquals(mContentIntent2, notification.actions[1].actionIntent);
}
// verify SlicePurchaseController was notified
verify(mNotificationShownIntent).send();
}
@Test
public void testNotificationCanceled() {