network_profile_handler.h revision 7dbb3d5cf0c15f500944d211057644d6a2f37371
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 static const char kSharedProfilePath[]; 56 57 protected: 58 friend class NetworkHandler; 59 NetworkProfileHandler(); 60 61 // Add ShillManagerClient property observer and request initial list. 62 // Sets |network_state_handler_| for triggering Manager updates (can be NULL). 63 void Init(NetworkStateHandler* network_state_handler); 64 65 void AddProfile(const NetworkProfile& profile); 66 void RemoveProfile(const std::string& profile_path); 67 68 private: 69 NetworkStateHandler* network_state_handler_; 70 ProfileList profiles_; 71 ObserverList<NetworkProfileObserver> observers_; 72 73 // For Shill client callbacks 74 base::WeakPtrFactory<NetworkProfileHandler> weak_ptr_factory_; 75 76 private: 77 DISALLOW_COPY_AND_ASSIGN(NetworkProfileHandler); 78}; 79 80} // namespace chromeos 81 82#endif // CHROMEOS_NETWORK_NETWORK_PROFILE_HANDLER_H_ 83