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

Commit b101d99e authored by Mike Lockwood's avatar Mike Lockwood
Browse files

Move dock wakelock code to UiModeManagerService.



Change-Id: Ide758a9e68002b13ba2d61bd9e9701d449edb65b
Signed-off-by: default avatarMike Lockwood <lockwood@android.com>
parent 78968395
Loading
Loading
Loading
Loading
+0 −72
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import android.content.res.Resources;
import android.database.ContentObserver;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.os.BatteryManager;
import android.os.Handler;
import android.os.IBinder;
import android.os.LocalPowerManager;
@@ -203,18 +202,12 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    RecentApplicationsDialog mRecentAppsDialog;
    Handler mHandler;
    
    final IntentFilter mBatteryStatusFilter = new IntentFilter();
    
    boolean mSystemReady;
    boolean mLidOpen;
    int mPlugged;
    boolean mRegisteredBatteryReceiver;
    int mUiMode = Configuration.UI_MODE_TYPE_NORMAL;
    int mLidOpenRotation;
    int mCarDockRotation;
    int mDeskDockRotation;
    int mCarDockKeepsScreenOn;
    int mDeskDockKeepsScreenOn;
    boolean mCarDockEnablesAccelerometer;
    boolean mDeskDockEnablesAccelerometer;
    int mLidKeyboardAccessibility;
@@ -280,7 +273,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {

    ShortcutManager mShortcutManager;
    PowerManager.WakeLock mBroadcastWakeLock;
    PowerManager.WakeLock mDockWakeLock;

    class SettingsObserver extends ContentObserver {
        SettingsObserver(Handler handler) {
@@ -512,9 +504,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
        mBroadcastWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
                "PhoneWindowManager.mBroadcastWakeLock");
        mDockWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,
                "PhoneWindowManager.mDockWakeLock");
        mDockWakeLock.setReferenceCounted(false);
        mEnableShiftMenuBugReports = "1".equals(SystemProperties.get("ro.debuggable"));
        mLidOpenRotation = readRotation(
                com.android.internal.R.integer.config_lidOpenRotation);
@@ -522,10 +511,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                com.android.internal.R.integer.config_carDockRotation);
        mDeskDockRotation = readRotation(
                com.android.internal.R.integer.config_deskDockRotation);
        mCarDockKeepsScreenOn = mContext.getResources().getInteger(
                com.android.internal.R.integer.config_carDockKeepsScreenOn);
        mDeskDockKeepsScreenOn = mContext.getResources().getInteger(
                com.android.internal.R.integer.config_deskDockKeepsScreenOn);
        mCarDockEnablesAccelerometer = mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_carDockEnablesAccelerometer);
        mDeskDockEnablesAccelerometer = mContext.getResources().getBoolean(
@@ -534,10 +519,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                com.android.internal.R.integer.config_lidKeyboardAccessibility);
        mLidNavigationAccessibility = mContext.getResources().getInteger(
                com.android.internal.R.integer.config_lidNavigationAccessibility);
        // register for battery events
        mBatteryStatusFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
        mPlugged = 0;
        updatePlugged(context.registerReceiver(null, mBatteryStatusFilter));
        // register for dock events
        IntentFilter filter = new IntentFilter();
        filter.addAction(UiModeManager.ACTION_ENTER_CAR_MODE);
@@ -629,14 +610,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }
    }
    
    void updatePlugged(Intent powerIntent) {
        if (localLOGV) Log.v(TAG, "New battery status: " + powerIntent.getExtras());
        if (powerIntent != null) {
            mPlugged = powerIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
            if (localLOGV) Log.v(TAG, "PLUGGED: " + mPlugged);
        }
    }
    
    private int readRotation(int resID) {
        try {
            int rotation = mContext.getResources().getInteger(resID);
@@ -1979,34 +1952,15 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }
    };

    BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            updatePlugged(intent);
            updateDockKeepingScreenOn();
        }
    };

    BroadcastReceiver mDockReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            try {
                IUiModeManager uiModeService = IUiModeManager.Stub.asInterface(
                        ServiceManager.getService(Context.UI_MODE_SERVICE));
                mUiMode = uiModeService.getCurrentModeType();
                boolean watchBattery = mUiMode != Configuration.UI_MODE_TYPE_UNDEFINED
                        && mUiMode != Configuration.UI_MODE_TYPE_NORMAL;
                if (watchBattery != mRegisteredBatteryReceiver) {
                    mRegisteredBatteryReceiver = watchBattery;
                    if (watchBattery) {
                        updatePlugged(mContext.registerReceiver(mBatteryReceiver,
                                mBatteryStatusFilter));
                    } else {
                        mContext.unregisterReceiver(mBatteryReceiver);
                    }
                }
            } catch (RemoteException e) {
            }
            updateRotation(Surface.FLAGS_ORIENTATION_ANIMATION_DISABLE);
            updateDockKeepingScreenOn();
            updateOrientationListenerLp();
        }
    };
@@ -2242,32 +2196,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        updateRotation(Surface.FLAGS_ORIENTATION_ANIMATION_DISABLE);
    }

    void updateDockKeepingScreenOn() {
        if (mPlugged != 0) {
            if (localLOGV) Log.v(TAG, "Update: mUiMode=" + mUiMode
                    + " mPlugged=" + mPlugged
                    + " mCarDockKeepsScreenOn" + mCarDockKeepsScreenOn
                    + " mDeskDockKeepsScreenOn" + mDeskDockKeepsScreenOn);
            if (mUiMode == Configuration.UI_MODE_TYPE_CAR
                    && (mPlugged&mCarDockKeepsScreenOn) != 0) {
                if (!mDockWakeLock.isHeld()) {
                    mDockWakeLock.acquire();
                }
                return;
            } else if (mUiMode == Configuration.UI_MODE_TYPE_DESK
                    && (mPlugged&mDeskDockKeepsScreenOn) != 0) {
                if (!mDockWakeLock.isHeld()) {
                    mDockWakeLock.acquire();
                }
                return;
            }
        }
        
        if (mDockWakeLock.isHeld()) {
            mDockWakeLock.release();
        }
    }

    void updateRotation(int animFlags) {
        mPowerManager.setKeyboardVisibility(mLidOpen);
        int rotation = Surface.ROTATION_0;