Use object for verification request

This commit is contained in:
Kevin Sawicki 2017-02-07 16:35:37 -08:00
parent 5245d42d15
commit 70178adb6e
7 changed files with 52 additions and 18 deletions

View file

@ -204,6 +204,18 @@ struct Converter<net::ProxyConfig> {
}
};
template<>
struct Converter<atom::VerifyRequest> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
atom::VerifyRequest val) {
mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
dict.Set("hostname", val.hostname);
dict.Set("certificate", val.certificate);
dict.Set("verificationResult", val.default_result);
return dict.GetHandle();
}
};
} // namespace mate
namespace atom {

View file

@ -89,10 +89,14 @@ class CertVerifierRequest : public AtomCertVerifier::Request {
void OnDefaultVerificationDone(int error) {
error_ = error;
VerifyRequest request = {
params_.hostname(),
net::ErrorToString(error),
params_.certificate()
};
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::Bind(cert_verifier_->verify_proc(), params_.hostname(),
params_.certificate(), net::ErrorToString(error),
base::Bind(cert_verifier_->verify_proc(), request,
base::Bind(&CertVerifierRequest::OnResponseInUI,
weak_ptr_factory_.GetWeakPtr())));
}

View file

@ -16,14 +16,18 @@ namespace atom {
class AtomCTDelegate;
class CertVerifierRequest;
struct VerifyRequest {
std::string hostname;
std::string default_result;
scoped_refptr<net::X509Certificate> certificate;
};
class AtomCertVerifier : public net::CertVerifier {
public:
explicit AtomCertVerifier(AtomCTDelegate* ct_delegate);
virtual ~AtomCertVerifier();
using VerifyProc = base::Callback<void(const std::string& hostname,
scoped_refptr<net::X509Certificate>,
const std::string& default_result,
using VerifyProc = base::Callback<void(VerifyRequest request,
const net::CompletionCallback&)>;
void SetVerifyProc(const VerifyProc& proc);