Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 63787860 authored by sanryhuang's avatar sanryhuang Committed by Sanry Huang
Browse files

Fix User unable to view the keyboard input

revert extracted mode solution and using commandQueue to implement
setRemoteInputActive

Test: manual test
Test: atest
Change-Id: I82c63843dd38c19c1f88af15abcc137be4f72c83
Fixes:73275201
parent c443a7cb
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -42,7 +42,7 @@
            android:singleLine="true"
            android:singleLine="true"
            android:ellipsize="start"
            android:ellipsize="start"
            android:inputType="textShortMessage|textAutoCorrect|textCapSentences"
            android:inputType="textShortMessage|textAutoCorrect|textCapSentences"
            android:imeOptions="actionSend" />
            android:imeOptions="actionSend|flagNoExtractUi|flagNoFullscreen" />


    <FrameLayout
    <FrameLayout
            android:layout_width="wrap_content"
            android:layout_width="wrap_content"
+3 −0
Original line number Original line Diff line number Diff line
@@ -56,6 +56,7 @@ import com.android.systemui.statusbar.phone.ScrimState;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.policy.SmartReplyConstants;
import com.android.systemui.statusbar.policy.SmartReplyConstants;


import java.util.function.Consumer;
import java.util.function.Consumer;
@@ -148,5 +149,7 @@ public class SystemUIFactory {
        providers.put(NotificationEntryManager.class, () -> new NotificationEntryManager(context));
        providers.put(NotificationEntryManager.class, () -> new NotificationEntryManager(context));
        providers.put(KeyguardDismissUtil.class, KeyguardDismissUtil::new);
        providers.put(KeyguardDismissUtil.class, KeyguardDismissUtil::new);
        providers.put(SmartReplyController.class, () -> new SmartReplyController());
        providers.put(SmartReplyController.class, () -> new SmartReplyController());
        providers.put(RemoteInputQuickSettingsDisabler.class,
                () -> new RemoteInputQuickSettingsDisabler(context));
    }
    }
}
}
+7 −0
Original line number Original line Diff line number Diff line
@@ -35,6 +35,7 @@ import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver;
import android.widget.FrameLayout.LayoutParams;
import android.widget.FrameLayout.LayoutParams;


import com.android.systemui.Dependency;
import com.android.systemui.Interpolators;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.R.id;
import com.android.systemui.R.id;
@@ -43,6 +44,7 @@ import com.android.systemui.plugins.qs.QS;
import com.android.systemui.qs.customize.QSCustomizer;
import com.android.systemui.qs.customize.QSCustomizer;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer;
import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.stack.StackStateAnimator;
import com.android.systemui.statusbar.stack.StackStateAnimator;


public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks {
public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks {
@@ -72,6 +74,9 @@ public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks {
    private float mLastQSExpansion = -1;
    private float mLastQSExpansion = -1;
    private boolean mQsDisabled;
    private boolean mQsDisabled;


    private RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler =
            Dependency.get(RemoteInputQuickSettingsDisabler.class);

    @Override
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
            Bundle savedInstanceState) {
            Bundle savedInstanceState) {
@@ -191,6 +196,8 @@ public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks {


    @Override
    @Override
    public void disable(int state1, int state2, boolean animate) {
    public void disable(int state1, int state2, boolean animate) {
        state2 = mRemoteInputQuickSettingsDisabler.adjustDisableFlags(state2);

        final boolean disabled = (state2 & DISABLE2_QUICK_SETTINGS) != 0;
        final boolean disabled = (state2 & DISABLE2_QUICK_SETTINGS) != 0;
        if (disabled == mQsDisabled) return;
        if (disabled == mQsDisabled) return;
        mQsDisabled = disabled;
        mQsDisabled = disabled;
+6 −0
Original line number Original line Diff line number Diff line
@@ -233,6 +233,7 @@ import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
import com.android.systemui.statusbar.policy.PreviewInflater;
import com.android.systemui.statusbar.policy.PreviewInflater;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
@@ -398,6 +399,9 @@ public class StatusBar extends SystemUI implements DemoMode,
    private View mPendingRemoteInputView;
    private View mPendingRemoteInputView;
    private View mPendingWorkRemoteInputView;
    private View mPendingWorkRemoteInputView;


    private RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler =
            Dependency.get(RemoteInputQuickSettingsDisabler.class);

    private View mReportRejectedTouch;
    private View mReportRejectedTouch;


    private int mMaxAllowedKeyguardNotifications;
    private int mMaxAllowedKeyguardNotifications;
@@ -1750,6 +1754,8 @@ public class StatusBar extends SystemUI implements DemoMode,
     */
     */
    @Override
    @Override
    public void disable(int state1, int state2, boolean animate) {
    public void disable(int state1, int state2, boolean animate) {
        state2 = mRemoteInputQuickSettingsDisabler.adjustDisableFlags(state2);

        animate &= mStatusBarWindowState != WINDOW_STATE_HIDDEN;
        animate &= mStatusBarWindowState != WINDOW_STATE_HIDDEN;
        final int old1 = mDisabled1;
        final int old1 = mDisabled1;
        final int diff1 = state1 ^ old1;
        final int diff1 = state1 ^ old1;
+82 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.statusbar.policy;

import android.app.StatusBarManager;
import android.content.Context;
import android.content.res.Configuration;

import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.Dependency;
import com.android.systemui.SysUiServiceProvider;
import com.android.systemui.qs.QSFragment;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.StatusBar;

/**
 * Let {@link RemoteInputView} to control the visibility of QuickSetting.
 */
public class RemoteInputQuickSettingsDisabler
        implements ConfigurationController.ConfigurationListener {

    private Context mContext;
    @VisibleForTesting boolean mRemoteInputActive;
    @VisibleForTesting boolean misLandscape;
    private int mLastOrientation;
    @VisibleForTesting CommandQueue mCommandQueue;

    public RemoteInputQuickSettingsDisabler(Context context) {
        mContext = context;
        mCommandQueue = SysUiServiceProvider.getComponent(context, CommandQueue.class);
        mLastOrientation = mContext.getResources().getConfiguration().orientation;
        Dependency.get(ConfigurationController.class).addCallback(this);
    }

    public int adjustDisableFlags(int state) {
        if (mRemoteInputActive && misLandscape) {
            state |= StatusBarManager.DISABLE2_QUICK_SETTINGS;
        }

        return state;
    }

    public void setRemoteInputActive(boolean active){
        if(mRemoteInputActive != active){
            mRemoteInputActive = active;
            recomputeDisableFlags();
        }
    }

    @Override
    public void onConfigChanged(Configuration newConfig) {
        if (newConfig.orientation != mLastOrientation) {
            misLandscape = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE;
            mLastOrientation = newConfig.orientation;
            recomputeDisableFlags();
        }
    }

    /**
     * Reapplies the disable flags. Then the method adjustDisableFlags in this class will be invoked
     * in {@link QSFragment#disable(int, int, boolean)} and
     * {@link StatusBar#disable(int, int, boolean)}
     * to modify the disable flags according to the status of mRemoteInputActive and misLandscape.
     */
    private void recomputeDisableFlags() {
        mCommandQueue.recomputeDisableFlags(true);
    }
}
Loading