OLD | NEW |
| (Empty) |
1 // Copyright 2014 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 CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_DELE
GATE_H_ | |
6 #define CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_DELE
GATE_H_ | |
7 | |
8 #include <string> | |
9 | |
10 #include "base/callback.h" | |
11 #include "base/memory/scoped_ptr.h" | |
12 #include "base/values.h" | |
13 #include "components/keyed_service/core/keyed_service.h" | |
14 | |
15 namespace content { | |
16 | |
17 class BrowserContext; | |
18 | |
19 } // content | |
20 | |
21 namespace extensions { | |
22 | |
23 class NetworkingPrivateDelegateObserver; | |
24 | |
25 namespace api { | |
26 namespace networking_private { | |
27 | |
28 struct VerificationProperties; | |
29 | |
30 } // networking_private | |
31 } // api | |
32 | |
33 // Base class for platform dependent networkingPrivate API implementations. | |
34 // All inputs and results for this class use ONC values. See | |
35 // networking_private.json for descriptions of the expected inputs and results. | |
36 class NetworkingPrivateDelegate : public KeyedService { | |
37 public: | |
38 typedef base::Callback<void(scoped_ptr<base::DictionaryValue>)> | |
39 DictionaryCallback; | |
40 typedef base::Callback<void()> VoidCallback; | |
41 typedef base::Callback<void(bool)> BoolCallback; | |
42 typedef base::Callback<void(const std::string&)> StringCallback; | |
43 typedef base::Callback<void(scoped_ptr<base::ListValue>)> NetworkListCallback; | |
44 typedef base::Callback<void(const std::string&)> FailureCallback; | |
45 typedef api::networking_private::VerificationProperties | |
46 VerificationProperties; | |
47 | |
48 // The Verify* methods will be forwarded to a delegate implementation if | |
49 // provided, otherwise they will fail. A separate delegate it used so that the | |
50 // current Verify* implementations are not exposed outside of src/chrome. | |
51 class VerifyDelegate { | |
52 public: | |
53 typedef NetworkingPrivateDelegate::VerificationProperties | |
54 VerificationProperties; | |
55 typedef NetworkingPrivateDelegate::BoolCallback BoolCallback; | |
56 typedef NetworkingPrivateDelegate::StringCallback StringCallback; | |
57 typedef NetworkingPrivateDelegate::FailureCallback FailureCallback; | |
58 | |
59 VerifyDelegate(); | |
60 virtual ~VerifyDelegate(); | |
61 | |
62 virtual void VerifyDestination( | |
63 const VerificationProperties& verification_properties, | |
64 const BoolCallback& success_callback, | |
65 const FailureCallback& failure_callback) = 0; | |
66 virtual void VerifyAndEncryptCredentials( | |
67 const std::string& guid, | |
68 const VerificationProperties& verification_properties, | |
69 const StringCallback& success_callback, | |
70 const FailureCallback& failure_callback) = 0; | |
71 virtual void VerifyAndEncryptData( | |
72 const VerificationProperties& verification_properties, | |
73 const std::string& data, | |
74 const StringCallback& success_callback, | |
75 const FailureCallback& failure_callback) = 0; | |
76 | |
77 private: | |
78 DISALLOW_COPY_AND_ASSIGN(VerifyDelegate); | |
79 }; | |
80 | |
81 // If |verify_delegate| is not NULL, the Verify* methods will be forwarded | |
82 // to the delegate. Otherwise they will fail with a NotSupported error. | |
83 explicit NetworkingPrivateDelegate( | |
84 scoped_ptr<VerifyDelegate> verify_delegate); | |
85 ~NetworkingPrivateDelegate() override; | |
86 | |
87 // Asynchronous methods | |
88 virtual void GetProperties(const std::string& guid, | |
89 const DictionaryCallback& success_callback, | |
90 const FailureCallback& failure_callback) = 0; | |
91 virtual void GetManagedProperties( | |
92 const std::string& guid, | |
93 const DictionaryCallback& success_callback, | |
94 const FailureCallback& failure_callback) = 0; | |
95 virtual void GetState(const std::string& guid, | |
96 const DictionaryCallback& success_callback, | |
97 const FailureCallback& failure_callback) = 0; | |
98 virtual void SetProperties(const std::string& guid, | |
99 scoped_ptr<base::DictionaryValue> properties, | |
100 const VoidCallback& success_callback, | |
101 const FailureCallback& failure_callback) = 0; | |
102 virtual void CreateNetwork(bool shared, | |
103 scoped_ptr<base::DictionaryValue> properties, | |
104 const StringCallback& success_callback, | |
105 const FailureCallback& failure_callback) = 0; | |
106 virtual void GetNetworks(const std::string& network_type, | |
107 bool configured_only, | |
108 bool visible_only, | |
109 int limit, | |
110 const NetworkListCallback& success_callback, | |
111 const FailureCallback& failure_callback) = 0; | |
112 virtual void StartConnect(const std::string& guid, | |
113 const VoidCallback& success_callback, | |
114 const FailureCallback& failure_callback) = 0; | |
115 virtual void StartDisconnect(const std::string& guid, | |
116 const VoidCallback& success_callback, | |
117 const FailureCallback& failure_callback) = 0; | |
118 virtual void SetWifiTDLSEnabledState( | |
119 const std::string& ip_or_mac_address, | |
120 bool enabled, | |
121 const StringCallback& success_callback, | |
122 const FailureCallback& failure_callback) = 0; | |
123 virtual void GetWifiTDLSStatus(const std::string& ip_or_mac_address, | |
124 const StringCallback& success_callback, | |
125 const FailureCallback& failure_callback) = 0; | |
126 virtual void GetCaptivePortalStatus( | |
127 const std::string& guid, | |
128 const StringCallback& success_callback, | |
129 const FailureCallback& failure_callback) = 0; | |
130 | |
131 // Synchronous methods | |
132 | |
133 // Returns a list of ONC type strings. | |
134 virtual scoped_ptr<base::ListValue> GetEnabledNetworkTypes() = 0; | |
135 | |
136 // Returns true if the ONC network type |type| is enabled. | |
137 virtual bool EnableNetworkType(const std::string& type) = 0; | |
138 | |
139 // Returns true if the ONC network type |type| is disabled. | |
140 virtual bool DisableNetworkType(const std::string& type) = 0; | |
141 | |
142 // Returns true if a scan was requested. It may take many seconds for a scan | |
143 // to complete. The scan may or may not trigger API events when complete. | |
144 virtual bool RequestScan() = 0; | |
145 | |
146 // Optional methods for adding a NetworkingPrivateDelegateObserver for | |
147 // implementations that require it (non-chromeos). | |
148 virtual void AddObserver(NetworkingPrivateDelegateObserver* observer); | |
149 virtual void RemoveObserver(NetworkingPrivateDelegateObserver* observer); | |
150 | |
151 // Verify* methods are forwarded to |verify_delegate_| if not NULL. | |
152 void VerifyDestination(const VerificationProperties& verification_properties, | |
153 const BoolCallback& success_callback, | |
154 const FailureCallback& failure_callback); | |
155 void VerifyAndEncryptCredentials( | |
156 const std::string& guid, | |
157 const VerificationProperties& verification_properties, | |
158 const StringCallback& success_callback, | |
159 const FailureCallback& failure_callback); | |
160 void VerifyAndEncryptData( | |
161 const VerificationProperties& verification_properties, | |
162 const std::string& data, | |
163 const StringCallback& success_callback, | |
164 const FailureCallback& failure_callback); | |
165 | |
166 private: | |
167 // Interface for Verify* methods. May be NULL. | |
168 scoped_ptr<VerifyDelegate> verify_delegate_; | |
169 | |
170 DISALLOW_COPY_AND_ASSIGN(NetworkingPrivateDelegate); | |
171 }; | |
172 | |
173 } // namespace extensions | |
174 | |
175 #endif // CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_D
ELEGATE_H_ | |
OLD | NEW |