network_state.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROMEOS_NETWORK_NETWORK_STATE_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROMEOS_NETWORK_NETWORK_STATE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/network/managed_state.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DictionaryValue; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Simple class to provide network state information about a network service. 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This class should always be passed as a const* and should never be held 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// on to. Store network_state->path() (defined in ManagedState) instead and 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// call NetworkStateHandler::GetNetworkState(path) to retrieve the state for 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the network. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CHROMEOS_EXPORT NetworkState : public ManagedState { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit NetworkState(const std::string& path); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~NetworkState(); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ManagedState overrides 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If you change this method, update GetProperties too. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool PropertyChanged(const std::string& key, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Value& value) OVERRIDE; 300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Fills |dictionary| with the state properties. All the properties that are 320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // accepted by PropertyChanged are stored in |dictionary|, no other values are 330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // stored. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GetProperties(base::DictionaryValue* dictionary) const; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Accessors 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& security() const { return security_; } 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& ip_address() const { return ip_address_; } 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& device_path() const { return device_path_; } 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& guid() const { return guid_; } 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& connection_state() const { return connection_state_; } 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& error() const { return error_; } 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Wireless property accessors 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int signal_strength() const { return signal_strength_; } 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Cellular property accessors 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const std::string& technology() const { return technology_; } 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& activation_state() const { return activation_state_; } 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& roaming() const { return roaming_; } 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool activate_over_non_cellular_networks() const { 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return activate_over_non_cellular_networks_; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool cellular_out_of_credits() const { return cellular_out_of_credits_; } 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool IsConnectedState() const; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool IsConnectingState() const; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helpers (used e.g. when a state is cached) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool StateIsConnected(const std::string& connection_state); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool StateIsConnecting(const std::string& connection_state); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private: 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class NetworkStateHandler; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class NetworkChangeNotifierChromeosUpdateTest; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called by NetworkStateHandler when the ip config changes. 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_ip_address(const std::string& ip_address) { 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ip_address_ = ip_address; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Common Network Service properties 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string security_; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string device_path_; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string guid_; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ip_address_; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string connection_state_; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string error_; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Wireless properties 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int signal_strength_; 79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Cellular properties 80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::string technology_; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string activation_state_; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string roaming_; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool activate_over_non_cellular_networks_; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool cellular_out_of_credits_; 85 86 DISALLOW_COPY_AND_ASSIGN(NetworkState); 87}; 88 89} // namespace chromeos 90 91#endif // CHROMEOS_NETWORK_NETWORK_STATE_H_ 92