From 05b28d24c3db55d8d2c268558fc9e0ac914ff078 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Mon, 15 Jul 2024 03:22:37 +0800 Subject: [PATCH] Show less secure warning in Network details settings - Show warning when device connected to WEP protocol Bug: 331973632 Flag: EXEMPT bugfix Test: Manual testing atest -c WepLessSecureWarningControllerTest Change-Id: I54a9bafb2c672db44d47259d6acc49c02046cb81 --- res/xml/wifi_network_details_fragment2.xml | 5 ++ .../wifi/WepLessSecureWarningController.kt | 36 ++++++++++ .../details/WifiNetworkDetailsFragment.java | 3 + .../WepLessSecureWarningControllerTest.kt | 69 +++++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 src/com/android/settings/wifi/WepLessSecureWarningController.kt create mode 100644 tests/unit/src/com/android/settings/wifi/WepLessSecureWarningControllerTest.kt diff --git a/res/xml/wifi_network_details_fragment2.xml b/res/xml/wifi_network_details_fragment2.xml index 518b65d8401..da4ea5a5e66 100644 --- a/res/xml/wifi_network_details_fragment2.xml +++ b/res/xml/wifi_network_details_fragment2.xml @@ -35,6 +35,11 @@ android:icon="@drawable/ic_info_outline_24dp" android:selectable="false"/> + + AVAILABLE + else -> CONDITIONALLY_UNAVAILABLE + } + } +} \ No newline at end of file diff --git a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java index eb0b40a8b98..3ec5bb21152 100644 --- a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java +++ b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java @@ -51,6 +51,7 @@ import com.android.settings.Utils; import com.android.settings.dashboard.RestrictedDashboardFragment; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.overlay.FeatureFactory; +import com.android.settings.wifi.WepLessSecureWarningController; import com.android.settings.wifi.WifiConfigUiBase2; import com.android.settings.wifi.WifiDialog2; import com.android.settings.wifi.WifiUtils; @@ -132,6 +133,8 @@ public class WifiNetworkDetailsFragment extends RestrictedDashboardFragment impl .setWifiEntry(mNetworkDetailsTracker.getWifiEntry()); use(ServerNamePreferenceController.class) .setWifiEntry(mNetworkDetailsTracker.getWifiEntry()); + use(WepLessSecureWarningController.class) + .setWifiEntry(mNetworkDetailsTracker.getWifiEntry()); } @Override diff --git a/tests/unit/src/com/android/settings/wifi/WepLessSecureWarningControllerTest.kt b/tests/unit/src/com/android/settings/wifi/WepLessSecureWarningControllerTest.kt new file mode 100644 index 00000000000..008539df538 --- /dev/null +++ b/tests/unit/src/com/android/settings/wifi/WepLessSecureWarningControllerTest.kt @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2024 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.wifi + +import android.content.Context +import androidx.test.core.app.ApplicationProvider +import com.android.settings.core.BasePreferenceController.AVAILABLE +import com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE +import com.android.wifitrackerlib.WifiEntry +import com.google.common.truth.Truth.assertThat +import org.junit.Rule +import org.junit.Test +import org.mockito.Mock +import org.mockito.Spy +import org.mockito.junit.MockitoJUnit +import org.mockito.junit.MockitoRule +import org.mockito.Mockito.`when` as whenever + +class WepLessSecureWarningControllerTest { + @get:Rule + val mockito: MockitoRule = MockitoJUnit.rule() + @Spy + private val context: Context = ApplicationProvider.getApplicationContext() + @Mock + private lateinit var mockWifiEntry: WifiEntry + + private val controller = WepLessSecureWarningController(context, TEST_KEY) + + @Test + fun getAvailabilityStatus_default_conditionallyUnavailable() { + assertThat(controller.availabilityStatus).isEqualTo(CONDITIONALLY_UNAVAILABLE) + } + + @Test + fun getAvailabilityStatus_noWepSecurityType_conditionallyUnavailable() { + whenever(mockWifiEntry.securityTypes).thenReturn(listOf(WifiEntry.SECURITY_PSK)) + + controller.setWifiEntry(mockWifiEntry) + + assertThat(controller.availabilityStatus).isEqualTo(CONDITIONALLY_UNAVAILABLE) + } + + @Test + fun getAvailabilityStatus_containsWepSecurityType_available() { + whenever(mockWifiEntry.securityTypes).thenReturn(listOf(WifiEntry.SECURITY_WEP)) + + controller.setWifiEntry(mockWifiEntry) + + assertThat(controller.availabilityStatus).isEqualTo(AVAILABLE) + } + + private companion object { + const val TEST_KEY = "test_key" + } +}