diff --git a/src/com/android/settings/ResetNetworkRequest.java b/src/com/android/settings/ResetNetworkRequest.java index 4be8b3206a6..7632ea01d71 100644 --- a/src/com/android/settings/ResetNetworkRequest.java +++ b/src/com/android/settings/ResetNetworkRequest.java @@ -270,6 +270,7 @@ public class ResetNetworkRequest { if ((mResetOptions & RESET_IMS_STACK) != 0) { builder.resetIms(mSubscriptionIdToResetIms); } + // Reset phone process and RILD may impact above components, keep them at the end if ((mResetOptions & RESET_PHONE_PROCESS) != 0) { builder.restartPhoneProcess(); } diff --git a/src/com/android/settings/network/ResetNetworkOperationBuilder.java b/src/com/android/settings/network/ResetNetworkOperationBuilder.java index 4067fba5892..6f36074d145 100644 --- a/src/com/android/settings/network/ResetNetworkOperationBuilder.java +++ b/src/com/android/settings/network/ResetNetworkOperationBuilder.java @@ -256,16 +256,19 @@ public class ResetNetworkOperationBuilder { * @return this */ public ResetNetworkOperationBuilder restartPhoneProcess() { - try { - mContext.getContentResolver().call( - getResetTelephonyContentProviderAuthority(), - METHOD_RESTART_PHONE_PROCESS, - /* arg= */ null, - /* extras= */ null); - Log.i(TAG, "Phone process was restarted."); - } catch (IllegalArgumentException iae) { - Log.w(TAG, "Fail to restart phone process: " + iae); - } + Runnable runnable = () -> { + try { + mContext.getContentResolver().call( + getResetTelephonyContentProviderAuthority(), + METHOD_RESTART_PHONE_PROCESS, + /* arg= */ null, + /* extras= */ null); + Log.i(TAG, "Phone process was restarted."); + } catch (IllegalArgumentException iae) { + Log.w(TAG, "Fail to restart phone process: " + iae); + } + }; + mResetSequence.add(runnable); return this; } @@ -275,16 +278,19 @@ public class ResetNetworkOperationBuilder { * @return this */ public ResetNetworkOperationBuilder restartRild() { - try { - mContext.getContentResolver().call( - getResetTelephonyContentProviderAuthority(), - METHOD_RESTART_RILD, - /* arg= */ null, - /* extras= */ null); - Log.i(TAG, "RILD was restarted."); - } catch (IllegalArgumentException iae) { - Log.w(TAG, "Fail to restart RILD: " + iae); - } + Runnable runnable = () -> { + try { + mContext.getContentResolver().call( + getResetTelephonyContentProviderAuthority(), + METHOD_RESTART_RILD, + /* arg= */ null, + /* extras= */ null); + Log.i(TAG, "RILD was restarted."); + } catch (IllegalArgumentException iae) { + Log.w(TAG, "Fail to restart RILD: " + iae); + } + }; + mResetSequence.add(runnable); return this; } diff --git a/tests/unit/src/com/android/settings/network/ResetNetworkOperationBuilderTest.java b/tests/unit/src/com/android/settings/network/ResetNetworkOperationBuilderTest.java index 6213f8eeb33..5f544064924 100644 --- a/tests/unit/src/com/android/settings/network/ResetNetworkOperationBuilderTest.java +++ b/tests/unit/src/com/android/settings/network/ResetNetworkOperationBuilderTest.java @@ -188,7 +188,7 @@ public class ResetNetworkOperationBuilderTest { doThrow(new IllegalArgumentException()).when(mContentProvider).call( anyString(), anyString(), anyString(), any()); - mBuilder.restartPhoneProcess(); + mBuilder.restartPhoneProcess().build().run(); } @Test @@ -196,12 +196,12 @@ public class ResetNetworkOperationBuilderTest { doThrow(new IllegalArgumentException()).when(mContentProvider).call( anyString(), anyString(), anyString(), any()); - mBuilder.restartRild(); + mBuilder.restartRild().build().run(); } @Test public void restartPhoneProcess_withTelephonyContentProvider_shouldCallRestartPhoneProcess() { - mBuilder.restartPhoneProcess(); + mBuilder.restartPhoneProcess().build().run(); verify(mContentProvider).call( eq(mBuilder.getResetTelephonyContentProviderAuthority()), @@ -212,7 +212,7 @@ public class ResetNetworkOperationBuilderTest { @Test public void restartRild_withTelephonyContentProvider_shouldCallRestartRild() { - mBuilder.restartRild(); + mBuilder.restartRild().build().run(); verify(mContentProvider).call( eq(mBuilder.getResetTelephonyContentProviderAuthority()),