| Index: remoting/host/android/jni_host.cc
|
| diff --git a/remoting/host/android/jni_host.cc b/remoting/host/android/jni_host.cc
|
| index b57e17f1d5fa79370d9d5759a51b4421cd1df231..d45d4293f64ea84be41a71894ec3eddd228d187d 100644
|
| --- a/remoting/host/android/jni_host.cc
|
| +++ b/remoting/host/android/jni_host.cc
|
| @@ -4,11 +4,57 @@
|
|
|
| #include "remoting/host/android/jni_host.h"
|
|
|
| +#include "base/android/jni_string.h"
|
| +#include "base/command_line.h"
|
| +#include "base/strings/string_util.h"
|
| #include "jni/Host_jni.h"
|
| +#include "net/base/url_util.h"
|
| +#include "net/socket/ssl_server_socket.h"
|
| +#include "remoting/base/auto_thread_task_runner.h"
|
| +#include "remoting/base/logging.h"
|
| +#include "remoting/host/chromoting_host_context.h"
|
| +#include "remoting/host/it2me/it2me_host.h"
|
| +#include "remoting/host/service_urls.h"
|
| +#include "remoting/signaling/xmpp_signal_strategy.h"
|
| +
|
| +using base::android::ConvertJavaStringToUTF8;
|
|
|
| namespace remoting {
|
|
|
| -JniHost::JniHost() {}
|
| +JniHost::JniHost() : weak_factory_(this) {
|
| + weak_ptr_ = weak_factory_.GetWeakPtr();
|
| +
|
| + base::CommandLine::Init(0, nullptr);
|
| +
|
| + // Enable support for SSL server sockets, which must be done while still
|
| + // single-threaded.
|
| + net::EnableSSLServerSockets();
|
| +
|
| + if (!base::MessageLoop::current()) {
|
| + HOST_LOG << "Starting main message loop";
|
| +
|
| + // On Android, the UI thread is managed by Java, so we need to attach and
|
| + // start a special type of message loop to allow Chromium code to run tasks.
|
| + ui_loop_.reset(new base::MessageLoopForUI());
|
| + ui_loop_->Start();
|
| + } else {
|
| + HOST_LOG << "Using existing main message loop";
|
| + ui_loop_.reset(base::MessageLoopForUI::current());
|
| + }
|
| +
|
| + factory_.reset(new It2MeHostFactory());
|
| + host_context_ =
|
| + ChromotingHostContext::Create(new remoting::AutoThreadTaskRunner(
|
| + ui_loop_->task_runner(), base::Bind(&base::DoNothing)));
|
| +
|
| + const ServiceUrls* service_urls = ServiceUrls::GetInstance();
|
| + const bool xmpp_server_valid = net::ParseHostAndPort(
|
| + service_urls->xmpp_server_address(), &xmpp_server_config_.host,
|
| + &xmpp_server_config_.port);
|
| + DCHECK(xmpp_server_valid);
|
| +
|
| + xmpp_server_config_.use_tls = service_urls->xmpp_server_use_tls();
|
| +}
|
|
|
| JniHost::~JniHost() {}
|
|
|
| @@ -21,6 +67,50 @@ void JniHost::Destroy(JNIEnv* env, const JavaParamRef<jobject>& caller) {
|
| delete this;
|
| }
|
|
|
| +void JniHost::Connect(JNIEnv* env,
|
| + const base::android::JavaParamRef<jobject>& caller,
|
| + const JavaParamRef<jstring>& user_name,
|
| + const JavaParamRef<jstring>& auth_token) {
|
| + if (it2me_host_) {
|
| + LOG(ERROR) << "Connect: already connected.";
|
| + return;
|
| + }
|
| +
|
| + XmppSignalStrategy::XmppServerConfig xmpp_config = xmpp_server_config_;
|
| + xmpp_config.username = ConvertJavaStringToUTF8(user_name);
|
| + xmpp_config.auth_token = ConvertJavaStringToUTF8(auth_token);
|
| +
|
| + std::string directory_bot_jid =
|
| + ServiceUrls::GetInstance()->directory_bot_jid();
|
| +
|
| + // Create the It2Me host and start connecting.
|
| + it2me_host_ = factory_->CreateIt2MeHost(host_context_->Copy(), weak_ptr_,
|
| + xmpp_config, directory_bot_jid);
|
| + it2me_host_->Connect();
|
| +}
|
| +
|
| +void JniHost::Disconnect(JNIEnv* env,
|
| + const base::android::JavaParamRef<jobject>& caller) {}
|
| +
|
| +void JniHost::OnClientAuthenticated(const std::string& client_username) {
|
| + HOST_LOG << "OnClientAuthenticated: " << client_username;
|
| +}
|
| +
|
| +void JniHost::OnStoreAccessCode(const std::string& access_code,
|
| + base::TimeDelta access_code_lifetime) {
|
| + HOST_LOG << "OnStoreAccessCode: " << access_code << ", "
|
| + << access_code_lifetime.InSeconds();
|
| +}
|
| +
|
| +void JniHost::OnNatPolicyChanged(bool nat_traversal_enabled) {
|
| + HOST_LOG << "OnNatPolicyChanged: " << nat_traversal_enabled;
|
| +}
|
| +
|
| +void JniHost::OnStateChanged(It2MeHostState state,
|
| + const std::string& error_message) {
|
| + HOST_LOG << "OnStateChanged: " << state;
|
| +}
|
| +
|
| static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& caller) {
|
| return reinterpret_cast<intptr_t>(new JniHost());
|
| }
|
|
|