• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
21 namespace base {
22 class DictionaryValue;
23 }
24 
25 namespace chromeos {
26 
27 class NetworkProfileObserver;
28 class NetworkStateHandler;
29 
30 class 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   // Returns the first profile entry with a non-empty userhash.
56   // TODO(stevenjb): Replace with GetProfileForUserhash() with the correct
57   // userhash.
58   const NetworkProfile* GetDefaultUserProfile() const;
59 
60   static std::string GetSharedProfilePath();
61 
62  protected:
63   friend class ClientCertResolverTest;
64   friend class NetworkConnectionHandlerTest;
65   friend class NetworkHandler;
66   NetworkProfileHandler();
67 
68   // Add ShillManagerClient property observer and request initial list.
69   void Init();
70 
71   void AddProfile(const NetworkProfile& profile);
72   void RemoveProfile(const std::string& profile_path);
73 
74  private:
75   ProfileList profiles_;
76   ObserverList<NetworkProfileObserver> observers_;
77 
78   // For Shill client callbacks
79   base::WeakPtrFactory<NetworkProfileHandler> weak_ptr_factory_;
80 
81  private:
82   DISALLOW_COPY_AND_ASSIGN(NetworkProfileHandler);
83 };
84 
85 }  // namespace chromeos
86 
87 #endif  // CHROMEOS_NETWORK_NETWORK_PROFILE_HANDLER_H_
88