当前Pull Request已关闭, 关闭人@openharmony_dcp
修改责任田 @arkweb-committer-group 相关代码, 请根据修改内容联系以下人员检视后评论"pass"后消分:
[web-交互安全 libing] @libing23232323
[web-渲染 lvjunmao] @LongLie
[web-渲染性能 wudefeng] @defeng2020
[web-事件交互 zhufenghao] @zhufenghao
[web-性能优化 qianliangfang] @qianlf
[web-性能优化 liurongliang] @bc_yx
[web-稳定性&DFX chenshijun] @hjoksky
[web-南向 zhangyinglie] @zhang-yinglie
[web-多媒体 liweiyang] @whuqincheng
[web-网络加载 chenjiadong] @chenjiadong
您可通过评论"list commands"来查询命令列表。
You can leave a "list commands" comment to get commands list.


AI检视任务后台执行中,稍候返回结果。
The AI Review task is being executed in the background and will return results shortly.
您可通过评论"list commands"来查询命令列表。
You can leave a "list commands" comment to get commands list.


| check type | result | details | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TDD检查/TDD check | pass | - | |||||||||||||||||||||||||||
| 检视意见检查/Review Comments Check | fail | 🔍 点击查看详情/click to show details
检视意见数量未达标(详情见上述表格),请联系组内成员积极进行代码检视。 The count of review comments falls short of the target (as detailed in the table above).Please contact your team to actively review your code. |
|||||||||||||||||||||||||||
| 提交信息检查/Commit Message Check | fail | 🔍 点击查看详情/click to show details若当前提交信息与模板不同,请查看本代码库master分支的.gitcode目录下的PULL_REQUEST_TEMPLATE.md文件,点击"源码"旁边的"复制",然后编辑本次提交信息,粘贴复制的模板,再进行相应的修改。If the current commit message differs from the template, please refer to the PULL_REQUEST_TEMPLATE.md file in the .gitcode directory of this repository's master branch. Click 'Copy' next to 'Source Code', then edit your commit message, paste the copied template, and make the necessary modifications.
|
|||||||||||||||||||||||||||
| 头文件引用计数检查/Header File Check | pass | - | |||||||||||||||||||||||||||
| 多线程映射检查/Multi-Thread Mapping Check | pass | - |
新开PR检查失败。
Check PR When Open failed.
您可通过评论"list commands"来查询命令列表。
You can leave a "list commands" comment to get commands list.


感谢提交 Pull Requests!如果您提交的PR已经开发完毕,请评论 "start build" 触发门禁,更多交互操作,请访问OpenHarmony社区支持命令清单。如果需要调整订阅PR、Issue的变更状态,请访问订阅链接。
Thanks for submitting the pull request. If your Pull Request has already been developed, you can leave a "start build" comment to trigger the gated system. For more commands, please visit OpenHarmony Command List. If you need to change the subscription of a Pull Request or Issue, please visit the link.


start build


首次触发
门禁构建开始,包含静态检查、代码编译和测试【dayu200编译, dayu200_xts编译, ohos-sdk编译, master_inner_build编译, dayu200-codearts编译, dayu200测试, dayu200_xts_acts编译, dayu200_xts_static编译, arkui_tdd编译, mac-sdk编译, hap_build编译, part_compile编译】,预计在60分钟内完成,门禁结果会同步发送到注册邮箱。您可以通过如下链接跟踪门禁进展:http://dcp.openharmony.cn/workbench/cicd/detail/694cee8564650f998bbfdbca/runlist


⚠️ 🤖 AI 代码检视报告 ⚠️
总体评估: NEEDS_ATTENTION
问题统计:
- 总问题数: 3
- 严重问题: 0
- 高危问题: 3
摘要:
该代码修复了Select标签弹出时失焦的缺陷,但引入了基于全局布尔标志位的脆弱状态逻辑,且缺乏针对该标志位的线程同步保护,存在潜在的并发竞态条件和状态不一致风险。
📊 详细报告
查看完整的审查详情,包括具体的问题描述、建议和代码位置:
🔗 查看详细报告
此评论由 OpenHarmony Insight 代码审查系统自动生成


🤖 AI 代码检视意见(回复本评论可解决检视意见,点击被检视代码行左侧的小头像可收起检视意见)
🟠 潜在的并发数据竞态
位置: L1186-L1188 | 严重程度: High
❓ 问题描述
代码直接读取成员变量 selectPopupMenuShowing_ 而未使用内存屏障或原子操作。在典型的Web组件架构中,Web内核(渲染进程/线程)通常通过回调通知UI线程更新状态。如果 selectPopupMenuShowing_ 是在Web内核线程中被设置,而在此处(通常在UI线程)被读取,这将构成C++内存模型下的数据竞争,导致未定义行为或读取到陈旧值。
💡 修复建议
确保 selectPopupMenuShowing_ 的声明和访问是线程安全的。如果该变量可能被多线程访问,请将其声明为 std::atomic<bool> 或者在读写操作时使用互斥锁保护。此外,建议添加断言确保该方法在预期的线程(UI线程)上执行。
// 在头文件中声明
std::atomic<bool> selectPopupMenuShowing_ {false};
// 或者确保单线程访问
CHECK_RUN_ON(UIThread);
if (selectPopupMenuShowing_.load(std::memory_order_acquire)) { ... }


🤖 AI 代码检视意见(回复本评论可解决检视意见,点击被检视代码行左侧的小头像可收起检视意见)
🟡 状态标志位管理逻辑脆弱
位置: L1186-L1188 | 严重程度: Medium
❓ 问题描述
使用 if (selectPopupMenuShowing_) { return; } 进行早期返回,会无条件跳过后续所有的菜单事件处理逻辑。这是一种隐式的控制流依赖。如果 selectPopupMenuShowing_ 标志位因异常流程(如页面崩溃销毁、嵌套菜单逻辑错误)未能被正确重置为 false,将导致该Web组件后续所有的上下文菜单事件被静默忽略,造成严重的功能失效且难以调试。
💡 修复建议
增加对标志位有效性的校验,或者在日志中明确记录被拦截的事件类型,以便排查故障。同时,应确保在页面销毁(OnDetach/Dispose)时强制重置该状态机。
if (selectPopupMenuShowing_) {
TAG_LOGW(AceLogTag::ACE_WEB, "Menu event ignored due to select popup showing: %{public}d", static_cast<int>(menuLifeCycleEvent));
return;
}


🤖 AI 代码检视意见(回复本评论可解决检视意见,点击被检视代码行左侧的小头像可收起检视意见)
🟡 生命周期事件切换风险
位置: L1192 | 严重程度: Medium
❓ 问题描述
将处理逻辑从 ON_DID_DISAPPEAR(已消失)移动到 ON_WILL_DISAPPEAR(将消失)。如果框架层支持取消关闭操作,或者 ON_WILL_DISAPPEAR 触发后菜单未实际关闭,此时 isMenuShownFromWeb_ 已被置为 false,会导致状态与UI实际表现不一致。此外,结合新增的 selectPopupMenuShowing_ 守卫逻辑,如果 Select 弹窗触发 ON_WILL_DISAPPEAR,isMenuShownFromWeb_ 的状态流转需要仔细推演以避免逻辑死锁。
💡 修复建议
请确认 Ace 框架中 Menu 的 ON_WILL_DISAPPEAR 是否允许中止。如果允许,必须考虑回滚逻辑;如果不允许,建议添加注释说明为什么 WILL 阶段更适合处理此逻辑,以及它如何与 Select 弹窗的生命周期交互。


代码门禁未通过
您可以通过如下链接查看门禁报告:http://dcp.openharmony.cn/workbench/cicd/detail/694cee8564650f998bbfdbca/runlist
静态检查:
| # | check type | result | report |
|---|---|---|---|
| 1 | codeCheck | code check time out | >>> |
编译测试:
| # | Device | build result | test result | package |
|---|---|---|---|---|
| 1 | ohos-sdk | success | NA | >>> |
| 2 | dayu200 | success | success | >>> |
| 3 | dayu200_xts | success | NA | >>> |
| 4 | hap_build | success | NA | >>> |
| 5 | arkui_tdd | success | NA | >>> |
| 6 | part_compile | success | NA | >>> |
| 7 | dayu200_xts_acts | success | NA | >>> |
| 8 | dayu200_xts_static | success | NA | >>> |
| 9 | master_inner_build | failed(IGNORE)(联合门禁失败) | NA | >>> |
| 10 | mac-sdk | success | NA | >>> |
| 11 | dayu200-codearts | failed(IGNORE)(codearts build exception) | NA | >>> |


pass


@arkweb-committer-group 加分已记录。
若本次加分失败,请您在所有管控项通过后,评论"self check"可恢复加分,无需再找CodeOwner进行加分。
If the current review fails, you can restore the review by commenting 'self check' once all check items are passed. No further action from the CodeOwner is required.
您可通过评论"list commands"来查询命令列表。
You can leave a "list commands" comment to get commands list.


| check type | result | details |
|---|---|---|
| 提交信息检查/Commit Message Check | pass | - |
| TDD检查/TDD check | pass | - |
| 检视意见检查/Review Comments Check | pass | - |
| 头文件引用计数检查/Header File Check | pass | - |
| 多线程映射检查/Multi-Thread Mapping Check | pass | - |
@zhufenghao 已评审通过, 责任田 @arkweb-committer-group 已加分, 满足合入条件后请联系Commiter审核加分
您可通过评论"list commands"来查询命令列表。
You can leave a "list commands" comment to get commands list.


您好, @ia_oi 该PR需要您响应,已过去25天未响应,请根据检视意见进行修改,如5天内未响应检视意见,此PR会被自动关闭。关闭后的PR,如有需要,您可以自行打开该PR。


您的PR超过一个月未合入,已经被自动关闭,如有需要您可以重新提交代码进行贡献。


IssueNo:https://gitcode.com/openharmony/arkui_ace_engine/issues/70376
Description: (提交描述)fix select标签弹出后不失焦
Sig: SIG_ApplicationFramework
Binary Source: No(涉及则Yes)
请勿修改以下选项内容,仅需保存后点击复选框,或在编辑时将对应项前面的
[ ]改为[x]Do not modify the following option content. Simply save and click the checkbox, or when editing, change
[ ]to[x]for the relevant item.Feature or Bugfix
是否涉及非兼容变更/Whether it involves incompatible changes
TDD自验结果/TDD Self-Verification Results
XTS自验结果/XTS Self-Verification Results
检视意见是否都已闭环/Have all review comments been resolved
是否已执行L0用例