From 772477af1cced24d324326484f973952ce06aee1 Mon Sep 17 00:00:00 2001 From: Tsung-Mao Fang Date: Thu, 18 Feb 2021 18:14:58 +0800 Subject: [PATCH] Fix broken tests 1) Remove AssistantFeedbackPreferenceController since it didn't use. 2) Refine the AssistantFeedbackPreferenceControllerTest, we need to use vpn manager object now. (See ag/13519006) Test: Run robo test Fix: 180576544 Change-Id: I719711d83201d571427b9f46a6026e0831cddab6 --- .../ShortcutsSettingsFragment.java | 2 + ...AssistantFeedbackPreferenceController.java | 127 ------------- .../network/VpnPreferenceControllerTest.java | 12 +- ...stantFeedbackPreferenceControllerTest.java | 176 ------------------ 4 files changed, 5 insertions(+), 312 deletions(-) delete mode 100644 src/com/android/settings/notification/AssistantFeedbackPreferenceController.java delete mode 100644 tests/robotests/src/com/android/settings/notification/AssistantFeedbackPreferenceControllerTest.java diff --git a/src/com/android/settings/accessibility/ShortcutsSettingsFragment.java b/src/com/android/settings/accessibility/ShortcutsSettingsFragment.java index 91e16f623f3..84268349b7c 100644 --- a/src/com/android/settings/accessibility/ShortcutsSettingsFragment.java +++ b/src/com/android/settings/accessibility/ShortcutsSettingsFragment.java @@ -21,8 +21,10 @@ import android.app.settings.SettingsEnums; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settingslib.search.SearchIndexable; /** Accessibility settings for accessibility shortcuts. */ +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class ShortcutsSettingsFragment extends DashboardFragment { private static final String TAG = "ShortcutsSettingsFragment"; diff --git a/src/com/android/settings/notification/AssistantFeedbackPreferenceController.java b/src/com/android/settings/notification/AssistantFeedbackPreferenceController.java deleted file mode 100644 index 491fd8b7bfc..00000000000 --- a/src/com/android/settings/notification/AssistantFeedbackPreferenceController.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2020 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.notification; - -import static android.provider.Settings.Global.NOTIFICATION_FEEDBACK_ENABLED; - -import android.content.ContentResolver; -import android.content.Context; -import android.database.ContentObserver; -import android.net.Uri; -import android.os.Handler; -import android.provider.DeviceConfig; -import android.provider.Settings; - -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; - -import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; -import com.android.settings.core.PreferenceControllerMixin; -import com.android.settings.core.TogglePreferenceController; -import com.android.settingslib.core.lifecycle.LifecycleObserver; -import com.android.settingslib.core.lifecycle.events.OnPause; -import com.android.settingslib.core.lifecycle.events.OnResume; - -import com.google.common.annotations.VisibleForTesting; - -public class AssistantFeedbackPreferenceController extends TogglePreferenceController - implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener, - LifecycleObserver, OnResume, OnPause { - - @VisibleForTesting - static final int ON = 1; - @VisibleForTesting - static final int OFF = 0; - - private SettingObserver mSettingObserver; - - public AssistantFeedbackPreferenceController(Context context, - String preferenceKey) { - super(context, preferenceKey); - } - - @Override - public void displayPreference(PreferenceScreen screen) { - super.displayPreference(screen); - Preference preference = screen.findPreference(NOTIFICATION_FEEDBACK_ENABLED); - if (preference != null) { - mSettingObserver = new SettingObserver(preference); - } - } - - @Override - public void onResume() { - if (mSettingObserver != null) { - mSettingObserver.register(mContext.getContentResolver(), true /* register */); - } - } - - @Override - public void onPause() { - if (mSettingObserver != null) { - mSettingObserver.register(mContext.getContentResolver(), false /* register */); - } - } - - @Override - public int getAvailabilityStatus() { - return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, false) - ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; - } - - @Override - public boolean isChecked() { - return Settings.Global.getInt(mContext.getContentResolver(), - NOTIFICATION_FEEDBACK_ENABLED, ON) == ON; - } - - @Override - public boolean setChecked(boolean isChecked) { - return Settings.Global.putInt(mContext.getContentResolver(), - NOTIFICATION_FEEDBACK_ENABLED, isChecked ? ON : OFF); - } - - class SettingObserver extends ContentObserver { - - private final Uri NOTIFICATION_URI = - Settings.Global.getUriFor(NOTIFICATION_FEEDBACK_ENABLED); - - private final Preference mPreference; - - SettingObserver(Preference preference) { - super(new Handler()); - mPreference = preference; - } - - public void register(ContentResolver cr, boolean register) { - if (register) { - cr.registerContentObserver(NOTIFICATION_URI, false, this); - } else { - cr.unregisterContentObserver(this); - } - } - - @Override - public void onChange(boolean selfChange, Uri uri) { - super.onChange(selfChange, uri); - if (NOTIFICATION_URI.equals(uri)) { - updateState(mPreference); - } - } - } -} diff --git a/tests/robotests/src/com/android/settings/network/VpnPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/VpnPreferenceControllerTest.java index 89d0465fab2..fb66d299ccd 100644 --- a/tests/robotests/src/com/android/settings/network/VpnPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/VpnPreferenceControllerTest.java @@ -30,11 +30,9 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.net.ConnectivityManager; -import android.net.IConnectivityManager; import android.net.NetworkRequest; -import android.os.IBinder; +import android.net.VpnManager; import android.os.UserHandle; -import android.os.ServiceManager; import android.provider.SettingsSlicesContract; import androidx.lifecycle.LifecycleOwner; @@ -60,9 +58,7 @@ public class VpnPreferenceControllerTest { @Mock private ConnectivityManager mConnectivityManager; @Mock - private IBinder mBinder; - @Mock - private IConnectivityManager mConnectivityManagerService; + private VpnManager mVpnManager; @Mock private PreferenceScreen mScreen; @Mock @@ -76,9 +72,7 @@ public class VpnPreferenceControllerTest { MockitoAnnotations.initMocks(this); when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)) .thenReturn(mConnectivityManager); - when(mBinder.queryLocalInterface("android.net.IConnectivityManager")) - .thenReturn(mConnectivityManagerService); - ServiceManager.addService(Context.CONNECTIVITY_SERVICE, mBinder); + when(mContext.getSystemService(VpnManager.class)).thenReturn(mVpnManager); when(mScreen.findPreference(anyString())).thenReturn(mPreference); mController = spy(new VpnPreferenceController(mContext)); diff --git a/tests/robotests/src/com/android/settings/notification/AssistantFeedbackPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/AssistantFeedbackPreferenceControllerTest.java deleted file mode 100644 index 9f172a6df1f..00000000000 --- a/tests/robotests/src/com/android/settings/notification/AssistantFeedbackPreferenceControllerTest.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright (C) 2020 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.notification; - -import static android.provider.Settings.Global.NOTIFICATION_FEEDBACK_ENABLED; - -import static com.android.settings.notification.AssistantFeedbackPreferenceController.OFF; -import static com.android.settings.notification.AssistantFeedbackPreferenceController.ON; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.content.Context; -import android.provider.DeviceConfig; -import android.provider.Settings; - -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; -import androidx.preference.TwoStatePreference; - -import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; -import com.android.settings.core.BasePreferenceController; -import com.android.settings.testutils.shadow.ShadowDeviceConfig; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Answers; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.Config; - -@RunWith(RobolectricTestRunner.class) -@Config(shadows = {ShadowDeviceConfig.class}) -public class AssistantFeedbackPreferenceControllerTest { - - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private Context mContext; - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private PreferenceScreen mScreen; - - private AssistantFeedbackPreferenceController mController; - private Preference mPreference; - - private static final String KEY = "asst_feedback_indicator"; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - mController = new AssistantFeedbackPreferenceController(mContext, KEY); - mPreference = new Preference(RuntimeEnvironment.application); - mPreference.setKey(mController.getPreferenceKey()); - when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference); - } - - @After - public void tearDown() { - ShadowDeviceConfig.reset(); - } - - @Test - public void testIsVisible_DeviceConfigOn() { - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, "true", true); - mController.displayPreference(mScreen); - - assertThat(mPreference.isVisible()).isTrue(); - } - - @Test - public void testIsVisible_DeviceConfigOff() { - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, "false", true); - mController.displayPreference(mScreen); - - assertThat(mPreference.isVisible()).isFalse(); - } - - @Test - public void getAvailabilityStatus_DeviceConfigOn_returnAvailable() { - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, "true", true); - - assertThat(mController.getAvailabilityStatus()).isEqualTo( - BasePreferenceController.AVAILABLE); - } - - @Test - public void getAvailabilityStatus_DeviceConfigOff_returnUnavailable() { - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, "false", true); - - assertThat(mController.getAvailabilityStatus()).isEqualTo( - BasePreferenceController.CONDITIONALLY_UNAVAILABLE); - } - - @Test - public void updateState_preferenceSetCheckedWhenSettingIsOn() { - final TwoStatePreference preference = mock(TwoStatePreference.class); - final Context context = RuntimeEnvironment.application; - Settings.Global.putInt(context.getContentResolver(), NOTIFICATION_FEEDBACK_ENABLED, ON); - - mController = new AssistantFeedbackPreferenceController(context, KEY); - mController.updateState(preference); - - verify(preference).setChecked(true); - } - - @Test - public void updateState_preferenceSetUncheckedWhenSettingIsOff() { - final TwoStatePreference preference = mock(TwoStatePreference.class); - final Context context = RuntimeEnvironment.application; - Settings.Global.putInt(context.getContentResolver(), NOTIFICATION_FEEDBACK_ENABLED, OFF); - - mController = new AssistantFeedbackPreferenceController(context, KEY); - mController.updateState(preference); - - verify(preference).setChecked(false); - } - - @Test - public void isChecked_settingIsOff_shouldReturnFalse() { - Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_FEEDBACK_ENABLED, OFF); - - assertThat(mController.isChecked()).isFalse(); - } - - @Test - public void isChecked_settingIsOn_shouldReturnTrue() { - Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_FEEDBACK_ENABLED, ON); - - assertThat(mController.isChecked()).isTrue(); - } - - @Test - public void setChecked_setFalse_disablesSetting() { - Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_FEEDBACK_ENABLED, ON); - - mController.setChecked(false); - int updatedValue = Settings.Global.getInt(mContext.getContentResolver(), - NOTIFICATION_FEEDBACK_ENABLED, -1); - - assertThat(updatedValue).isEqualTo(OFF); - } - - @Test - public void setChecked_setTrue_enablesSetting() { - Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_FEEDBACK_ENABLED, OFF); - - mController.setChecked(true); - int updatedValue = Settings.Global.getInt(mContext.getContentResolver(), - NOTIFICATION_FEEDBACK_ENABLED, -1); - - assertThat(updatedValue).isEqualTo(ON); - } -}