Bug #111677

测试 Test-IT #110867: V1.0测试功能汇总

测试 Test-IT #110887: AF-V1.0功能测试-手势-任务管理器

【AF】【EVT】【手势交互】-底部上滑无法打开任务管理器

Added by CDTS_TEST 王成 almost 3 years ago. Updated over 2 years ago.

Status:CLOSEDStart date:2022-09-02
Priority:HighDue date:2022-09-04
Assignee:CD Test赵飞% Done:

100%

Category:CD-APP
Target version:-
Need_Info: Found Version:-
Resolution:FIXED Degrated:
Severity:Critical Verified Version:
Reproducibility:Every time Fixed Version:2022-09-03
Test Type:CT Root cause:编码问题

Description

测试版本:FlatBuild_VX1_MCE_xx.xx_FSE.R.userdebug.0.0.0.20220901.alpha_008.zip

【前提条件】
1、设备已开机
2、处于桌面或任意一个应用页面

【测试步骤】
1、手指从屏幕底部向上滑动并短暂停留
2、使用投屏工具显示画面,用鼠标从底部向上滑动并短暂停留,模拟屏幕上的触控

【预期结果】
屏幕上的操作和投屏工具上的操作,都能打开任务管理器

【实际结果】
1、以上操作匀无法打开任务管理器
2、8.31号的DB版本,该功能正常可用(FlatBuild_VX1_MCE_xx.xx_FSE.D.userdebug.0.0.0.20220831.alpha.zip)

【复现率】
必现

tpfail-9.1.log (815 KB) CDTS_TEST 王成, 2022-09-02 10:47

History

#1 Updated by CD Test赵飞 almost 3 years ago

  • Tracker changed from 测试 Test-IT to Bug

#2 Updated by CD FW-王伟 almost 3 years ago

  • Assignee changed from CD FW-王伟 to CD APP-王营
  • Severity set to Critical
  • Reproducibility set to Every time
  • Test Type set to CT
  • Found Version set to -

#3 Updated by CD FW-鲁凯峰 almost 3 years ago

■ Current state
底部无法上滑打开历史记录界面是由于SystemUI默认把QuickSettings展开显示了,导致Launcher滑动时判断出错,没有对手势进行处理。

■ My Analyze
当在Launcher的底部向上滑动的时候,首先收到Input事件的在TouchInteractionService#onInputEvent

TouchInteractionService#onInputEvent

1.当收到ACTION_DOWN事件的时候,会调用newConsumer去创建一个新的InputConsumer对象

private void onInputEvent(InputEvent ev) {
        ...
        if (action == ACTION_DOWN || isMultPointer) {
            ...
            if (!mDeviceState.isOneHandedModeActive()
                    && mRotationTouchHelper.isInSwipeUpTouchRegion(event) || isMultPointer) {
                // Clone the previous gesture state since onConsumerAboutToBeSwitched might trigger
                // onConsumerInactive and wipe the previous gesture state
                ...
                mConsumer = newConsumer(prevGestureState, mGestureState, event);    // 创建新的InputConsumer对象

                ActiveGestureLog.INSTANCE.addLog("setInputConsumer: " + mConsumer.getName());
                mUncheckedConsumer = mConsumer;        //赋值给mUncheckedConsumer
            }
        //回调给对应的InputConsumer
        mUncheckedConsumer.onMotionEvent(event);
        ....
}

2. 在newConsumer创建新的InputConsumer对象时,会根据canStartSystemGesture的状态来判断是否要创建一个新的InputConsumer对象,还是获取默认的InputConsumer对象

    private InputConsumer newConsumer(GestureState previousGestureState,
            GestureState newGestureState, MotionEvent event) {
        boolean canStartSystemGesture = mDeviceState.canStartSystemGesture();
        ...
        // When there is an existing recents animation running, bypass systemState check as this is
        // a followup gesture and the first gesture started in a valid system state.
        InputConsumer base = canStartSystemGesture
                || previousGestureState.isRecentsAnimationRunning()
                        ? newBaseConsumer(previousGestureState, newGestureState, event)
                        : getDefaultInputConsumer();  
    }

对比正常和非正常的现象,canStartSystemGesture的值不一样

正常情况:canStartSystemGesture = true
非正常情况:canStartSystemGesture = false

3.在canStartSystemGesture的判断中,会根据mSystemUiStateFlags的状态来判断是否可以开始系统手势的处理


  public boolean canStartSystemGesture() {
        boolean canStartWithNavHidden = (mSystemUiStateFlags & SYSUI_STATE_NAV_BAR_HIDDEN) == 0
                || (mSystemUiStateFlags & SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY) != 0
                || mRotationTouchHelper.isTaskListFrozen();
        return canStartWithNavHidden
                && (mSystemUiStateFlags & SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED) == 0
                && (mSystemUiStateFlags & SYSUI_STATE_QUICK_SETTINGS_EXPANDED) == 0
                && (mSystemUiStateFlags & SYSUI_STATE_MAGNIFICATION_OVERLAP) == 0
                && ((mSystemUiStateFlags & SYSUI_STATE_HOME_DISABLED) == 0
                        || (mSystemUiStateFlags & SYSUI_STATE_OVERVIEW_DISABLED) == 0);
    }

通过对比正常和非正常的情况的log可以看出,SYSUI_STATE_QUICK_SETTINGS_EXPANDED是不一样的

非正常情况:
09-02 03:35:22.235 11275 11275 D TouchInteractionService: onInputEvent : 0
09-02 03:35:22.239 11275 11275 D lukaifeng: canStartWithNavHidden : true
09-02 03:35:22.240 11275 11275 D lukaifeng: SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED : true
09-02 03:35:22.240 11275 11275 D lukaifeng: SYSUI_STATE_QUICK_SETTINGS_EXPANDED : false
09-02 03:35:22.240 11275 11275 D lukaifeng: SYSUI_STATE_MAGNIFICATION_OVERLAP : true
09-02 03:35:22.240 11275 11275 D lukaifeng: SYSUI_STATE_HOME_DISABLED : true
09-02 03:35:22.240 11275 11275 D lukaifeng: SYSUI_STATE_OVERVIEW_DISABLED : true
09-02 03:35:22.240 11275 11275 D lukaifeng: canStartSystemGesture : false

正常情况:
09-02 03:34:24.493 11275 11275 D lukaifeng: canStartWithNavHidden : true
09-02 03:34:24.493 11275 11275 D lukaifeng: SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED : true
09-02 03:34:24.493 11275 11275 D lukaifeng: SYSUI_STATE_QUICK_SETTINGS_EXPANDED : true
09-02 03:34:24.494 11275 11275 D lukaifeng: SYSUI_STATE_MAGNIFICATION_OVERLAP : true
09-02 03:34:24.494 11275 11275 D lukaifeng: SYSUI_STATE_HOME_DISABLED : true
09-02 03:34:24.494 11275 11275 D lukaifeng: SYSUI_STATE_OVERVIEW_DISABLED : true
09-02 03:34:24.494 11275 11275 D lukaifeng: canStartSystemGesture : true

SYSUI_STATE_QUICK_SETTINGS_EXPANDED是由SystemUI设置的,这个因为SystemUI布局的调整要把Quick Settings Pannel默认打开,所以造成mSystemUiStateFlags & SYSUI_STATE_QUICK_SETTINGS_EXPANDED != 0

整个上滑动流程如下:

TouchInteractionService#onInputEvent
OverviewInputConsumer#onMotionEvent
BaseDragLayer#proxyTouchEvent
BaseDragLayer.java#findControllerToHandleTouch
NoButtonQuickSwitchTouchController.java#onControllerTouchEvent
BaseSwipeDetector.java#onTouchEvent
BaseSwipeDetector.java#setState
NoButtonQuickSwitchTouchController#setupAnimators

■ Submit UR
在Launcher中去掉SYSUI_STATE_QUICK_SETTINGS_EXPANDED的判断
https://dev.thundercomm.com/gerrit/c/general/platform/packages/apps/Launcher3/+/146453

#4 Updated by CD APP-王营 almost 3 years ago

  • Status changed from New to RESOLVED
  • Assignee changed from CD APP-王营 to CD Test赵飞
  • % Done changed from 0 to 80
  • Fixed Version set to 2022-09-03

此问题已修复,代码已入库,请在0903的DB版本上验证此问题。

#5 Updated by CDTS_TEST 王成 almost 3 years ago

  • Status changed from RESOLVED to VERIFIED
  • % Done changed from 80 to 100

#6 Updated by CDTS_TEST 王成 almost 3 years ago

  • Status changed from VERIFIED to CLOSED

#7 Updated by CD TPM-申艳艳 almost 3 years ago

  • Category set to CD-APP

#8 Updated by CD FW-王伟 over 2 years ago

Gerrit Merge Information
ID Project Branch Uploader
146453 general/platform/packages/apps/Launcher3 Pre_figure_turbox-c2130c-la1.1-qssi12-dev
FW: Launcher: Fix gesture can not open Recent
1.Fix gesture can not open Recent.
TC-RID: 1201-0205302
IssueID: TS-R-BUG-111677
Change-Id: I5f993ff9f3c9baa2134b4e8e254fa9e9e3a272ad

#9 Updated by CD APP-王营 over 2 years ago

  • Resolution set to FIXED
  • Root cause set to 编码问题

Also available in: Atom PDF