diff --git a/include/cef_browser.h b/include/cef_browser.h index e5cb355680bc1ddb74407d3f30b856eca7774ff5..9ec0ac2c5444aa5e8b3de63d2a3402a300db4032 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 def1472c593656fb2069061ffa4a8123bd63119d..8a3e536f1f1da78dc4cfe50415135ccfc4829149 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 1e5a570c43a53ab76a2e216170968955341dfc7f..bd5cdd000c500936beb6ae63028799dbdc85e0c1 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 f81875a7bb798889e07bf839c624dfd9a2f471a8..59eaf99163982ad6908589b7851ac07258704134 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 6006eee59af5760e8c5df0019af58cb18eb21874..802d4e621f27c5d40e674d5f14ef30df310a2ad1 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_