network_state.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
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_NETWORK_STATE_H_
6#define CHROMEOS_NETWORK_NETWORK_STATE_H_
7
8#include "chromeos/network/managed_state.h"
9
10namespace chromeos {
11
12// Simple class to provide network state information about a network service.
13// This class should always be passed as a const* and should never be held
14// on to. Store network_state->path() (defined in ManagedState) instead and
15// call NetworkStateHandler::GetNetworkState(path) to retrieve the state for
16// the network.
17class CHROMEOS_EXPORT NetworkState : public ManagedState {
18 public:
19  explicit NetworkState(const std::string& path);
20  virtual ~NetworkState();
21
22  // ManagedState overrides
23  virtual bool PropertyChanged(const std::string& key,
24                               const base::Value& value) OVERRIDE;
25
26  // Accessors
27  const std::string& security() const { return security_; }
28  const std::string& technology() const { return technology_; }
29  const std::string& ip_address() const { return ip_address_; }
30  const std::string& device_path() const { return device_path_; }
31  const std::string& state() const { return state_; }
32  const std::string& error() const { return error_; }
33  const std::string& activation_state() const { return activation_state_; }
34  const std::string& roaming() const { return roaming_; }
35  int signal_strength() const { return signal_strength_; }
36
37  bool IsConnectedState() const;
38  bool IsConnectingState() const;
39
40  // Helpers (used e.g. when a state is cached)
41  static bool StateIsConnected(const std::string& state);
42  static bool StateIsConnecting(const std::string& state);
43
44 private:
45  friend class NetworkStateHandler;
46
47  // Called by NetworkStateHandler when the ip config changes.
48  void set_ip_address(const std::string& ip_address) {
49    ip_address_ = ip_address;
50  }
51
52  // Common Network Service properties
53  std::string security_;
54  std::string device_path_;
55  std::string ip_address_;
56  std::string state_;
57  std::string error_;
58  // Wireless properties
59  int signal_strength_;
60  // Cellular properties
61  std::string technology_;
62  std::string activation_state_;
63  std::string roaming_;
64
65  DISALLOW_COPY_AND_ASSIGN(NetworkState);
66};
67
68}  // namespace chromeos
69
70#endif  // CHROMEOS_NETWORK_NETWORK_STATE_H_
71