已合并
web新增振动开关接口 #42465
zhufenghao创建于 2024年9月4日
web新增振动开关接口 #42465
已合并
从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::Framework | 5147 | } // 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 | ||
| 168 | protected: | 169 | protected: |
| 169 | static void OnCommonDialog(const JSCallbackInfo& args, int dialogEventType); | 170 | static void OnCommonDialog(const JSCallbackInfo& args, int dialogEventType); |
| @@ -35,7 +35,6 @@ | |||
| 35 | 35 | ||
| 36 | 36 | ||
| 37 | 37 | ||
| 38 | - | ||
| 39 | 38 | ||
| 40 | 39 | ||
| 41 | 40 | ||
| @@ -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 | 5201 | ||
| @@ -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 | ||
| 7237 | void WebDelegate::StartVibraFeedback(const std::string& vibratorType) | 7234 | void 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::Ace | 7240 | } // 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::NG | 1326 | } // 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) {} | ||
| 194 | private: | 195 | private: |
| 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::NG | 1192 | } // 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::NG | 198 | } // namespace OHOS::Ace::NG |
| 198 | 199 | ||
| @@ -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 | + | ||
| 2423 | bool WebPattern::IsRootNeedExportTexture() | 2427 | bool 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); | ||
| 6499 | + } | ||
| 6500 | +} | ||
| 6490 | } // namespace OHOS::Ace::NG | 6501 | } // 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() const | 489 | 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::NG | 85 | } // namespace OHOS::Ace::NG |
日志打印去掉吧。