class LifeSpanHandler :
public CefLifeSpanHandler
{
public:
bool OnBeforePopup(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
const CefString& target_url, const CefString& target_frame_name,
CefLifeSpanHandler::WindowOpenDisposition target_disposition,
bool user_gesture, const CefPopupFeatures& popupFeatures,
CefWindowInfo& windowInfo, CefRefPtr<CefClient>& client,
CefBrowserSettings& settings, bool* no_javascript_access) override
{
CEF_REQUIRE_UI_THREAD();
std::cout << "Page wants to open a popup" << std::endl;
return true;
};
void OnAfterCreated(CefRefPtr<CefBrowser> browser) override
{
CEF_REQUIRE_UI_THREAD();
mBrowserList.push_back(browser);
}
void OnBeforeClose(CefRefPtr<CefBrowser> browser) override
{
CEF_REQUIRE_UI_THREAD();
BrowserList::iterator bit = mBrowserList.begin();
for (; bit != mBrowserList.end(); ++bit)
{
if ((*bit)->IsSame(browser))
{
mBrowserList.erase(bit);
break;
}
}
if (mBrowserList.empty())
{
gExitFlag = true;
}
}
IMPLEMENT_REFCOUNTING(LifeSpanHandler);
private:
typedef std::list<CefRefPtr<CefBrowser>> BrowserList;
BrowserList mBrowserList;
};
magreenblatt wrote:I also modified cefclient at current master to return true from ClientHandler::OnBeforePopup, ran with `--off-screen-rendering-enabled --url=https://callum-linden.s3.amazonaws.com/bigclick.html` and manually clicked the link. However, no popup was created for me.
libcef.dll!base::debug::BreakDebugger() Line 21 C++
libcef.dll!logging::LogMessage::~LogMessage() Line 842 C++
libcef.dll!CefLifeSpanHandlerCToCpp::OnBeforePopup(scoped_refptr<CefBrowser> browser, scoped_refptr<CefFrame> frame, const CefStringBase<CefStringTraitsUTF16> & target_url, const CefStringBase<CefStringTraitsUTF16> & target_frame_name, <unnamed-tag> target_disposition, bool user_gesture, const CefStructBase<CefPopupFeaturesTraits> & popupFeatures, CefWindowInfo & windowInfo, scoped_refptr<CefClient> & client, CefStructBase<CefBrowserSettingsTraits> & settings, bool * no_javascript_access) Line 45 C++
libcef.dll!CefBrowserInfoManager::CanCreateWindow(content::RenderFrameHost * opener, const GURL & target_url, const content::Referrer & referrer, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & frame_name, WindowOpenDisposition disposition, const blink::mojom::WindowFeatures & features, bool user_gesture, bool opener_suppressed, bool * no_javascript_access) Line 189 C++
libcef.dll!CefContentBrowserClient::CanCreateWindow(content::RenderFrameHost * opener, const GURL & opener_url, const GURL & opener_top_level_frame_url, const GURL & source_origin, content::mojom::WindowContainerType container_type, const GURL & target_url, const content::Referrer & referrer, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & frame_name, WindowOpenDisposition disposition, const blink::mojom::WindowFeatures & features, bool user_gesture, bool opener_suppressed, bool * no_javascript_access) Line 886 C++
libcef.dll!content::RenderFrameHostImpl::CreateNewWindow(mojo::StructPtr<content::mojom::CreateNewWindowParams> params, base::OnceCallback<void (content::mojom::CreateNewWindowStatus, mojo::StructPtr<content::mojom::CreateNewWindowReply>)> callback) Line 2893 C++
libcef.dll!content::mojom::FrameHostStubDispatch::AcceptWithResponder(content::mojom::FrameHost * impl, mojo::Message * message, std::unique_ptr<mojo::MessageReceiverWithStatus,std::default_delete<mojo::MessageReceiverWithStatus> > responder) Line 2585 C++
libcef.dll!content::mojom::FrameHostStub<mojo::RawPtrImplRefTraits<content::mojom::FrameHost> >::AcceptWithResponder(mojo::Message * message, std::unique_ptr<mojo::MessageReceiverWithStatus,std::default_delete<mojo::MessageReceiverWithStatus> > responder) Line 812 C++
libcef.dll!mojo::InterfaceEndpointClient::HandleValidatedMessage(mojo::Message * message) Line 394 C++
libcef.dll!mojo::FilterChain::Accept(mojo::Message * message) Line 40 C++
libcef.dll!mojo::InterfaceEndpointClient::HandleIncomingMessage(mojo::Message * message) Line 306 C++
libcef.dll!IPC::`anonymous namespace'::ChannelAssociatedGroupController::AcceptSyncMessage(unsigned int interface_id, unsigned int message_id) Line 821 C++
libcef.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function, base::PendingTask * pending_task) Line 53 C++
libcef.dll!base::internal::IncomingTaskQueue::RunTask(base::PendingTask * pending_task) Line 124 C++
libcef.dll!base::MessageLoop::RunTask(base::PendingTask * pending_task) Line 399 C++
libcef.dll!base::MessageLoop::DeferOrRunPendingTask(base::PendingTask pending_task) Line 411 C++
libcef.dll!base::MessageLoop::DoWork() Line 455 C++
libcef.dll!base::MessagePumpForUI::DoRunLoop() Line 174 C++
libcef.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate) Line 58 C++
libcef.dll!base::MessageLoop::Run(bool application_tasks_allowed) Line 352 C++
libcef.dll!base::RunLoop::Run() Line 133 C++
libcef.dll!base::RunLoop::RunUntilIdle() Line 143 C++
libcef.dll!CefBrowserMessageLoop::DoMessageLoopIteration() Line 117 C++
> cef_opengl_win.exe!CefDoMessageLoopWork() Line 397 C++
cef_opengl_win.exe!cefImpl::update() Line 344 C++
cef_opengl_win.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) Line 654 C++
Users browsing this forum: Google [Bot] and 37 guests