diff options
Diffstat (limited to 'services/core/java/com/android/server/policy/PhoneWindowManager.java')
-rw-r--r-- | services/core/java/com/android/server/policy/PhoneWindowManager.java | 145 |
1 files changed, 37 insertions, 108 deletions
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 58f26fa..9cb969c 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -83,10 +83,11 @@ import android.service.dreams.DreamService; import android.service.dreams.IDreamManager; import android.speech.RecognizerIntent; import android.telecom.TelecomManager; -import android.service.gesture.EdgeGestureManager; import com.android.internal.os.DeviceKeyHandler; import com.android.internal.util.cm.ActionUtils; + +import cyanogenmod.hardware.CMHardwareManager; import cyanogenmod.providers.CMSettings; import dalvik.system.DexClassLoader; import android.util.DisplayMetrics; @@ -129,8 +130,6 @@ import com.android.internal.R; import com.android.internal.policy.IKeyguardService; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.util.ScreenShapeHelper; -import com.android.internal.util.gesture.EdgeGesturePosition; -import com.android.internal.util.gesture.EdgeServiceConstants; import com.android.internal.view.RotationPolicy; import com.android.internal.widget.PointerLocationView; import com.android.server.GestureLauncherService; @@ -749,6 +748,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private boolean mHasPermanentMenuKey; private boolean mClearedBecauseOfForceShow; private boolean mTopWindowIsKeyguard; + private CMHardwareManager mCMHardware; private class PolicyHandler extends Handler { @Override @@ -899,9 +899,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { CMSettings.System.VOLBTN_MUSIC_CONTROLS), false, this, UserHandle.USER_ALL); resolver.registerContentObserver(CMSettings.System.getUriFor( - CMSettings.System.USE_EDGE_SERVICE_FOR_GESTURES), false, this, - UserHandle.USER_ALL); - resolver.registerContentObserver(CMSettings.System.getUriFor( CMSettings.System.BACK_WAKE_SCREEN), false, this, UserHandle.USER_ALL); resolver.registerContentObserver(CMSettings.System.getUriFor( @@ -995,67 +992,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { private SystemGesturesPointerEventListener mSystemGestures; - private EdgeGestureManager.EdgeGestureActivationListener mEdgeGestureActivationListener - = new EdgeGestureManager.EdgeGestureActivationListener() { - - @Override - public void onEdgeGestureActivation(int touchX, int touchY, - EdgeGesturePosition position, int flags) { - WindowState target = null; - - if (position == EdgeGesturePosition.TOP) { - target = mStatusBar; - } else if (position == EdgeGesturePosition.BOTTOM && mNavigationBarOnBottom) { - target = mNavigationBar; - } else if (position == EdgeGesturePosition.LEFT - && !mNavigationBarOnBottom && mNavigationBarLeftInLandscape) { - target = mNavigationBar; - } else if (position == EdgeGesturePosition.RIGHT && !mNavigationBarOnBottom) { - target = mNavigationBar; - } - - if (target != null) { - requestTransientBars(target); - dropEventsUntilLift(); - mEdgeListenerActivated = true; - } else { - restoreListenerState(); - } - } - }; - private EdgeGestureManager mEdgeGestureManager = null; - private int mLastEdgePositions = 0; - private boolean mEdgeListenerActivated = false; - private boolean mUsingEdgeGestureServiceForGestures = false; - - private void updateEdgeGestureListenerState() { - int flags = 0; - if (mUsingEdgeGestureServiceForGestures) { - flags = EdgeServiceConstants.LONG_LIVING | EdgeServiceConstants.UNRESTRICTED; - if (mStatusBar != null && !mStatusBar.isVisibleLw()) { - flags |= EdgeGesturePosition.TOP.FLAG; - } - if (mNavigationBar != null && !mNavigationBar.isVisibleLw() && !isStatusBarKeyguard()) { - if (mNavigationBarOnBottom) { - flags |= EdgeGesturePosition.BOTTOM.FLAG; - } else if (mNavigationBarLeftInLandscape) { - flags |= EdgeGesturePosition.LEFT.FLAG; - } else { - flags |= EdgeGesturePosition.RIGHT.FLAG; - } - } - } - if (mEdgeListenerActivated) { - mEdgeGestureActivationListener.restoreListenerState(); - mEdgeListenerActivated = false; - } - if (flags != mLastEdgePositions) { - mEdgeGestureManager.updateEdgeGestureActivationListener(mEdgeGestureActivationListener, - flags); - mLastEdgePositions = flags; - } - } - IStatusBarService getStatusBarService() { synchronized (mServiceAquireLock) { if (mStatusBarService == null) { @@ -1634,6 +1570,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { mDreamManagerInternal = LocalServices.getService(DreamManagerInternal.class); mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class); mAppOpsManager = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE); + mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class); // Init display burn-in protection boolean burnInProtectionEnabled = context.getResources().getBoolean( @@ -1677,7 +1614,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { mOrientationListener.setCurrentRotation(windowManager.getRotation()); } catch (RemoteException ex) { } mSettingsObserver = new SettingsObserver(mHandler); - mSettingsObserver.observe(); mShortcutManager = new ShortcutManager(context); mUiMode = context.getResources().getInteger( com.android.internal.R.integer.config_defaultUiModeType); @@ -2186,23 +2122,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { updateWakeGestureListenerLp(); } - final boolean useEdgeService = CMSettings.System.getIntForUser(resolver, - CMSettings.System.USE_EDGE_SERVICE_FOR_GESTURES, 0, UserHandle.USER_CURRENT) == 1; - if (useEdgeService ^ mUsingEdgeGestureServiceForGestures && mSystemReady) { - if (!mUsingEdgeGestureServiceForGestures && useEdgeService) { - mUsingEdgeGestureServiceForGestures = true; - mWindowManagerFuncs.unregisterPointerEventListener(mSystemGestures); - } else if (mUsingEdgeGestureServiceForGestures && !useEdgeService) { - mUsingEdgeGestureServiceForGestures = false; - mWindowManagerFuncs.registerPointerEventListener(mSystemGestures); - } - updateEdgeGestureListenerState(); - } - boolean devForceNavbar = CMSettings.Secure.getIntForUser(resolver, CMSettings.Secure.DEV_FORCE_SHOW_NAVBAR, 0, UserHandle.USER_CURRENT) == 1; if (devForceNavbar != mDevForceNavbar) { mDevForceNavbar = devForceNavbar; + if (mCMHardware.isSupported(CMHardwareManager.FEATURE_KEY_DISABLE)) { + mCMHardware.set(CMHardwareManager.FEATURE_KEY_DISABLE, mDevForceNavbar); + } } mNavigationBarLeftInLandscape = CMSettings.System.getIntForUser(resolver, @@ -3167,19 +3093,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { + " canceled=" + canceled); } - // If the boot mode is power off alarm, we should not dispatch the several physical keys - // in power off alarm UI to avoid pausing power off alarm UI. - int isPowerOffAlarmMode = Settings.System.getInt(mContext.getContentResolver(), - Settings.System.POWER_OFF_ALARM_MODE, 0); - if (DEBUG_INPUT) { Log.d(TAG, "intercept Dispatching isPowerOffAlarmMode = " + - isPowerOffAlarmMode); } - - if (isPowerOffAlarmMode == 1 && (keyCode == KeyEvent.KEYCODE_HOME - || keyCode == KeyEvent.KEYCODE_SEARCH - || keyCode == KeyEvent.KEYCODE_MENU)) { - return -1; // ignore the physical key here - } - // If we think we might have a volume down & power key chord on the way // but we're not sure, then tell the dispatcher to wait a little while and // try again later before dispatching. @@ -4042,8 +3955,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { mNavigationBarController.adjustSystemUiVisibilityLw(mLastSystemUiFlags, visibility); mRecentsVisible = (visibility & View.RECENT_APPS_VISIBLE) > 0; - updateEdgeGestureListenerState(); - // Reset any bits in mForceClearingStatusBarVisibility that // are now clear. mResettingSystemUiFlags &= visibility; @@ -5372,7 +5283,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { // update since mAllowLockscreenWhenOn might have changed updateLockScreenTimeout(); - updateEdgeGestureListenerState(); return changes; } @@ -5661,7 +5571,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (isValidGlobalKey(keyCode) && mGlobalKeyManager.shouldHandleGlobalKey(keyCode, event)) { if (isWakeKey) { - wakeUp(event.getEventTime(), mAllowTheaterModeWakeFromKey, "android.policy:KEY"); + wakeUp(event.getEventTime(), mAllowTheaterModeWakeFromKey, + "android.policy:KEY", true); } return result; } @@ -5924,6 +5835,15 @@ public class PhoneWindowManager implements WindowManagerPolicy { break; } + case KeyEvent.KEYCODE_SOFT_SLEEP: { + result &= ~ACTION_PASS_TO_USER; + isWakeKey = false; + if (!down) { + mPowerManagerInternal.setUserInactiveOverrideFromWindowManager(); + } + break; + } + case KeyEvent.KEYCODE_WAKEUP: { result &= ~ACTION_PASS_TO_USER; isWakeKey = true; @@ -5999,7 +5919,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } if (isWakeKey) { - wakeUp(event.getEventTime(), mAllowTheaterModeWakeFromKey, "android.policy:KEY"); + wakeUp(event.getEventTime(), mAllowTheaterModeWakeFromKey, "android.policy:KEY", true); } return result; @@ -6136,11 +6056,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private boolean shouldDispatchInputWhenNonInteractive() { - if (mDisplay == null || mDisplay.getState() == Display.STATE_OFF) { - return false; - } - // Send events to keyguard while the screen is on and it's showing. - if (isKeyguardShowingAndNotOccluded()) { + // Send events to keyguard while the screen is on. + if (isKeyguardShowingAndNotOccluded() && mDisplay != null + && mDisplay.getState() != Display.STATE_OFF) { return true; } @@ -6439,10 +6357,15 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private void wakeUpFromPowerKey(long eventTime) { - wakeUp(eventTime, mAllowTheaterModeWakeFromPowerKey, "android.policy:POWER"); + wakeUp(eventTime, mAllowTheaterModeWakeFromPowerKey, "android.policy:POWER", true); } private boolean wakeUp(long wakeTime, boolean wakeInTheaterMode, String reason) { + return wakeUp(wakeTime, wakeInTheaterMode, reason, false); + } + + private boolean wakeUp(long wakeTime, boolean wakeInTheaterMode, String reason, + boolean withProximityCheck) { final boolean theaterModeEnabled = isTheaterModeEnabled(); if (!wakeInTheaterMode && theaterModeEnabled) { return false; @@ -6453,7 +6376,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { Settings.Global.THEATER_MODE_ON, 0); } - mPowerManager.wakeUp(wakeTime, reason); + if (withProximityCheck) { + mPowerManager.wakeUpWithProximityCheck(wakeTime, reason); + } else { + mPowerManager.wakeUp(wakeTime, reason); + } return true; } @@ -6968,8 +6895,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { mKeyguardDelegate = new KeyguardServiceDelegate(mContext); mKeyguardDelegate.onSystemReady(); - mEdgeGestureManager = EdgeGestureManager.getInstance(); - mEdgeGestureManager.setEdgeGestureActivationListener(mEdgeGestureActivationListener); + mCMHardware = CMHardwareManager.getInstance(mContext); + // Ensure observe happens in systemReady() since we need + // CMHardwareService to be up and running + mSettingsObserver.observe(); readCameraLensCoverState(); updateUiMode(); |