mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Update to Chromium revision 304f01a1 (#358063)
- Improve ordering of CefLoadHandler callbacks. OnLoadingStateChange will be called before and after all calls to OnLoadStart and OnLoadEnd. OnLoadStart/OnLoadEnd calls will occur as matching pairs (see http://crbug.com/539952#c2). - Remove the |requesting_url| argument to CefGeolocationHandler:: OnCancelGeolocationPermission. Clients can use the |request_id| argument to track this information themselves. - Fix a crash when loading the PDF extension in multiple browsers with a custom CefRequestContext (issue #1757).
This commit is contained in:
@@ -55,7 +55,7 @@ int CEF_CALLBACK geolocation_handler_on_request_geolocation_permission(
|
||||
|
||||
void CEF_CALLBACK geolocation_handler_on_cancel_geolocation_permission(
|
||||
struct _cef_geolocation_handler_t* self, cef_browser_t* browser,
|
||||
const cef_string_t* requesting_url, int request_id) {
|
||||
int request_id) {
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
DCHECK(self);
|
||||
@@ -65,15 +65,10 @@ void CEF_CALLBACK geolocation_handler_on_cancel_geolocation_permission(
|
||||
DCHECK(browser);
|
||||
if (!browser)
|
||||
return;
|
||||
// Verify param: requesting_url; type: string_byref_const
|
||||
DCHECK(requesting_url);
|
||||
if (!requesting_url)
|
||||
return;
|
||||
|
||||
// Execute
|
||||
CefGeolocationHandlerCppToC::Get(self)->OnCancelGeolocationPermission(
|
||||
CefBrowserCToCpp::Wrap(browser),
|
||||
CefString(requesting_url),
|
||||
request_id);
|
||||
}
|
||||
|
||||
|
@@ -51,8 +51,7 @@ bool CefGeolocationHandlerCToCpp::OnRequestGeolocationPermission(
|
||||
}
|
||||
|
||||
void CefGeolocationHandlerCToCpp::OnCancelGeolocationPermission(
|
||||
CefRefPtr<CefBrowser> browser, const CefString& requesting_url,
|
||||
int request_id) {
|
||||
CefRefPtr<CefBrowser> browser, int request_id) {
|
||||
cef_geolocation_handler_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, on_cancel_geolocation_permission))
|
||||
return;
|
||||
@@ -63,15 +62,10 @@ void CefGeolocationHandlerCToCpp::OnCancelGeolocationPermission(
|
||||
DCHECK(browser.get());
|
||||
if (!browser.get())
|
||||
return;
|
||||
// Verify param: requesting_url; type: string_byref_const
|
||||
DCHECK(!requesting_url.empty());
|
||||
if (requesting_url.empty())
|
||||
return;
|
||||
|
||||
// Execute
|
||||
_struct->on_cancel_geolocation_permission(_struct,
|
||||
CefBrowserCppToC::Wrap(browser),
|
||||
requesting_url.GetStruct(),
|
||||
request_id);
|
||||
}
|
||||
|
||||
|
@@ -35,7 +35,7 @@ class CefGeolocationHandlerCToCpp
|
||||
const CefString& requesting_url, int request_id,
|
||||
CefRefPtr<CefGeolocationCallback> callback) override;
|
||||
void OnCancelGeolocationPermission(CefRefPtr<CefBrowser> browser,
|
||||
const CefString& requesting_url, int request_id) override;
|
||||
int request_id) override;
|
||||
};
|
||||
|
||||
#endif // BUILDING_CEF_SHARED
|
||||
|
@@ -253,13 +253,14 @@ class CefMessageRouterBrowserSideImpl : public CefMessageRouterBrowserSide {
|
||||
const std::string& message_name = message->GetName();
|
||||
if (message_name == query_message_name_) {
|
||||
CefRefPtr<CefListValue> args = message->GetArgumentList();
|
||||
DCHECK_EQ(args->GetSize(), 6U);
|
||||
DCHECK_EQ(args->GetSize(), 7U);
|
||||
|
||||
const int64 frame_id = CefInt64Set(args->GetInt(0), args->GetInt(1));
|
||||
const int context_id = args->GetInt(2);
|
||||
const int request_id = args->GetInt(3);
|
||||
const CefString& request = args->GetString(4);
|
||||
const bool persistent = args->GetBool(5);
|
||||
const bool is_main_frame = args->GetBool(2);
|
||||
const int context_id = args->GetInt(3);
|
||||
const int request_id = args->GetInt(4);
|
||||
const CefString& request = args->GetString(5);
|
||||
const bool persistent = args->GetBool(6);
|
||||
|
||||
if (handler_set_.empty()) {
|
||||
// No handlers so cancel the query.
|
||||
@@ -270,7 +271,11 @@ class CefMessageRouterBrowserSideImpl : public CefMessageRouterBrowserSide {
|
||||
const int browser_id = browser->GetIdentifier();
|
||||
const int64 query_id = query_id_generator_.GetNextId();
|
||||
|
||||
CefRefPtr<CefFrame> frame = browser->GetFrame(frame_id);
|
||||
CefRefPtr<CefFrame> frame;
|
||||
if (is_main_frame)
|
||||
frame = browser->GetMainFrame();
|
||||
else
|
||||
frame = browser->GetFrame(frame_id);
|
||||
CefRefPtr<CallbackImpl> callback(
|
||||
new CallbackImpl(this, browser_id, query_id, persistent));
|
||||
|
||||
@@ -298,6 +303,7 @@ class CefMessageRouterBrowserSideImpl : public CefMessageRouterBrowserSide {
|
||||
QueryInfo* info = new QueryInfo;
|
||||
info->browser = browser;
|
||||
info->frame_id = frame_id;
|
||||
info->is_main_frame = is_main_frame;
|
||||
info->context_id = context_id;
|
||||
info->request_id = request_id;
|
||||
info->persistent = persistent;
|
||||
@@ -334,6 +340,7 @@ class CefMessageRouterBrowserSideImpl : public CefMessageRouterBrowserSide {
|
||||
// Browser and frame originated the query.
|
||||
CefRefPtr<CefBrowser> browser;
|
||||
int64 frame_id;
|
||||
bool is_main_frame;
|
||||
|
||||
// IDs that uniquely identify the query in the renderer process. These
|
||||
// values are opaque to the browser process but must be returned with the
|
||||
@@ -476,7 +483,11 @@ class CefMessageRouterBrowserSideImpl : public CefMessageRouterBrowserSide {
|
||||
if (notify_renderer)
|
||||
SendQueryFailure(info, kCanceledErrorCode, kCanceledErrorMessage);
|
||||
|
||||
CefRefPtr<CefFrame> frame = info->browser->GetFrame(info->frame_id);
|
||||
CefRefPtr<CefFrame> frame;
|
||||
if (info->is_main_frame)
|
||||
frame = info->browser->GetMainFrame();
|
||||
else
|
||||
frame = info->browser->GetFrame(info->frame_id);
|
||||
info->handler->OnQueryCanceled(info->browser, frame, query_id);
|
||||
|
||||
// Invalidate the callback.
|
||||
@@ -668,11 +679,12 @@ class CefMessageRouterRendererSideImpl : public CefMessageRouterRendererSide {
|
||||
CefRefPtr<CefV8Context> context = CefV8Context::GetCurrentContext();
|
||||
const int context_id = GetIDForContext(context);
|
||||
const int64 frame_id = context->GetFrame()->GetIdentifier();
|
||||
const bool is_main_frame = context->GetFrame()->IsMain();
|
||||
const bool persistent =
|
||||
(persistentVal.get() && persistentVal->GetBoolValue());
|
||||
|
||||
const int request_id = router_->SendQuery(
|
||||
context->GetBrowser(), frame_id, context_id,
|
||||
context->GetBrowser(), frame_id, is_main_frame, context_id,
|
||||
requestVal->GetStringValue(), persistent, successVal, failureVal);
|
||||
retval = CefV8Value::CreateInt(request_id);
|
||||
return true;
|
||||
@@ -687,9 +699,7 @@ class CefMessageRouterRendererSideImpl : public CefMessageRouterRendererSide {
|
||||
if (request_id != kReservedId) {
|
||||
CefRefPtr<CefV8Context> context = CefV8Context::GetCurrentContext();
|
||||
const int context_id = GetIDForContext(context);
|
||||
const int64 frame_id = context->GetFrame()->GetIdentifier();
|
||||
|
||||
result = router_->SendCancel(context->GetBrowser(), frame_id,
|
||||
result = router_->SendCancel(context->GetBrowser(),
|
||||
context_id, request_id);
|
||||
}
|
||||
retval = CefV8Value::CreateBool(result);
|
||||
@@ -817,7 +827,7 @@ class CefMessageRouterRendererSideImpl : public CefMessageRouterRendererSide {
|
||||
const int context_id = GetIDForContext(context, true);
|
||||
if (context_id != kReservedId) {
|
||||
// Cancel all pending requests for the context.
|
||||
SendCancel(browser, frame->GetIdentifier(), context_id, kReservedId);
|
||||
SendCancel(browser, context_id, kReservedId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -915,6 +925,7 @@ class CefMessageRouterRendererSideImpl : public CefMessageRouterRendererSide {
|
||||
// Returns the new request ID.
|
||||
int SendQuery(CefRefPtr<CefBrowser> browser,
|
||||
int64 frame_id,
|
||||
bool is_main_frame,
|
||||
int context_id,
|
||||
const CefString& request,
|
||||
bool persistent,
|
||||
@@ -937,10 +948,11 @@ class CefMessageRouterRendererSideImpl : public CefMessageRouterRendererSide {
|
||||
CefRefPtr<CefListValue> args = message->GetArgumentList();
|
||||
args->SetInt(0, CefInt64GetLow(frame_id));
|
||||
args->SetInt(1, CefInt64GetHigh(frame_id));
|
||||
args->SetInt(2, context_id);
|
||||
args->SetInt(3, request_id);
|
||||
args->SetString(4, request);
|
||||
args->SetBool(5, persistent);
|
||||
args->SetBool(2, is_main_frame);
|
||||
args->SetInt(3, context_id);
|
||||
args->SetInt(4, request_id);
|
||||
args->SetString(5, request);
|
||||
args->SetBool(6, persistent);
|
||||
|
||||
browser->SendProcessMessage(PID_BROWSER, message);
|
||||
|
||||
@@ -951,7 +963,6 @@ class CefMessageRouterRendererSideImpl : public CefMessageRouterRendererSide {
|
||||
// will be canceled, otherwise only the specified |request_id| will be
|
||||
// canceled. Returns true if any request was canceled.
|
||||
bool SendCancel(CefRefPtr<CefBrowser> browser,
|
||||
int64 frame_id,
|
||||
int context_id,
|
||||
int request_id) {
|
||||
CEF_REQUIRE_RENDERER_THREAD();
|
||||
|
Reference in New Issue
Block a user