From bfbec02862636c6feb3254f44cb9b5201d40c339 Mon Sep 17 00:00:00 2001 From: tengfan66 Date: Mon, 9 Dec 2024 21:06:18 +0800 Subject: [PATCH] iframe refresh Signed-off-by: tengfan66 --- include/cef_browser.h | 14 ++++++++++++++ libcef/browser/alloy/alloy_browser_host_impl.cc | 17 +++++++++++++++++ libcef/browser/alloy/alloy_browser_host_impl.h | 5 +++++ libcef/browser/browser_host_base.h | 5 +++++ libcef_dll/ctocpp/browser_host_ctocpp.h | 4 ++++ 5 files changed, 45 insertions(+) diff --git a/include/cef_browser.h b/include/cef_browser.h index e5cb35568..9ec0ac2c5 100644 --- a/include/cef_browser.h +++ b/include/cef_browser.h @@ -2112,5 +2112,19 @@ class CefBrowserHost : public virtual CefBaseRefCounted { /// /*--cef()--*/ virtual void SetPopupWindow(cef_native_window_t window) = 0; + +#if defined(NWEB_EX_REFRESH_IFRAME) + /// + /// Get whether it is the iframe. + /// + /*--cef()--*/ + virtual bool IsIframe() = 0; + + /// + /// fresh focused frame for context menu. + /// + /*--cef()--*/ + virtual void ReloadFocusedFrame() = 0; +#endif }; #endif // CEF_INCLUDE_CEF_BROWSER_H_ diff --git a/libcef/browser/alloy/alloy_browser_host_impl.cc b/libcef/browser/alloy/alloy_browser_host_impl.cc index def1472c5..8a3e536f1 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.cc +++ b/libcef/browser/alloy/alloy_browser_host_impl.cc @@ -2956,3 +2956,20 @@ float AlloyBrowserHostImpl::GetPageScaleFactor() { return 1; } #endif + +#ifdef NWEB_EX_REFRESH_IFRAME +bool AlloyBrowserHostImpl::IsIframe() +{ + if (web_contents() && web_contents()->GetFocusedFrame()) { + return !!web_contents()->GetFocusedFrame()->GetParentOrOuterDocument(); + } + return false; +} + +void AlloyBrowserHostImpl::ReloadFocusedFrame() +{ + if (web_contents()) { + web_contents()->ReloadFocusedFrame(); + } +} +#endif diff --git a/libcef/browser/alloy/alloy_browser_host_impl.h b/libcef/browser/alloy/alloy_browser_host_impl.h index 1e5a570c4..bd5cdd000 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.h +++ b/libcef/browser/alloy/alloy_browser_host_impl.h @@ -255,6 +255,11 @@ void NotifyNeedsReload(bool needs_reload) override; bool NeedsReload() override; #endif +#if defined(NWEB_EX_REFRESH_IFRAME) + bool IsIframe() override; + void ReloadFocusedFrame() override; +#endif + enum DestructionState { DESTRUCTION_STATE_NONE = 0, DESTRUCTION_STATE_PENDING, diff --git a/libcef/browser/browser_host_base.h b/libcef/browser/browser_host_base.h index f81875a7b..59eaf9916 100644 --- a/libcef/browser/browser_host_base.h +++ b/libcef/browser/browser_host_base.h @@ -765,6 +765,11 @@ bool TerminateRenderProcess() override; std::string GetCustomUserAgent(); #endif +#ifdef NWEB_EX_REFRESH_IFRAME + bool IsIframe() override { return false; } + void ReloadFocusedFrame() override {} +#endif + protected: bool EnsureDevToolsManager(); void InitializeDevToolsRegistrationOnUIThread( diff --git a/libcef_dll/ctocpp/browser_host_ctocpp.h b/libcef_dll/ctocpp/browser_host_ctocpp.h index 6006eee59..802d4e621 100644 --- a/libcef_dll/ctocpp/browser_host_ctocpp.h +++ b/libcef_dll/ctocpp/browser_host_ctocpp.h @@ -315,6 +315,10 @@ class CefBrowserHostCToCpp : public CefCToCppRefCounted callback) override; void SetPopupWindow(cef_native_window_t window) override; +#ifdef NWEB_EX_REFRESH_IFRAME + bool IsIframe() override { return false; } + void ReloadFocusedFrame() override {} +#endif }; #endif // CEF_LIBCEF_DLL_CTOCPP_BROWSER_HOST_CTOCPP_H_ -- Gitee