import android.view.View.OnTouchListener;\r
import android.view.Window;\r
import android.view.inputmethod.EditorInfo;\r
+import android.webkit.SslErrorHandler;\r
import android.widget.Button;\r
import android.widget.CheckBox;\r
import android.widget.EditText;\r
import com.owncloud.android.lib.common.OwnCloudClient;\r
import com.owncloud.android.operations.OAuth2GetAccessToken;\r
+import com.owncloud.android.lib.common.network.CertificateCombinedException;\r
import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;\r
import com.owncloud.android.lib.resources.status.GetRemoteStatusOperation;\r
import com.owncloud.android.lib.common.operations.RemoteOperation;\r
import com.owncloud.android.ui.dialog.SamlWebViewDialog;\r
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog;\r
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener;\r
-import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener;\r
import com.owncloud.android.utils.Log_OC;\r
import com.owncloud.android.lib.resources.status.OwnCloudVersion;\r
\r
* @author David A. Velasco\r
*/\r
public class AuthenticatorActivity extends AccountAuthenticatorActivity\r
- implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeListener, OnEditorActionListener, \r
+ implements OnRemoteOperationListener, OnFocusChangeListener, OnEditorActionListener, \r
SsoWebViewClientListener, OnSslUntrustedCertListener {\r
\r
private static final String TAG = AuthenticatorActivity.class.getSimpleName();\r
}\r
\r
/**\r
- * Called from SslValidatorDialog when a new server certificate was correctly saved.\r
- */\r
- public void onSavedCertificate() {\r
- checkOcServer();\r
- reloadWebView();\r
- \r
- }\r
-\r
- /**\r
- * Called from SslValidatorDialog when a new server certificate could not be saved \r
- * when the user requested it.\r
- */\r
- @Override\r
- public void onFailedSavingCertificate() {\r
- showDialog(DIALOG_CERT_NOT_SAVED);\r
- cancelWebView();\r
- }\r
-\r
-\r
- /**\r
* Called when the 'action' button in an IME is pressed ('enter' in software keyboard).\r
* \r
* Used to trigger the authentication check when the user presses 'enter' after writing the password, \r
}\r
\r
\r
-\r
- public void cancelWebView() {\r
- Fragment fd = getSupportFragmentManager().findFragmentByTag(TAG_SAML_DIALOG);\r
- if (fd != null && fd instanceof SherlockDialogFragment) {\r
- Dialog d = ((SherlockDialogFragment)fd).getDialog();\r
- if (d != null && d.isShowing()) {\r
- d.dismiss();\r
- }\r
- }\r
- \r
- }\r
-\r
- public void reloadWebView() {\r
- Fragment fd = getSupportFragmentManager().findFragmentByTag(TAG_SAML_DIALOG);\r
- if (fd != null && fd instanceof SamlWebViewDialog) {\r
- ((SamlWebViewDialog) fd).reloadWebView();\r
- }\r
- }\r
-\r
- @Override\r
- public void onCancelCertificate() {\r
- cancelWebView();\r
- }\r
- \r
/**\r
* Show untrusted cert dialog \r
*/\r
- public void showUntrustedCertDialog(X509Certificate x509Certificate, SslError error) {\r
+ public void showUntrustedCertDialog(X509Certificate x509Certificate, SslError error, SslErrorHandler handler) {\r
// Show a dialog with the certificate info\r
- SslUntrustedCertDialog dialog = SslUntrustedCertDialog.newInstance(x509Certificate, error);\r
+ SslUntrustedCertDialog dialog = null;\r
+ if (x509Certificate == null) {\r
+ dialog = SslUntrustedCertDialog.newInstanceForEmptySslError(error, handler);\r
+ } else {\r
+ dialog = SslUntrustedCertDialog.newInstanceForFullSslError(x509Certificate, error, handler);\r
+ }\r
FragmentManager fm = getSupportFragmentManager();\r
FragmentTransaction ft = fm.beginTransaction();\r
dialog.show(ft, DIALOG_UNTRUSTED_CERT);\r
- \r
}\r
\r
/**\r
*/\r
public void showUntrustedCertDialog(RemoteOperationResult result) {\r
// Show a dialog with the certificate info\r
- SslUntrustedCertDialog dialog = SslUntrustedCertDialog.newInstance(result, this);\r
+ SslUntrustedCertDialog dialog = SslUntrustedCertDialog.newInstanceForFullSslError((CertificateCombinedException)result.getException());\r
FragmentManager fm = getSupportFragmentManager();\r
FragmentTransaction ft = fm.beginTransaction();\r
dialog.show(ft, DIALOG_UNTRUSTED_CERT);\r
* Dismiss untrusted cert dialog\r
*/\r
public void dismissUntrustedCertDialog(){\r
- Fragment frag = getSupportFragmentManager().findFragmentByTag(DIALOG_UNTRUSTED_CERT);\r
+ /*Fragment frag = getSupportFragmentManager().findFragmentByTag(DIALOG_UNTRUSTED_CERT);\r
if (frag != null) {\r
- SslUntrustedCertDialog dialog = (SslUntrustedCertDialog) frag;\r
+ SslErrorViewAdapter dialog = (SslErrorViewAdapter) frag;\r
dialog.dismiss();\r
}\r
+ */\r
+ }\r
+ \r
+ /**\r
+ * Called from SslValidatorDialog when a new server certificate was correctly saved.\r
+ */\r
+ public void onSavedCertificate() {\r
+ Fragment fd = getSupportFragmentManager().findFragmentByTag(TAG_SAML_DIALOG);\r
+ if (fd == null) {\r
+ // if SAML dialog is not shown, the SslDialog was shown due to an SSL error in the server check\r
+ checkOcServer();\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Called from SslValidatorDialog when a new server certificate could not be saved \r
+ * when the user requested it.\r
+ */\r
+ @Override\r
+ public void onFailedSavingCertificate() {\r
+ showDialog(DIALOG_CERT_NOT_SAVED);\r
+ cancelWebView();\r
+ }\r
+\r
+ @Override\r
+ public void onCancelCertificate() {\r
+ cancelWebView();\r
}\r
\r
+\r
+ public void cancelWebView() {\r
+ Fragment fd = getSupportFragmentManager().findFragmentByTag(TAG_SAML_DIALOG);\r
+ if (fd != null && fd instanceof SherlockDialogFragment) {\r
+ Dialog d = ((SherlockDialogFragment)fd).getDialog();\r
+ if (d != null && d.isShowing()) {\r
+ d.dismiss();\r
+ }\r
+ }\r
+ \r
+ }\r
+\r
+ public void reloadWebView() {\r
+ Fragment fd = getSupportFragmentManager().findFragmentByTag(TAG_SAML_DIALOG);\r
+ if (fd != null && fd instanceof SamlWebViewDialog) {\r
+ ((SamlWebViewDialog) fd).reloadWebView();\r
+ }\r
+ }\r
+\r
}\r