Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2db5d161 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

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

parents 02849149 05b28d24
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -35,6 +35,11 @@
        android:icon="@drawable/ic_info_outline_24dp"
        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 -->
    <com.android.settingslib.widget.ActionButtonsPreference
        android:key="buttons"
+36 −0
Original line number Diff line number Diff line
/*
 * 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
        }
    }
}
 No newline at end of file
+3 −0
Original line number Diff line number Diff line
@@ -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
+69 −0
Original line number Diff line number Diff line
/*
 * 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"
    }
}