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

Side by Side Diff: remoting/host/setup/me2me_native_messaging_host.h

Issue 1864213002: Convert //remoting to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mac IWYU Created 4 years, 8 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
« no previous file with comments | « remoting/host/setup/host_starter.cc ('k') | remoting/host/setup/me2me_native_messaging_host.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 REMOTING_HOST_SETUP_ME2ME_NATIVE_MESSAGING_HOST_H_ 5 #ifndef REMOTING_HOST_SETUP_ME2ME_NATIVE_MESSAGING_HOST_H_
6 #define REMOTING_HOST_SETUP_ME2ME_NATIVE_MESSAGING_HOST_H_ 6 #define REMOTING_HOST_SETUP_ME2ME_NATIVE_MESSAGING_HOST_H_
7 7
8 #include <memory>
9
8 #include "base/macros.h" 10 #include "base/macros.h"
9 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
12 #include "base/threading/thread_checker.h" 13 #include "base/threading/thread_checker.h"
13 #include "base/timer/timer.h" 14 #include "base/timer/timer.h"
14 #include "build/build_config.h" 15 #include "build/build_config.h"
15 #include "extensions/browser/api/messaging/native_messaging_channel.h" 16 #include "extensions/browser/api/messaging/native_messaging_channel.h"
16 #include "remoting/host/native_messaging/log_message_handler.h" 17 #include "remoting/host/native_messaging/log_message_handler.h"
17 #include "remoting/host/setup/daemon_controller.h" 18 #include "remoting/host/setup/daemon_controller.h"
18 #include "remoting/host/setup/oauth_client.h" 19 #include "remoting/host/setup/oauth_client.h"
19 20
20 namespace base { 21 namespace base {
(...skipping 15 matching lines...) Expand all
36 class PairingRegistry; 37 class PairingRegistry;
37 } // namespace protocol 38 } // namespace protocol
38 39
39 // Implementation of the me2me native messaging host. 40 // Implementation of the me2me native messaging host.
40 class Me2MeNativeMessagingHost 41 class Me2MeNativeMessagingHost
41 : public extensions::NativeMessagingChannel::EventHandler { 42 : public extensions::NativeMessagingChannel::EventHandler {
42 public: 43 public:
43 Me2MeNativeMessagingHost( 44 Me2MeNativeMessagingHost(
44 bool needs_elevation, 45 bool needs_elevation,
45 intptr_t parent_window_handle, 46 intptr_t parent_window_handle,
46 scoped_ptr<extensions::NativeMessagingChannel> channel, 47 std::unique_ptr<extensions::NativeMessagingChannel> channel,
47 scoped_refptr<DaemonController> daemon_controller, 48 scoped_refptr<DaemonController> daemon_controller,
48 scoped_refptr<protocol::PairingRegistry> pairing_registry, 49 scoped_refptr<protocol::PairingRegistry> pairing_registry,
49 scoped_ptr<OAuthClient> oauth_client); 50 std::unique_ptr<OAuthClient> oauth_client);
50 ~Me2MeNativeMessagingHost() override; 51 ~Me2MeNativeMessagingHost() override;
51 52
52 void Start(const base::Closure& quit_closure); 53 void Start(const base::Closure& quit_closure);
53 54
54 // extensions::NativeMessagingChannel::EventHandler implementation 55 // extensions::NativeMessagingChannel::EventHandler implementation
55 void OnMessage(scoped_ptr<base::Value> message) override; 56 void OnMessage(std::unique_ptr<base::Value> message) override;
56 void OnDisconnect() override; 57 void OnDisconnect() override;
57 58
58 private: 59 private:
59 // These "Process.." methods handle specific request types. The |response| 60 // These "Process.." methods handle specific request types. The |response|
60 // dictionary is pre-filled by ProcessMessage() with the parts of the 61 // dictionary is pre-filled by ProcessMessage() with the parts of the
61 // response already known ("id" and "type" fields). 62 // response already known ("id" and "type" fields).
62 void ProcessHello( 63 void ProcessHello(std::unique_ptr<base::DictionaryValue> message,
63 scoped_ptr<base::DictionaryValue> message, 64 std::unique_ptr<base::DictionaryValue> response);
64 scoped_ptr<base::DictionaryValue> response);
65 void ProcessClearPairedClients( 65 void ProcessClearPairedClients(
66 scoped_ptr<base::DictionaryValue> message, 66 std::unique_ptr<base::DictionaryValue> message,
67 scoped_ptr<base::DictionaryValue> response); 67 std::unique_ptr<base::DictionaryValue> response);
68 void ProcessDeletePairedClient( 68 void ProcessDeletePairedClient(
69 scoped_ptr<base::DictionaryValue> message, 69 std::unique_ptr<base::DictionaryValue> message,
70 scoped_ptr<base::DictionaryValue> response); 70 std::unique_ptr<base::DictionaryValue> response);
71 void ProcessGetHostName( 71 void ProcessGetHostName(std::unique_ptr<base::DictionaryValue> message,
72 scoped_ptr<base::DictionaryValue> message, 72 std::unique_ptr<base::DictionaryValue> response);
73 scoped_ptr<base::DictionaryValue> response); 73 void ProcessGetPinHash(std::unique_ptr<base::DictionaryValue> message,
74 void ProcessGetPinHash( 74 std::unique_ptr<base::DictionaryValue> response);
75 scoped_ptr<base::DictionaryValue> message, 75 void ProcessGenerateKeyPair(std::unique_ptr<base::DictionaryValue> message,
76 scoped_ptr<base::DictionaryValue> response); 76 std::unique_ptr<base::DictionaryValue> response);
77 void ProcessGenerateKeyPair(
78 scoped_ptr<base::DictionaryValue> message,
79 scoped_ptr<base::DictionaryValue> response);
80 void ProcessUpdateDaemonConfig( 77 void ProcessUpdateDaemonConfig(
81 scoped_ptr<base::DictionaryValue> message, 78 std::unique_ptr<base::DictionaryValue> message,
82 scoped_ptr<base::DictionaryValue> response); 79 std::unique_ptr<base::DictionaryValue> response);
83 void ProcessGetDaemonConfig( 80 void ProcessGetDaemonConfig(std::unique_ptr<base::DictionaryValue> message,
84 scoped_ptr<base::DictionaryValue> message, 81 std::unique_ptr<base::DictionaryValue> response);
85 scoped_ptr<base::DictionaryValue> response); 82 void ProcessGetPairedClients(std::unique_ptr<base::DictionaryValue> message,
86 void ProcessGetPairedClients( 83 std::unique_ptr<base::DictionaryValue> response);
87 scoped_ptr<base::DictionaryValue> message,
88 scoped_ptr<base::DictionaryValue> response);
89 void ProcessGetUsageStatsConsent( 84 void ProcessGetUsageStatsConsent(
90 scoped_ptr<base::DictionaryValue> message, 85 std::unique_ptr<base::DictionaryValue> message,
91 scoped_ptr<base::DictionaryValue> response); 86 std::unique_ptr<base::DictionaryValue> response);
92 void ProcessStartDaemon( 87 void ProcessStartDaemon(std::unique_ptr<base::DictionaryValue> message,
93 scoped_ptr<base::DictionaryValue> message, 88 std::unique_ptr<base::DictionaryValue> response);
94 scoped_ptr<base::DictionaryValue> response); 89 void ProcessStopDaemon(std::unique_ptr<base::DictionaryValue> message,
95 void ProcessStopDaemon( 90 std::unique_ptr<base::DictionaryValue> response);
96 scoped_ptr<base::DictionaryValue> message, 91 void ProcessGetDaemonState(std::unique_ptr<base::DictionaryValue> message,
97 scoped_ptr<base::DictionaryValue> response); 92 std::unique_ptr<base::DictionaryValue> response);
98 void ProcessGetDaemonState( 93 void ProcessGetHostClientId(std::unique_ptr<base::DictionaryValue> message,
99 scoped_ptr<base::DictionaryValue> message, 94 std::unique_ptr<base::DictionaryValue> response);
100 scoped_ptr<base::DictionaryValue> response);
101 void ProcessGetHostClientId(
102 scoped_ptr<base::DictionaryValue> message,
103 scoped_ptr<base::DictionaryValue> response);
104 void ProcessGetCredentialsFromAuthCode( 95 void ProcessGetCredentialsFromAuthCode(
105 scoped_ptr<base::DictionaryValue> message, 96 std::unique_ptr<base::DictionaryValue> message,
106 scoped_ptr<base::DictionaryValue> response, 97 std::unique_ptr<base::DictionaryValue> response,
107 bool need_user_email); 98 bool need_user_email);
108 99
109 // These Send... methods get called on the DaemonController's internal thread, 100 // These Send... methods get called on the DaemonController's internal thread,
110 // or on the calling thread if called by the PairingRegistry. 101 // or on the calling thread if called by the PairingRegistry.
111 // These methods fill in the |response| dictionary from the other parameters, 102 // These methods fill in the |response| dictionary from the other parameters,
112 // and pass it to SendResponse(). 103 // and pass it to SendResponse().
113 void SendConfigResponse(scoped_ptr<base::DictionaryValue> response, 104 void SendConfigResponse(std::unique_ptr<base::DictionaryValue> response,
114 scoped_ptr<base::DictionaryValue> config); 105 std::unique_ptr<base::DictionaryValue> config);
115 void SendPairedClientsResponse(scoped_ptr<base::DictionaryValue> response, 106 void SendPairedClientsResponse(
116 scoped_ptr<base::ListValue> pairings); 107 std::unique_ptr<base::DictionaryValue> response,
108 std::unique_ptr<base::ListValue> pairings);
117 void SendUsageStatsConsentResponse( 109 void SendUsageStatsConsentResponse(
118 scoped_ptr<base::DictionaryValue> response, 110 std::unique_ptr<base::DictionaryValue> response,
119 const DaemonController::UsageStatsConsent& consent); 111 const DaemonController::UsageStatsConsent& consent);
120 void SendAsyncResult(scoped_ptr<base::DictionaryValue> response, 112 void SendAsyncResult(std::unique_ptr<base::DictionaryValue> response,
121 DaemonController::AsyncResult result); 113 DaemonController::AsyncResult result);
122 void SendBooleanResult(scoped_ptr<base::DictionaryValue> response, 114 void SendBooleanResult(std::unique_ptr<base::DictionaryValue> response,
123 bool result); 115 bool result);
124 void SendCredentialsResponse(scoped_ptr<base::DictionaryValue> response, 116 void SendCredentialsResponse(std::unique_ptr<base::DictionaryValue> response,
125 const std::string& user_email, 117 const std::string& user_email,
126 const std::string& refresh_token); 118 const std::string& refresh_token);
127 119
128 void OnError(); 120 void OnError();
129 121
130 void Stop(); 122 void Stop();
131 123
132 // Returns true if the request was successfully delegated to the elevated 124 // Returns true if the request was successfully delegated to the elevated
133 // host and false otherwise. 125 // host and false otherwise.
134 bool DelegateToElevatedHost(scoped_ptr<base::DictionaryValue> message); 126 bool DelegateToElevatedHost(std::unique_ptr<base::DictionaryValue> message);
135 127
136 #if defined(OS_WIN) 128 #if defined(OS_WIN)
137 class ElevatedChannelEventHandler 129 class ElevatedChannelEventHandler
138 : public extensions::NativeMessagingChannel::EventHandler { 130 : public extensions::NativeMessagingChannel::EventHandler {
139 public: 131 public:
140 ElevatedChannelEventHandler(Me2MeNativeMessagingHost* host); 132 ElevatedChannelEventHandler(Me2MeNativeMessagingHost* host);
141 133
142 void OnMessage(scoped_ptr<base::Value> message) override; 134 void OnMessage(std::unique_ptr<base::Value> message) override;
143 void OnDisconnect() override; 135 void OnDisconnect() override;
144 private: 136 private:
145 Me2MeNativeMessagingHost* parent_; 137 Me2MeNativeMessagingHost* parent_;
146 }; 138 };
147 139
148 // Create and connect to an elevated host process if necessary. 140 // Create and connect to an elevated host process if necessary.
149 // |elevated_channel_| will contain the native messaging channel to the 141 // |elevated_channel_| will contain the native messaging channel to the
150 // elevated host if the function succeeds. 142 // elevated host if the function succeeds.
151 void EnsureElevatedHostCreated(); 143 void EnsureElevatedHostCreated();
152 144
153 // Disconnect and shut down the elevated host. 145 // Disconnect and shut down the elevated host.
154 void DisconnectElevatedHost(); 146 void DisconnectElevatedHost();
155 147
156 // Native messaging channel used to communicate with the elevated host. 148 // Native messaging channel used to communicate with the elevated host.
157 scoped_ptr<extensions::NativeMessagingChannel> elevated_channel_; 149 std::unique_ptr<extensions::NativeMessagingChannel> elevated_channel_;
158 150
159 // Native messaging event handler used to process responses from the elevated 151 // Native messaging event handler used to process responses from the elevated
160 // host. 152 // host.
161 scoped_ptr<ElevatedChannelEventHandler> elevated_channel_event_handler_; 153 std::unique_ptr<ElevatedChannelEventHandler> elevated_channel_event_handler_;
162 154
163 // Timer to control the lifetime of the elevated host. 155 // Timer to control the lifetime of the elevated host.
164 base::OneShotTimer elevated_host_timer_; 156 base::OneShotTimer elevated_host_timer_;
165 #endif // defined(OS_WIN) 157 #endif // defined(OS_WIN)
166 158
167 bool needs_elevation_; 159 bool needs_elevation_;
168 160
169 #if defined(OS_WIN) 161 #if defined(OS_WIN)
170 // Handle of the parent window. 162 // Handle of the parent window.
171 intptr_t parent_window_handle_; 163 intptr_t parent_window_handle_;
172 #endif // defined(OS_WIN) 164 #endif // defined(OS_WIN)
173 165
174 base::Closure quit_closure_; 166 base::Closure quit_closure_;
175 167
176 // Native messaging channel used to communicate with the native message 168 // Native messaging channel used to communicate with the native message
177 // client. 169 // client.
178 scoped_ptr<extensions::NativeMessagingChannel> channel_; 170 std::unique_ptr<extensions::NativeMessagingChannel> channel_;
179 171
180 LogMessageHandler log_message_handler_; 172 LogMessageHandler log_message_handler_;
181 173
182 scoped_refptr<DaemonController> daemon_controller_; 174 scoped_refptr<DaemonController> daemon_controller_;
183 175
184 // Used to load and update the paired clients for this host. 176 // Used to load and update the paired clients for this host.
185 scoped_refptr<protocol::PairingRegistry> pairing_registry_; 177 scoped_refptr<protocol::PairingRegistry> pairing_registry_;
186 178
187 // Used to exchange the service account authorization code for credentials. 179 // Used to exchange the service account authorization code for credentials.
188 scoped_ptr<OAuthClient> oauth_client_; 180 std::unique_ptr<OAuthClient> oauth_client_;
189 181
190 base::ThreadChecker thread_checker_; 182 base::ThreadChecker thread_checker_;
191 183
192 base::WeakPtr<Me2MeNativeMessagingHost> weak_ptr_; 184 base::WeakPtr<Me2MeNativeMessagingHost> weak_ptr_;
193 base::WeakPtrFactory<Me2MeNativeMessagingHost> weak_factory_; 185 base::WeakPtrFactory<Me2MeNativeMessagingHost> weak_factory_;
194 186
195 DISALLOW_COPY_AND_ASSIGN(Me2MeNativeMessagingHost); 187 DISALLOW_COPY_AND_ASSIGN(Me2MeNativeMessagingHost);
196 }; 188 };
197 189
198 } // namespace remoting 190 } // namespace remoting
199 191
200 #endif // REMOTING_HOST_SETUP_ME2ME_NATIVE_MESSAGING_HOST_H_ 192 #endif // REMOTING_HOST_SETUP_ME2ME_NATIVE_MESSAGING_HOST_H_
OLDNEW
« no previous file with comments | « remoting/host/setup/host_starter.cc ('k') | remoting/host/setup/me2me_native_messaging_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698