| Index: content/browser/renderer_host/x509_user_cert_resource_handler.cc
|
| diff --git a/content/browser/renderer_host/x509_user_cert_resource_handler.cc b/content/browser/renderer_host/x509_user_cert_resource_handler.cc
|
| index aa3fe34e533f1c28c18d93e0a598201272df1560..877656ca7ef19278618bc42462fda16a533fb453 100644
|
| --- a/content/browser/renderer_host/x509_user_cert_resource_handler.cc
|
| +++ b/content/browser/renderer_host/x509_user_cert_resource_handler.cc
|
| @@ -27,7 +27,8 @@ X509UserCertResourceHandler::X509UserCertResourceHandler(
|
| read_buffer_(NULL),
|
| resource_buffer_(NULL),
|
| render_process_host_id_(render_process_host_id),
|
| - render_view_id_(render_view_id) {
|
| + render_view_id_(render_view_id),
|
| + is_pkcs12_(false) {
|
| }
|
|
|
| X509UserCertResourceHandler::~X509UserCertResourceHandler() {
|
| @@ -50,7 +51,14 @@ bool X509UserCertResourceHandler::OnRequestRedirected(int request_id,
|
| bool X509UserCertResourceHandler::OnResponseStarted(int request_id,
|
| ResourceResponse* resp,
|
| bool* defer) {
|
| +#if defined(OS_ANDROID)
|
| + is_pkcs12_ = (resp->head.mime_type == "application/x-pkcs12");
|
| + return (is_pkcs12_ ||
|
| + resp->head.mime_type == "application/x-x509-user-cert" ||
|
| + resp->head.mime_type == "application/x-x509-ca-cert");
|
| +#else
|
| return (resp->head.mime_type == "application/x-x509-user-cert");
|
| +#endif
|
| }
|
|
|
| bool X509UserCertResourceHandler::OnWillStart(int request_id,
|
| @@ -104,6 +112,13 @@ bool X509UserCertResourceHandler::OnResponseCompleted(
|
| return false;
|
|
|
| AssembleResource();
|
| +#if defined(OS_ANDROID)
|
| + if (resource_buffer_ && content_length_ > 0) {
|
| + std::string cert_data(resource_buffer_->data(), content_length_);
|
| + content::GetContentClient()->browser()->AddNewCertificateOrKeychainAndroid(
|
| + request_, cert_data.c_str(), cert_data.length(), is_pkcs12_);
|
| + }
|
| +#else // OS_ANDROID
|
| scoped_refptr<net::X509Certificate> cert;
|
| if (resource_buffer_) {
|
| cert = net::X509Certificate::CreateFromBytes(resource_buffer_->data(),
|
| @@ -111,6 +126,7 @@ bool X509UserCertResourceHandler::OnResponseCompleted(
|
| }
|
| GetContentClient()->browser()->AddNewCertificate(
|
| request_, cert, render_process_host_id_, render_view_id_);
|
| +#endif // OS_ANDROID
|
| return true;
|
| }
|
|
|
|
|