1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_DELEGATE_H_
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_DELEGATE_H_
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <string>
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/callback.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_ptr.h"
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/values.h"
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace content {
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass BrowserContext;
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace extensions {
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace api {
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace networking_private {
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstruct VerificationProperties;
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // networking_private
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // api
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Base class for platform dependent networkingPrivate API implementations.
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// All inputs and results for this class use ONC values. See
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// networking_private.json for descriptions of the expected inputs and results.
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass NetworkingPrivateDelegate {
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public:
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  typedef base::Callback<void(scoped_ptr<base::DictionaryValue>)>
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      DictionaryCallback;
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  typedef base::Callback<void()> VoidCallback;
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  typedef base::Callback<void(bool)> BoolCallback;
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  typedef base::Callback<void(const std::string&)> StringCallback;
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  typedef base::Callback<void(scoped_ptr<base::ListValue>)> NetworkListCallback;
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  typedef base::Callback<void(const std::string&)> FailureCallback;
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  typedef api::networking_private::VerificationProperties
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      VerificationProperties;
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  static NetworkingPrivateDelegate* GetForBrowserContext(
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      content::BrowserContext* browser_context);
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Asynchronous methods
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void GetProperties(const std::string& guid,
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                             const DictionaryCallback& success_callback,
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                             const FailureCallback& failure_callback) = 0;
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void GetManagedProperties(
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const std::string& guid,
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const DictionaryCallback& success_callback,
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const FailureCallback& failure_callback) = 0;
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void GetState(const std::string& guid,
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                        const DictionaryCallback& success_callback,
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                        const FailureCallback& failure_callback) = 0;
57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void SetProperties(const std::string& guid,
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                             scoped_ptr<base::DictionaryValue> properties,
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                             const VoidCallback& success_callback,
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                             const FailureCallback& failure_callback) = 0;
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void CreateNetwork(bool shared,
62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                             scoped_ptr<base::DictionaryValue> properties,
63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                             const StringCallback& success_callback,
64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                             const FailureCallback& failure_callback) = 0;
65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void GetNetworks(const std::string& network_type,
66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                           bool configured_only,
67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                           bool visible_only,
68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                           int limit,
69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                           const NetworkListCallback& success_callback,
70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                           const FailureCallback& failure_callback) = 0;
71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void StartConnect(const std::string& guid,
72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                            const VoidCallback& success_callback,
73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                            const FailureCallback& failure_callback) = 0;
74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void StartDisconnect(const std::string& guid,
75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                               const VoidCallback& success_callback,
76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                               const FailureCallback& failure_callback) = 0;
77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void VerifyDestination(
78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const VerificationProperties& verification_properties,
79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const BoolCallback& success_callback,
80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const FailureCallback& failure_callback) = 0;
81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void VerifyAndEncryptCredentials(
82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const std::string& guid,
83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const VerificationProperties& verification_properties,
84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const StringCallback& success_callback,
85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const FailureCallback& failure_callback) = 0;
86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void VerifyAndEncryptData(
87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const VerificationProperties& verification_properties,
88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const std::string& data,
89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const StringCallback& success_callback,
90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const FailureCallback& failure_callback) = 0;
91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void SetWifiTDLSEnabledState(
92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const std::string& ip_or_mac_address,
93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      bool enabled,
94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const StringCallback& success_callback,
95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const FailureCallback& failure_callback) = 0;
96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void GetWifiTDLSStatus(
97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const std::string& ip_or_mac_address,
98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const StringCallback& success_callback,
99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const FailureCallback& failure_callback) = 0;
100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void GetCaptivePortalStatus(
101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const std::string& guid,
102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const StringCallback& success_callback,
103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const FailureCallback& failure_callback) = 0;
104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Synchronous methods
106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Returns a list of ONC type strings.
108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual scoped_ptr<base::ListValue> GetEnabledNetworkTypes() = 0;
109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Returns true if the ONC network type |type| is enabled.
111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual bool EnableNetworkType(const std::string& type) = 0;
112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Returns true if the ONC network type |type| is disabled.
114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual bool DisableNetworkType(const std::string& type) = 0;
115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Returns true if a scan was requested. It may take many seconds for a scan
117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // to complete. The scan may or may not trigger API events when complete.
118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual bool RequestScan() = 0;
119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch protected:
121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual ~NetworkingPrivateDelegate() {}
122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace extensions
125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_DELEGATE_H_
127