1*6777b538SAndroid Build Coastguard Worker // Copyright 2020 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef BASE_ANDROID_RADIO_UTILS_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_ANDROID_RADIO_UTILS_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include <optional> 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker #include "base/android/jni_android.h" 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker namespace base { 13*6777b538SAndroid Build Coastguard Worker namespace android { 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker // These values are persisted to logs. Entries should not be renumbered and 16*6777b538SAndroid Build Coastguard Worker // numeric values should never be reused. Keep in sync with RadioSignalLevel 17*6777b538SAndroid Build Coastguard Worker // in //tools/metrics/histograms/enums.xml. 18*6777b538SAndroid Build Coastguard Worker enum class RadioSignalLevel { 19*6777b538SAndroid Build Coastguard Worker kNoneOrUnknown = 0, 20*6777b538SAndroid Build Coastguard Worker kPoor = 1, 21*6777b538SAndroid Build Coastguard Worker kModerate = 2, 22*6777b538SAndroid Build Coastguard Worker kGood = 3, 23*6777b538SAndroid Build Coastguard Worker kGreat = 4, 24*6777b538SAndroid Build Coastguard Worker kMaxValue = kGreat, 25*6777b538SAndroid Build Coastguard Worker }; 26*6777b538SAndroid Build Coastguard Worker 27*6777b538SAndroid Build Coastguard Worker enum class RadioDataActivity { 28*6777b538SAndroid Build Coastguard Worker kNone = 0, 29*6777b538SAndroid Build Coastguard Worker kIn = 1, 30*6777b538SAndroid Build Coastguard Worker kOut = 2, 31*6777b538SAndroid Build Coastguard Worker kInOut = 3, 32*6777b538SAndroid Build Coastguard Worker kDormant = 4, 33*6777b538SAndroid Build Coastguard Worker }; 34*6777b538SAndroid Build Coastguard Worker 35*6777b538SAndroid Build Coastguard Worker enum class RadioConnectionType { 36*6777b538SAndroid Build Coastguard Worker kUnknown = 0, 37*6777b538SAndroid Build Coastguard Worker kWifi = 1, 38*6777b538SAndroid Build Coastguard Worker kCell = 2, 39*6777b538SAndroid Build Coastguard Worker }; 40*6777b538SAndroid Build Coastguard Worker 41*6777b538SAndroid Build Coastguard Worker class BASE_EXPORT RadioUtils { 42*6777b538SAndroid Build Coastguard Worker public: 43*6777b538SAndroid Build Coastguard Worker class OverrideForTesting { 44*6777b538SAndroid Build Coastguard Worker public: 45*6777b538SAndroid Build Coastguard Worker OverrideForTesting(); 46*6777b538SAndroid Build Coastguard Worker ~OverrideForTesting(); 47*6777b538SAndroid Build Coastguard Worker SetConnectionTypeForTesting(RadioConnectionType connection_type)48*6777b538SAndroid Build Coastguard Worker void SetConnectionTypeForTesting(RadioConnectionType connection_type) { 49*6777b538SAndroid Build Coastguard Worker connection_type_ = connection_type; 50*6777b538SAndroid Build Coastguard Worker } 51*6777b538SAndroid Build Coastguard Worker GetConnectionType()52*6777b538SAndroid Build Coastguard Worker RadioConnectionType GetConnectionType() { return connection_type_; } 53*6777b538SAndroid Build Coastguard Worker 54*6777b538SAndroid Build Coastguard Worker private: 55*6777b538SAndroid Build Coastguard Worker RadioConnectionType connection_type_; 56*6777b538SAndroid Build Coastguard Worker }; 57*6777b538SAndroid Build Coastguard Worker static bool IsSupported(); 58*6777b538SAndroid Build Coastguard Worker static RadioConnectionType GetConnectionType(); 59*6777b538SAndroid Build Coastguard Worker static std::optional<RadioSignalLevel> GetCellSignalLevel(); 60*6777b538SAndroid Build Coastguard Worker static std::optional<RadioDataActivity> GetCellDataActivity(); 61*6777b538SAndroid Build Coastguard Worker }; 62*6777b538SAndroid Build Coastguard Worker 63*6777b538SAndroid Build Coastguard Worker } // namespace android 64*6777b538SAndroid Build Coastguard Worker } // namespace base 65*6777b538SAndroid Build Coastguard Worker 66*6777b538SAndroid Build Coastguard Worker #endif // BASE_ANDROID_RADIO_UTILS_H_ 67