diff options
author | lambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-22 23:07:46 +0000 |
---|---|---|
committer | lambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-22 23:07:46 +0000 |
commit | 788807a0b9b6fa8a141a45f031e3add358991dd3 (patch) | |
tree | 7475a3b78dcd3b0cf7058b97bcb425ba72e2c397 | |
parent | e74fd8e46df2b255e8d5d2bb4cb03d3c683dbda7 (diff) | |
download | chromium_src-788807a0b9b6fa8a141a45f031e3add358991dd3.zip chromium_src-788807a0b9b6fa8a141a45f031e3add358991dd3.tar.gz chromium_src-788807a0b9b6fa8a141a45f031e3add358991dd3.tar.bz2 |
Don't show checkbox on Android if host doesn't support pairing
This stops the Android client from trying to send a pairing request to
a host that doesn't support it.
Review URL: https://chromiumcodereview.appspot.com/22859040
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@219140 0039d316-1c4b-4281-b951-d872f2087c98
4 files changed, 21 insertions, 19 deletions
diff --git a/remoting/android/java/src/org/chromium/chromoting/jni/JniInterface.java b/remoting/android/java/src/org/chromium/chromoting/jni/JniInterface.java index 039bcb9..4508e58 100644 --- a/remoting/android/java/src/org/chromium/chromoting/jni/JniInterface.java +++ b/remoting/android/java/src/org/chromium/chromoting/jni/JniInterface.java @@ -186,7 +186,7 @@ public class JniInterface { } /** Prompts the user to enter a PIN. */ - private static void displayAuthenticationPrompt() { + private static void displayAuthenticationPrompt(boolean pairingSupported) { AlertDialog.Builder pinPrompt = new AlertDialog.Builder(sContext); pinPrompt.setTitle(sContext.getString(R.string.pin_entry_title)); pinPrompt.setMessage(sContext.getString(R.string.pin_entry_message)); @@ -195,16 +195,21 @@ public class JniInterface { final View pinEntry = sContext.getLayoutInflater().inflate(R.layout.pin_dialog, null); pinPrompt.setView(pinEntry); + final TextView pinTextView = (TextView)pinEntry.findViewById(R.id.pin_dialog_text); + final CheckBox pinCheckBox = (CheckBox)pinEntry.findViewById(R.id.pin_dialog_check); + + if (!pairingSupported) { + pinCheckBox.setChecked(false); + pinCheckBox.setVisibility(View.GONE); + } + pinPrompt.setPositiveButton( R.string.pin_entry_connect, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.i("jniiface", "User provided a PIN code"); - authenticationResponse(String.valueOf( - ((TextView) - pinEntry.findViewById(R.id.pin_dialog_text)).getText()), - ((CheckBox) - pinEntry.findViewById(R.id.pin_dialog_check)).isChecked()); + authenticationResponse(String.valueOf(pinTextView.getText()), + pinCheckBox.isChecked()); } }); @@ -222,7 +227,7 @@ public class JniInterface { final AlertDialog pinDialog = pinPrompt.create(); - ((TextView)pinEntry.findViewById(R.id.pin_dialog_text)).setOnEditorActionListener( + pinTextView.setOnEditorActionListener( new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { diff --git a/remoting/client/jni/chromoting_jni_instance.cc b/remoting/client/jni/chromoting_jni_instance.cc index 45a27d2..7e45f7c 100644 --- a/remoting/client/jni/chromoting_jni_instance.cc +++ b/remoting/client/jni/chromoting_jni_instance.cc @@ -49,16 +49,12 @@ ChromotingJniInstance::ChromotingJniInstance(ChromotingJniRuntime* jni_runtime, base::Bind(&ChromotingJniInstance::FetchSecret, this); client_config_.authentication_tag = host_id_; - std::string pairing_id_str(pairing_id); - std::string pairing_secret_str(pairing_secret); - if (!pairing_id_str.empty() && !pairing_secret_str.empty()) { - client_config_.client_pairing_id = pairing_id_str; - client_config_.client_paired_secret = pairing_secret_str; - client_config_.authentication_methods.push_back( - protocol::AuthenticationMethod::FromString("spake2_pair")); - } + client_config_.client_pairing_id = pairing_id; + client_config_.client_paired_secret = pairing_secret; client_config_.authentication_methods.push_back( + protocol::AuthenticationMethod::FromString("spake2_pair")); + client_config_.authentication_methods.push_back( protocol::AuthenticationMethod::FromString("spake2_hmac")); client_config_.authentication_methods.push_back( protocol::AuthenticationMethod::FromString("spake2_plain")); @@ -294,7 +290,7 @@ void ChromotingJniInstance::FetchSecret( } pin_callback_ = callback; - jni_runtime_->DisplayAuthenticationPrompt(); + jni_runtime_->DisplayAuthenticationPrompt(pairable); } } // namespace remoting diff --git a/remoting/client/jni/chromoting_jni_runtime.cc b/remoting/client/jni/chromoting_jni_runtime.cc index dc509b3..059a4b2 100644 --- a/remoting/client/jni/chromoting_jni_runtime.cc +++ b/remoting/client/jni/chromoting_jni_runtime.cc @@ -123,13 +123,14 @@ void ChromotingJniRuntime::ReportConnectionStatus( error); } -void ChromotingJniRuntime::DisplayAuthenticationPrompt() { +void ChromotingJniRuntime::DisplayAuthenticationPrompt(bool pairing_supported) { DCHECK(ui_task_runner_->BelongsToCurrentThread()); JNIEnv* env = base::android::AttachCurrentThread(); env->CallStaticVoidMethod( class_, - env->GetStaticMethodID(class_, "displayAuthenticationPrompt", "()V")); + env->GetStaticMethodID(class_, "displayAuthenticationPrompt", "(Z)V"), + pairing_supported); } void ChromotingJniRuntime::CommitPairingCredentials(const std::string& host, diff --git a/remoting/client/jni/chromoting_jni_runtime.h b/remoting/client/jni/chromoting_jni_runtime.h index 93f933f..f16d033 100644 --- a/remoting/client/jni/chromoting_jni_runtime.h +++ b/remoting/client/jni/chromoting_jni_runtime.h @@ -72,7 +72,7 @@ class ChromotingJniRuntime { protocol::ErrorCode error); // Pops up a dialog box asking the user to enter a PIN. Call on UI thread. - void DisplayAuthenticationPrompt(); + void DisplayAuthenticationPrompt(bool pairing_supported); // Saves new pairing credentials to permanent storage. Call on UI thread. void CommitPairingCredentials(const std::string& host, |