已合并
web新增振动开关接口 #42465
zhufenghao创建于 2024年9月4日
web新增振动开关接口 #42465
已合并
zhufenghao创建于 2024年9月4日
从refs/pull/42465/head合入到master
共 11 个文件变更+52-6
@@ -1941,6 +1941,7 @@ void JSWeb::JSBind(BindingTarget globalObj)
1941 JSClass<JSWeb>::StaticMethod("forceDisplayScrollBar", &JSWeb::ForceDisplayScrollBar);1941 JSClass<JSWeb>::StaticMethod("forceDisplayScrollBar", &JSWeb::ForceDisplayScrollBar);
1942 JSClass<JSWeb>::StaticMethod("keyboardAvoidMode", &JSWeb::KeyboardAvoidMode);1942 JSClass<JSWeb>::StaticMethod("keyboardAvoidMode", &JSWeb::KeyboardAvoidMode);
1943 JSClass<JSWeb>::StaticMethod("editMenuOptions", &JSWeb::EditMenuOptions);1943 JSClass<JSWeb>::StaticMethod("editMenuOptions", &JSWeb::EditMenuOptions);
1944+ JSClass<JSWeb>::StaticMethod("enableHapticFeedback", &JSWeb::EnableHapticFeedback);
1944 1945 
1945 JSClass<JSWeb>::InheritAndBind<JSViewAbstract>(globalObj);1946 JSClass<JSWeb>::InheritAndBind<JSViewAbstract>(globalObj);
1946 JSWebDialog::JSBind(globalObj);1947 JSWebDialog::JSBind(globalObj);
@@ -5134,4 +5135,13 @@ void JSWeb::EditMenuOptions(const JSCallbackInfo& info)
5134 WebModel::GetInstance()->SetEditMenuOptions(std::move(onCreateMenuCallback), std::move(onMenuItemClick));5135 WebModel::GetInstance()->SetEditMenuOptions(std::move(onCreateMenuCallback), std::move(onMenuItemClick));
5135}5136}
5136 5137 
5138+void JSWeb::EnableHapticFeedback(const JSCallbackInfo& args)
5139+{
5140+ if (args.Length() < 1 || !args[0]->IsBoolean()) {
5141+ return;
5142+ }
5143+ bool isEnabled = args[0]->ToBoolean();
5144+ WebModel::GetInstance()->SetEnabledHapticFeedback(isEnabled);
5145+}
5146+ 
5137} // namespace OHOS::Ace::Framework5147} // namespace OHOS::Ace::Framework
@@ -164,6 +164,7 @@ public:
164 static void ForceDisplayScrollBar(const JSCallbackInfo& args);164 static void ForceDisplayScrollBar(const JSCallbackInfo& args);
165 static void KeyboardAvoidMode(int32_t mode);165 static void KeyboardAvoidMode(int32_t mode);
166 static void EditMenuOptions(const JSCallbackInfo& info);166 static void EditMenuOptions(const JSCallbackInfo& info);
167+ static void EnableHapticFeedback(const JSCallbackInfo& args);
167 168 
168protected:169protected:
169 static void OnCommonDialog(const JSCallbackInfo& args, int dialogEventType);170 static void OnCommonDialog(const JSCallbackInfo& args, int dialogEventType);
@@ -35,7 +35,6 @@
35#include "core/components/container_modal/container_modal_constants.h"35#include "core/components/container_modal/container_modal_constants.h"
36#include "core/components/web/render_web.h"36#include "core/components/web/render_web.h"
37#include "adapter/ohos/capability/html/span_to_html.h"37#include "adapter/ohos/capability/html/span_to_html.h"
38-#include "core/common/vibrator/vibrator_utils.h"
39#ifdef ENABLE_ROSEN_BACKEND38#ifdef ENABLE_ROSEN_BACKEND
40#include "core/components_ng/render/adapter/rosen_render_context.h"39#include "core/components_ng/render/adapter/rosen_render_context.h"
41#endif40#endif
@@ -5197,7 +5196,6 @@ bool WebDelegate::OnContextMenuShow(const std::shared_ptr<BaseEventInfo>& info)
5197 CHECK_NULL_VOID(webEventHub);5196 CHECK_NULL_VOID(webEventHub);
5198 auto propOnContextMenuShowEvent = webEventHub->GetOnContextMenuShowEvent();5197 auto propOnContextMenuShowEvent = webEventHub->GetOnContextMenuShowEvent();
5199 CHECK_NULL_VOID(propOnContextMenuShowEvent);5198 CHECK_NULL_VOID(propOnContextMenuShowEvent);
5200- NG::VibratorUtils::StartVibraFeedback("longPress.light");
5201 result = propOnContextMenuShowEvent(info);5199 result = propOnContextMenuShowEvent(info);
5202 return;5200 return;
5203#else5201#else
@@ -5212,7 +5210,6 @@ bool WebDelegate::OnContextMenuShow(const std::shared_ptr<BaseEventInfo>& info)
5212 CHECK_NULL_VOID(webEventHub);5210 CHECK_NULL_VOID(webEventHub);
5213 auto propOnContextMenuShowEvent = webEventHub->GetOnContextMenuShowEvent();5211 auto propOnContextMenuShowEvent = webEventHub->GetOnContextMenuShowEvent();
5214 CHECK_NULL_VOID(propOnContextMenuShowEvent);5212 CHECK_NULL_VOID(propOnContextMenuShowEvent);
5215- NG::VibratorUtils::StartVibraFeedback("longPress.light");
5216 result = propOnContextMenuShowEvent(info);5213 result = propOnContextMenuShowEvent(info);
5217 return;5214 return;
5218 }5215 }
@@ -7236,7 +7233,8 @@ std::string WebDelegate::SpanstringConvertHtml(const std::vector<uint8_t> &conte
7236 7233 
7237void WebDelegate::StartVibraFeedback(const std::string& vibratorType)7234void WebDelegate::StartVibraFeedback(const std::string& vibratorType)
7238{7235{
7239- TAG_LOGI(AceLogTag::ACE_WEB, "WebDelegate::StartVibraFeedback vibratorType = %{public}s", vibratorType.c_str());7236+ auto webPattern = webPattern_.Upgrade();
7240- NG::VibratorUtils::StartVibraFeedback(vibratorType);7237+ CHECK_NULL_VOID(webPattern);
7238+ webPattern->StartVibraFeedback(vibratorType);
7241}7239}
7242} // namespace OHOS::Ace7240} // namespace OHOS::Ace
@@ -1313,4 +1313,14 @@ void WebPattern::UpdateEditMenuOptions(const NG::OnCreateMenuCallback&& onCreate
1313{1313{
1314 // cross platform is not support now;1314 // cross platform is not support now;
1315}1315}
1316+ 
1317+void WebPattern::OnEnabledHapticFeedbackUpdate(bool enable)
1318+{
1319+ // cross platform is not support now;
1320+}
1321+ 
1322+void WebPattern::StartVibraFeedback(const std::string& vibratorType)
1323+{
1324+ // cross platform is not support now;
1325+}
1316} // namespace OHOS::Ace::NG1326} // namespace OHOS::Ace::NG
@@ -518,6 +518,7 @@ private:
518 void OnMetaViewportUpdate(bool value);518 void OnMetaViewportUpdate(bool value);
519 void OnOverlayScrollbarEnabledUpdate(bool value);519 void OnOverlayScrollbarEnabledUpdate(bool value);
520 void OnKeyboardAvoidModeUpdate(const WebKeyboardAvoidMode& mode);520 void OnKeyboardAvoidModeUpdate(const WebKeyboardAvoidMode& mode);
521+ void OnEnabledHapticFeedbackUpdate(bool enable);
521 522 
522 void InitEvent();523 void InitEvent();
523 void InitTouchEvent(const RefPtr<GestureEventHub>& gestureHub);524 void InitTouchEvent(const RefPtr<GestureEventHub>& gestureHub);
@@ -573,6 +574,7 @@ private:
573 void UpdateBackgroundColorRightNow(int32_t color);574 void UpdateBackgroundColorRightNow(int32_t color);
574 void UpdateContentOffset(const RefPtr<LayoutWrapper>& dirty);575 void UpdateContentOffset(const RefPtr<LayoutWrapper>& dirty);
575 void PostTaskToUI(const std::function<void()>&& task) const;576 void PostTaskToUI(const std::function<void()>&& task) const;
577+ void StartVibraFeedback(const std::string& vibratorType);
576 578 
577 std::optional<std::string> webSrc_;579 std::optional<std::string> webSrc_;
578 std::optional<std::string> webData_;580 std::optional<std::string> webData_;
@@ -191,6 +191,7 @@ public:
191 virtual void SetKeyboardAvoidMode(const WebKeyboardAvoidMode& mode) {}191 virtual void SetKeyboardAvoidMode(const WebKeyboardAvoidMode& mode) {}
192 virtual void SetEditMenuOptions(const NG::OnCreateMenuCallback&& onCreateMenuCallback,192 virtual void SetEditMenuOptions(const NG::OnCreateMenuCallback&& onCreateMenuCallback,
193 const NG::OnMenuItemClickCallback&& onMenuItemClick) {};193 const NG::OnMenuItemClickCallback&& onMenuItemClick) {};
194+ virtual void SetEnabledHapticFeedback(bool isEnabled) {}
194private:195private:
195 static std::unique_ptr<WebModel> instance_;196 static std::unique_ptr<WebModel> instance_;
196 static std::mutex mutex_;197 static std::mutex mutex_;
@@ -1182,4 +1182,11 @@ void WebModelNG::SetKeyboardAvoidMode(const WebKeyboardAvoidMode& mode)
1182 CHECK_NULL_VOID(webPattern);1182 CHECK_NULL_VOID(webPattern);
1183 webPattern->UpdateKeyboardAvoidMode(mode);1183 webPattern->UpdateKeyboardAvoidMode(mode);
1184}1184}
1185+ 
1186+void WebModelNG::SetEnabledHapticFeedback(bool isEnabled)
1187+{
1188+ auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1189+ CHECK_NULL_VOID(webPattern);
1190+ webPattern->UpdateEnabledHapticFeedback(isEnabled);
1191+}
1185} // namespace OHOS::Ace::NG1192} // namespace OHOS::Ace::NG
@@ -193,6 +193,7 @@ public:
193 void SetKeyboardAvoidMode(const WebKeyboardAvoidMode& mode) override;193 void SetKeyboardAvoidMode(const WebKeyboardAvoidMode& mode) override;
194 void SetEditMenuOptions(const NG::OnCreateMenuCallback&& onCreateMenuCallback,194 void SetEditMenuOptions(const NG::OnCreateMenuCallback&& onCreateMenuCallback,
195 const NG::OnMenuItemClickCallback&& onMenuItemClick) override;195 const NG::OnMenuItemClickCallback&& onMenuItemClick) override;
196+ void SetEnabledHapticFeedback(bool isEnabled) override;
196};197};
197} // namespace OHOS::Ace::NG198} // namespace OHOS::Ace::NG
198#endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_WEB_WEB_MODEL_NG_H199#endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_WEB_WEB_MODEL_NG_H
@@ -424,7 +424,6 @@ void WebPattern::OnContextMenuShow(const std::shared_ptr<BaseEventInfo>& info)
424 CHECK_NULL_VOID(contextMenuParam_);424 CHECK_NULL_VOID(contextMenuParam_);
425 contextMenuResult_ = eventInfo->GetContextMenuResult();425 contextMenuResult_ = eventInfo->GetContextMenuResult();
426 CHECK_NULL_VOID(contextMenuResult_);426 CHECK_NULL_VOID(contextMenuResult_);
427- VibratorUtils::StartVibraFeedback("longPress.light");
428 ShowContextSelectOverlay(RectF(), RectF());427 ShowContextSelectOverlay(RectF(), RectF());
429}428}
430 429 
@@ -2420,6 +2419,11 @@ void WebPattern::OnKeyboardAvoidModeUpdate(const WebKeyboardAvoidMode& mode)
2420 keyBoardAvoidMode_ = mode;2419 keyBoardAvoidMode_ = mode;
2421}2420}
2422 2421 
2422+void WebPattern::OnEnabledHapticFeedbackUpdate(bool enable)
2423+{
2424+ isEnabledHapticFeedback_ = enable;
2425+}
2426+ 
2423bool WebPattern::IsRootNeedExportTexture()2427bool WebPattern::IsRootNeedExportTexture()
2424{2428{
2425 auto host = GetHost();2429 auto host = GetHost();
@@ -6487,4 +6491,11 @@ int32_t WebPattern::GetBufferSizeByDeviceType()
6487 return (SystemProperties::GetDeviceType() == DeviceType::PHONE) ? ASYNC_SURFACE_QUEUE_SIZE_FOR_PHONE :6491 return (SystemProperties::GetDeviceType() == DeviceType::PHONE) ? ASYNC_SURFACE_QUEUE_SIZE_FOR_PHONE :
6488 ASYNC_SURFACE_QUEUE_SIZE_FOR_OTHERS;6492 ASYNC_SURFACE_QUEUE_SIZE_FOR_OTHERS;
6489}6493}
6494+ 
6495+void WebPattern::StartVibraFeedback(const std::string& vibratorType)
6496+{
6497+ if (isEnabledHapticFeedback_) {
6498+ NG::VibratorUtils::StartVibraFeedback(vibratorType);
lanshouren
lanshourenlanshouren2024年9月5日

日志打印去掉吧。

likedislike
6499+ }
6500+}
6490} // namespace OHOS::Ace::NG6501} // namespace OHOS::Ace::NG
@@ -484,6 +484,7 @@ public:
484 ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(WebProperty, SelectionMenuOptions, WebMenuOptionsParam);484 ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(WebProperty, SelectionMenuOptions, WebMenuOptionsParam);
485 ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(WebProperty, OverlayScrollbarEnabled, bool);485 ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(WebProperty, OverlayScrollbarEnabled, bool);
486 ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(WebProperty, KeyboardAvoidMode, WebKeyboardAvoidMode);486 ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(WebProperty, KeyboardAvoidMode, WebKeyboardAvoidMode);
487+ ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(WebProperty, EnabledHapticFeedback, bool);
487 488 
488 bool IsFocus() const489 bool IsFocus() const
489 {490 {
@@ -683,6 +684,7 @@ public:
683 void OnSetAccessibilityChildTree(int32_t childWindowId, int32_t childTreeId);684 void OnSetAccessibilityChildTree(int32_t childWindowId, int32_t childTreeId);
684 bool OnAccessibilityChildTreeRegister();685 bool OnAccessibilityChildTreeRegister();
685 bool OnAccessibilityChildTreeDeregister();686 bool OnAccessibilityChildTreeDeregister();
687+ void StartVibraFeedback(const std::string& vibratorType);
686 int32_t GetTreeId()688 int32_t GetTreeId()
687 {689 {
688 return treeId_;690 return treeId_;
@@ -773,6 +775,7 @@ private:
773 void OnSmoothDragResizeEnabledUpdate(bool value);775 void OnSmoothDragResizeEnabledUpdate(bool value);
774 void OnOverlayScrollbarEnabledUpdate(bool enable);776 void OnOverlayScrollbarEnabledUpdate(bool enable);
775 void OnKeyboardAvoidModeUpdate(const WebKeyboardAvoidMode& mode);777 void OnKeyboardAvoidModeUpdate(const WebKeyboardAvoidMode& mode);
778+ void OnEnabledHapticFeedbackUpdate(bool enable);
776 int GetWebId();779 int GetWebId();
777 780 
778 void InitEvent();781 void InitEvent();
@@ -1110,6 +1113,7 @@ private:
1110 bool isAutoFillClosing_ = true;1113 bool isAutoFillClosing_ = true;
1111 ViewDataCommon viewDataCommon_;1114 ViewDataCommon viewDataCommon_;
1112 bool isPasswordFill_ = false;1115 bool isPasswordFill_ = false;
1116+ bool isEnabledHapticFeedback_ = true;
1113 NestedScrollOptionsExt nestedScroll_ = {1117 NestedScrollOptionsExt nestedScroll_ = {
1114 .scrollUp = NestedScrollMode::SELF_ONLY,1118 .scrollUp = NestedScrollMode::SELF_ONLY,
1115 .scrollDown = NestedScrollMode::SELF_ONLY,1119 .scrollDown = NestedScrollMode::SELF_ONLY,
@@ -79,6 +79,7 @@ struct WebPatternProperty {
79 ACE_DEFINE_PROPERTY_GROUP_ITEM(SelectionMenuOptions, WebMenuOptionsParam);79 ACE_DEFINE_PROPERTY_GROUP_ITEM(SelectionMenuOptions, WebMenuOptionsParam);
80 ACE_DEFINE_PROPERTY_GROUP_ITEM(OverlayScrollbarEnabled, bool);80 ACE_DEFINE_PROPERTY_GROUP_ITEM(OverlayScrollbarEnabled, bool);
81 ACE_DEFINE_PROPERTY_GROUP_ITEM(KeyboardAvoidMode, WebKeyboardAvoidMode);81 ACE_DEFINE_PROPERTY_GROUP_ITEM(KeyboardAvoidMode, WebKeyboardAvoidMode);
82+ ACE_DEFINE_PROPERTY_GROUP_ITEM(EnabledHapticFeedback, bool);
82};83};
83 84 
84} // namespace OHOS::Ace::NG85} // namespace OHOS::Ace::NG