diff --git a/packages/CarrierDefaultApp/assets/slice_purchase_test.html b/packages/CarrierDefaultApp/assets/slice_purchase_test.html index d2c1c04265bf0..917276b9ce65a 100644 --- a/packages/CarrierDefaultApp/assets/slice_purchase_test.html +++ b/packages/CarrierDefaultApp/assets/slice_purchase_test.html @@ -75,5 +75,11 @@ Notify purchase failed

+ +

Dismiss flow

+ +

diff --git a/packages/CarrierDefaultApp/assets/slice_purchase_test.js b/packages/CarrierDefaultApp/assets/slice_purchase_test.js index 84ab1f9338389..be397a1159212 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 0aadd31b6e18b..4500a220523d7 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: + * + */ + @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 3aaa994f34bb4..2530257d629a4 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 e7a75e58105d8..cc103fa98e654 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 intentCaptor = ArgumentCaptor.forClass(Intent.class); @@ -141,4 +147,10 @@ public class SlicePurchaseActivityTest extends ActivityUnitTestCase