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

Commit 69300227 authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Adding support for blocking gesture nav on a particular activity

Bug: 129796627
Change-Id: I939598f62924fb113e913e0309247d8a2088bf8a
parent c2803ec5
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.app.ActivityManager.RunningTaskInfo;
import android.app.KeyguardManager;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -45,6 +46,7 @@ import android.os.IBinder;
import android.os.Looper;
import android.os.Process;
import android.os.RemoteException;
import android.text.TextUtils;
import android.util.Log;
import android.view.Choreographer;
import android.view.Display;
@@ -54,6 +56,7 @@ import android.view.Surface;
import android.view.WindowManager;

import com.android.launcher3.MainThreadExecutor;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.compat.UserManagerCompat;
import com.android.launcher3.logging.EventLogArray;
@@ -78,7 +81,7 @@ import java.util.List;
/**
 * Service connected by system-UI for handling touch interaction.
 */
@TargetApi(Build.VERSION_CODES.O)
@TargetApi(Build.VERSION_CODES.Q)
public class TouchInteractionService extends Service implements
        NavigationModeChangeListener, DisplayListener {

@@ -229,6 +232,7 @@ public class TouchInteractionService extends Service implements
    private Mode mMode = Mode.THREE_BUTTONS;
    private int mDefaultDisplayId;
    private final RectF mSwipeTouchRegion = new RectF();
    private ComponentName mGestureBlockingActivity;

    @Override
    public void onCreate() {
@@ -250,6 +254,10 @@ public class TouchInteractionService extends Service implements

        mDefaultDisplayId = getSystemService(WindowManager.class).getDefaultDisplay()
                .getDisplayId();

        String blockingActivity = getString(R.string.gesture_blocking_activity);
        mGestureBlockingActivity = TextUtils.isEmpty(blockingActivity) ? null :
                ComponentName.unflattenFromString(blockingActivity);
        sConnected = true;
    }

@@ -464,6 +472,9 @@ public class TouchInteractionService extends Service implements
        } else if (ENABLE_QUICKSTEP_LIVE_TILE.get() &&
                activityControl.isInLiveTileMode()) {
            base = OverviewInputConsumer.newInstance(activityControl, mInputMonitorCompat, false);
        } else if (mGestureBlockingActivity != null && runningTaskInfo != null
                && mGestureBlockingActivity.equals(runningTaskInfo.topActivity)) {
            base = InputConsumer.NO_OP;
        } else {
            base = createOtherActivityInputConsumer(event, runningTaskInfo);
        }
+3 −0
Original line number Diff line number Diff line
@@ -18,6 +18,9 @@

    <string name="overview_callbacks_class" translatable="false"></string>

    <!-- Activity which blocks home gesture -->
    <string name="gesture_blocking_activity" translatable="false"></string>

    <string name="user_event_dispatcher_class" translatable="false">com.android.quickstep.logging.UserEventDispatcherExtension</string>

    <string name="stats_log_manager_class" translatable="false">com.android.quickstep.logging.StatsLogCompatManager</string>