611 Commits

Author SHA1 Message Date
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