diff --git a/libcef/browser/alloy/alloy_browser_host_impl.cc b/libcef/browser/alloy/alloy_browser_host_impl.cc index 693a64ad230538df64a2051ba340702bc8cdb844..91fd3d1aad81f5fd10864874121f2ddb80d88866 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.cc +++ b/libcef/browser/alloy/alloy_browser_host_impl.cc @@ -738,6 +738,15 @@ void AlloyBrowserHostImpl::WasResized() { } } +#if BUILDFLAG(IS_OHOS) +const int WEB_HIDDEN_DELAY_TIME = 5000; +void AlloyBrowserHostImpl::DelayHidden() { + if (platform_delegate_ && is_hidden_) { + platform_delegate_->WasHidden(true); + } +} +#endif + void AlloyBrowserHostImpl::WasHidden(bool hidden) { LOG(DEBUG) << "web was hidden:" << hidden; if (!IsWindowless()) { @@ -754,6 +763,15 @@ void AlloyBrowserHostImpl::WasHidden(bool hidden) { is_hidden_ = hidden; ReportWindowStatus(false); +#if BUILDFLAG(IS_OHOS) + if (base::ohos::IsPcDevice() && hidden) { + CEF_POST_DELAYED_TASK(CEF_UIT, + base::BindOnce(&AlloyBrowserHostImpl::DelayHidden, this), + WEB_HIDDEN_DELAY_TIME); + return; + } +#endif + if (platform_delegate_) { platform_delegate_->WasHidden(hidden); } diff --git a/libcef/browser/alloy/alloy_browser_host_impl.h b/libcef/browser/alloy/alloy_browser_host_impl.h index 2e2a9f5c0868704b8fdb28f6903101767fbeb0c7..ebe35b1a153b52f313a6872e1658db5fd3ae65d2 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.h +++ b/libcef/browser/alloy/alloy_browser_host_impl.h @@ -518,6 +518,7 @@ bool NeedsReload() override; void ResetVSyncFrequency(); void SetVisible(bool visible); void SetNativeEmbedMode(bool flag) override; + void DelayHidden(); #endif #if defined(OHOS_INPUT_EVENTS)