Create notification for premium capability purchase
Test: manual test to cancel/timeout/accept/delay/manage
Test: atest TelephonyManagerTest#testPremiumCapabilities
Bug: 245882092
Change-Id: I34b4b549d78a68be15b6d14c8f7f494fdc091385
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 5699ca8..23390cf 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -472,6 +472,19 @@
}
}
+ private static final class PurchasePremiumCapabilityArgument {
+ public @TelephonyManager.PremiumCapability int capability;
+ public @NonNull String appName;
+ public @NonNull IIntegerConsumer callback;
+
+ PurchasePremiumCapabilityArgument(@TelephonyManager.PremiumCapability int capability,
+ @NonNull String appName, @NonNull IIntegerConsumer callback) {
+ this.capability = capability;
+ this.appName = appName;
+ this.callback = callback;
+ }
+ }
+
/**
* A request object for use with {@link MainThreadHandler}. Requesters should wait() on the
* request after sending. The main thread will notify the request when it is complete.
@@ -2140,35 +2153,38 @@
break;
}
- case CMD_PURCHASE_PREMIUM_CAPABILITY:
+ case CMD_PURCHASE_PREMIUM_CAPABILITY: {
request = (MainThreadRequest) msg.obj;
onCompleted = obtainMessage(EVENT_PURCHASE_PREMIUM_CAPABILITY_DONE, request);
+ PurchasePremiumCapabilityArgument arg =
+ (PurchasePremiumCapabilityArgument) request.argument;
SliceStore.getInstance(request.phone).purchasePremiumCapability(
- ((Pair<Integer, IIntegerConsumer>) request.argument).first,
- onCompleted);
+ arg.capability, arg.appName, onCompleted);
break;
+ }
- case EVENT_PURCHASE_PREMIUM_CAPABILITY_DONE:
+ case EVENT_PURCHASE_PREMIUM_CAPABILITY_DONE: {
ar = (AsyncResult) msg.obj;
request = (MainThreadRequest) ar.userObj;
- Pair<Integer, IIntegerConsumer> pair =
- (Pair<Integer, IIntegerConsumer>) request.argument;
+ PurchasePremiumCapabilityArgument arg =
+ (PurchasePremiumCapabilityArgument) request.argument;
try {
int result = (int) ar.result;
- pair.second.accept(result);
+ arg.callback.accept(result);
log("purchasePremiumCapability: capability="
- + TelephonyManager.convertPremiumCapabilityToString(pair.first)
+ + TelephonyManager.convertPremiumCapabilityToString(arg.capability)
+ ", result= "
+ TelephonyManager.convertPurchaseResultToString(result));
} catch (RemoteException e) {
String logStr = "Purchase premium capability "
- + TelephonyManager.convertPremiumCapabilityToString(pair.first)
+ + TelephonyManager.convertPremiumCapabilityToString(arg.capability)
+ " failed: " + e;
if (DBG) log(logStr);
AnomalyReporter.reportAnomaly(
UUID.fromString(PURCHASE_PREMIUM_CAPABILITY_ERROR_UUID), logStr);
}
break;
+ }
case CMD_PREPARE_UNATTENDED_REBOOT:
request = (MainThreadRequest) msg.obj;
@@ -11274,8 +11290,15 @@
}
Phone phone = getPhone(subId);
- Pair<Integer, IIntegerConsumer> argument = new Pair<>(capability, callback);
- sendRequestAsync(CMD_PURCHASE_PREMIUM_CAPABILITY, argument, phone, null);
+ String appName;
+ try {
+ appName = mApp.getPackageManager().getApplicationLabel(mApp.getPackageManager()
+ .getApplicationInfo(getCurrentPackageName(), 0)).toString();
+ } catch (PackageManager.NameNotFoundException e) {
+ appName = "An application";
+ }
+ sendRequestAsync(CMD_PURCHASE_PREMIUM_CAPABILITY,
+ new PurchasePremiumCapabilityArgument(capability, appName, callback), phone, null);
}
/**