summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/policy/PhoneWindowManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/core/java/com/android/server/policy/PhoneWindowManager.java')
-rw-r--r--services/core/java/com/android/server/policy/PhoneWindowManager.java145
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();