Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Side by Side Diff: chromeos/components/tether/connect_tethering_operation.h

Issue 2844973002: [CrOS Tether] Create TetherHostResponseRecorder, which records ConnectTetheringResponses and Tether… (Closed)
Patch Set: Changed "Connectable" wording to "Connected". Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROMEOS_COMPONENTS_TETHER_CONNECT_TETHERING_OPERATION_H_ 5 #ifndef CHROMEOS_COMPONENTS_TETHER_CONNECT_TETHERING_OPERATION_H_
6 #define CHROMEOS_COMPONENTS_TETHER_CONNECT_TETHERING_OPERATION_H_ 6 #define CHROMEOS_COMPONENTS_TETHER_CONNECT_TETHERING_OPERATION_H_
7 7
8 #include <map> 8 #include <map>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/observer_list.h" 12 #include "base/observer_list.h"
13 #include "chromeos/components/tether/ble_connection_manager.h" 13 #include "chromeos/components/tether/ble_connection_manager.h"
14 #include "chromeos/components/tether/message_transfer_operation.h" 14 #include "chromeos/components/tether/message_transfer_operation.h"
15 #include "components/cryptauth/remote_device.h" 15 #include "components/cryptauth/remote_device.h"
16 16
17 namespace chromeos { 17 namespace chromeos {
18 18
19 namespace tether { 19 namespace tether {
20 20
21 class HostScanDevicePrioritizer;
22 class MessageWrapper; 21 class MessageWrapper;
22 class TetherHostResponseRecorder;
23 23
24 // Operation used to request that a tether host share its Internet connection. 24 // Operation used to request that a tether host share its Internet connection.
25 // Attempts a connection to the RemoteDevice passed to its constructor and 25 // Attempts a connection to the RemoteDevice passed to its constructor and
26 // notifies observers when the RemoteDevice sends a response. 26 // notifies observers when the RemoteDevice sends a response.
27 // TODO(khorimoto): Add a timeout which gives up if no response is received in 27 // TODO(khorimoto): Add a timeout which gives up if no response is received in
28 // a reasonable amount of time. 28 // a reasonable amount of time.
29 class ConnectTetheringOperation : public MessageTransferOperation { 29 class ConnectTetheringOperation : public MessageTransferOperation {
30 public: 30 public:
31 class Factory { 31 class Factory {
32 public: 32 public:
33 static std::unique_ptr<ConnectTetheringOperation> NewInstance( 33 static std::unique_ptr<ConnectTetheringOperation> NewInstance(
34 const cryptauth::RemoteDevice& device_to_connect, 34 const cryptauth::RemoteDevice& device_to_connect,
35 BleConnectionManager* connection_manager, 35 BleConnectionManager* connection_manager,
36 HostScanDevicePrioritizer* host_scan_device_prioritizer); 36 TetherHostResponseRecorder* tether_host_response_recorder);
37 37
38 static void SetInstanceForTesting(Factory* factory); 38 static void SetInstanceForTesting(Factory* factory);
39 39
40 protected: 40 protected:
41 virtual std::unique_ptr<ConnectTetheringOperation> BuildInstance( 41 virtual std::unique_ptr<ConnectTetheringOperation> BuildInstance(
42 const cryptauth::RemoteDevice& devices_to_connect, 42 const cryptauth::RemoteDevice& devices_to_connect,
43 BleConnectionManager* connection_manager, 43 BleConnectionManager* connection_manager,
44 HostScanDevicePrioritizer* host_scan_device_prioritizer); 44 TetherHostResponseRecorder* tether_host_response_recorder);
45 45
46 private: 46 private:
47 static Factory* factory_instance_; 47 static Factory* factory_instance_;
48 }; 48 };
49 49
50 class Observer { 50 class Observer {
51 public: 51 public:
52 virtual void OnSuccessfulConnectTetheringResponse( 52 virtual void OnSuccessfulConnectTetheringResponse(
53 const cryptauth::RemoteDevice& remote_device, 53 const cryptauth::RemoteDevice& remote_device,
54 const std::string& ssid, 54 const std::string& ssid,
55 const std::string& password) = 0; 55 const std::string& password) = 0;
56 virtual void OnConnectTetheringFailure( 56 virtual void OnConnectTetheringFailure(
57 const cryptauth::RemoteDevice& remote_device, 57 const cryptauth::RemoteDevice& remote_device,
58 ConnectTetheringResponse_ResponseCode error_code) = 0; 58 ConnectTetheringResponse_ResponseCode error_code) = 0;
59 }; 59 };
60 60
61 ConnectTetheringOperation( 61 ConnectTetheringOperation(
62 const cryptauth::RemoteDevice& device_to_connect, 62 const cryptauth::RemoteDevice& device_to_connect,
63 BleConnectionManager* connection_manager, 63 BleConnectionManager* connection_manager,
64 HostScanDevicePrioritizer* host_scan_device_prioritizer); 64 TetherHostResponseRecorder* tether_host_response_recorder);
65 ~ConnectTetheringOperation() override; 65 ~ConnectTetheringOperation() override;
66 66
67 void AddObserver(Observer* observer); 67 void AddObserver(Observer* observer);
68 void RemoveObserver(Observer* observer); 68 void RemoveObserver(Observer* observer);
69 69
70 protected: 70 protected:
71 // MessageTransferOperation: 71 // MessageTransferOperation:
72 void OnDeviceAuthenticated( 72 void OnDeviceAuthenticated(
73 const cryptauth::RemoteDevice& remote_device) override; 73 const cryptauth::RemoteDevice& remote_device) override;
74 void OnMessageReceived(std::unique_ptr<MessageWrapper> message_wrapper, 74 void OnMessageReceived(std::unique_ptr<MessageWrapper> message_wrapper,
75 const cryptauth::RemoteDevice& remote_device) override; 75 const cryptauth::RemoteDevice& remote_device) override;
76 void OnOperationFinished() override; 76 void OnOperationFinished() override;
77 MessageType GetMessageTypeForConnection() override; 77 MessageType GetMessageTypeForConnection() override;
78 void NotifyObserversOfSuccessfulResponse(const std::string& ssid, 78 void NotifyObserversOfSuccessfulResponse(const std::string& ssid,
79 const std::string& password); 79 const std::string& password);
80 void NotifyObserversOfConnectionFailure( 80 void NotifyObserversOfConnectionFailure(
81 ConnectTetheringResponse_ResponseCode error_code); 81 ConnectTetheringResponse_ResponseCode error_code);
82 82
83 private: 83 private:
84 friend class ConnectTetheringOperationTest; 84 friend class ConnectTetheringOperationTest;
85 85
86 cryptauth::RemoteDevice remote_device_; 86 cryptauth::RemoteDevice remote_device_;
87 HostScanDevicePrioritizer* host_scan_device_prioritizer_; 87 TetherHostResponseRecorder* tether_host_response_recorder_;
88 88
89 // These values are saved in OnMessageReceived() and returned in 89 // These values are saved in OnMessageReceived() and returned in
90 // OnOperationFinished(). 90 // OnOperationFinished().
91 std::string ssid_to_return_; 91 std::string ssid_to_return_;
92 std::string password_to_return_; 92 std::string password_to_return_;
93 ConnectTetheringResponse_ResponseCode error_code_to_return_; 93 ConnectTetheringResponse_ResponseCode error_code_to_return_;
94 94
95 base::ObserverList<Observer> observer_list_; 95 base::ObserverList<Observer> observer_list_;
96 96
97 DISALLOW_COPY_AND_ASSIGN(ConnectTetheringOperation); 97 DISALLOW_COPY_AND_ASSIGN(ConnectTetheringOperation);
98 }; 98 };
99 99
100 } // namespace tether 100 } // namespace tether
101 101
102 } // namespace chromeos 102 } // namespace chromeos
103 103
104 #endif // CHROMEOS_COMPONENTS_TETHER_CONNECT_TETHERING_OPERATION_H_ 104 #endif // CHROMEOS_COMPONENTS_TETHER_CONNECT_TETHERING_OPERATION_H_
OLDNEW
« no previous file with comments | « chromeos/components/tether/BUILD.gn ('k') | chromeos/components/tether/connect_tethering_operation.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698