From 4601d6208961596d936810b6d78d9d1540dec9fd Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Mon, 13 Apr 2020 14:59:49 +0800 Subject: [PATCH] [Wi-Fi] Fix NetworkRequestErrorDialogFragment exception when rotation When rotating an androidx fragment, it uses default constructor to instantiate the new fragment instance. Every androidx fragment should not set private scope to it's default constructor. Bug: 153824549 Test: make RunSettingsRoboTests ROBOTEST_FILTER=NetworkRequestErrorDialogFragmentTest Change-Id: Ie1be0e033aa85d37cb4d85193b05beab72d4d8e7 --- .../wifi/NetworkRequestErrorDialogFragment.java | 5 +---- .../NetworkRequestErrorDialogFragmentTest.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/wifi/NetworkRequestErrorDialogFragment.java b/src/com/android/settings/wifi/NetworkRequestErrorDialogFragment.java index 57e1bcaa681..aebd072c80a 100644 --- a/src/com/android/settings/wifi/NetworkRequestErrorDialogFragment.java +++ b/src/com/android/settings/wifi/NetworkRequestErrorDialogFragment.java @@ -25,6 +25,7 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; + import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; @@ -44,10 +45,6 @@ public class NetworkRequestErrorDialogFragment extends InstrumentedDialogFragmen return new NetworkRequestErrorDialogFragment(); } - private NetworkRequestErrorDialogFragment() { - super(); - } - @Override public void onCancel(@NonNull DialogInterface dialog) { super.onCancel(dialog); diff --git a/tests/robotests/src/com/android/settings/wifi/NetworkRequestErrorDialogFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/NetworkRequestErrorDialogFragmentTest.java index c4bdda8f0d7..333c4eb6101 100644 --- a/tests/robotests/src/com/android/settings/wifi/NetworkRequestErrorDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/wifi/NetworkRequestErrorDialogFragmentTest.java @@ -17,6 +17,8 @@ package com.android.settings.wifi; import static com.google.common.truth.Truth.assertThat; + +import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -26,12 +28,15 @@ import android.content.DialogInterface; import android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback; import android.os.Bundle; import android.widget.Button; + import androidx.appcompat.app.AlertDialog; + import com.android.settings.R; import com.android.settings.testutils.shadow.ShadowAlertDialogCompat; import com.android.settings.wifi.NetworkRequestErrorDialogFragment.ERROR_DIALOG_TYPE; import com.android.settingslib.wifi.WifiTracker; import com.android.settingslib.wifi.WifiTrackerFactory; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -57,6 +62,15 @@ public class NetworkRequestErrorDialogFragmentTest { mFragment.show(mActivity.getSupportFragmentManager(), null); } + @Test + public void getConstructor_shouldNotThrowNoSuchMethodException() { + try { + NetworkRequestErrorDialogFragment.class.getConstructor(); + } catch (NoSuchMethodException e) { + fail("No default constructor for configuration change!"); + } + } + @Test public void display_shouldShowTimeoutDialog() { AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();