File: networking_private_delegate.h

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (175 lines) | stat: -rw-r--r-- 7,479 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_DELEGATE_H_
#define CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_DELEGATE_H_

#include <string>

#include "base/callback.h"
#include "base/memory/scoped_ptr.h"
#include "base/values.h"
#include "components/keyed_service/core/keyed_service.h"

namespace content {

class BrowserContext;

}  // content

namespace extensions {

class NetworkingPrivateDelegateObserver;

namespace api {
namespace networking_private {

struct VerificationProperties;

}  // networking_private
}  // api

// Base class for platform dependent networkingPrivate API implementations.
// All inputs and results for this class use ONC values. See
// networking_private.json for descriptions of the expected inputs and results.
class NetworkingPrivateDelegate : public KeyedService {
 public:
  typedef base::Callback<void(scoped_ptr<base::DictionaryValue>)>
      DictionaryCallback;
  typedef base::Callback<void()> VoidCallback;
  typedef base::Callback<void(bool)> BoolCallback;
  typedef base::Callback<void(const std::string&)> StringCallback;
  typedef base::Callback<void(scoped_ptr<base::ListValue>)> NetworkListCallback;
  typedef base::Callback<void(const std::string&)> FailureCallback;
  typedef api::networking_private::VerificationProperties
      VerificationProperties;

  // The Verify* methods will be forwarded to a delegate implementation if
  // provided, otherwise they will fail. A separate delegate it used so that the
  // current Verify* implementations are not exposed outside of src/chrome.
  class VerifyDelegate {
   public:
    typedef NetworkingPrivateDelegate::VerificationProperties
        VerificationProperties;
    typedef NetworkingPrivateDelegate::BoolCallback BoolCallback;
    typedef NetworkingPrivateDelegate::StringCallback StringCallback;
    typedef NetworkingPrivateDelegate::FailureCallback FailureCallback;

    VerifyDelegate();
    virtual ~VerifyDelegate();

    virtual void VerifyDestination(
        const VerificationProperties& verification_properties,
        const BoolCallback& success_callback,
        const FailureCallback& failure_callback) = 0;
    virtual void VerifyAndEncryptCredentials(
        const std::string& guid,
        const VerificationProperties& verification_properties,
        const StringCallback& success_callback,
        const FailureCallback& failure_callback) = 0;
    virtual void VerifyAndEncryptData(
        const VerificationProperties& verification_properties,
        const std::string& data,
        const StringCallback& success_callback,
        const FailureCallback& failure_callback) = 0;

   private:
    DISALLOW_COPY_AND_ASSIGN(VerifyDelegate);
  };

  // If |verify_delegate| is not NULL, the Verify* methods will be forwarded
  // to the delegate. Otherwise they will fail with a NotSupported error.
  explicit NetworkingPrivateDelegate(
      scoped_ptr<VerifyDelegate> verify_delegate);
  ~NetworkingPrivateDelegate() override;

  // Asynchronous methods
  virtual void GetProperties(const std::string& guid,
                             const DictionaryCallback& success_callback,
                             const FailureCallback& failure_callback) = 0;
  virtual void GetManagedProperties(
      const std::string& guid,
      const DictionaryCallback& success_callback,
      const FailureCallback& failure_callback) = 0;
  virtual void GetState(const std::string& guid,
                        const DictionaryCallback& success_callback,
                        const FailureCallback& failure_callback) = 0;
  virtual void SetProperties(const std::string& guid,
                             scoped_ptr<base::DictionaryValue> properties,
                             const VoidCallback& success_callback,
                             const FailureCallback& failure_callback) = 0;
  virtual void CreateNetwork(bool shared,
                             scoped_ptr<base::DictionaryValue> properties,
                             const StringCallback& success_callback,
                             const FailureCallback& failure_callback) = 0;
  virtual void GetNetworks(const std::string& network_type,
                           bool configured_only,
                           bool visible_only,
                           int limit,
                           const NetworkListCallback& success_callback,
                           const FailureCallback& failure_callback) = 0;
  virtual void StartConnect(const std::string& guid,
                            const VoidCallback& success_callback,
                            const FailureCallback& failure_callback) = 0;
  virtual void StartDisconnect(const std::string& guid,
                               const VoidCallback& success_callback,
                               const FailureCallback& failure_callback) = 0;
  virtual void SetWifiTDLSEnabledState(
      const std::string& ip_or_mac_address,
      bool enabled,
      const StringCallback& success_callback,
      const FailureCallback& failure_callback) = 0;
  virtual void GetWifiTDLSStatus(const std::string& ip_or_mac_address,
                                 const StringCallback& success_callback,
                                 const FailureCallback& failure_callback) = 0;
  virtual void GetCaptivePortalStatus(
      const std::string& guid,
      const StringCallback& success_callback,
      const FailureCallback& failure_callback) = 0;

  // Synchronous methods

  // Returns a list of ONC type strings.
  virtual scoped_ptr<base::ListValue> GetEnabledNetworkTypes() = 0;

  // Returns true if the ONC network type |type| is enabled.
  virtual bool EnableNetworkType(const std::string& type) = 0;

  // Returns true if the ONC network type |type| is disabled.
  virtual bool DisableNetworkType(const std::string& type) = 0;

  // Returns true if a scan was requested. It may take many seconds for a scan
  // to complete. The scan may or may not trigger API events when complete.
  virtual bool RequestScan() = 0;

  // Optional methods for adding a NetworkingPrivateDelegateObserver for
  // implementations that require it (non-chromeos).
  virtual void AddObserver(NetworkingPrivateDelegateObserver* observer);
  virtual void RemoveObserver(NetworkingPrivateDelegateObserver* observer);

  // Verify* methods are forwarded to |verify_delegate_| if not NULL.
  void VerifyDestination(const VerificationProperties& verification_properties,
                         const BoolCallback& success_callback,
                         const FailureCallback& failure_callback);
  void VerifyAndEncryptCredentials(
      const std::string& guid,
      const VerificationProperties& verification_properties,
      const StringCallback& success_callback,
      const FailureCallback& failure_callback);
  void VerifyAndEncryptData(
      const VerificationProperties& verification_properties,
      const std::string& data,
      const StringCallback& success_callback,
      const FailureCallback& failure_callback);

 private:
  // Interface for Verify* methods. May be NULL.
  scoped_ptr<VerifyDelegate> verify_delegate_;

  DISALLOW_COPY_AND_ASSIGN(NetworkingPrivateDelegate);
};

}  // namespace extensions

#endif  // CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_DELEGATE_H_