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_DELEGATE_H_
6#define CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_DELEGATE_H_
7
8#include <string>
9
10#include "base/callback.h"
11#include "base/memory/scoped_ptr.h"
12#include "base/values.h"
13
14namespace content {
15class BrowserContext;
16}
17
18namespace extensions {
19
20namespace api {
21namespace networking_private {
22
23struct VerificationProperties;
24
25}  // networking_private
26}  // api
27
28// Base class for platform dependent networkingPrivate API implementations.
29// All inputs and results for this class use ONC values. See
30// networking_private.json for descriptions of the expected inputs and results.
31class NetworkingPrivateDelegate {
32 public:
33  typedef base::Callback<void(scoped_ptr<base::DictionaryValue>)>
34      DictionaryCallback;
35  typedef base::Callback<void()> VoidCallback;
36  typedef base::Callback<void(bool)> BoolCallback;
37  typedef base::Callback<void(const std::string&)> StringCallback;
38  typedef base::Callback<void(scoped_ptr<base::ListValue>)> NetworkListCallback;
39  typedef base::Callback<void(const std::string&)> FailureCallback;
40  typedef api::networking_private::VerificationProperties
41      VerificationProperties;
42
43  static NetworkingPrivateDelegate* GetForBrowserContext(
44      content::BrowserContext* browser_context);
45
46  // Asynchronous methods
47  virtual void GetProperties(const std::string& guid,
48                             const DictionaryCallback& success_callback,
49                             const FailureCallback& failure_callback) = 0;
50  virtual void GetManagedProperties(
51      const std::string& guid,
52      const DictionaryCallback& success_callback,
53      const FailureCallback& failure_callback) = 0;
54  virtual void GetState(const std::string& guid,
55                        const DictionaryCallback& success_callback,
56                        const FailureCallback& failure_callback) = 0;
57  virtual void SetProperties(const std::string& guid,
58                             scoped_ptr<base::DictionaryValue> properties,
59                             const VoidCallback& success_callback,
60                             const FailureCallback& failure_callback) = 0;
61  virtual void CreateNetwork(bool shared,
62                             scoped_ptr<base::DictionaryValue> properties,
63                             const StringCallback& success_callback,
64                             const FailureCallback& failure_callback) = 0;
65  virtual void GetNetworks(const std::string& network_type,
66                           bool configured_only,
67                           bool visible_only,
68                           int limit,
69                           const NetworkListCallback& success_callback,
70                           const FailureCallback& failure_callback) = 0;
71  virtual void StartConnect(const std::string& guid,
72                            const VoidCallback& success_callback,
73                            const FailureCallback& failure_callback) = 0;
74  virtual void StartDisconnect(const std::string& guid,
75                               const VoidCallback& success_callback,
76                               const FailureCallback& failure_callback) = 0;
77  virtual void VerifyDestination(
78      const VerificationProperties& verification_properties,
79      const BoolCallback& success_callback,
80      const FailureCallback& failure_callback) = 0;
81  virtual void VerifyAndEncryptCredentials(
82      const std::string& guid,
83      const VerificationProperties& verification_properties,
84      const StringCallback& success_callback,
85      const FailureCallback& failure_callback) = 0;
86  virtual void VerifyAndEncryptData(
87      const VerificationProperties& verification_properties,
88      const std::string& data,
89      const StringCallback& success_callback,
90      const FailureCallback& failure_callback) = 0;
91  virtual void SetWifiTDLSEnabledState(
92      const std::string& ip_or_mac_address,
93      bool enabled,
94      const StringCallback& success_callback,
95      const FailureCallback& failure_callback) = 0;
96  virtual void GetWifiTDLSStatus(
97      const std::string& ip_or_mac_address,
98      const StringCallback& success_callback,
99      const FailureCallback& failure_callback) = 0;
100  virtual void GetCaptivePortalStatus(
101      const std::string& guid,
102      const StringCallback& success_callback,
103      const FailureCallback& failure_callback) = 0;
104
105  // Synchronous methods
106
107  // Returns a list of ONC type strings.
108  virtual scoped_ptr<base::ListValue> GetEnabledNetworkTypes() = 0;
109
110  // Returns true if the ONC network type |type| is enabled.
111  virtual bool EnableNetworkType(const std::string& type) = 0;
112
113  // Returns true if the ONC network type |type| is disabled.
114  virtual bool DisableNetworkType(const std::string& type) = 0;
115
116  // Returns true if a scan was requested. It may take many seconds for a scan
117  // to complete. The scan may or may not trigger API events when complete.
118  virtual bool RequestScan() = 0;
119
120 protected:
121  virtual ~NetworkingPrivateDelegate() {}
122};
123
124}  // namespace extensions
125
126#endif  // CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_DELEGATE_H_
127