diff --git a/ohos_nweb/src/cef_delegate/nweb_delegate.cc b/ohos_nweb/src/cef_delegate/nweb_delegate.cc index b0bc56e4deb399b150cd3f9cc86da40ac33b54bc..53d535399ffac825d8a90f759e289ff60fa85f70 100644 --- a/ohos_nweb/src/cef_delegate/nweb_delegate.cc +++ b/ohos_nweb/src/cef_delegate/nweb_delegate.cc @@ -4030,20 +4030,6 @@ std::string NWebDelegate::GetLastJavascriptProxyCallingFrameUrl() { #endif int NWebDelegate::ScaleGestureChange(double scale, double centerX, double centerY) const { - LOG(DEBUG) << "NWebDelegate::ScaleGestureChange"; - if (!preference_delegate_) { - LOG(ERROR) << "preference_delegate_ get fail"; - return NWEB_ERR; - } - if (!preference_delegate_->ZoomingfunctionEnabled()) { - return NWEB_FUNCTION_NOT_ENABLE; - } - if (!GetBrowser().get()) { - LOG(ERROR) << "NWebDelegate::ScaleGestrueChange can not get browser"; - return NWEB_ERR; - } - LOG(DEBUG) << "NWebDelegate::ScaleGestureChange ZoomBY centerX:" << "centerY:" << centerY; - GetBrowser()->GetHost()->ZoomBy(scale, centerX * 2, centerY * 2); return NWEB_OK; } @@ -4344,4 +4330,27 @@ void NWebDelegate::CloseDevtools() { GetBrowser()->GetHost()->CloseDevTools(); } +int NWebDelegate::ScaleGestureChangeV2(int type, + double scale, + double originScale, + double centerX, + double centerY) const { + LOG(DEBUG) << "NWebDelegate::ScaleGestureChangeV2"; + if (!preference_delegate_) { + LOG(ERROR) << "preference_delegate_ get fail"; + return NWEB_ERR; + } + if (!preference_delegate_->ZoomingfunctionEnabled()) { + return NWEB_FUNCTION_NOT_ENABLE; + } + if (!GetBrowser().get()) { + LOG(ERROR) << "NWebDelegate::ScaleGestureChangeV2 can not get browser"; + return NWEB_ERR; + } + + GetBrowser()->GetHost()->ScaleGestureChangeV2( + type, scale, originScale, centerX / default_virtual_pixel_ratio_, + centerY / default_virtual_pixel_ratio_); + return NWEB_OK; +} } // namespace OHOS::NWeb diff --git a/ohos_nweb/src/cef_delegate/nweb_delegate.h b/ohos_nweb/src/cef_delegate/nweb_delegate.h index 81d6a10ca560205e304400abdbea6c8e1ad085de..245c15e2dba25b74fda4ab8909a953ba98b9d698 100644 --- a/ohos_nweb/src/cef_delegate/nweb_delegate.h +++ b/ohos_nweb/src/cef_delegate/nweb_delegate.h @@ -255,6 +255,8 @@ class NWebDelegate : public NWebDelegateInterface, public virtual CefRefCount { int ScaleGestureChange(double scale, double centerX, double centerY) const override; + int ScaleGestureChangeV2(int type, double scale, double originScale, double centerX, double centerY) const override; + #if defined(OHOS_MSGPORT) uint32_t runJSCallbackId_ = 0; std::unordered_map> runJSCallbackMap_; diff --git a/ohos_nweb/src/nweb_delegate_interface.h b/ohos_nweb/src/nweb_delegate_interface.h index 5cb7b95305ec80f0865568c97ccc05103a1cdbd0..d4efcc06ea2afcfa7bf34ccf7bb7ec4e4780179a 100644 --- a/ohos_nweb/src/nweb_delegate_interface.h +++ b/ohos_nweb/src/nweb_delegate_interface.h @@ -501,7 +501,15 @@ class NWebDelegateInterface virtual NWebDownloadItemState GetDownloadItemState(long item_id) = 0; #endif -virtual int ScaleGestureChange(double scale, double centerX, double centerY) const = 0; + virtual int ScaleGestureChange(double scale, + double centerX, + double centerY) const = 0; + + virtual int ScaleGestureChangeV2(int type, + double scale, + double originScale, + double centerX, + double centerY) const = 0; #if defined(OHOS_SCREEN_LOCK) virtual void SetWakeLockCallback(int32_t windowId, const std::shared_ptr& callback) = 0; diff --git a/ohos_nweb/src/nweb_impl.cc b/ohos_nweb/src/nweb_impl.cc index ca65a6a2bf649ab0d9eb7d424d756d36d1d89c01..f43686ba74fc1fedcfcdb9981b268423f23ee0d9 100644 --- a/ohos_nweb/src/nweb_impl.cc +++ b/ohos_nweb/src/nweb_impl.cc @@ -3410,7 +3410,8 @@ std::string NWebImpl::GetDefaultUserAgent() { } int NWebImpl::ScaleGestureChange(double scale, double centerX, double centerY) { - LOG(INFO) << "NWebImpl::ScaleGestureChange scale:" << scale << " centerX: " << centerX << " centerY: " << centerY; + LOG(DEBUG) << "NWebImpl::ScaleGestureChange scale:" << scale + << " centerX: " << centerX << " centerY: " << centerY; if (nweb_delegate_ == nullptr) { LOG(ERROR) << "nweb_delegate_ is nullptr."; return NWEB_ERR; @@ -3901,3 +3902,18 @@ void NWebImpl::TrimMemoryByPressureLevel(int32_t memoryLevel) { base::MemoryPressureListener::NotifyMemoryPressure(memory_pressure_level); #endif // OHOS_PERFORMANCE_MEMORY_THRESHOLD } + +int NWebImpl::ScaleGestureChangeV2(int type, + double scale, + double originScale, + double centerX, + double centerY) { + LOG(DEBUG) << "NWebImpl::ScaleGestureChangeV2 type:" << type + << " scale:" << scale << " originScale: " << originScale + << " centerX: " << centerX << " centerY: " << centerY; + if (nweb_delegate_ == nullptr) { + LOG(ERROR) << "nweb_delegate_ is nullptr."; + return NWEB_ERR; + } + return nweb_delegate_->ScaleGestureChangeV2(type, scale, originScale, centerX, centerY); +} \ No newline at end of file diff --git a/ohos_nweb/src/nweb_impl.h b/ohos_nweb/src/nweb_impl.h index 07955c90ffc97f8d824ba3f642dc0b6d1c3bf1d6..7eac087796bc43d6ee6eb15ba1d7894147ee2ac1 100644 --- a/ohos_nweb/src/nweb_impl.h +++ b/ohos_nweb/src/nweb_impl.h @@ -534,6 +534,7 @@ class NWebImpl : public NWeb { static void WarmupServiceWorker(const std::string &url); int ScaleGestureChange(double scale, double centerX, double centerY) override; + int ScaleGestureChangeV2(int type, double scale, double originScale, double centerX, double centerY) override; static void SetHostIP(const std::string &hostName, const std::string &address, int32_t aliveTime); static void ClearHostIP(const std::string &hostName);