1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.statusbar.pipeline.wifi.data.repository.prod
18 
19 import com.android.systemui.dagger.SysUISingleton
20 import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
21 import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepositoryDagger
22 import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepositoryViaTrackerLibDagger
23 import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel
24 import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiScanEntry
25 import javax.inject.Inject
26 import kotlinx.coroutines.flow.MutableStateFlow
27 import kotlinx.coroutines.flow.StateFlow
28 import kotlinx.coroutines.flow.asStateFlow
29 
30 /**
31  * Implementation of wifi repository used when wifi is permanently disabled on the device.
32  *
33  * This repo should only exist when [WifiManager] is null, which means that we can never fetch any
34  * wifi information.
35  */
36 @SysUISingleton
37 class DisabledWifiRepository @Inject constructor() :
38     WifiRepositoryDagger, WifiRepositoryViaTrackerLibDagger {
39     override fun start() {}
40 
41     override val isWifiEnabled: StateFlow<Boolean> = MutableStateFlow(false).asStateFlow()
42 
43     override val isWifiDefault: StateFlow<Boolean> = MutableStateFlow(false).asStateFlow()
44 
45     override val wifiNetwork: StateFlow<WifiNetworkModel> = MutableStateFlow(NETWORK).asStateFlow()
46 
47     override val secondaryNetworks: StateFlow<List<WifiNetworkModel>> =
48         MutableStateFlow(emptyList<WifiNetworkModel>()).asStateFlow()
49 
50     override val wifiActivity: StateFlow<DataActivityModel> =
51         MutableStateFlow(ACTIVITY).asStateFlow()
52 
53     override val wifiScanResults: StateFlow<List<WifiScanEntry>> =
54         MutableStateFlow<List<WifiScanEntry>>(emptyList()).asStateFlow()
55 
56     companion object {
57         private val NETWORK = WifiNetworkModel.Unavailable
58         private val ACTIVITY = DataActivityModel(hasActivityIn = false, hasActivityOut = false)
59     }
60 }
61