#ifndef CONTENT_BROWSER_SSL_SSL_ERROR_HANDLER_H_
#define CONTENT_BROWSER_SSL_SSL_ERROR_HANDLER_H_
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/global_request_id.h"
#include "net/ssl/ssl_info.h"
#include "url/gurl.h"
#include "arkweb/build/features/features.h"
namespace net {
class URLRequest;
}
namespace content {
class WebContents;
class SSLErrorHandler {
public:
class Delegate {
public:
virtual void CancelSSLRequest(int error, const net::SSLInfo* ssl_info) = 0;
virtual void ContinueSSLRequest() = 0;
protected:
virtual ~Delegate() {}
};
SSLErrorHandler(WebContents* web_contents,
const base::WeakPtr<Delegate>& delegate,
bool is_primary_main_frame_request,
const GURL& url,
int net_error,
const net::SSLInfo& ssl_info,
bool fatal
#if BUILDFLAG(ARKWEB_NETWORK_LOAD)
,
const GURL& origin_url,
const std::string& referrer
#endif
);
SSLErrorHandler(const SSLErrorHandler&) = delete;
SSLErrorHandler& operator=(const SSLErrorHandler&) = delete;
virtual ~SSLErrorHandler();
const net::SSLInfo& ssl_info() const { return ssl_info_; }
const GURL& request_url() const { return request_url_; }
bool is_primary_main_frame_request() const {
return is_primary_main_frame_request_;
}
WebContents* web_contents() const { return web_contents_; }
int cert_error() const { return cert_error_; }
bool fatal() const { return fatal_; }
#if BUILDFLAG(ARKWEB_NETWORK_LOAD)
const GURL& origin_url() const { return origin_url_; }
const std::string& referrer() const { return referrer_; }
#endif
void CancelRequest();
void ContinueRequest();
void DenyRequest();
private:
base::WeakPtr<Delegate> delegate_;
const GURL request_url_;
const bool is_primary_main_frame_request_;
const net::SSLInfo ssl_info_;
const int cert_error_;
const bool fatal_;
#if BUILDFLAG(ARKWEB_NETWORK_LOAD)
const GURL origin_url_;
const std::string referrer_;
#endif
raw_ptr<WebContents> web_contents_;
};
}
#endif