0
Fork 0
mirror of https://github.com/Silent1566/webhtv.git synced 2026-10-08 19:44:46 +00:00

fix(dialog): 弹窗改用主题覆盖层,阻止控件 tint 泄漏到系统编辑菜单

BaseAlertDialog.builder() 此前把圆角面板控件样式 MaterialAlertDialog_WebHTV_Rounded
作为 themeResId 传入,使其 backgroundTint 成为对话框上下文级属性,并被系统浮动编辑菜单
(复制/粘贴)的 AppCompat ImageButton 继承。vivo 绘制类在 mutate() 该背景时抛出
ClassCastException,导致弹幕接口输入处长按即崩溃。

圆角本已由 ThemeOverlay.WebHTV.Dialog 的 alertDialogStyle 指向同一控件样式,
面板外观不变;改用主题覆盖层后 tint 不再泄漏。

验证:
- 新增设备回归 DanmakuApiDialogDeviceTest(tint 不泄漏、面板样式仍为 Rounded、
  复制/剪切/粘贴、浮动工具栏可创建、保存与取消、IME 完成),旧代码 RED、新代码 OK (3 tests)。
- DialogRoundedCornerSourceTest 收紧为断言主题覆盖层,mobile/leanback 均通过。

限制:本地为 Android 9 模拟器,未在 vivo V2307A / Android 14 真机复测。

Verification: 手机源码回归 testMobileArm64_v8aDebugUnitTest DialogRoundedCornerSourceTest 2/2 通过;TV 源码回归 testLeanbackArm64_v8aDebugUnitTest 同用例 2/2 通过;192.168.50.3:5557 设备回归 DanmakuApiDialogDeviceTest OK (3 tests);旧代码上两项均 RED(源码断言命中 theme overlay,设备断言命中 panel backgroundTint leaked into system text actions);覆盖安装未清除应用数据

Task-Guard: FIX-DANMAKU-VIVO-20261007
This commit is contained in:
Silent1566 2026-10-07 14:26:36 +08:00
commit 7596ebabb7
4 changed files with 287 additions and 4 deletions