From af065146d57f73daedfcdf4a9eb57486cf95f6e2 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Thu, 20 Feb 2025 12:10:44 +0800 Subject: [PATCH] Fixed crash issues in Emergency Callback Mode - Avoid using controllers when Catalyst design is enabled Bug: 394015881 Flag: EXEMPT bugfix Test: Manual testing atest NetworkDashboardFragmentTest Change-Id: I4393be5e76c0328f2a53f1d828814491991557f1 --- .../network/NetworkDashboardFragment.java | 4 +-- .../network/NetworkDashboardFragmentTest.java | 30 +++++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java index 00e25079fd0..b1900cff86b 100644 --- a/src/com/android/settings/network/NetworkDashboardFragment.java +++ b/src/com/android/settings/network/NetworkDashboardFragment.java @@ -59,7 +59,7 @@ public class NetworkDashboardFragment extends DashboardFragment implements public void onAttach(Context context) { super.onAttach(context); - if (isCatalystEnabled()) { + if (!isCatalystEnabled()) { use(AirplaneModePreferenceController.class).setFragment(this); } use(NetworkProviderCallsSmsController.class).init(this); @@ -104,7 +104,7 @@ public class NetworkDashboardFragment extends DashboardFragment implements switch (requestCode) { case AirplaneModePreferenceController.REQUEST_CODE_EXIT_ECM: - if (isCatalystEnabled()) { + if (!isCatalystEnabled()) { use(AirplaneModePreferenceController.class) .onActivityResult(requestCode, resultCode, data); } diff --git a/tests/unit/src/com/android/settings/network/NetworkDashboardFragmentTest.java b/tests/unit/src/com/android/settings/network/NetworkDashboardFragmentTest.java index 4258b2c57e0..2eaccd42d90 100644 --- a/tests/unit/src/com/android/settings/network/NetworkDashboardFragmentTest.java +++ b/tests/unit/src/com/android/settings/network/NetworkDashboardFragmentTest.java @@ -15,10 +15,19 @@ */ package com.android.settings.network; +import static android.platform.test.flag.junit.SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT; + +import static com.android.settings.flags.Flags.FLAG_CATALYST; +import static com.android.settings.network.AirplaneModePreferenceController.REQUEST_CODE_EXIT_ECM; + import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + import android.app.Instrumentation; import android.content.Context; +import android.platform.test.flag.junit.SetFlagsRule; import android.provider.SearchIndexableResource; import androidx.test.core.app.ApplicationProvider; @@ -28,21 +37,29 @@ import androidx.test.platform.app.InstrumentationRegistry; import com.android.settingslib.drawer.CategoryKey; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Spy; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import java.util.List; @RunWith(AndroidJUnit4.class) public class NetworkDashboardFragmentTest { - private Context mContext; + @Rule + public final MockitoRule mMockitoRule = MockitoJUnit.rule(); + @Rule + public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(DEVICE_DEFAULT); + @Spy + private Context mContext = ApplicationProvider.getApplicationContext(); private NetworkDashboardFragment mFragment; @Before public void setUp() { - mContext = ApplicationProvider.getApplicationContext(); final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); instrumentation.runOnMainSync(() -> { @@ -65,4 +82,13 @@ public class NetworkDashboardFragmentTest { assertThat(indexRes).hasSize(1); assertThat(indexRes.get(0).xmlResId).isEqualTo(mFragment.getPreferenceScreenResId()); } + + @Test + public void onActivityResult_catalystIsEnabled_doNotCrash() { + mSetFlagsRule.enableFlags(FLAG_CATALYST); + NetworkDashboardFragment spyFragment = spy(mFragment); + when(spyFragment.getContext()).thenReturn(mContext); + + spyFragment.onActivityResult(REQUEST_CODE_EXIT_ECM, 0, null); + } }