diff options
author | 2023-05-26 00:10:21 +0000 | |
---|---|---|
committer | 2023-05-26 00:10:21 +0000 | |
commit | f3031cef7e57d842c31898ba7db2e572f29f5a59 (patch) | |
tree | 39c3f07caa689b069561b37b67403dde242b5e92 | |
parent | a682ffea845bfddb48b8bb8481cfce152bc6c605 (diff) | |
parent | 9047617287020561c7c1bfabb48f247e8e4a3ba2 (diff) |
Merge "Add dismissFlow callback to SlicePurchaseWebInterface" into udc-qpr-dev
5 files changed, 50 insertions, 1 deletions
diff --git a/packages/CarrierDefaultApp/assets/slice_purchase_test.html b/packages/CarrierDefaultApp/assets/slice_purchase_test.html index d2c1c04265bf..917276b9ce65 100644 --- a/packages/CarrierDefaultApp/assets/slice_purchase_test.html +++ b/packages/CarrierDefaultApp/assets/slice_purchase_test.html @@ -75,5 +75,11 @@ Notify purchase failed </button> <p id="purchase_failed"></p> + + <h2>Dismiss flow</h2> + <button type="button" onclick="testDismissFlow()"> + Dismiss flow + </button> + <p id="dismiss_flow"></p> </body> </html> diff --git a/packages/CarrierDefaultApp/assets/slice_purchase_test.js b/packages/CarrierDefaultApp/assets/slice_purchase_test.js index 84ab1f933838..be397a115921 100644 --- a/packages/CarrierDefaultApp/assets/slice_purchase_test.js +++ b/packages/CarrierDefaultApp/assets/slice_purchase_test.js @@ -31,3 +31,9 @@ function testNotifyPurchaseFailed(failure_code = 0, failure_reason = "unknown") document.getElementById("purchase_failed").innerHTML = "Notified purchase failed."; } + +function testDismissFlow() { + DataBoostWebServiceFlow.dismissFlow(); + document.getElementById("dismiss_flow").innerHTML = + "Called dismiss flow."; +} diff --git a/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/DataBoostWebServiceFlow.java b/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/DataBoostWebServiceFlow.java index 0aadd31b6e18..4500a220523d 100644 --- a/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/DataBoostWebServiceFlow.java +++ b/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/DataBoostWebServiceFlow.java @@ -88,4 +88,21 @@ public class DataBoostWebServiceFlow { @Nullable String failureReason) { mActivity.onPurchaseFailed(failureCode, failureReason); } + + /** + * Interface method allowing the carrier website to notify the slice purchase application that + * the service flow ended prematurely. This can be due to user action, an error in the + * web sheet logic, or an error on the network side. + * + * This can be called using the JavaScript below: + * <script type="text/javascript"> + * function dismissFlow() { + * DataBoostWebServiceFlow.dismissFlow(); + * } + * </script> + */ + @JavascriptInterface + public void dismissFlow() { + mActivity.onDismissFlow(); + } } diff --git a/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/SlicePurchaseActivity.java b/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/SlicePurchaseActivity.java index 3aaa994f34bb..2530257d629a 100644 --- a/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/SlicePurchaseActivity.java +++ b/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/SlicePurchaseActivity.java @@ -138,6 +138,14 @@ public class SlicePurchaseActivity extends Activity { finishAndRemoveTask(); } + protected void onDismissFlow() { + logd("onDismissFlow: Dismiss flow called while purchasing premium capability " + + TelephonyManager.convertPremiumCapabilityToString(mCapability)); + SlicePurchaseBroadcastReceiver.sendSlicePurchaseAppResponse( + mIntent, SlicePurchaseController.EXTRA_INTENT_REQUEST_FAILED); + finishAndRemoveTask(); + } + @Override public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) { // Pressing back in the WebView will go to the previous page instead of closing diff --git a/packages/CarrierDefaultApp/tests/unit/src/com/android/carrierdefaultapp/SlicePurchaseActivityTest.java b/packages/CarrierDefaultApp/tests/unit/src/com/android/carrierdefaultapp/SlicePurchaseActivityTest.java index e7a75e58105d..cc103fa98e65 100644 --- a/packages/CarrierDefaultApp/tests/unit/src/com/android/carrierdefaultapp/SlicePurchaseActivityTest.java +++ b/packages/CarrierDefaultApp/tests/unit/src/com/android/carrierdefaultapp/SlicePurchaseActivityTest.java @@ -55,6 +55,7 @@ public class SlicePurchaseActivityTest extends ActivityUnitTestCase<SlicePurchas @Mock PendingIntent mPendingIntent; @Mock PendingIntent mSuccessfulIntent; @Mock PendingIntent mCanceledIntent; + @Mock PendingIntent mRequestFailedIntent; @Mock CarrierConfigManager mCarrierConfigManager; @Mock NotificationManager mNotificationManager; @Mock PersistableBundle mPersistableBundle; @@ -112,6 +113,11 @@ public class SlicePurchaseActivityTest extends ActivityUnitTestCase<SlicePurchas doReturn(true).when(mSuccessfulIntent).isBroadcast(); doReturn(mSuccessfulIntent).when(spiedIntent).getParcelableExtra( eq(SlicePurchaseController.EXTRA_INTENT_SUCCESS), eq(PendingIntent.class)); + doReturn(TelephonyManager.PHONE_PROCESS_NAME).when(mRequestFailedIntent) + .getCreatorPackage(); + doReturn(true).when(mRequestFailedIntent).isBroadcast(); + doReturn(mRequestFailedIntent).when(spiedIntent).getParcelableExtra( + eq(SlicePurchaseController.EXTRA_INTENT_REQUEST_FAILED), eq(PendingIntent.class)); mSlicePurchaseActivity = startActivity(spiedIntent, null, null); } @@ -124,7 +130,7 @@ public class SlicePurchaseActivityTest extends ActivityUnitTestCase<SlicePurchas @Test public void testOnPurchaseFailed() throws Exception { - int failureCode = SlicePurchaseController.FAILURE_CODE_SERVER_UNREACHABLE; + int failureCode = SlicePurchaseController.FAILURE_CODE_CARRIER_URL_UNAVAILABLE; String failureReason = "Server unreachable"; mSlicePurchaseActivity.onPurchaseFailed(failureCode, failureReason); ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class); @@ -141,4 +147,10 @@ public class SlicePurchaseActivityTest extends ActivityUnitTestCase<SlicePurchas mSlicePurchaseActivity.onDestroy(); verify(mCanceledIntent).send(); } + + @Test + public void testOnDismissFlow() throws Exception { + mSlicePurchaseActivity.onDismissFlow(); + verify(mRequestFailedIntent).send(); + } } |