Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/SSLClientCertificateRequest.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/SSLClientCertificateRequest.java b/chrome/android/java/src/org/chromium/chrome/browser/SSLClientCertificateRequest.java |
| index c22e7dcb6862facaa23d7cc21ec2919345326805..b692c10bbd1cc93f3c47ac6578d49d099225ff47 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/SSLClientCertificateRequest.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/SSLClientCertificateRequest.java |
| @@ -16,6 +16,7 @@ import org.chromium.base.ActivityStatus; |
| import org.chromium.base.CalledByNative; |
| import org.chromium.base.JNINamespace; |
| import org.chromium.base.ThreadUtils; |
| +import org.chromium.ui.base.WindowAndroid; |
| import java.security.Principal; |
| import java.security.PrivateKey; |
| @@ -80,7 +81,7 @@ class SSLClientCertificateRequest extends AsyncTask<Void, Void, Void> |
| // Executed in a background thread, can call blocking APIs. |
| X509Certificate[] chain = null; |
| PrivateKey key = null; |
| - Context context = ActivityStatus.getActivity().getApplicationContext(); |
| + Context context = ActivityStatus.getApplicationContext(); |
| try { |
| key = KeyChain.getPrivateKey(context, mAlias); |
| chain = KeyChain.getCertificateChain(context, mAlias); |
| @@ -123,25 +124,33 @@ class SSLClientCertificateRequest extends AsyncTask<Void, Void, Void> |
| /** |
| * Create a new asynchronous request to select a client certificate. |
| * |
| - * @param nativePtr The native object responsible for this request. |
| - * @param keyTypes The list of supported key exchange types. |
| + * @param nativePtr The native object responsible for this request. |
| + * @param window A WindowAndroid instance. |
| + * @param keyTypes The list of supported key exchange types. |
| * @param encodedPrincipals The list of CA DistinguishedNames. |
| - * @param hostName The server host name is available (empty otherwise). |
| - * @param port The server port if available (0 otherwise). |
| - * @return true on success. |
| + * @param hostName The server host name is available (empty otherwise). |
| + * @param port The server port if available (0 otherwise). |
| + * @return true on success. |
| * Note that nativeOnSystemRequestComplete will be called iff this method returns true. |
| */ |
| @CalledByNative |
| - private static boolean selectClientCertificate(int nativePtr, String[] keyTypes, |
| - byte[][] encodedPrincipals, String hostName, int port) { |
| + private static boolean selectClientCertificate(int nativePtr, WindowAndroid window, |
| + String[] keyTypes, byte[][] encodedPrincipals, String hostName, int port) { |
| ThreadUtils.assertOnUiThread(); |
| - Activity activity = ActivityStatus.getActivity(); |
| - if (activity == null) { |
| + Context context = window.getContext(); |
| + if (context == null) { |
| Log.w(TAG, "No active Chromium main activity!?"); |
| return false; |
| } |
| + if (!(context instanceof Activity)) { |
|
Ted C
2014/02/13 04:38:44
combine this with the null check above since null
David Trainor- moved to gerrit
2014/02/14 19:13:36
Done.
|
| + Log.w(TAG, "Context not activity."); |
| + return false; |
| + } |
| + Activity activity = (Activity) context; |
| + |
| + |
|
Ted C
2014/02/13 04:38:44
one too many blank lines
David Trainor- moved to gerrit
2014/02/14 19:13:36
Done.
|
| // Build the list of principals from encoded versions. |
| Principal[] principals = null; |
| if (encodedPrincipals.length > 0) { |