1 // Copyright 2019 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "chromeos/services/network_config/public/cpp/cros_network_config_util.h"
6 
7 namespace chromeos {
8 namespace network_config {
9 
10 // This matches logic in NetworkTypePattern and should be kept in sync.
NetworkTypeMatchesType(mojom::NetworkType network_type,mojom::NetworkType match_type)11 bool NetworkTypeMatchesType(mojom::NetworkType network_type,
12                             mojom::NetworkType match_type) {
13   switch (match_type) {
14     case mojom::NetworkType::kAll:
15       return true;
16     case mojom::NetworkType::kMobile:
17       return network_type == mojom::NetworkType::kCellular ||
18              network_type == mojom::NetworkType::kTether;
19     case mojom::NetworkType::kWireless:
20       return network_type == mojom::NetworkType::kCellular ||
21              network_type == mojom::NetworkType::kTether ||
22              network_type == mojom::NetworkType::kWiFi;
23     case mojom::NetworkType::kCellular:
24     case mojom::NetworkType::kEthernet:
25     case mojom::NetworkType::kTether:
26     case mojom::NetworkType::kVPN:
27     case mojom::NetworkType::kWiFi:
28       return network_type == match_type;
29   }
30   NOTREACHED();
31   return false;
32 }
33 
NetworkStateMatchesType(const mojom::NetworkStateProperties * network,mojom::NetworkType type)34 bool NetworkStateMatchesType(const mojom::NetworkStateProperties* network,
35                              mojom::NetworkType type) {
36   return NetworkTypeMatchesType(network->type, type);
37 }
38 
StateIsConnected(mojom::ConnectionStateType connection_state)39 bool StateIsConnected(mojom::ConnectionStateType connection_state) {
40   switch (connection_state) {
41     case mojom::ConnectionStateType::kOnline:
42     case mojom::ConnectionStateType::kConnected:
43     case mojom::ConnectionStateType::kPortal:
44       return true;
45     case mojom::ConnectionStateType::kConnecting:
46     case mojom::ConnectionStateType::kNotConnected:
47       return false;
48   }
49   NOTREACHED();
50   return false;
51 }
52 
GetWirelessSignalStrength(const mojom::NetworkStateProperties * network)53 int GetWirelessSignalStrength(const mojom::NetworkStateProperties* network) {
54   switch (network->type) {
55     case mojom::NetworkType::kCellular:
56       return network->type_state->get_cellular()->signal_strength;
57     case mojom::NetworkType::kEthernet:
58       return 0;
59     case mojom::NetworkType::kTether:
60       return network->type_state->get_tether()->signal_strength;
61     case mojom::NetworkType::kVPN:
62       return 0;
63     case mojom::NetworkType::kWiFi:
64       return network->type_state->get_wifi()->signal_strength;
65     case mojom::NetworkType::kAll:
66     case mojom::NetworkType::kMobile:
67     case mojom::NetworkType::kWireless:
68       break;
69   }
70   NOTREACHED();
71   return 0;
72 }
73 
74 }  // namespace network_config
75 }  // namespace chromeos
76