| OLD | NEW |
| 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_NATIVE_MESSAGING_HOST_H_ | 5 #ifndef REMOTING_HOST_SETUP_NATIVE_MESSAGING_HOST_H_ |
| 6 #define REMOTING_HOST_SETUP_NATIVE_MESSAGING_HOST_H_ | 6 #define REMOTING_HOST_SETUP_NATIVE_MESSAGING_HOST_H_ |
| 7 | 7 |
| 8 #include "base/callback_forward.h" | 8 #include "base/callback_forward.h" |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 namespace remoting { | 29 namespace remoting { |
| 30 | 30 |
| 31 namespace protocol { | 31 namespace protocol { |
| 32 class PairingRegistry; | 32 class PairingRegistry; |
| 33 } // namespace protocol | 33 } // namespace protocol |
| 34 | 34 |
| 35 // Implementation of the native messaging host process. | 35 // Implementation of the native messaging host process. |
| 36 class NativeMessagingHost { | 36 class NativeMessagingHost { |
| 37 public: | 37 public: |
| 38 NativeMessagingHost( | 38 NativeMessagingHost( |
| 39 scoped_ptr<DaemonController> daemon_controller, | 39 scoped_refptr<DaemonController> daemon_controller, |
| 40 scoped_refptr<protocol::PairingRegistry> pairing_registry, | 40 scoped_refptr<protocol::PairingRegistry> pairing_registry, |
| 41 scoped_ptr<OAuthClient> oauth_client, | 41 scoped_ptr<OAuthClient> oauth_client, |
| 42 base::PlatformFile input, | 42 base::PlatformFile input, |
| 43 base::PlatformFile output, | 43 base::PlatformFile output, |
| 44 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, | 44 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, |
| 45 const base::Closure& quit_closure); | 45 const base::Closure& quit_closure); |
| 46 ~NativeMessagingHost(); | 46 ~NativeMessagingHost(); |
| 47 | 47 |
| 48 // Starts reading and processing messages. | 48 // Starts reading and processing messages. |
| 49 void Start(); | 49 void Start(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 void SendResponse(scoped_ptr<base::DictionaryValue> response); | 97 void SendResponse(scoped_ptr<base::DictionaryValue> response); |
| 98 | 98 |
| 99 // These Send... methods get called on the DaemonController's internal thread, | 99 // These Send... methods get called on the DaemonController's internal thread, |
| 100 // or on the calling thread if called by the PairingRegistry. | 100 // or on the calling thread if called by the PairingRegistry. |
| 101 // These methods fill in the |response| dictionary from the other parameters, | 101 // These methods fill in the |response| dictionary from the other parameters, |
| 102 // and pass it to SendResponse(). | 102 // and pass it to SendResponse(). |
| 103 void SendConfigResponse(scoped_ptr<base::DictionaryValue> response, | 103 void SendConfigResponse(scoped_ptr<base::DictionaryValue> response, |
| 104 scoped_ptr<base::DictionaryValue> config); | 104 scoped_ptr<base::DictionaryValue> config); |
| 105 void SendPairedClientsResponse(scoped_ptr<base::DictionaryValue> response, | 105 void SendPairedClientsResponse(scoped_ptr<base::DictionaryValue> response, |
| 106 scoped_ptr<base::ListValue> pairings); | 106 scoped_ptr<base::ListValue> pairings); |
| 107 void SendUsageStatsConsentResponse(scoped_ptr<base::DictionaryValue> response, | 107 void SendUsageStatsConsentResponse( |
| 108 bool supported, | 108 scoped_ptr<base::DictionaryValue> response, |
| 109 bool allowed, | 109 const DaemonController::UsageStatsConsent& consent); |
| 110 bool set_by_policy); | |
| 111 void SendAsyncResult(scoped_ptr<base::DictionaryValue> response, | 110 void SendAsyncResult(scoped_ptr<base::DictionaryValue> response, |
| 112 DaemonController::AsyncResult result); | 111 DaemonController::AsyncResult result); |
| 113 void SendBooleanResult(scoped_ptr<base::DictionaryValue> response, | 112 void SendBooleanResult(scoped_ptr<base::DictionaryValue> response, |
| 114 bool result); | 113 bool result); |
| 115 void SendCredentialsResponse(scoped_ptr<base::DictionaryValue> response, | 114 void SendCredentialsResponse(scoped_ptr<base::DictionaryValue> response, |
| 116 const std::string& user_email, | 115 const std::string& user_email, |
| 117 const std::string& refresh_token); | 116 const std::string& refresh_token); |
| 118 | 117 |
| 119 // Callbacks may be invoked by e.g. DaemonController during destruction, | 118 // Callbacks may be invoked by e.g. DaemonController during destruction, |
| 120 // which use |weak_ptr_|, so it's important that it be the last member to be | 119 // which use |weak_ptr_|, so it's important that it be the last member to be |
| 121 // destroyed. | 120 // destroyed. |
| 122 base::WeakPtr<NativeMessagingHost> weak_ptr_; | 121 base::WeakPtr<NativeMessagingHost> weak_ptr_; |
| 123 | 122 |
| 124 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner_; | 123 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner_; |
| 125 base::Closure quit_closure_; | 124 base::Closure quit_closure_; |
| 126 | 125 |
| 127 NativeMessagingReader native_messaging_reader_; | 126 NativeMessagingReader native_messaging_reader_; |
| 128 NativeMessagingWriter native_messaging_writer_; | 127 NativeMessagingWriter native_messaging_writer_; |
| 129 | 128 |
| 130 // The DaemonController may post tasks to this object during destruction (but | 129 // The DaemonController may post tasks to this object during destruction (but |
| 131 // not afterwards), so it needs to be destroyed before other members of this | 130 // not afterwards), so it needs to be destroyed before other members of this |
| 132 // class (except for |weak_factory_|). | 131 // class (except for |weak_factory_|). |
| 133 scoped_ptr<remoting::DaemonController> daemon_controller_; | 132 scoped_refptr<remoting::DaemonController> daemon_controller_; |
| 134 | 133 |
| 135 // Used to load and update the paired clients for this host. | 134 // Used to load and update the paired clients for this host. |
| 136 scoped_refptr<protocol::PairingRegistry> pairing_registry_; | 135 scoped_refptr<protocol::PairingRegistry> pairing_registry_; |
| 137 | 136 |
| 138 // Used to exchange the service account authorization code for credentials. | 137 // Used to exchange the service account authorization code for credentials. |
| 139 scoped_ptr<OAuthClient> oauth_client_; | 138 scoped_ptr<OAuthClient> oauth_client_; |
| 140 | 139 |
| 141 // Keeps track of pending requests. Used to delay shutdown until all responses | 140 // Keeps track of pending requests. Used to delay shutdown until all responses |
| 142 // have been sent. | 141 // have been sent. |
| 143 int pending_requests_; | 142 int pending_requests_; |
| 144 | 143 |
| 145 // True if Shutdown() has been called. | 144 // True if Shutdown() has been called. |
| 146 bool shutdown_; | 145 bool shutdown_; |
| 147 | 146 |
| 148 base::WeakPtrFactory<NativeMessagingHost> weak_factory_; | 147 base::WeakPtrFactory<NativeMessagingHost> weak_factory_; |
| 149 | 148 |
| 150 DISALLOW_COPY_AND_ASSIGN(NativeMessagingHost); | 149 DISALLOW_COPY_AND_ASSIGN(NativeMessagingHost); |
| 151 }; | 150 }; |
| 152 | 151 |
| 153 // Creates a NativeMessagingHost instance, attaches it to stdin/stdout and runs | 152 // Creates a NativeMessagingHost instance, attaches it to stdin/stdout and runs |
| 154 // the message loop until NativeMessagingHost signals shutdown. | 153 // the message loop until NativeMessagingHost signals shutdown. |
| 155 int NativeMessagingHostMain(); | 154 int NativeMessagingHostMain(); |
| 156 | 155 |
| 157 } // namespace remoting | 156 } // namespace remoting |
| 158 | 157 |
| 159 #endif // REMOTING_HOST_SETUP_NATIVE_MESSAGING_HOST_H_ | 158 #endif // REMOTING_HOST_SETUP_NATIVE_MESSAGING_HOST_H_ |
| OLD | NEW |