Chromium Code Reviews| 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 #include "remoting/client/jni/chromoting_jni_instance.h" | 5 #include "remoting/client/jni/chromoting_jni_instance.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "remoting/client/audio_player.h" | 9 #include "remoting/client/audio_player.h" |
| 10 #include "remoting/client/jni/chromoting_jni.h" | 10 #include "remoting/client/jni/chromoting_jni.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 43 return; | 43 return; |
| 44 } | 44 } |
| 45 | 45 |
| 46 username_ = ""; | 46 username_ = ""; |
| 47 auth_token_ = ""; | 47 auth_token_ = ""; |
| 48 host_jid_ = ""; | 48 host_jid_ = ""; |
| 49 host_id_ = ""; | 49 host_id_ = ""; |
| 50 host_pubkey_ = ""; | 50 host_pubkey_ = ""; |
| 51 | 51 |
| 52 // |client_| must be torn down before |signaling_|. | 52 // |client_| must be torn down before |signaling_|. |
| 53 pin_callback_.Reset(); | |
| 54 client_.reset(); | 53 client_.reset(); |
| 55 connection_.reset(); | |
| 56 client_context_.reset(); | |
| 57 client_config_.reset(); | |
| 58 signaling_.reset(); | |
| 59 signaling_config_.reset(); | |
| 60 network_settings_.reset(); | |
| 61 } | 54 } |
| 62 | 55 |
| 63 void ChromotingJniInstance::ProvideSecret(const char* pin) { | 56 void ChromotingJniInstance::ProvideSecret(const char* pin) { |
| 64 DCHECK(ChromotingJni::GetInstance()-> | 57 DCHECK(ChromotingJni::GetInstance()-> |
| 65 ui_task_runner()->BelongsToCurrentThread()); | 58 ui_task_runner()->BelongsToCurrentThread()); |
| 66 DCHECK(!pin_callback_.is_null()); | 59 DCHECK(!pin_callback_.is_null()); |
| 67 | 60 |
| 68 // We invoke the string constructor to ensure |pin| gets copied *before* the | 61 // We invoke the string constructor to ensure |pin| gets copied *before* the |
| 69 // asynchronous run, since Java might want it back as soon as we return. | 62 // asynchronous run, since Java might want it back as soon as we return. |
| 70 ChromotingJni::GetInstance()->network_task_runner()->PostTask(FROM_HERE, | 63 ChromotingJni::GetInstance()->network_task_runner()->PostTask(FROM_HERE, |
| 71 base::Bind(pin_callback_, pin)); | 64 base::Bind(pin_callback_, pin)); |
| 72 } | 65 } |
| 73 | 66 |
| 67 void ChromotingJniInstance::RedrawGraphics() { | |
| 68 if (!ChromotingJni::GetInstance()-> | |
| 69 display_task_runner()->BelongsToCurrentThread()) { | |
| 70 ChromotingJni::GetInstance()->display_task_runner()->PostTask( | |
| 71 FROM_HERE, | |
| 72 base::Bind(&ChromotingJniInstance::RedrawGraphics, | |
| 73 this)); | |
| 74 return; | |
| 75 } | |
| 76 | |
| 77 ChromotingJni::GetInstance()->RedrawCanvas(); | |
| 78 } | |
| 79 | |
| 74 void ChromotingJniInstance::OnConnectionState( | 80 void ChromotingJniInstance::OnConnectionState( |
| 75 protocol::ConnectionToHost::State state, | 81 protocol::ConnectionToHost::State state, |
| 76 protocol::ErrorCode error) { | 82 protocol::ErrorCode error) { |
| 77 if (!ChromotingJni::GetInstance()-> | 83 if (!ChromotingJni::GetInstance()-> |
| 78 ui_task_runner()->BelongsToCurrentThread()) { | 84 ui_task_runner()->BelongsToCurrentThread()) { |
| 79 ChromotingJni::GetInstance()-> | 85 ChromotingJni::GetInstance()-> |
| 80 ui_task_runner()->PostTask( | 86 ui_task_runner()->PostTask( |
| 81 FROM_HERE, | 87 FROM_HERE, |
| 82 base::Bind(&ChromotingJniInstance::OnConnectionState, | 88 base::Bind(&ChromotingJniInstance::OnConnectionState, |
| 83 this, | 89 this, |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 113 scoped_ptr<protocol::ThirdPartyClientAuthenticator::TokenFetcher> | 119 scoped_ptr<protocol::ThirdPartyClientAuthenticator::TokenFetcher> |
| 114 ChromotingJniInstance::GetTokenFetcher(const std::string& host_public_key) { | 120 ChromotingJniInstance::GetTokenFetcher(const std::string& host_public_key) { |
| 115 // Return null to indicate that third-party authentication is unsupported. | 121 // Return null to indicate that third-party authentication is unsupported. |
| 116 return scoped_ptr<protocol::ThirdPartyClientAuthenticator::TokenFetcher>(); | 122 return scoped_ptr<protocol::ThirdPartyClientAuthenticator::TokenFetcher>(); |
| 117 } | 123 } |
| 118 | 124 |
| 119 void ChromotingJniInstance::ConnectToHostOnDisplayThread() { | 125 void ChromotingJniInstance::ConnectToHostOnDisplayThread() { |
| 120 DCHECK(ChromotingJni::GetInstance()-> | 126 DCHECK(ChromotingJni::GetInstance()-> |
| 121 display_task_runner()->BelongsToCurrentThread()); | 127 display_task_runner()->BelongsToCurrentThread()); |
| 122 | 128 |
| 123 if (!frame_consumer_.get()) { | 129 frame_consumer_ = new FrameConsumerProxy( |
| 124 frame_consumer_ = new FrameConsumerProxy( | 130 ChromotingJni::GetInstance()->display_task_runner()); |
| 125 ChromotingJni::GetInstance()->display_task_runner()); | 131 view_.reset(new FrameConsumerImpl()); |
| 126 // TODO(solb) Instantiate some FrameConsumer implementation and attach it. | 132 frame_consumer_->Attach(view_->AsWeakPtr()); |
|
Wez
2013/07/16 02:18:12
Rather than have JniFrameConsumer SupportsWeakPtr,
solb
2013/07/16 18:00:57
Done.
| |
| 127 } | |
| 128 | 133 |
| 129 ChromotingJni::GetInstance()->network_task_runner()->PostTask( | 134 ChromotingJni::GetInstance()->network_task_runner()->PostTask( |
| 130 FROM_HERE, | 135 FROM_HERE, |
| 131 base::Bind(&ChromotingJniInstance::ConnectToHostOnNetworkThread, | 136 base::Bind(&ChromotingJniInstance::ConnectToHostOnNetworkThread, |
| 132 this)); | 137 this)); |
| 133 } | 138 } |
| 134 | 139 |
| 135 void ChromotingJniInstance::ConnectToHostOnNetworkThread() { | 140 void ChromotingJniInstance::ConnectToHostOnNetworkThread() { |
| 136 DCHECK(ChromotingJni::GetInstance()-> | 141 DCHECK(ChromotingJni::GetInstance()-> |
| 137 network_task_runner()->BelongsToCurrentThread()); | 142 network_task_runner()->BelongsToCurrentThread()); |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 157 | 162 |
| 158 connection_.reset(new protocol::ConnectionToHost(true)); | 163 connection_.reset(new protocol::ConnectionToHost(true)); |
| 159 | 164 |
| 160 client_.reset(new ChromotingClient(*client_config_, | 165 client_.reset(new ChromotingClient(*client_config_, |
| 161 client_context_.get(), | 166 client_context_.get(), |
| 162 connection_.get(), | 167 connection_.get(), |
| 163 this, | 168 this, |
| 164 frame_consumer_, | 169 frame_consumer_, |
| 165 scoped_ptr<AudioPlayer>())); | 170 scoped_ptr<AudioPlayer>())); |
| 166 | 171 |
| 172 view_->set_frame_producer(client_->GetFrameProducer()); | |
| 173 | |
| 167 signaling_config_.reset(new XmppSignalStrategy::XmppServerConfig()); | 174 signaling_config_.reset(new XmppSignalStrategy::XmppServerConfig()); |
| 168 signaling_config_->host = CHAT_SERVER; | 175 signaling_config_->host = CHAT_SERVER; |
| 169 signaling_config_->port = CHAT_PORT; | 176 signaling_config_->port = CHAT_PORT; |
| 170 signaling_config_->use_tls = CHAT_USE_TLS; | 177 signaling_config_->use_tls = CHAT_USE_TLS; |
| 171 | 178 |
| 172 signaling_.reset(new XmppSignalStrategy( | 179 signaling_.reset(new XmppSignalStrategy( |
| 173 ChromotingJni::GetInstance()->url_requester(), | 180 ChromotingJni::GetInstance()->url_requester(), |
| 174 username_, | 181 username_, |
| 175 auth_token_, | 182 auth_token_, |
| 176 CHAT_AUTH_METHOD, | 183 CHAT_AUTH_METHOD, |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 198 pairable, | 205 pairable, |
| 199 callback)); | 206 callback)); |
| 200 return; | 207 return; |
| 201 } | 208 } |
| 202 | 209 |
| 203 pin_callback_ = callback; | 210 pin_callback_ = callback; |
| 204 ChromotingJni::GetInstance()->DisplayAuthenticationPrompt(); | 211 ChromotingJni::GetInstance()->DisplayAuthenticationPrompt(); |
| 205 } | 212 } |
| 206 | 213 |
| 207 } // namespace remoting | 214 } // namespace remoting |
| OLD | NEW |