1 // Copyright (c) 2012 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 #ifndef CHROMEOS_NETWORK_DEVICE_STATE_H_ 6 #define CHROMEOS_NETWORK_DEVICE_STATE_H_ 7 8 #include "base/values.h" 9 #include "chromeos/network/managed_state.h" 10 #include "chromeos/network/network_util.h" 11 12 namespace chromeos { 13 14 // Simple class to provide device state information. Similar to NetworkState; 15 // see network_state.h for usage guidelines. 16 class CHROMEOS_EXPORT DeviceState : public ManagedState { 17 public: 18 typedef std::vector<CellularScanResult> CellularScanResults; 19 20 explicit DeviceState(const std::string& path); 21 virtual ~DeviceState(); 22 23 // ManagedState overrides 24 virtual bool PropertyChanged(const std::string& key, 25 const base::Value& value) OVERRIDE; 26 virtual bool InitialPropertiesReceived( 27 const base::DictionaryValue& properties) OVERRIDE; 28 29 void IPConfigPropertiesChanged(const std::string& ip_config_path, 30 const base::DictionaryValue& properties); 31 32 // Accessors mac_address()33 const std::string& mac_address() const { return mac_address_; } 34 35 // Cellular specific accessors home_provider_id()36 const std::string& home_provider_id() const { return home_provider_id_; } allow_roaming()37 bool allow_roaming() const { return allow_roaming_; } provider_requires_roaming()38 bool provider_requires_roaming() const { return provider_requires_roaming_; } support_network_scan()39 bool support_network_scan() const { return support_network_scan_; } scanning()40 bool scanning() const { return scanning_; } technology_family()41 const std::string& technology_family() const { return technology_family_; } carrier()42 const std::string& carrier() const { return carrier_; } sim_lock_type()43 const std::string& sim_lock_type() const { return sim_lock_type_; } sim_retries_left()44 uint32 sim_retries_left() const { return sim_retries_left_; } sim_lock_enabled()45 bool sim_lock_enabled() const { return sim_lock_enabled_; } meid()46 const std::string& meid() const { return meid_; } imei()47 const std::string& imei() const { return imei_; } iccid()48 const std::string& iccid() const { return iccid_; } mdn()49 const std::string& mdn() const { return mdn_; } scan_results()50 const CellularScanResults& scan_results() const { return scan_results_; } 51 52 // |ip_configs_| is kept up to date by NetworkStateHandler. ip_configs()53 const base::DictionaryValue& ip_configs() const { return ip_configs_; } 54 55 // Do not use this. It exists temporarily for internet_options_handler.cc 56 // which is being deprecated. properties()57 const base::DictionaryValue& properties() const { return properties_; } 58 59 // Ethernet specific accessors eap_authentication_completed()60 bool eap_authentication_completed() const { 61 return eap_authentication_completed_; 62 } 63 64 // Returns true if the technology family is GSM and sim_present_ is false. 65 bool IsSimAbsent() const; 66 67 private: 68 // Common Device Properties 69 std::string mac_address_; 70 71 // Cellular specific properties 72 std::string home_provider_id_; 73 bool allow_roaming_; 74 bool provider_requires_roaming_; 75 bool support_network_scan_; 76 bool scanning_; 77 std::string technology_family_; 78 std::string carrier_; 79 std::string sim_lock_type_; 80 uint32 sim_retries_left_; 81 bool sim_lock_enabled_; 82 bool sim_present_; 83 std::string meid_; 84 std::string imei_; 85 std::string iccid_; 86 std::string mdn_; 87 CellularScanResults scan_results_; 88 89 // Ethernet specific properties 90 bool eap_authentication_completed_; 91 92 // Keep all Device properties in a dictionary for now. See comment above. 93 base::DictionaryValue properties_; 94 95 // Dictionary of IPConfig properties, keyed by IpConfig path. 96 base::DictionaryValue ip_configs_; 97 98 DISALLOW_COPY_AND_ASSIGN(DeviceState); 99 }; 100 101 } // namespace chromeos 102 103 #endif // CHROMEOS_NETWORK_DEVICE_STATE_H_ 104