mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
- Allow asynchronous continuation of OnBeforeResourceLoad (issue #1593).
- Use CefRequestCallback for most asynchronous CefRequestHandler methods.
This commit is contained in:
@@ -87,7 +87,7 @@ class CefAccessTokenStore : public content::AccessTokenStore {
|
||||
DISALLOW_COPY_AND_ASSIGN(CefAccessTokenStore);
|
||||
};
|
||||
|
||||
class CefQuotaCallbackImpl : public CefQuotaCallback {
|
||||
class CefQuotaCallbackImpl : public CefRequestCallback {
|
||||
public:
|
||||
explicit CefQuotaCallbackImpl(
|
||||
const content::QuotaPermissionContext::PermissionCallback& callback)
|
||||
@@ -98,10 +98,10 @@ class CefQuotaCallbackImpl : public CefQuotaCallback {
|
||||
if (!callback_.is_null()) {
|
||||
// The callback is still pending. Cancel it now.
|
||||
if (CEF_CURRENTLY_ON_IOT()) {
|
||||
CancelNow(callback_);
|
||||
RunNow(callback_, false);
|
||||
} else {
|
||||
CEF_POST_TASK(CEF_IOT,
|
||||
base::Bind(&CefQuotaCallbackImpl::CancelNow, callback_));
|
||||
base::Bind(&CefQuotaCallbackImpl::RunNow, callback_, false));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -109,9 +109,7 @@ class CefQuotaCallbackImpl : public CefQuotaCallback {
|
||||
void Continue(bool allow) override {
|
||||
if (CEF_CURRENTLY_ON_IOT()) {
|
||||
if (!callback_.is_null()) {
|
||||
callback_.Run(allow ?
|
||||
content::QuotaPermissionContext::QUOTA_PERMISSION_RESPONSE_ALLOW :
|
||||
content::QuotaPermissionContext::QUOTA_PERMISSION_RESPONSE_DISALLOW);
|
||||
RunNow(callback_, allow);
|
||||
callback_.Reset();
|
||||
}
|
||||
} else {
|
||||
@@ -121,14 +119,7 @@ class CefQuotaCallbackImpl : public CefQuotaCallback {
|
||||
}
|
||||
|
||||
void Cancel() override {
|
||||
if (CEF_CURRENTLY_ON_IOT()) {
|
||||
if (!callback_.is_null()) {
|
||||
CancelNow(callback_);
|
||||
callback_.Reset();
|
||||
}
|
||||
} else {
|
||||
CEF_POST_TASK(CEF_IOT, base::Bind(&CefQuotaCallbackImpl::Cancel, this));
|
||||
}
|
||||
Continue(false);
|
||||
}
|
||||
|
||||
void Disconnect() {
|
||||
@@ -136,11 +127,13 @@ class CefQuotaCallbackImpl : public CefQuotaCallback {
|
||||
}
|
||||
|
||||
private:
|
||||
static void CancelNow(
|
||||
const content::QuotaPermissionContext::PermissionCallback& callback) {
|
||||
static void RunNow(
|
||||
const content::QuotaPermissionContext::PermissionCallback& callback,
|
||||
bool allow) {
|
||||
CEF_REQUIRE_IOT();
|
||||
callback.Run(
|
||||
content::QuotaPermissionContext::QUOTA_PERMISSION_RESPONSE_CANCELLED);
|
||||
callback.Run(allow ?
|
||||
content::QuotaPermissionContext::QUOTA_PERMISSION_RESPONSE_ALLOW :
|
||||
content::QuotaPermissionContext::QUOTA_PERMISSION_RESPONSE_DISALLOW);
|
||||
}
|
||||
|
||||
content::QuotaPermissionContext::PermissionCallback callback_;
|
||||
@@ -149,8 +142,7 @@ class CefQuotaCallbackImpl : public CefQuotaCallback {
|
||||
DISALLOW_COPY_AND_ASSIGN(CefQuotaCallbackImpl);
|
||||
};
|
||||
|
||||
class CefAllowCertificateErrorCallbackImpl
|
||||
: public CefAllowCertificateErrorCallback {
|
||||
class CefAllowCertificateErrorCallbackImpl : public CefRequestCallback {
|
||||
public:
|
||||
typedef base::Callback<void(bool)> // NOLINT(readability/function)
|
||||
CallbackType;
|
||||
@@ -159,24 +151,46 @@ class CefAllowCertificateErrorCallbackImpl
|
||||
: callback_(callback) {
|
||||
}
|
||||
|
||||
~CefAllowCertificateErrorCallbackImpl() {
|
||||
if (!callback_.is_null()) {
|
||||
// The callback is still pending. Cancel it now.
|
||||
if (CEF_CURRENTLY_ON_UIT()) {
|
||||
RunNow(callback_, false);
|
||||
} else {
|
||||
CEF_POST_TASK(CEF_UIT,
|
||||
base::Bind(&CefAllowCertificateErrorCallbackImpl::RunNow,
|
||||
callback_, false));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Continue(bool allow) override {
|
||||
if (CEF_CURRENTLY_ON_UIT()) {
|
||||
if (!callback_.is_null()) {
|
||||
callback_.Run(allow);
|
||||
RunNow(callback_, allow);
|
||||
callback_.Reset();
|
||||
}
|
||||
} else {
|
||||
CEF_POST_TASK(CEF_UIT,
|
||||
base::Bind(&CefAllowCertificateErrorCallbackImpl::Continue,
|
||||
this, allow));
|
||||
this, allow));
|
||||
}
|
||||
}
|
||||
|
||||
void Cancel() override {
|
||||
Continue(false);
|
||||
}
|
||||
|
||||
void Disconnect() {
|
||||
callback_.Reset();
|
||||
}
|
||||
|
||||
private:
|
||||
static void RunNow(const CallbackType& callback, bool allow) {
|
||||
CEF_REQUIRE_IOT();
|
||||
callback.Run(allow);
|
||||
}
|
||||
|
||||
CallbackType callback_;
|
||||
|
||||
IMPLEMENT_REFCOUNTING(CefAllowCertificateErrorCallbackImpl);
|
||||
@@ -213,12 +227,6 @@ class CefGeolocationCallbackImpl : public CefGeolocationCallback {
|
||||
}
|
||||
|
||||
private:
|
||||
static void Run(const CallbackType& callback,
|
||||
content::PermissionStatus status) {
|
||||
CEF_REQUIRE_UIT();
|
||||
callback.Run(status);
|
||||
}
|
||||
|
||||
CallbackType callback_;
|
||||
|
||||
IMPLEMENT_REFCOUNTING(CefGeolocationCallbackImpl);
|
||||
|
Reference in New Issue
Block a user