From 75e4028b3ed9f7214054615491c2ffc2b62aa4c8 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Tue, 31 May 2022 17:58:05 +0800 Subject: [PATCH] Clean up DarkUIInfoDialogFragment The usage of this dialog is removed in Change Ie2cf147de53385ae0c626c8472306f1b85317686 But this dialog is created (but not show) in DarkUIPreferenceController each time dark mode toggle is turned on by user. So clean this up. Fix: 234419979 Test: make Settings Change-Id: Icdc9d7a4fb77dc8b2a3f1a9d8e3f40fc0af4917d --- res/values/strings.xml | 6 -- .../display/DarkUIInfoDialogFragment.java | 89 ------------------- .../display/DarkUIPreferenceController.java | 25 ------ .../display/DarkUIInfoDialogFragmentTest.java | 65 -------------- .../DarkUIPreferenceControllerTest.java | 16 ++-- 5 files changed, 7 insertions(+), 194 deletions(-) delete mode 100644 src/com/android/settings/display/DarkUIInfoDialogFragment.java delete mode 100644 tests/robotests/src/com/android/settings/display/DarkUIInfoDialogFragmentTest.java diff --git a/res/values/strings.xml b/res/values/strings.xml index 6a0fad2304a..ff80b0c6976 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -11745,12 +11745,6 @@ Temporarily turned on due to Battery Saver - - Supported apps will also switch to dark theme - - - Got it - Try Dark theme diff --git a/src/com/android/settings/display/DarkUIInfoDialogFragment.java b/src/com/android/settings/display/DarkUIInfoDialogFragment.java deleted file mode 100644 index ce517e8db23..00000000000 --- a/src/com/android/settings/display/DarkUIInfoDialogFragment.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.settings.display; - -import android.app.Dialog; -import android.app.UiModeManager; -import android.app.settings.SettingsEnums; -import android.content.Context; -import android.content.DialogInterface; -import android.os.Bundle; -import android.provider.Settings; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -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; - -public class DarkUIInfoDialogFragment extends InstrumentedDialogFragment - implements DialogInterface.OnClickListener{ - - @Override - public int getMetricsCategory() { - return SettingsEnums.DIALOG_DARK_UI_INFO; - } - - @NonNull - @Override - public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { - Context context = getContext(); - AlertDialog.Builder dialog = new AlertDialog.Builder(context); - LayoutInflater inflater = LayoutInflater.from(dialog.getContext()); - View titleView = inflater.inflate(R.layout.settings_dialog_title, null); - ((ImageView) titleView.findViewById(R.id.settings_icon)) - .setImageDrawable(context.getDrawable(R.drawable.dark_theme)); - ((TextView) titleView.findViewById(R.id.settings_title)).setText(R.string.dark_ui_mode); - - dialog.setCustomTitle(titleView) - .setMessage(R.string.dark_ui_settings_dark_summary) - .setPositiveButton( - R.string.dark_ui_settings_dialog_acknowledge, - this); - return dialog.create(); - } - - @Override - public void onDismiss(@NonNull DialogInterface dialog) { - enableDarkTheme(); - super.onDismiss(dialog); - } - - @Override - public void onClick(DialogInterface dialogInterface, int i) { - // We have to manually dismiss the dialog because changing night mode causes it to - // recreate itself. - dialogInterface.dismiss(); - enableDarkTheme(); - } - - private void enableDarkTheme() { - final Context context = getContext(); - if (context != null) { - Settings.Secure.putInt(context.getContentResolver(), - Settings.Secure.DARK_MODE_DIALOG_SEEN, - DarkUIPreferenceController.DIALOG_SEEN); - context.getSystemService(UiModeManager.class) - .setNightMode(UiModeManager.MODE_NIGHT_YES); - } - } -} diff --git a/src/com/android/settings/display/DarkUIPreferenceController.java b/src/com/android/settings/display/DarkUIPreferenceController.java index d07410ee271..f1bbfcd47b7 100644 --- a/src/com/android/settings/display/DarkUIPreferenceController.java +++ b/src/com/android/settings/display/DarkUIPreferenceController.java @@ -23,10 +23,8 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.res.Configuration; import android.os.PowerManager; -import android.provider.Settings; import androidx.annotation.VisibleForTesting; -import androidx.fragment.app.Fragment; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; @@ -39,7 +37,6 @@ import com.android.settingslib.core.lifecycle.events.OnStop; public class DarkUIPreferenceController extends TogglePreferenceController implements LifecycleObserver, OnStart, OnStop { - public static final String DARK_MODE_PREFS = "dark_mode_prefs"; public static final String PREF_DARK_MODE_DIALOG_SEEN = "dark_mode_dialog_seen"; public static final int DIALOG_SEEN = 1; @@ -48,9 +45,6 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple private UiModeManager mUiModeManager; private PowerManager mPowerManager; - private Context mContext; - - private Fragment mFragment; private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override @@ -61,7 +55,6 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple public DarkUIPreferenceController(Context context, String key) { super(context, key); - mContext = context; mUiModeManager = context.getSystemService(UiModeManager.class); mPowerManager = context.getSystemService(PowerManager.class); } @@ -86,12 +79,6 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple @Override public boolean setChecked(boolean isChecked) { - final boolean dialogSeen = - Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.DARK_MODE_DIALOG_SEEN, 0) == DIALOG_SEEN; - if (!dialogSeen && isChecked) { - showDarkModeDialog(); - } return mUiModeManager.setNightModeActivated(isChecked); } @@ -100,13 +87,6 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple return R.string.menu_key_display; } - private void showDarkModeDialog() { - final DarkUIInfoDialogFragment frag = new DarkUIInfoDialogFragment(); - if (mFragment != null && mFragment.getFragmentManager() != null) { - frag.show(mFragment.getFragmentManager(), getClass().getName()); - } - } - @VisibleForTesting void updateEnabledStateIfNeeded() { if (mPreference == null) { @@ -133,11 +113,6 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple new IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED)); } - // used by AccessibilitySettings - public void setParentFragment(Fragment fragment) { - mFragment = fragment; - } - @Override public void onStop() { mContext.unregisterReceiver(mReceiver); diff --git a/tests/robotests/src/com/android/settings/display/DarkUIInfoDialogFragmentTest.java b/tests/robotests/src/com/android/settings/display/DarkUIInfoDialogFragmentTest.java deleted file mode 100644 index f90c5901a2e..00000000000 --- a/tests/robotests/src/com/android/settings/display/DarkUIInfoDialogFragmentTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.settings.display; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.SharedPreferences; -import android.provider.Settings; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; - -@RunWith(RobolectricTestRunner.class) -public class DarkUIInfoDialogFragmentTest { - private DarkUIInfoDialogFragment mFragment; - @Mock - private DialogInterface dialog; - - - @Before - public void setup() { - MockitoAnnotations.initMocks(this); - mFragment = spy(new DarkUIInfoDialogFragment()); - } - - @Test - public void dialogDismissedOnConfirmation() { - doReturn(RuntimeEnvironment.application).when(mFragment).getContext(); - SharedPreferences prefs = RuntimeEnvironment.application.getSharedPreferences( - DarkUIPreferenceController.DARK_MODE_PREFS, - Context.MODE_PRIVATE); - assertThat(prefs.getBoolean(DarkUIPreferenceController.PREF_DARK_MODE_DIALOG_SEEN, false)) - .isFalse(); - mFragment.onClick(dialog, DialogInterface.BUTTON_POSITIVE); - verify(dialog, times(1)).dismiss(); - assertThat(Settings.Secure.getInt(RuntimeEnvironment.application.getContentResolver(), - Settings.Secure.DARK_MODE_DIALOG_SEEN, -1)).isEqualTo(1); - } -} diff --git a/tests/robotests/src/com/android/settings/display/DarkUIPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/DarkUIPreferenceControllerTest.java index 9924cb4b628..9a24d32a739 100644 --- a/tests/robotests/src/com/android/settings/display/DarkUIPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/DarkUIPreferenceControllerTest.java @@ -16,35 +16,33 @@ package com.android.settings.display; +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; + import android.content.Context; -import androidx.fragment.app.Fragment; + import com.android.settings.display.darkmode.DarkModePreference; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; - @RunWith(RobolectricTestRunner.class) public class DarkUIPreferenceControllerTest { private DarkUIPreferenceController mController; private Context mContext; - @Mock - private Fragment mFragment; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mController = spy(new DarkUIPreferenceController(mContext, "dark_ui_mode")); - mController.setParentFragment(mFragment); mController.mPreference = new DarkModePreference(mContext, null /* AttributeSet attrs */); mController.onStart(); }