Merge from Chromium at DEPS revision r213605

This commit was generated by merge_to_master.py.

Change-Id: I5ef9e03bf077dac295a7904f06b3cb6dec9fe213
diff --git a/remoting/client/jni/chromoting_jni_instance.cc b/remoting/client/jni/chromoting_jni_instance.cc
index fcb4db3..8dc3b17 100644
--- a/remoting/client/jni/chromoting_jni_instance.cc
+++ b/remoting/client/jni/chromoting_jni_instance.cc
@@ -7,7 +7,7 @@
 #include "base/bind.h"
 #include "base/logging.h"
 #include "remoting/client/audio_player.h"
-#include "remoting/client/jni/chromoting_jni.h"
+#include "remoting/client/jni/chromoting_jni_runtime.h"
 #include "remoting/protocol/libjingle_transport_factory.h"
 
 // TODO(solb) Move into location shared with client plugin.
@@ -17,21 +17,21 @@
 
 namespace remoting {
 
-ChromotingJniInstance::ChromotingJniInstance(const char* username,
+ChromotingJniInstance::ChromotingJniInstance(ChromotingJniRuntime* jni_runtime,
+                                             const char* username,
                                              const char* auth_token,
                                              const char* host_jid,
                                              const char* host_id,
-                                             const char* host_pubkey) {
-  DCHECK(ChromotingJni::GetInstance()->
-      ui_task_runner()->BelongsToCurrentThread());
+                                             const char* host_pubkey)
+    : jni_runtime_(jni_runtime),
+      username_(username),
+      auth_token_(auth_token),
+      host_jid_(host_jid),
+      host_id_(host_id),
+      host_pubkey_(host_pubkey) {
+  DCHECK(jni_runtime_->ui_task_runner()->BelongsToCurrentThread());
 
-  username_ = username;
-  auth_token_ = auth_token;
-  host_jid_ = host_jid;
-  host_id_ = host_id;
-  host_pubkey_ = host_pubkey;
-
-  ChromotingJni::GetInstance()->display_task_runner()->PostTask(
+  jni_runtime_->display_task_runner()->PostTask(
       FROM_HERE,
       base::Bind(&ChromotingJniInstance::ConnectToHostOnDisplayThread,
                  this));
@@ -40,9 +40,8 @@
 ChromotingJniInstance::~ChromotingJniInstance() {}
 
 void ChromotingJniInstance::Cleanup() {
-  if (!ChromotingJni::GetInstance()->
-      display_task_runner()->BelongsToCurrentThread()) {
-    ChromotingJni::GetInstance()->display_task_runner()->PostTask(
+  if (!jni_runtime_->display_task_runner()->BelongsToCurrentThread()) {
+    jni_runtime_->display_task_runner()->PostTask(
         FROM_HERE,
         base::Bind(&ChromotingJniInstance::Cleanup, this));
     return;
@@ -54,32 +53,31 @@
   // The weak pointers must be invalidated on the same thread they were used.
   view_weak_factory_->InvalidateWeakPtrs();
 
-  ChromotingJni::GetInstance()->network_task_runner()->PostTask(FROM_HERE,
+  jni_runtime_->network_task_runner()->PostTask(
+      FROM_HERE,
       base::Bind(&ChromotingJniInstance::DisconnectFromHostOnNetworkThread,
                  this));
 }
 
 void ChromotingJniInstance::ProvideSecret(const char* pin) {
-  DCHECK(ChromotingJni::GetInstance()->
-      ui_task_runner()->BelongsToCurrentThread());
+  DCHECK(jni_runtime_->ui_task_runner()->BelongsToCurrentThread());
   DCHECK(!pin_callback_.is_null());
 
   // We invoke the string constructor to ensure |pin| gets copied *before* the
   // asynchronous run, since Java might want it back as soon as we return.
-  ChromotingJni::GetInstance()->network_task_runner()->PostTask(FROM_HERE,
-                                 base::Bind(pin_callback_, pin));
+  jni_runtime_->network_task_runner()->PostTask(FROM_HERE,
+                                                base::Bind(pin_callback_, pin));
 }
 
 void ChromotingJniInstance::RedrawDesktop() {
-  if (!ChromotingJni::GetInstance()->
-      display_task_runner()->BelongsToCurrentThread()) {
-    ChromotingJni::GetInstance()->display_task_runner()->PostTask(
+  if (!jni_runtime_->display_task_runner()->BelongsToCurrentThread()) {
+    jni_runtime_->display_task_runner()->PostTask(
         FROM_HERE,
         base::Bind(&ChromotingJniInstance::RedrawDesktop, this));
     return;
   }
 
-  ChromotingJni::GetInstance()->RedrawCanvas();
+  jni_runtime_->RedrawCanvas();
 }
 
 void ChromotingJniInstance::PerformMouseAction(
@@ -87,9 +85,8 @@
     int y,
     protocol::MouseEvent_MouseButton button,
     bool buttonDown) {
-  if(!ChromotingJni::GetInstance()->
-      network_task_runner()->BelongsToCurrentThread()) {
-    ChromotingJni::GetInstance()->network_task_runner()->PostTask(
+  if (!jni_runtime_->network_task_runner()->BelongsToCurrentThread()) {
+    jni_runtime_->network_task_runner()->PostTask(
         FROM_HERE,
         base::Bind(&ChromotingJniInstance::PerformMouseAction,
                    this,
@@ -113,10 +110,8 @@
 void ChromotingJniInstance::OnConnectionState(
     protocol::ConnectionToHost::State state,
     protocol::ErrorCode error) {
-  if (!ChromotingJni::GetInstance()->
-      ui_task_runner()->BelongsToCurrentThread()) {
-    ChromotingJni::GetInstance()->
-        ui_task_runner()->PostTask(
+  if (!jni_runtime_->ui_task_runner()->BelongsToCurrentThread()) {
+    jni_runtime_->ui_task_runner()->PostTask(
             FROM_HERE,
             base::Bind(&ChromotingJniInstance::OnConnectionState,
                        this,
@@ -125,7 +120,7 @@
     return;
   }
 
-  ChromotingJni::GetInstance()->ReportConnectionStatus(state, error);
+  jni_runtime_->ReportConnectionStatus(state, error);
 }
 
 void ChromotingJniInstance::OnConnectionReady(bool ready) {
@@ -164,25 +159,22 @@
 }
 
 void ChromotingJniInstance::ConnectToHostOnDisplayThread() {
-  DCHECK(ChromotingJni::GetInstance()->
-      display_task_runner()->BelongsToCurrentThread());
+  DCHECK(jni_runtime_->display_task_runner()->BelongsToCurrentThread());
 
-  frame_consumer_ = new FrameConsumerProxy(
-      ChromotingJni::GetInstance()->display_task_runner());
-  view_.reset(new JniFrameConsumer());
+  frame_consumer_ = new FrameConsumerProxy(jni_runtime_->display_task_runner());
+  view_.reset(new JniFrameConsumer(jni_runtime_));
   view_weak_factory_.reset(new base::WeakPtrFactory<JniFrameConsumer>(
       view_.get()));
   frame_consumer_->Attach(view_weak_factory_->GetWeakPtr());
 
-  ChromotingJni::GetInstance()->network_task_runner()->PostTask(
+  jni_runtime_->network_task_runner()->PostTask(
       FROM_HERE,
       base::Bind(&ChromotingJniInstance::ConnectToHostOnNetworkThread,
                  this));
 }
 
 void ChromotingJniInstance::ConnectToHostOnNetworkThread() {
-  DCHECK(ChromotingJni::GetInstance()->
-      network_task_runner()->BelongsToCurrentThread());
+  DCHECK(jni_runtime_->network_task_runner()->BelongsToCurrentThread());
 
   client_config_.reset(new ClientConfig());
   client_config_->host_jid = host_jid_;
@@ -199,7 +191,7 @@
       protocol::AuthenticationMethod::FromString("spake2_plain"));
 
   client_context_.reset(new ClientContext(
-      ChromotingJni::GetInstance()->network_task_runner().get()));
+      jni_runtime_->network_task_runner().get()));
   client_context_->Start();
 
   connection_.reset(new protocol::ConnectionToHost(true));
@@ -218,26 +210,24 @@
   signaling_config_->port = CHAT_PORT;
   signaling_config_->use_tls = CHAT_USE_TLS;
 
-  signaling_.reset(new XmppSignalStrategy(
-      ChromotingJni::GetInstance()->url_requester(),
-      username_,
-      auth_token_,
-      "oauth2",
-      *signaling_config_));
+  signaling_.reset(new XmppSignalStrategy(jni_runtime_->url_requester(),
+                                          username_,
+                                          auth_token_,
+                                          "oauth2",
+                                          *signaling_config_));
 
   network_settings_.reset(new NetworkSettings(
       NetworkSettings::NAT_TRAVERSAL_OUTGOING));
   scoped_ptr<protocol::TransportFactory> fact(
       protocol::LibjingleTransportFactory::Create(
           *network_settings_,
-          ChromotingJni::GetInstance()->url_requester()));
+          jni_runtime_->url_requester()));
 
   client_->Start(signaling_.get(), fact.Pass());
 }
 
 void ChromotingJniInstance::DisconnectFromHostOnNetworkThread() {
-  DCHECK(ChromotingJni::GetInstance()->
-      network_task_runner()->BelongsToCurrentThread());
+  DCHECK(jni_runtime_->network_task_runner()->BelongsToCurrentThread());
 
   username_ = "";
   auth_token_ = "";
@@ -253,9 +243,8 @@
 void ChromotingJniInstance::FetchSecret(
     bool pairable,
     const protocol::SecretFetchedCallback& callback) {
-  if (!ChromotingJni::GetInstance()->
-      ui_task_runner()->BelongsToCurrentThread()) {
-    ChromotingJni::GetInstance()->ui_task_runner()->PostTask(
+  if (!jni_runtime_->ui_task_runner()->BelongsToCurrentThread()) {
+    jni_runtime_->ui_task_runner()->PostTask(
         FROM_HERE,
         base::Bind(&ChromotingJniInstance::FetchSecret,
                    this,
@@ -265,7 +254,7 @@
   }
 
   pin_callback_ = callback;
-  ChromotingJni::GetInstance()->DisplayAuthenticationPrompt();
+  jni_runtime_->DisplayAuthenticationPrompt();
 }
 
 }  // namespace remoting