diff options
author | Rajeev Kumar <rajekumar@google.com> | 2019-06-17 11:35:03 -0700 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2019-06-25 20:55:53 +0000 |
commit | 8ca7205c24356f35d3e72bdd0ca4b3e2db53925e (patch) | |
tree | 48be75a029f56bdc47a2cffab8b001aec565e13f /go/quickstep/src/com | |
parent | 700dc99d9b3d7df7e1910fa5661d60714a7f6a0d (diff) | |
download | android_packages_apps_Trebuchet-8ca7205c24356f35d3e72bdd0ca4b3e2db53925e.tar.gz android_packages_apps_Trebuchet-8ca7205c24356f35d3e72bdd0ca4b3e2db53925e.tar.bz2 android_packages_apps_Trebuchet-8ca7205c24356f35d3e72bdd0ca4b3e2db53925e.zip |
Fix NPE in OverviewComponentObserver constructor while accessing activityInfo.
Bug: 132461400
Test: Manual tests
Change-Id: Icee3730454db8129e597714c147c2cbaddc70987
(cherry picked from commit 219208a0f53e8d5f613b9d197cf4072685dd9c0f)
Diffstat (limited to 'go/quickstep/src/com')
-rw-r--r-- | go/quickstep/src/com/android/quickstep/TouchInteractionService.java | 51 |
1 files changed, 43 insertions, 8 deletions
diff --git a/go/quickstep/src/com/android/quickstep/TouchInteractionService.java b/go/quickstep/src/com/android/quickstep/TouchInteractionService.java index 39f8448d1..900b94e18 100644 --- a/go/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/go/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -19,15 +19,21 @@ import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYS import android.annotation.TargetApi; import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.graphics.Region; import android.os.Build; import android.os.Bundle; import android.os.IBinder; +import android.os.Process; import android.os.RemoteException; import android.util.Log; import android.view.MotionEvent; +import com.android.launcher3.Utilities; +import com.android.launcher3.compat.UserManagerCompat; import com.android.systemui.shared.recents.IOverviewProxy; import com.android.systemui.shared.recents.ISystemUiProxy; @@ -37,7 +43,16 @@ import com.android.systemui.shared.recents.ISystemUiProxy; @TargetApi(Build.VERSION_CODES.O) public class TouchInteractionService extends Service { - private static final String TAG = "TouchInteractionService"; + private static final String TAG = "GoTouchInteractionService"; + private boolean mIsUserUnlocked; + private BroadcastReceiver mUserUnlockedReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (Intent.ACTION_USER_UNLOCKED.equals(intent.getAction())) { + initWhenUserUnlocked(); + } + } + }; private final IBinder mMyBinder = new IOverviewProxy.Stub() { @@ -53,17 +68,21 @@ public class TouchInteractionService extends Service { @Override public void onOverviewToggle() { - mOverviewCommandHelper.onOverviewToggle(); + if (mIsUserUnlocked) { + mOverviewCommandHelper.onOverviewToggle(); + } } @Override public void onOverviewShown(boolean triggeredFromAltTab) { - mOverviewCommandHelper.onOverviewShown(triggeredFromAltTab); + if (mIsUserUnlocked) { + mOverviewCommandHelper.onOverviewShown(triggeredFromAltTab); + } } @Override public void onOverviewHidden(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) { - if (triggeredFromAltTab && !triggeredFromHomeKey) { + if (mIsUserUnlocked && triggeredFromAltTab && !triggeredFromHomeKey) { // onOverviewShownFromAltTab hides the overview and ends at the target app mOverviewCommandHelper.onOverviewHidden(); } @@ -71,7 +90,9 @@ public class TouchInteractionService extends Service { @Override public void onTip(int actionType, int viewType) { - mOverviewCommandHelper.onTip(actionType, viewType); + if (mIsUserUnlocked) { + mOverviewCommandHelper.onTip(actionType, viewType); + } } @Override @@ -123,17 +144,31 @@ public class TouchInteractionService extends Service { @Override public void onCreate() { super.onCreate(); + if (UserManagerCompat.getInstance(this).isUserUnlocked(Process.myUserHandle())) { + initWhenUserUnlocked(); + } else { + mIsUserUnlocked = false; + registerReceiver(mUserUnlockedReceiver, new IntentFilter(Intent.ACTION_USER_UNLOCKED)); + } + + sConnected = true; + } + + private void initWhenUserUnlocked() { mRecentsModel = RecentsModel.INSTANCE.get(this); mOverviewComponentObserver = new OverviewComponentObserver(this); mOverviewCommandHelper = new OverviewCommandHelper(this, mOverviewComponentObserver); - - sConnected = true; + mIsUserUnlocked = true; + Utilities.unregisterReceiverSafely(this, mUserUnlockedReceiver); } @Override public void onDestroy() { - mOverviewComponentObserver.onDestroy(); + if (mIsUserUnlocked) { + mOverviewComponentObserver.onDestroy(); + } + Utilities.unregisterReceiverSafely(this, mUserUnlockedReceiver); sConnected = false; super.onDestroy(); } |