File: network_connect.h

package info (click to toggle)
chromium 138.0.7204.183-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 6,071,908 kB
  • sloc: cpp: 34,937,088; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (131 lines) | stat: -rw-r--r-- 5,141 bytes parent folder | download | duplicates (8)
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
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMEOS_ASH_COMPONENTS_NETWORK_NETWORK_CONNECT_H_
#define CHROMEOS_ASH_COMPONENTS_NETWORK_NETWORK_CONNECT_H_

#include <string>

#include "base/component_export.h"
#include "base/values.h"

namespace ash {

// NetworkConnect is a state machine designed to handle the complex UI flows
// associated with connecting to a network (and related tasks). Any showing
// of UI is handled by the NetworkConnect::Delegate implementation.
class COMPONENT_EXPORT(CHROMEOS_NETWORK) NetworkConnect {
 public:
  // Track the source of NetworkConnect calls for metrics.
  enum class Source {
    // Opened from the Settings UI.
    kSettings = 1,
    // Opened from the QuickSettings UI.
    kQuickSettings = 2,
  };

  class COMPONENT_EXPORT(CHROMEOS_NETWORK) Delegate {
   public:
    // Shows UI to configure or activate the network specified by |network_id|,
    // which may include showing Payment or Portal UI when appropriate.
    virtual void ShowNetworkConfigure(const std::string& network_id) = 0;

    // Shows the settings related to network. If |network_id| is not empty,
    // show the settings for that network.
    virtual void ShowNetworkSettings(const std::string& network_id) = 0;

    // Shows UI to enroll the network specified by |network_id| if appropriate
    // and returns true, otherwise returns false.
    virtual bool ShowEnrollNetwork(const std::string& network_id) = 0;

    // Shows UI to setup a mobile network.
    virtual void ShowMobileSetupDialog(const std::string& network_id) = 0;

    // Shows UI displaying carrier network account details.
    virtual void ShowCarrierAccountDetail(const std::string& network_id) = 0;

    // Shows UI displaying carrier unlock notification.
    virtual void ShowCarrierUnlockNotification() = 0;

    // Shows portal signin.
    virtual void ShowPortalSignin(const std::string& network_id,
                                  Source source) = 0;

    // Shows an error notification. |error_name| is an error defined in
    // NetworkConnectionHandler. |network_id| may be empty.
    virtual void ShowNetworkConnectError(const std::string& error_name,
                                         const std::string& network_id) = 0;

    // Shows an error notification during mobile activation.
    virtual void ShowMobileActivationError(const std::string& network_id) = 0;

   protected:
    virtual ~Delegate() = default;
  };

  // Creates the global NetworkConnect object. |delegate| is owned by the
  // caller.
  static void Initialize(Delegate* delegate);

  // Destroys the global NetworkConnect object.
  static void Shutdown();

  // Returns true if the global NetworkConnect object is initialized.
  static bool IsInitialized();

  // Returns the global NetworkConnect object if initialized or null.
  static NetworkConnect* Get();

  NetworkConnect(const NetworkConnect&) = delete;
  NetworkConnect& operator=(const NetworkConnect&) = delete;

  virtual ~NetworkConnect();

  // Requests a network connection and handles any errors and notifications.
  virtual void ConnectToNetworkId(const std::string& network_id) = 0;

  // Requests a network disconnection. Ignores any errors and notifications.
  virtual void DisconnectFromNetworkId(const std::string& network_id) = 0;

  // Determines whether or not a network requires a connection to activate or
  // setup and either shows a notification or opens the mobile setup dialog.
  virtual void ShowMobileSetup(const std::string& network_id) = 0;

  // Opens the carrier account detail page.
  virtual void ShowCarrierAccountDetail(const std::string& network_id) = 0;

  // Shows carrier unlock notification.
  virtual void ShowCarrierUnlockNotification() = 0;

  // Opens the portal signin.
  virtual void ShowPortalSignin(const std::string& network_id,
                                Source source) = 0;

  // Configures a network with a dictionary of Shill properties, then sends a
  // connect request. The profile is set according to 'shared' if allowed.
  // TODO(stevenjb): Use ONC properties instead of shill.
  virtual void ConfigureNetworkIdAndConnect(
      const std::string& network_id,
      const base::Value::Dict& shill_properties,
      bool shared) = 0;

  // Requests a new network configuration to be created from a dictionary of
  // Shill properties and sends a connect request if the configuration succeeds.
  // The profile used is determined by |shared|.
  // TODO(stevenjb): Use ONC properties instead of shill.
  virtual void CreateConfigurationAndConnect(base::Value::Dict shill_properties,
                                             bool shared) = 0;

  // Requests a new network configuration to be created from a dictionary of
  // Shill properties. The profile used is determined by |shared|.
  virtual void CreateConfiguration(base::Value::Dict shill_properties,
                                   bool shared) = 0;

 protected:
  NetworkConnect();
};

}  // namespace ash

#endif  // CHROMEOS_ASH_COMPONENTS_NETWORK_NETWORK_CONNECT_H_