luyangyi
8fc7242058
Merge branch 'fix/liveform-app-lock' of git@gitcode.com:luyangyi/ability_form_fwk.git into 'master'
...
# Conflicts:
# conflict services/include/form_mgr/form_lifecycle_adapter.h
2026-08-20 14:26:08 +08:00
luyangyi
824ee8f641
update
...
Signed-off-by: luyangyi <luyangyi2@huawei.com >
2026-08-19 17:38:19 +08:00
luyangyi
a1202d2551
Add form display id want param constant
...
The card host tells the form render service which display a card lives on
through a Want param, so the render side can query that display for its
density instead of relying on an init-time snapshot of the default display.
Define the key once here so the host and the render side share a single
definition, and treat it as an internal render param that is filtered out
when a Want leaves the form domain, the same as form_density and
form_view_scale.
Signed-off-by: luyangyi <luyangyi2@huawei.com >
Co-Authored-By: Claude <noreply@anthropic.com >
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: claude (auto) <ai@local>
Change-Id: Ibfcd6e9ad557fdb20cfe58213abae6042304e6c2
2026-08-19 14:26:06 +08:00
openharmony_ci
8297ab919d
!3781 merge ROM-Constants into master
...
ROM优化:Constants修改
Created-by: weixin_52227816
Commit-by: weixin_52227816
Merged-by: openharmony_ci
Description: **IssueNo**:https://gitcode.com/openharmony/ability_form_fwk/issues/3128
**Description**:
**稳定性自检:**
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | |
| 成员变量进行赋值或创建需要排查并发 | |
| 谨慎在lambda表达式中使用引用捕获 | |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | |
| map\vector\list\set等stl模板类使用时需要排查并发 | |
| 谨慎考虑加锁范围 | |
| 在IPC通信中谨慎使用同步通信方式 | |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | |
| 禁止多个独立创建的智能指针管理同一地址 | |
| 禁止在析构函数中抛异步任务 | |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | |
| 禁止接口返回局部变量引用 | |
| 禁止在信号函数中加锁 | |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | |
| 禁止将同一个cpp编译在不同的so中 | |
**安全编码自检:**
| 自检项 | 自检结果 |
| -------------------------------------------------------------- | -------- |
| 裸指针避免通过隐式转换构造为sptr | |
| json对象在取值之前必须先判断类型,避免类型不匹配 | |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | |
| readParcelable获取的对象使用前需要判空 | |
| 分配和释放内存的函数需要成对出现 | |
| 申请内存后异常退出前需要及时进行内存释放 | |
| 内存申请前必须对内存大小进行合法性校验 | |
| 内存分配后必须判断是否成功 | |
| 禁止使用realloc、alloca函数 | |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | |
| 禁止打印内存地址 | |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | |
| 禁止对有符号整数进行位操作符运算 | |
| 禁止对指针进行逻辑或位运算 | |
| 循环次数如果收外部数据控制,需要检验其合法性 | |
| 禁止使用内存操作类危险函数,需要使用安全函数 | |
| 谨慎使用不可重入函数 | |
| 必须检查安全函数的返回值,并进行正确处理 | |
| 禁止仅通过TokenType类型判断绕过权限校验 | |
**TDD Result**:
**XTS Result**:
### 是否已执行L0用例
- [ ] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3781
2026-08-18 17:37:56 +08:00
openharmony_ci
1e4416e41a
!3767 merge fuzz into master
...
代码优化
Created-by: wutouxu
Commit-by: wutouxu
Merged-by: openharmony_ci
Description: **IssueNo**:
**Description**:
**稳定性自检:**
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | pass |
| 成员变量进行赋值或创建需要排查并发 | pass |
| 谨慎在lambda表达式中使用引用捕获 | pass |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | pass |
| map\vector\list\set等stl模板类使用时需要排查并发 | pass |
| 谨慎考虑加锁范围 | pass |
| 在IPC通信中谨慎使用同步通信方式 | pass |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | pass |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | pass |
| 禁止多个独立创建的智能指针管理同一地址 | pass |
| 禁止在析构函数中抛异步任务 | pass |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | pass |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | pass |
| 禁止接口返回局部变量引用 | pass |
| 禁止在信号函数中加锁 | pass |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | pass |
| 禁止将同一个cpp编译在不同的so中 | pass |
**安全编码自检:**
| 自检项 | 自检结果 |
| -------------------------------------------------------------- | -------- |
| 裸指针避免通过隐式转换构造为sptr | pass |
| json对象在取值之前必须先判断类型,避免类型不匹配 | pass |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | pass |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | pass |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | pass |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | pass |
| readParcelable获取的对象使用前需要判空 | pass |
| 分配和释放内存的函数需要成对出现 | pass |
| 申请内存后异常退出前需要及时进行内存释放 | pass |
| 内存申请前必须对内存大小进行合法性校验 | pass |
| 内存分配后必须判断是否成功 | pass |
| 禁止使用realloc、alloca函数 | pass |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | pass |
| 禁止打印内存地址 | pass |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | pass |
| 禁止对有符号整数进行位操作符运算 | pass |
| 禁止对指针进行逻辑或位运算 | pass |
| 循环次数如果收外部数据控制,需要检验其合法性 | pass |
| 禁止使用内存操作类危险函数,需要使用安全函数 | pass |
| 谨慎使用不可重入函数 | pass |
| 必须检查安全函数的返回值,并进行正确处理 | pass |
| 禁止仅通过TokenType类型判断绕过权限校验 | pass |
**TDD Result**:pass
**XTS Result**:pass
### 是否已执行L0用例
- [x] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3767
2026-08-18 16:15:18 +08:00
wutouxu
139a60fa22
代码优化
...
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Change-Id: I3c594631e4e78deed759e743511797e86d45576d
Signed-off-by: wutouxu <zhaolixue2@huawei.com >
2026-08-18 10:52:02 +08:00
weixin_52227816
8890432f49
ROM优化:Constants修改
...
Signed-off-by: weixin_52227816 <zhuzheng24@huawei.com >
Change-Id: I6c1d64cffce740f573d89be289a469875f46178a
2026-08-14 17:14:21 +08:00
zhangsaiyang1
1c415276ed
修改检视意见
...
Co-Authored-By: None
Signed-off-by: zhangsaiyang1 <zhangsaiyang1@h-partners.com >
2026-08-14 11:05:46 +08:00
openharmony_ci
7d16b080e9
!3762 merge master into master
...
fix: 修复form_fwk空指针、并发竞争、IPC鉴权及整数溢出等安全问题
Created-by: AspTATA
Commit-by: AspTATA
Merged-by: openharmony_ci
Description: **IssueNo**: 3115
**Description**:
- FFI入口新增空指针检查,new(nothrow)返回值判空
- 修复GetBundleMgr与FormSupplyCallback单例DCLP竞争(改call_once)
- SetBackgroundFunction补写InterfaceToken并改用标准SendTransactCmd
- FormHostProxy写token失败后补return,不再继续发送
- GetStringInfo读取失败返回ERR_COMMON_CODE,避免false误判为成功
- SetUIExtCustomDensity新增上界校验与浮点乘法溢出预判
- GetFilesSize累加与LINEAR重试延迟乘法新增整数溢出预判
- Dump入口集中校验系统应用权限
**稳定性自检:**
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | Pass |
| 成员变量进行赋值或创建需要排查并发 | Pass |
| 谨慎在lambda表达式中使用引用捕获 | Pass |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | Pass |
| map\vector\list\set等stl模板类使用时需要排查并发 | Pass |
| 谨慎考虑加锁范围 | Pass |
| 在IPC通信中谨慎使用同步通信方式 | Pass |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | Pass |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | Pass |
| 禁止多个独立创建的智能指针管理同一地址 | Pass |
| 禁止在析构函数中抛异步任务 | Pass |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | Pass |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | Pass |
| 禁止接口返回局部变量引用 | Pass |
| 禁止在信号函数中加锁 | Pass |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | Pass |
| 禁止将同一个cpp编译在不同的so中 | Pass |
**安全编码自检:**
| 自检项 | 自检结果 |
| -------------------------------------------------------------- | -------- |
| 裸指针避免通过隐式转换构造为sptr | Pass |
| json对象在取值之前必须先判断类型,避免类型不匹配 | Pass |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | Pass |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | Pass |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | Pass |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | Pass |
| readParcelable获取的对象使用前需要判空 | Pass |
| 分配和释放内存的函数需要成对出现 | Pass |
| 申请内存后异常退出前需要及时进行内存释放 | Pass |
| 内存申请前必须对内存大小进行合法性校验 | Pass |
| 内存分配后必须判断是否成功 | Pass |
| 禁止使用realloc、alloca函数 | Pass |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | Pass |
| 禁止打印内存地址 | Pass |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | Pass |
| 禁止对有符号整数进行位操作符运算 | Pass |
| 禁止对指针进行逻辑或位运算 | Pass |
| 循环次数如果收外部数据控制,需要检验其合法性 | Pass |
| 禁止使用内存操作类危险函数,需要使用安全函数 | Pass |
| 谨慎使用不可重入函数 | Pass |
| 必须检查安全函数的返回值,并进行正确处理 | Pass |
| 禁止仅通过TokenType类型判断绕过权限校验 | Pass |
**TDD Result**: 不涉及
**XTS Result**: 不涉及
### 是否已执行L0用例
- [ ] 已验证
- [√ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3762
2026-08-11 17:37:11 +08:00
AspTATA
c6bbf9429e
revert: 撤回HandleSetBackgroundFunction及长度校验常量,#23仅修复Proxy端
...
Signed-off-by: AspTATA <xionglinhong1@huawei.com >
2026-08-06 20:45:38 +08:00
AspTATA
7b771b1494
fix: GetFilesSize溢出时保持filesSize与totalSize一致,HandleSetBackgroundFunction补长度校验
...
Signed-off-by: AspTATA <xionglinhong1@huawei.com >
2026-08-06 19:42:38 +08:00
wutouxu
758e32322d
FRS和FMS通信完善
...
AI[25%] Human Fixed[0%] Human[75%] AI Adopted[100%]
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Co-authored-by: opencode (glm-5.1) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Co-authored-by: opencode (glm-5.1) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Co-authored-by: opencode (glm-5.1) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Change-Id: I5c3f124241e476432339bf7b01679c0c5a238384
Signed-off-by: wutouxu <zhaolixue2@huawei.com >
2026-08-06 09:49:54 +08:00
openharmony_ci
2c9ebde49c
!3761 merge security into master
...
fix: add input validation and null checks for security hardening
Created-by: yzy-15
Commit-by: yzy-15
Merged-by: openharmony_ci
Description: **IssueNo**:https://gitcode.com/openharmony/ability_form_fwk/issues/3113
**Description**:
**稳定性自检:**
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | pass |
| 成员变量进行赋值或创建需要排查并发 | pass |
| 谨慎在lambda表达式中使用引用捕获 | pass |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | pass |
| map\vector\list\set等stl模板类使用时需要排查并发 | pass |
| 谨慎考虑加锁范围 | pass |
| while循环谨慎考虑循环条件,避免死循环 | pass |
| 在IPC通信中谨慎使用同步通信方式 | pass |
| 禁止传递this指针至其它模块或线程(特别是eventhandler任务) | pass |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | pass |
| 禁止多个独立创建的智能指针管理同一地址 | pass |
| 禁止在析构函数中抛异步任务 | pass |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | pass |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | pass |
| 禁止接口返回局部变量引用 | pass |
| 禁止在信号函数中加锁 | pass |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | pass |
| 禁止将同一个cpp编译在不同的so中 | pass |
| 谨慎在lambda表达式中捕获FrameNode的强指针(RefPtr)避免循环引用导致内存泄漏 | pass |
| 禁止在PostTask时捕获祼指针或引用,避免发生use-after-free导致crash | pass |
**安全编码自检:**
| 自检项 | 自检结果 |
| -------------------------------------------------------------- | -------- |
| 裸指针避免通过隐式转换构造为sptr | pass |
| json对象在取值之前必须先判断类型,避免类型不匹配 | pass |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | pass |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | pass |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | pass |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | pass |
| readParcelable获取的对象使用前需要判空 | pass |
| 分配和释放内存的函数需要成对出现 | pass |
| 申请内存后异常退出前需要及时进行内存释放 | pass |
| 内存申请前必须对内存大小进行合法性校验 | pass |
| 内存分配后必须判断是否成功 | pass |
| 禁止使用realloc、alloca函数 | pass |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | pass |
| 禁止打印内存地址 | pass |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | pass |
| 禁止对有符号整数进行位操作符运算 | pass |
| 禁止对指针进行逻辑或位运算 | pass |
| 循环次数如果收外部数据控制,需要检验其合法性 | pass |
| 禁止使用内存操作类危险函数,需要使用安全函数 | pass |
| 谨慎使用不可重入函数 | pass |
| 必须检查安全函数的返回值,并进行正确处理 | pass |
| 禁止仅通过TokenType类型判断绕过权限校验 | pass |
**TDD Result**:
**XTS Result**:
### 是否已执行L0用例
- [ ] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3761
2026-08-04 11:26:00 +08:00
yzy-15
60a15d908a
fix: add input validation and null checks for security hardening
...
- ets_form_observer: validate callback/filter params are not undefined
- js_live_form_extension: check moduleName is not empty before CreateModuleContext
- form_supply_stub: validate FormState value range in HandleOnAcquireStateResult
- template_form_detail_info: validate each field read from parcel in ReadFromParcel
- theme_manager_service_param: validate reads and enum ranges in Unmarshall
- form_report: reject invalid formId (<=0) before statistics handling
- form_record_report: check GetFormRecord return value before use
- theme_form_client: validate themeFormDimension/themeFormLocation ranges
- form_host_callback: validate formId and callerToken in OnAcquired
AI[99%] Human Fixed[0%] Human[1%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: I9f58bdc0aa0f433477f57f1eafc4ba41af62a99a
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-03 16:42:56 +08:00
AspTATA
e0f7fb44a8
fix: 评审意见修复:补全Stub handler、收紧校验阈值、补全锁与日志
...
- 补全SetBackgroundFunction的Stub case与Handle函数(form_mgr_stub.cpp/.h)
- SetBundleManager补ibundleMutex_锁,消除与GetBundleMgr锁内读写的数据竞争
- FormSupplyCallback单例改回锁方案,恢复new失败后的重试能力
- MAX_LAYOUT_SCALE从1000.0f收紧至100.0f并提取为具名常量
- GetFilesSize溢出时补filesSize.emplace_back保持长度对应,日志补充说明
- 溢出日志与枚举定义补充density输出与401错误码注释
Signed-off-by: AspTATA <xionglinhong1@huawei.com >
2026-08-03 10:56:53 +08:00
AspTATA
95d41d93be
fix: 修复form_fwk空指针、并发竞争、IPC鉴权及整数溢出等安全问题
...
- FFI入口新增空指针检查,new(nothrow)返回值判空
- 修复GetBundleMgr与FormSupplyCallback单例DCLP竞争(改call_once)
- SetBackgroundFunction补写InterfaceToken并改用标准SendTransactCmd
- FormHostProxy写token失败后补return,不再继续发送
- GetStringInfo读取失败返回ERR_COMMON_CODE,避免false误判为成功
- SetUIExtCustomDensity新增上界校验与浮点乘法溢出预判
- GetFilesSize累加与LINEAR重试延迟乘法新增整数溢出预判
- Dump入口集中校验系统应用权限
Signed-off-by: AspTATA <xionglinhong1@huawei.com >
2026-07-31 17:08:21 +08:00
openharmony_ci
2c87d4d667
!3731 merge master_publish_form into master
...
RequestPublishForm流程优化:前置数量校验+NOT_SUPPORT错误码+入参精简+接口合并
Created-by: xiangcong3
Commit-by: xiangcong3
Merged-by: openharmony_ci
Description: ## 关联 Issue #3050
### 变更内容
本PR包含7个commit,涵盖 RequestPublishForm 流程的前置数量校验、NOT_SUPPORT错误码基础设施、外部错误码独立化、入参精简、接口合并、代码重构:
#### Commit 1: `48e92cb71` feat: 前置数量校验+NOT_SUPPORT错误码+map映射重构
- 新增 `CheckFormCountLimit` 前置校验,在 formId 生成前检查 Host 侧卡片数量是否超限
- `AddFormResultErrorCodes` 枚举新增 `NOT_SUPPORT=5`
- `PublishFormErrorCode` 枚举新增 `NOT_SUPPORT`
- NAPI 导出 + range check 上界更新
- `SetPublishFormResult`/`AcquireAddFormResult` if-else → map 重构(匿名命名空间 ACQUIRE_RESULT_MAP / PUBLISH_RESULT_MAP)
- `CheckAddFormTaskTimeoutOrFailed` 快筛增加 NOT_SUPPORT 条件
#### Commit 2: `da26b5810` refactor: 精简RequestPublishForm/WithSnapshot拆分后的入参
- `RequestPublishForm` 7参→5参(移除 `needCheckFormPermission`)
- Facade/Adapter 层签名同步更新
#### Commit 3: `c599fc261` Merge RequestPublishFormToHost single-arg into two-arg overload
- 删除 `RequestPublishFormToHost(Want)` 和 `QueryPublishFormToHost(Want)` 1参数版
- 统一为2参数版 `(Want, userId)`
- 删除6个重复测试用例
- 更新所有 fuzzer 调用点
#### Commit 4: `14116ab89` Externalize PUBLISH_NO_SPACE and PUBLISH_NOT_SUPPORT error codes
- `form_mgr_errors.h` 新增 `ERR_FORM_EXTERNAL_PUBLISH_NO_SPACE (16501017)` 和 `ERR_FORM_EXTERNAL_PUBLISH_NOT_SUPPORT (16501018)`
- `form_errors.cpp` PUBLISH_NO_SPACE/NOT_SUPPORT 映射独立化,消息移至 EXTERNAL_ERR_RELATED_MSG
#### Commit 5: `746f0fe7d` Refactor AcquireAddFormResult: extract ResolveAcquireResult
- 提取 condition_variable lambda 逻辑为独立 `ResolveAcquireResult` 方法
- 嵌套深度从 7 降至 3,行为不变
#### Commit 6: `27c480304` Fix ResolveAcquireResult unknown state handling and code style issues
- `ResolveAcquireResult` 未知状态 `return false`(继续等待)而非 `return true`
- NOT_SUPPORT message 补充句号
- `#include <unordered_map>` 移至标准库位置
- WithSnapshot COMMON_CODE 映射注释规范
#### Commit 7: `1c7214dbe` fix: restore formDataProxies parameter to FormMgr::RequestPublishFormWithSnapshot
- 恢复 kits 层 `FormMgr::RequestPublishFormWithSnapshot` 的 `formDataProxies` 第5参数(默认值 `{}`)
- 避免跨仓修改 ace_engine(仍传5参数)
- IPC 层保持4参数(与上游一致,formDataProxies 在 kits 层丢弃不传 IPC)
### 涉及文件(19个)
| 文件 | 变更类型 |
|------|----------|
| `@ohos.app.form.formInfo.ets` | NOT_SUPPORT 枚举导出 |
| `js_form_host.cpp` | range check 上界更新 |
| `js_form_info.cpp` | NAPI 导出 NOT_SUPPORT |
| `form_constants.h` | PublishFormErrorCode 新增 NOT_SUPPORT |
| `form_mgr_errors.h` | 新增错误码 + 外部码 |
| `form_errors.cpp` | 外部码映射独立化 |
| `form_common_adapter.h` | AddFormResultErrorCodes 新增 NOT_SUPPORT |
| `form_mgr_adapter_facade.h` | 入参精简 + 1参数版删除 + WithSnapshot声明 |
| `form_publish_adapter.h` | 入参精简 + 1参数版删除 + 新增方法声明 |
| `form_mgr_adapter_facade.cpp` | 入参精简 + 1参数版删除 + WithSnapshot转发 |
| `form_mgr_service.cpp` | WithSnapshot 调用改专用方法 |
| `form_publish_adapter.cpp` | 核心变更:map重构 + 前置校验 + WithSnapshot实现 + ResolveAcquireResult |
| 3个 fuzzer 文件 | 签名适配 |
| `stub_form_publish_adapter.cpp` | 1参数版 stub 删除 |
| `mock_form_bms_helper.cpp` | mock 适配 |
| `mock_form_mgr_adapter_facade.cpp` | mock 适配 |
| `fms_form_publish_adapter_test.cpp` | 删除6个重复用例 + 合并注释 |
### 编译验证
- ✅ 业务编译 `hb build form_fwk -p rk3568 -i` 通过
- ✅ 测试编译 `hb build form_fwk -p rk3568 -t` 通过
### V9 基线一致性检查
- 基线:`gitcode/master` merge base `3425db0be`
- 19个文件全部检查通过,无冗余偏离
- kits层和IPC层与基线零偏离
Closes #3050
See merge request: openharmony/ability_form_fwk!3731
2026-07-30 19:42:30 +08:00
yzy-15
2e95808859
fix: harden JSON parsing safety and input validation in form_fwk
...
- Replace nlohmann::json::parse with SafeJsonParse across 10+ files
- Add type/size/object validation in form_provider_data and form_binding_data
- Add DB corruption recovery in form_info_mgr (remove corrupted entries on InitFromJson failure)
- Add JSON validity check before DB writes in form_info_rdb_storage_mgr
- Buffer file content before parsing in form_module_checker
- Move jsonFormProviderData_ member to private scope
🤖 AI[100%] 🔧 Human Fixed[0%] 🧑 Human[0%] 👌 AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: I6d892b05b77c1453d748a2b8b54bbe9b65ce619e
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-07-29 16:05:59 +08:00
yzy-15
206b948ec7
feat: pass isSystemApp flag through Want to FRS for form vsync gating
...
Add FORM_IS_SYSTEM_APP_KEY constant and pass isSystemApp from
bundleInfo to FRS via Want in FillBundleInfo. In FormRenderRecord
CreateContext and GetContext, read isSystemApp from Want and set
on applicationInfo so that ace_engine can query per-card system
app status for vsync interception policy.
🤖 AI[100%] 🔧 Human Fixed[0%] 🧑 Human[0%] 👌 AI Adopted[100%]
Co-authored-by: opencode (glm-5.1) <ai@local>
Change-Id: Ia1cb2b612ca79232310978be515221800fa2c758
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-07-27 15:22:10 +08:00
xiangcong3
14116ab899
Externalize PUBLISH_NO_SPACE and PUBLISH_NOT_SUPPORT error codes
...
- form_mgr_errors.h: Add ERR_FORM_EXTERNAL_PUBLISH_NO_SPACE (16501017)
and ERR_FORM_EXTERNAL_PUBLISH_NOT_SUPPORT (16501018)
- form_errors.cpp: Change PUBLISH_NO_SPACE mapping from
ERR_FORM_EXTERNAL_FUNCTIONAL_ERROR to ERR_FORM_EXTERNAL_PUBLISH_NO_SPACE
- form_errors.cpp: Change PUBLISH_NOT_SUPPORT mapping from
ERR_FORM_EXTERNAL_FUNCTIONAL_ERROR to ERR_FORM_EXTERNAL_PUBLISH_NOT_SUPPORT
- form_errors.cpp: Remove inline messages from mapping entries,
move to EXTERNAL_ERR_RELATED_MSG for 16501017/16501018
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
🤖 AI[17%] 🔧 Human Fixed[0%] 🧑 Human[83%] 👌 AI Adopted[100%]
2026-07-27 11:45:42 +08:00
xiangcong3
48e92cb717
feat: 前置数量校验+NOT_SUPPORT错误码+map映射重构
...
新增前置校验CheckFormCountLimit,RequestPublishForm/CrossUser入口
在formId生成前检查Host侧卡片数量是否超限,避免无用IPC。
Host数量超限直接返回CheckEnoughForm MAX系列原始码(不做转换)。
NOT_SUPPORT错误码基础设施:
- AddFormResultErrorCodes枚举新增NOT_SUPPORT=5
- PublishFormErrorCode枚举新增NOT_SUPPORT
- ERR_APPEXECFWK_FORM_PUBLISH_NOT_SUPPORT错误码+映射
- NAPI导出+SDK声明+range check上界更新
SetPublishFormResult/AcquireAddFormResult if-else→map重构:
- 匿名命名空间ACQUIRE_RESULT_MAP/PUBLISH_RESULT_MAP
- NOT_SUPPORT作为新增map条目,新增枚举值只需增加条目
CheckAddFormTaskTimeoutOrFailed快筛增加NOT_SUPPORT条件
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
🤖 AI[99%] 🔧 Human Fixed[1%] 🧑 Human[0%] 👌 AI Adopted[59%]
Co-authored-by: opencode (glm-5.1) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
2026-07-27 11:44:50 +08:00
allenlee6
34910ade8e
Merge branch 'master' of git@gitcode.com:allenlee6/ability_form_fwk_7251.git into 'master'
...
# Conflicts:
# conflict services/src/form_mgr/form_data_adapter.cpp
2026-07-23 16:11:47 +08:00
wanrenjie
640ec194d6
Revert "refactor: 优化文件路径脱敏,避免字符串拷贝"
...
This reverts commit 85435e97b4 .
Signed-off-by: wanrenjie <wanrenjie1@huawei.com >
Change-Id: I9f8c7e0374dbbbef8d829718134c781006a4ffd5
2026-07-22 10:12:15 +08:00
allenlee6
4b9d0936c4
update: 更新文件 form_mgr_proxy.h
...
Signed-off-by: allenlee6 <lishengyang5@huawei.com >
2026-07-21 23:14:26 +08:00
wanrenjie
85435e97b4
refactor: 优化文件路径脱敏,避免字符串拷贝
...
Signed-off-by: wanrenjie <wanrenjie1@huawei.com >
Change-Id: I70a380eb961a86cd49025863866ccdc65b1357a4
2026-07-21 16:37:01 +08:00
allenlee6
2a9d2905a3
feat(form_fwk): add updateFormCrossBundle API and full-layer TDD coverage
...
新增 formAgent.updateFormCrossBundle 系统 API(@systemapi,@permission
ohos.permission.UPDATE_FORM_CROSS_BUNDLE),允许系统应用跨 bundle 刷新卡片。
Inner API / Kit / Service / Adapter / NAPI 全链路实现:
- 新增 IPC 消息 FORM_MGR_UPDATE_FORM_CROSS_BUNDLE 及对应 Proxy/Stub
- 新增 IFormMgr::UpdateFormCrossBundle 虚函数(默认实现 ERR_OK)
- 新增 FormMgrService 权限/系统应用/跨本地账户校验
- 新增 FormMgrAdapterFacade 包一层错误码映射
- 新增 FormMgr Kit 接口(含 IN_RECOVERING / Connect / proxy null 防御)
- 新增 JsFormAgent NAPI 入口(Promise 形态,含 handle scope)
- 新增专用错误码 ERR_APPEXECFWK_FORM_PERMISSION_DENY_UPDATE_FORM_CROSS_BUNDLE (2293857)
用于在 201 映射中精准指向 UPDATE_FORM_CROSS_BUNDLE 权限名
测试覆盖(按方案文档 §7 完整对齐):
- Service 测试 8 个用例(fms_form_mgr_service_test)
- Kit 测试 6 个用例(fms_form_mgr_update_form_test)覆盖 IN_RECOVERING / formId<=0 /
formBindingData 空 / Connect 失败 / remoteProxy_ null / 端到端透传
- Proxy 测试 3 个用例(form_mgr_proxy_test)
- Stub 测试 2 个用例(form_mgr_stub_test)
- 新增 NAPI 测试目录 form_agent_napi_test(4 个契约面用例 + BUILD.gn)
- Fuzz 测试扩展 formmgrstubtwo_fuzzer(MESSAGE_LAST=3091 覆盖新消息码)
- Mock 支撑:mock_form_mgr_service.h 新增 UpdateFormCrossBundle 桩
Co-Authored-By: Agent
Signed-off-by: allenlee6 <lishengyang5@huawei.com >
2026-07-18 20:07:02 +08:00
gcw_jtkehB7L
0020a73efc
fix: 日志脱敏处理
...
Signed-off-by: gcw_jtkehB7L <wanrenjie1@huawei.com >
2026-07-15 16:07:56 +08:00
xiangcong3
f2f07d7fd7
feat: 新增NO_SPACE错误码定义及映射
...
AddFormResultErrorCodes新增NO_SPACE枚举值,
新增ERR_APPEXECFWK_FORM_PUBLISH_NO_SPACE内部错误码,
映射到FUNCTIONAL_ERROR(16501000)避免ArkTS API不兼容变更,
message自定义描述there is no space to publish form
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
🤖 AI[100%] 🔧 Human Fixed[0%] 🧑 Human[0%] 👌 AI Adopted[100%]
Co-authored-by: opencode (glm-5.1) <ai@local>
2026-07-11 14:15:23 +08:00
xiangcong3
1f0acd0aca
fix(copyright): 校正 27 个文件末尾年到最后实质修改年
...
首年恢复 commit 的末尾年沿用了误改状态的值, 未反映文件之后的实质
修改。核查 b61efb95 上每个文件最后修改年, 27 个末尾年偏小, 更新到
真实最后修改年(23 个→2026, 4 个→2025)。
Co-Authored-By: Claude <noreply@anthropic.com >
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
🤖 AI[0%] 🔧 Human Fixed[0%] 🧑 Human[100%] 👌 AI Adopted[0%]
2026-07-06 19:56:42 +08:00
xiangcong3
836691785f
fix(copyright): 恢复 58 个源文件版权头首年
...
重构/整改/新增接口类提交曾将版权头从范围式(如 2021-2026)误改为
单年当年(如 2026),丢失首次发布年。按 OpenHarmony license-and-
copyright-specifications §3-3 恢复为 首年-当前年。
依据 git log -p -G 重建每个文件版权首年历史,定位当前首年大于
历史最小首年的文件;独立复核 58/58 通过,且每个文件 Copyright (c)
仅出现 1 次(无测试字符串污染)。
Co-Authored-By: Claude <noreply@anthropic.com >
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
🤖 AI[0%] 🔧 Human Fixed[0%] 🧑 Human[100%] 👌 AI Adopted[0%]
2026-07-06 16:25:50 +08:00
xiangcong3
96087d04e0
校验调整&日志优化
...
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
🤖 AI[0%] 🔧 Human Fixed[0%] 🧑 Human[100%] 👌 AI Adopted[0%]
2026-07-04 17:02:44 +08:00
xiangcong3
2f4bac7745
feat: add parameter validation for RequestPublishFormCrossUser
...
- Add FormUtil::IsForegroundUser to check foreground user (distinct from IsActiveUser)
- Add ERR_APPEXECFWK_FORM_USER_NOT_FOREGROUND error code
- Add ValidatePublishFormParamsForCrossUser as overall validation entry
- Add ValidateParamsForCrossUser: bundleName+moduleName non-empty, dimensionId existence check via HasParameter
- Add ValidateFormInfoMatchForCrossUser: GetFormsInfoByModuleWithoutCheck + abilityName+formName+dimension five-tuple matching
- Add isTemporary force-false in RequestPublishFormCrossUser entry method
- UserId foreground check in FormMgrService (IPC entry, same layer as INVALID_USER_ID check)
- bundleName/abilityName from want.GetElement() (form provider info)
- dimensionId missing treated as invalid (Strategy A, consistent with SDK)
- No dimension SetParam in validate (HasParameter already confirms existence)
- No application installed check (GetFormsInfoByModuleWithoutCheck failure implies not installed)
- Independent validation chain, no reuse of CheckPublishForm
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
🤖 AI[100%] 🔧 Human Fixed[0%] 🧑 Human[0%] 👌 AI Adopted[100%]
Co-authored-by: opencode (glm-5.1) <ai@local>
2026-07-04 11:11:44 +08:00
xiangcong3
26880817a9
ROM optimization: FormAbilityConnection继承切换为AbilityConnectionStub 消除IPC Stub重复代码
...
将FormAbilityConnection从继承ProviderConnectStub改为继承AAFwk::AbilityConnectionStub
两者共享相同的IRemoteStub<IAbilityConnection>基类和接口描述符(ohos.abilityshell.DistributedConnection)
IPC分发逻辑完全一致 AbilityConnectionStub使用unique_ptr管理内存更安全
变更:
- form_ability_connection.h: include和继承声明修改
- BUILD.gn: 增加ability_connect_callback_stub依赖
- 删除ProviderConnectStub源码(provider_connect_stub.h/cpp 128行)及测试
- 删除libfms.map符号导出、测试BUILD.gn引用
- 242个测试BUILD.gn增加ability_connect_callback_stub external_deps
编译验证通过(hb build form_fwk 业务8秒 测试12秒)
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
🤖 AI[100%] 🔧 Human Fixed[0%] 🧑 Human[0%] 👌 AI Adopted[100%]
Co-authored-by: opencode (Sisyphus) <ai@local>
2026-06-25 14:14:38 +08:00
xiangcong3
668b8f2f80
ROM optimization: 删除无效IPC Proxy类 减少9.6KB产物体积
...
删除两个无任何生产代码调用引用的IPC Proxy类:
1. ProviderConnectProxy(189行): AMS模块已有Proxy实现 form_fwk的属于冗余
2. FreeInstallStatusCallBackProxy(115行): 接口描述符与ability_runtime的IAtomicServiceStatusCallback完全相同 BMS通过SendRequest手动构造IPC请求 不依赖任何Proxy实现
编译验证通过 产物大小变化:
- libform_manager.z.so: 358516 -> 351508 (-6.8KB -1.96%)
- libfms.z.so: 1832016 -> 1829200 (-2.8KB -0.15%)
- 合计ROM产物减少: 9.6KB
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
🤖 AI[100%] 🔧 Human Fixed[0%] 🧑 Human[0%] 👌 AI Adopted[100%]
Co-authored-by: opencode (Sisyphus) <ai@local>
2026-06-24 17:13:54 +08:00
openharmony_ci
cba9538bf9
!3669 merge 0513 into master
...
ROUTER_EVENT 增加 URI信息
Created-by: wutouxu
Commit-by: wutouxu
Merged-by: openharmony_ci
Description: **IssueNo**:
**Description**:
**稳定性自检:**
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | pass |
| 成员变量进行赋值或创建需要排查并发 | pass |
| 谨慎在lambda表达式中使用引用捕获 | pass |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | pass |
| map\vector\list\set等stl模板类使用时需要排查并发 | pass |
| 谨慎考虑加锁范围 | pass |
| 在IPC通信中谨慎使用同步通信方式 | pass |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | pass |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | pass |
| 禁止多个独立创建的智能指针管理同一地址 | pass |
| 禁止在析构函数中抛异步任务 | pass |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | pass |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | pass |
| 禁止接口返回局部变量引用 | pass |
| 禁止在信号函数中加锁 | pass |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | pass |
| 禁止将同一个cpp编译在不同的so中 | pass |
**安全编码自检:**
| 自检项 | 自检结果 |
| -------------------------------------------------------------- | -------- |
| 裸指针避免通过隐式转换构造为sptr | pass |
| json对象在取值之前必须先判断类型,避免类型不匹配 | pass |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | pass |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | pass |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | pass |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | pass |
| readParcelable获取的对象使用前需要判空 | pass |
| 分配和释放内存的函数需要成对出现 | pass |
| 申请内存后异常退出前需要及时进行内存释放 | pass |
| 内存申请前必须对内存大小进行合法性校验 | pass |
| 内存分配后必须判断是否成功 | pass |
| 禁止使用realloc、alloca函数 | pass |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | pass |
| 禁止打印内存地址 | pass |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | pass |
| 禁止对有符号整数进行位操作符运算 | pass |
| 禁止对指针进行逻辑或位运算 | pass |
| 循环次数如果收外部数据控制,需要检验其合法性 | pass |
| 禁止使用内存操作类危险函数,需要使用安全函数 | pass |
| 谨慎使用不可重入函数 | pass |
| 必须检查安全函数的返回值,并进行正确处理 | pass |
| 禁止仅通过TokenType类型判断绕过权限校验 | pass |
**TDD Result**:pass
**XTS Result**:pass
### 是否已执行L0用例
- [x] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3669
2026-06-21 15:42:08 +08:00
wutouxu
b5b20ba74f
ROUTER_EVENT 增加 URI信息
...
Change-Id: I5b9bfb84e835aa3be0064aa76fa69ecb1f949dee
Signed-off-by: wutouxu <zhaolixue2@huawei.com >
Co-Authored-By: Agent <agent@openclaw.ai >
2026-06-21 10:06:20 +08:00
openharmony_ci
6e3284df08
!3654 merge 0513 into master
...
ReloadForm WriteParcelableVector 失败问题修复
Created-by: wutouxu
Commit-by: wutouxu
Merged-by: openharmony_ci
Description: **IssueNo**: 2997
**Description**: ReloadForm WriteParcelableVector 失败问题修复
**稳定性自检:**
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | pass |
| 成员变量进行赋值或创建需要排查并发 | pass |
| 谨慎在lambda表达式中使用引用捕获 | pass |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | pass |
| map\vector\list\set等stl模板类使用时需要排查并发 | pass |
| 谨慎考虑加锁范围 | pass |
| 在IPC通信中谨慎使用同步通信方式 | pass |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | pass |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | pass |
| 禁止多个独立创建的智能指针管理同一地址 | pass |
| 禁止在析构函数中抛异步任务 | pass |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | pass |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | pass |
| 禁止接口返回局部变量引用 | pass |
| 禁止在信号函数中加锁 | pass |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | pass |
| 禁止将同一个cpp编译在不同的so中 | pass |
**安全编码自检:**
| 自检项 | 自检结果 |
| -------------------------------------------------------------- | -------- |
| 裸指针避免通过隐式转换构造为sptr | pass |
| json对象在取值之前必须先判断类型,避免类型不匹配 | pass |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | pass |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | pass |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | pass |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | pass |
| readParcelable获取的对象使用前需要判空 | pass |
| 分配和释放内存的函数需要成对出现 | pass |
| 申请内存后异常退出前需要及时进行内存释放 | pass |
| 内存申请前必须对内存大小进行合法性校验 | pass |
| 内存分配后必须判断是否成功 | pass |
| 禁止使用realloc、alloca函数 | pass |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | pass |
| 禁止打印内存地址 | pass |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | pass |
| 禁止对有符号整数进行位操作符运算 | pass |
| 禁止对指针进行逻辑或位运算 | pass |
| 循环次数如果收外部数据控制,需要检验其合法性 | pass |
| 禁止使用内存操作类危险函数,需要使用安全函数 | pass |
| 谨慎使用不可重入函数 | pass |
| 必须检查安全函数的返回值,并进行正确处理 | pass |
| 禁止仅通过TokenType类型判断绕过权限校验 | pass |
**TDD Result**:pass
**XTS Result**:pass
### 是否已执行L0用例
- [x] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3654
2026-06-13 17:09:24 +08:00
wutouxu
aa1d1dbe7e
ReloadForm WriteParcelableVector 失败问题修复
...
Change-Id: I9a710dbb432aa9932dc9869bc2da6a202e36645d
Signed-off-by: wutouxu <zhaolixue2@huawei.com >
Co-Authored-By: Agent <agent@openclaw.ai >
2026-06-13 10:12:27 +08:00
openharmony_ci
d95f8c482d
!3622 merge 0527 into master
...
DFX错误码优化
Created-by: zhangsaiyang1
Commit-by: zhangsaiyang1
Merged-by: openharmony_ci
Description: **IssueNo**:
**Description**:
**稳定性自检:**
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | |
| 成员变量进行赋值或创建需要排查并发 | |
| 谨慎在lambda表达式中使用引用捕获 | |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | |
| map\vector\list\set等stl模板类使用时需要排查并发 | |
| 谨慎考虑加锁范围 | |
| 在IPC通信中谨慎使用同步通信方式 | |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | |
| 禁止多个独立创建的智能指针管理同一地址 | |
| 禁止在析构函数中抛异步任务 | |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | |
| 禁止接口返回局部变量引用 | |
| 禁止在信号函数中加锁 | |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | |
| 禁止将同一个cpp编译在不同的so中 | |
**安全编码自检:**
| 自检项 | 自检结果 |
| -------------------------------------------------------------- | -------- |
| 裸指针避免通过隐式转换构造为sptr | |
| json对象在取值之前必须先判断类型,避免类型不匹配 | |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | |
| readParcelable获取的对象使用前需要判空 | |
| 分配和释放内存的函数需要成对出现 | |
| 申请内存后异常退出前需要及时进行内存释放 | |
| 内存申请前必须对内存大小进行合法性校验 | |
| 内存分配后必须判断是否成功 | |
| 禁止使用realloc、alloca函数 | |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | |
| 禁止打印内存地址 | |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | |
| 禁止对有符号整数进行位操作符运算 | |
| 禁止对指针进行逻辑或位运算 | |
| 循环次数如果收外部数据控制,需要检验其合法性 | |
| 禁止使用内存操作类危险函数,需要使用安全函数 | |
| 谨慎使用不可重入函数 | |
| 必须检查安全函数的返回值,并进行正确处理 | |
| 禁止仅通过TokenType类型判断绕过权限校验 | |
**TDD Result**:
**XTS Result**:
### 是否已执行L0用例
- [ ] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3622
2026-05-28 18:20:09 +08:00
openharmony_ci
b8eabb4b5b
!3617 merge hievent into master
...
数据结构整改降ROM
Created-by: wutouxu
Commit-by: wutouxu
Merged-by: openharmony_ci
Description: **IssueNo**:
**Description**:
**稳定性自检:**
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | pass |
| 成员变量进行赋值或创建需要排查并发 | pass |
| 谨慎在lambda表达式中使用引用捕获 | pass |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | pass |
| map\vector\list\set等stl模板类使用时需要排查并发 | pass |
| 谨慎考虑加锁范围 | pass |
| 在IPC通信中谨慎使用同步通信方式 | pass |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | pass |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | pass |
| 禁止多个独立创建的智能指针管理同一地址 | pass |
| 禁止在析构函数中抛异步任务 | pass |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | pass |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | pass |
| 禁止接口返回局部变量引用 | pass |
| 禁止在信号函数中加锁 | pass |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | pass |
| 禁止将同一个cpp编译在不同的so中 | pass |
**安全编码自检:**
| 自检项 | 自检结果 |
| -------------------------------------------------------------- | -------- |
| 裸指针避免通过隐式转换构造为sptr | pass |
| json对象在取值之前必须先判断类型,避免类型不匹配 | pass |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | pass |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | pass |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | pass |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | pass |
| readParcelable获取的对象使用前需要判空 | pass |
| 分配和释放内存的函数需要成对出现 | pass |
| 申请内存后异常退出前需要及时进行内存释放 | pass |
| 内存申请前必须对内存大小进行合法性校验 | pass |
| 内存分配后必须判断是否成功 | pass |
| 禁止使用realloc、alloca函数 | pass |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | pass |
| 禁止打印内存地址 | pass |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | pass |
| 禁止对有符号整数进行位操作符运算 | pass |
| 禁止对指针进行逻辑或位运算 | pass |
| 循环次数如果收外部数据控制,需要检验其合法性 | pass |
| 禁止使用内存操作类危险函数,需要使用安全函数 | pass |
| 谨慎使用不可重入函数 | pass |
| 必须检查安全函数的返回值,并进行正确处理 | pass |
| 禁止仅通过TokenType类型判断绕过权限校验 | pass |
**TDD Result**:pass
**XTS Result**:pass
### 是否已执行L0用例
- [x] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3617
2026-05-28 17:32:47 +08:00
zhangsaiyang1
9354a25a72
DFX错误码优化
...
Co-Authored-By: Agent
Signed-off-by: zhangsaiyang1 <zhangsaiyang1@h-partners.com >
2026-05-27 15:52:38 +08:00
wutouxu
4f2ca52896
数据结构整改降ROM
...
Change-Id: Ibae778e0c73804ab950b08e385cc7fa30ab6d6cf
Signed-off-by: wutouxu <zhaolixue2@huawei.com >
Co-Authored-By: Agent <agent@openclaw.ai >
2026-05-27 09:31:30 +08:00
allenlee6
9f15e73d63
feat: add DeleteForms API and comprehensive test coverage
...
新增DeleteForms批量删除卡片功能:
- 新增FormRecordFilter数据结构用于过滤卡片
- 新增RegisterDeleteFormsCallback/UnregisterDeleteFormsCallback回调接口
- 新增DeleteForms接口支持批量删除卡片
- 完善IPC层Proxy/Stub实现
- 完善Service层权限验证
- 完善Adapter层回调机制
测试覆盖:
- 新增FormRecordFilterTest单元测试套(15个用例)
- 补充Proxy/Stub层测试(25个用例)
- 补充Service层测试(9个用例)
- 补充Adapter层测试(5个用例)
- 更新BUILD.gn配置
覆盖率:91.7%,核心业务逻辑100%覆盖
Co-Authored-By: Agent
Signed-off-by: allenlee6 <lishengyang5@huawei.com >
2026-05-26 14:13:51 +08:00
wutouxu
c190dcf65e
HiSysEvent整改
...
Change-Id: I4181bec2d63b88ed5132a850356971b5bc92dcbe
Signed-off-by: wutouxu <zhaolixue2@huawei.com >
Co-Authored-By: Agent <agent@openclaw.ai >
2026-05-23 17:53:50 +08:00
openharmony_ci
0b5d87f319
!3534 merge master into master
...
FormWant类设计与实现,接口优化与职责分离
Created-by: xiangcong3
Commit-by: xiangcong3
Merged-by: openharmony_ci
Description: ## Issue关联
**Issue**:#2887 【需求】升级克隆重建卡场景优化:FormWant类实现 + hostWant缓存优化
**Issue链接**:https://gitcode.com/openharmony/ability_form_fwk/issues/2887
---
## 提交概述
本次PR包含以下主要修改:
**1. FormWant类设计与实现(简化设计)**
- interfaces/inner_api/include/form_want.h(250行)
- interfaces/inner_api/src/form_want.cpp(229行)
- Want成员 + shared_mutex读写锁 + IsEmpty判断
- FilterInternalParams过滤接口(14个内部参数)
- ExtractHostParamsToWant参数提取接口
**2. UpdateHostWant参数控制**
- 新增shouldMerge参数(默认false)
- AddForm场景传false:赋值更新
- RequestForm场景传true:合并更新
- 9调用位置验证(7 AddForm + 2 RequestForm)
**3. GetFormHostParams删除**
- 删除语义不明确的包装函数
- 3调用改为formRecord.hostWant.ExtractHostParamsToWant
**4. CheckIsAddFormByHost与AllotForm职责分离**
- CheckIsAddFormByHost:IS_ADD_FORM_BY_HOST判断,参数提取
- AllotForm:IS_ADD_FORM_BY_HOST条件控制UpdateHostWant调用
- IS_ADD_FORM_BY_HOST注释:区分FormComponent与其他AddForm场景
**5. FormRecord属性重构**
- wantCacheMap → refreshWant(FormWant)
- formHostParams → hostWant(FormWant)
**6. 函数重命名**
- UpdateFormWant → UpdateRefreshWant
- UpdateFormHostParams → 合并到UpdateHostWant
---
## 主要改动文件
| 文件 | 改动类型 | 说明 |
|------|---------|------|
| `interfaces/inner_api/include/form_want.h` | 新增 | FormWant类头文件(250行) |
| `interfaces/inner_api/src/form_want.cpp` | 新增 | FormWant类实现(229行) |
| `services/include/data_center/form_data_mgr.h` | 修改 | 接口优化(12处修改) |
| `services/src/data_center/form_data_mgr.cpp` | 修改 | 接口实现调整(64处修改) |
| `services/include/data_center/form_record/form_record.h` | 修改 | 缓存属性改造 |
| `services/src/form_mgr/form_lifecycle_adapter.cpp` | 修改 | CheckIsAddFormByHost职责分离 |
| `services/src/form_mgr/form_mgr_adapter.cpp` | 修改 | AllotForm条件控制 |
| `test/unittest/fms_form_want_test/fms_form_want_test.cpp` | 新增 | FormWant单元测试(288行) |
---
## 技术亮点
### 1. 简化设计
- 单数据源:仅用want_存储所有参数
- 代码规模:250行(头文件)+ 229行(实现)
### 2. 线程安全
- FormWant内置shared_mutex读写锁
- FormDataMgr全局mutex保护formRecords_
- 拷贝构造和赋值运算符使用std::lock避免死锁
### 3. 部分更新策略
- UpdateHostWantSize只更新尺寸参数,避免全量覆盖
- 防止覆盖业务参数(用户自定义参数)
### 4. 参数控制逻辑
- UpdateHostWant新增shouldMerge参数
- AddForm场景传false(赋值更新)
- RequestForm场景传true(合并更新)
### 5. 职责分离
- CheckIsAddFormByHost:IS_ADD_FORM_BY_HOST判断,参数提取
- AllotForm:IS_ADD_FORM_BY_HOST条件控制UpdateHostWant调用
---
## 符合规范
- ✅ 命名规范:类名大驼峰、方法名大驼峰、成员变量下划线后缀
- ✅ 注释规范:英文注释、简洁准确
- ✅ 线程安全:内置读写锁、全局互斥锁、死锁防护
- ✅ 单元测试:HWTEST_F格式、288行测试代码
- ✅ 格式规范:符合.clang-format配置(OpenHarmony标准)
---
## 编译验证
- ✅ FormWant类编译成功
- ✅ FormWant单元测试通过(待执行)
- ✅ clang-format验证通过
- ✅ 线程安全验证通过
---
## 提交统计
**总计**:26文件,942新增,136删除
**接口精简**:12 → 11个核心接口
**函数删除**:SetWant、GetFormHostParams
---
## Co-Authored-By
Agent(AI辅助开发)
Change-Id: I50c1cdd60397a0c1449b831023b59885ee90b9b8
See merge request: openharmony/ability_form_fwk!3534
2026-05-20 11:28:29 +08:00
xiangcong3
cc140f1a93
修复代码检视问题
...
1. MergeFrom/MergeWantParams性能优化:先获取参数容器再遍历,避免每次迭代调用GetParams
2. FormWant_Constructor_Default_001:删除冗余断言size()==0(与empty()等价)
3. FormWant_GetParam_001:删除重复HasParameter断言,新增GetIntParam值验证
4. FormWant::RemoveParam:添加函数注释说明auto write lock
5. 中文注释改为英文:测试方法论注释翻译
Co-Authored-By: Agent
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
2026-05-19 17:16:29 +08:00
李肖葛
a25338e910
卡片框架打点优化
...
Co-Authored-By:lixiaoge
Signed-off-by: 李肖葛 <lixiaoge1@huawei.com >
2026-05-19 16:04:19 +08:00
li-xiaoge1
bfd6376ff4
Merge branch 'master' of git@gitcode.com:li-xiaoge1/ability_form_fwk.git into 'master'
...
# Conflicts:
# conflict interfaces/inner_api/include/form_mgr_errors.h
2026-05-19 14:45:48 +08:00
李肖葛
958c9fb785
卡片框架打点优化
...
Co-Authored-By:lixiaoge
Signed-off-by: 李肖葛 <lixiaoge1@huawei.com >
2026-05-19 10:46:03 +08:00
xiangcong3
c78fe28f5a
修正文件头版权年份格式,单年份改为[创建年份]-[最后修改年份]
...
Co-Authored-By: Agent
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
2026-05-19 09:31:14 +08:00