Merge "Show less secure warning in Network details settings" into main

This commit is contained in:
Treehugger Robot
2024-07-15 08:00:42 +00:00
committed by Android (Google) Code Review
4 changed files with 113 additions and 0 deletions

View File

@@ -35,6 +35,11 @@
android:icon="@drawable/ic_info_outline_24dp" android:icon="@drawable/ic_info_outline_24dp"
android:selectable="false"/> android:selectable="false"/>
<com.android.settingslib.widget.BannerMessagePreference
android:key="wep_less_secure_warning"
android:title="@string/wep_network_less_secure_warning_title"
settings:controller="com.android.settings.wifi.WepLessSecureWarningController"/>
<!-- Buttons --> <!-- Buttons -->
<com.android.settingslib.widget.ActionButtonsPreference <com.android.settingslib.widget.ActionButtonsPreference
android:key="buttons" android:key="buttons"

View File

@@ -0,0 +1,36 @@
/*
* 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 com.android.settings.core.BasePreferenceController
import com.android.wifitrackerlib.WifiEntry
class WepLessSecureWarningController (context: Context, preferenceKey: String) :
BasePreferenceController(context, preferenceKey) {
private var availabilityStatus: Int = CONDITIONALLY_UNAVAILABLE
override fun getAvailabilityStatus(): Int = availabilityStatus
fun setWifiEntry(entry: WifiEntry) {
availabilityStatus = when(entry.securityTypes.contains(WifiEntry.SECURITY_WEP)) {
true -> AVAILABLE
else -> CONDITIONALLY_UNAVAILABLE
}
}
}

View File

@@ -51,6 +51,7 @@ import com.android.settings.Utils;
import com.android.settings.dashboard.RestrictedDashboardFragment; import com.android.settings.dashboard.RestrictedDashboardFragment;
import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.WepLessSecureWarningController;
import com.android.settings.wifi.WifiConfigUiBase2; import com.android.settings.wifi.WifiConfigUiBase2;
import com.android.settings.wifi.WifiDialog2; import com.android.settings.wifi.WifiDialog2;
import com.android.settings.wifi.WifiUtils; import com.android.settings.wifi.WifiUtils;
@@ -132,6 +133,8 @@ public class WifiNetworkDetailsFragment extends RestrictedDashboardFragment impl
.setWifiEntry(mNetworkDetailsTracker.getWifiEntry()); .setWifiEntry(mNetworkDetailsTracker.getWifiEntry());
use(ServerNamePreferenceController.class) use(ServerNamePreferenceController.class)
.setWifiEntry(mNetworkDetailsTracker.getWifiEntry()); .setWifiEntry(mNetworkDetailsTracker.getWifiEntry());
use(WepLessSecureWarningController.class)
.setWifiEntry(mNetworkDetailsTracker.getWifiEntry());
} }
@Override @Override

View File

@@ -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"
}
}