network_profile_handler.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright (c) 2013 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_PROFILE_HANDLER_H_ 6#define CHROMEOS_NETWORK_NETWORK_PROFILE_HANDLER_H_ 7 8#include <string> 9#include <vector> 10 11#include "base/basictypes.h" 12#include "base/compiler_specific.h" 13#include "base/memory/weak_ptr.h" 14#include "base/observer_list.h" 15#include "chromeos/chromeos_export.h" 16#include "chromeos/dbus/dbus_method_call_status.h" 17#include "chromeos/dbus/shill_property_changed_observer.h" 18#include "chromeos/network/network_handler.h" 19#include "chromeos/network/network_profile.h" 20 21namespace base { 22class DictionaryValue; 23} 24 25namespace chromeos { 26 27class NetworkProfileObserver; 28class NetworkStateHandler; 29 30class CHROMEOS_EXPORT NetworkProfileHandler 31 : public ShillPropertyChangedObserver { 32 public: 33 typedef std::vector<NetworkProfile> ProfileList; 34 35 virtual ~NetworkProfileHandler(); 36 37 void AddObserver(NetworkProfileObserver* observer); 38 void RemoveObserver(NetworkProfileObserver* observer); 39 40 void GetManagerPropertiesCallback(DBusMethodCallStatus call_status, 41 const base::DictionaryValue& properties); 42 43 // ShillPropertyChangedObserver overrides 44 virtual void OnPropertyChanged(const std::string& name, 45 const base::Value& value) OVERRIDE; 46 47 void GetProfilePropertiesCallback(const std::string& profile_path, 48 const base::DictionaryValue& properties); 49 50 const NetworkProfile* GetProfileForPath( 51 const std::string& profile_path) const; 52 const NetworkProfile* GetProfileForUserhash( 53 const std::string& userhash) const; 54 55 protected: 56 friend class NetworkHandler; 57 NetworkProfileHandler(); 58 59 // Add ShillManagerClient property observer and request initial list. 60 // Sets |network_state_handler_| for triggering Manager updates (can be NULL). 61 void Init(NetworkStateHandler* network_state_handler); 62 63 void AddProfile(const NetworkProfile& profile); 64 void RemoveProfile(const std::string& profile_path); 65 66 private: 67 NetworkStateHandler* network_state_handler_; 68 ProfileList profiles_; 69 ObserverList<NetworkProfileObserver> observers_; 70 71 // For Shill client callbacks 72 base::WeakPtrFactory<NetworkProfileHandler> weak_ptr_factory_; 73 74 private: 75 DISALLOW_COPY_AND_ASSIGN(NetworkProfileHandler); 76}; 77 78} // namespace chromeos 79 80#endif // CHROMEOS_NETWORK_NETWORK_PROFILE_HANDLER_H_ 81