Fix CefBrowser::GetMainFrame assumptions in the renderer process (see issue #2421)
ClientAppRenderer::Delegate callbacks are executed for all tests. In this case CorsTest.IframeAllowScriptsCustomNonStandardSchemeToServer was crashing on Linux because CefBrowser::GetMainFrame() returns nullptr in the renderer process when called from a cross-origin sub-frame.
This commit is contained in:
parent
9353f9b28b
commit
ba46b8c53e
|
@ -33,7 +33,7 @@
|
|||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=bb01bd8418e5fb715a7a6bd53e962e11a0d04993$
|
||||
// $hash=6e192c6e8a59c37e98e458578a287dd36b8ed90f$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_
|
||||
|
@ -147,8 +147,10 @@ typedef struct _cef_browser_t {
|
|||
///
|
||||
// Returns the main (top-level) frame for the browser. In the browser process
|
||||
// this will return a valid object until after
|
||||
// cef_life_span_handler_t::OnBeforeClose is called. The main frame object
|
||||
// will change during cross-origin navigation or re-navigation after renderer
|
||||
// cef_life_span_handler_t::OnBeforeClose is called. In the renderer process
|
||||
// this will return NULL if the main frame is hosted in a different renderer
|
||||
// process (e.g. for cross-origin sub-frames). The main frame object will
|
||||
// change during cross-origin navigation or re-navigation after renderer
|
||||
// process termination (due to crashes, etc).
|
||||
///
|
||||
struct _cef_frame_t*(CEF_CALLBACK* get_main_frame)(
|
||||
|
|
|
@ -151,7 +151,9 @@ class CefBrowser : public virtual CefBaseRefCounted {
|
|||
///
|
||||
// Returns the main (top-level) frame for the browser. In the browser process
|
||||
// this will return a valid object until after
|
||||
// CefLifeSpanHandler::OnBeforeClose is called. The main frame object will
|
||||
// CefLifeSpanHandler::OnBeforeClose is called. In the renderer process this
|
||||
// will return NULL if the main frame is hosted in a different renderer
|
||||
// process (e.g. for cross-origin sub-frames). The main frame object will
|
||||
// change during cross-origin navigation or re-navigation after renderer
|
||||
// process termination (due to crashes, etc).
|
||||
///
|
||||
|
|
|
@ -163,7 +163,7 @@ class MRRenderDelegate : public ClientAppRenderer::Delegate {
|
|||
CefRefPtr<CefFrame> frame,
|
||||
CefProcessId source_process,
|
||||
CefRefPtr<CefProcessMessage> message) override {
|
||||
const std::string& url = browser->GetMainFrame()->GetURL();
|
||||
const std::string& url = frame->GetURL();
|
||||
if (url.find(kTestDomainRoot) != 0)
|
||||
return false;
|
||||
|
||||
|
|
Loading…
Reference in New Issue