Loading services/core/java/com/android/server/location/LocationManagerService.java +2 −0 Original line number Diff line number Diff line Loading @@ -1424,6 +1424,8 @@ public class LocationManagerService extends ILocationManager.Stub { mAppForegroundHelper.onSystemReady(); mLocationPowerSaveModeHelper.onSystemReady(); mScreenInteractiveHelper.onSystemReady(); mDeviceStationaryHelper.onSystemReady(); mDeviceIdleHelper.onSystemReady(); if (mEmergencyCallHelper != null) { mEmergencyCallHelper.onSystemReady(); Loading services/core/java/com/android/server/location/injector/SystemDeviceIdleHelper.java +48 −18 Original line number Diff line number Diff line Loading @@ -21,50 +21,80 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Binder; import android.os.PowerManager; import com.android.internal.util.Preconditions; import com.android.server.FgThread; import java.util.Objects; /** * Provides accessors and listeners for device stationary state. */ public class SystemDeviceIdleHelper extends DeviceIdleHelper { private final Context mContext; private final PowerManager mPowerManager; private PowerManager mPowerManager; private boolean mSystemReady; private boolean mRegistrationRequired; private @Nullable BroadcastReceiver mReceiver; public SystemDeviceIdleHelper(Context context) { mContext = context; mPowerManager = context.getSystemService(PowerManager.class); } public synchronized void onSystemReady() { mSystemReady = true; mPowerManager = Objects.requireNonNull(mContext.getSystemService(PowerManager.class)); onRegistrationStateChanged(); } @Override protected void registerInternal() { if (mReceiver == null) { mReceiver = new BroadcastReceiver() { protected synchronized void registerInternal() { mRegistrationRequired = true; onRegistrationStateChanged(); } @Override protected synchronized void unregisterInternal() { mRegistrationRequired = false; onRegistrationStateChanged(); } private void onRegistrationStateChanged() { if (!mSystemReady) { return; } final long identity = Binder.clearCallingIdentity(); try { if (mRegistrationRequired && mReceiver == null) { BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { notifyDeviceIdleChanged(); } }; mContext.registerReceiver(mReceiver, mContext.registerReceiver(receiver, new IntentFilter(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED), null, FgThread.getHandler()); mReceiver = receiver; } else if (!mRegistrationRequired && mReceiver != null) { BroadcastReceiver receiver = mReceiver; mReceiver = null; mContext.unregisterReceiver(receiver); } } @Override protected void unregisterInternal() { if (mReceiver != null) { mContext.unregisterReceiver(mReceiver); } finally { Binder.restoreCallingIdentity(identity); } } @Override public boolean isDeviceIdle() { Preconditions.checkState(mPowerManager != null); return mPowerManager.isDeviceIdleMode(); } } services/core/java/com/android/server/location/injector/SystemDeviceStationaryHelper.java +23 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package com.android.server.location.injector; import android.os.Binder; import com.android.internal.util.Preconditions; import com.android.server.DeviceIdleInternal; import com.android.server.LocalServices; Loading @@ -26,19 +29,35 @@ import java.util.Objects; */ public class SystemDeviceStationaryHelper extends DeviceStationaryHelper { private final DeviceIdleInternal mDeviceIdle; private DeviceIdleInternal mDeviceIdle; public SystemDeviceStationaryHelper() {} public SystemDeviceStationaryHelper() { public void onSystemReady() { mDeviceIdle = Objects.requireNonNull(LocalServices.getService(DeviceIdleInternal.class)); } @Override public void addListener(DeviceIdleInternal.StationaryListener listener) { Preconditions.checkState(mDeviceIdle != null); long identity = Binder.clearCallingIdentity(); try { mDeviceIdle.registerStationaryListener(listener); } finally { Binder.restoreCallingIdentity(identity); } } @Override public void removeListener(DeviceIdleInternal.StationaryListener listener) { Preconditions.checkState(mDeviceIdle != null); long identity = Binder.clearCallingIdentity(); try { mDeviceIdle.unregisterStationaryListener(listener); } finally { Binder.restoreCallingIdentity(identity); } } } services/core/java/com/android/server/location/injector/SystemScreenInteractiveHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ public class SystemScreenInteractiveHelper extends ScreenInteractiveHelper { mReady = true; } private void onScreenInteractiveChanged(boolean interactive) { void onScreenInteractiveChanged(boolean interactive) { if (interactive == mIsInteractive) { return; } Loading Loading
services/core/java/com/android/server/location/LocationManagerService.java +2 −0 Original line number Diff line number Diff line Loading @@ -1424,6 +1424,8 @@ public class LocationManagerService extends ILocationManager.Stub { mAppForegroundHelper.onSystemReady(); mLocationPowerSaveModeHelper.onSystemReady(); mScreenInteractiveHelper.onSystemReady(); mDeviceStationaryHelper.onSystemReady(); mDeviceIdleHelper.onSystemReady(); if (mEmergencyCallHelper != null) { mEmergencyCallHelper.onSystemReady(); Loading
services/core/java/com/android/server/location/injector/SystemDeviceIdleHelper.java +48 −18 Original line number Diff line number Diff line Loading @@ -21,50 +21,80 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Binder; import android.os.PowerManager; import com.android.internal.util.Preconditions; import com.android.server.FgThread; import java.util.Objects; /** * Provides accessors and listeners for device stationary state. */ public class SystemDeviceIdleHelper extends DeviceIdleHelper { private final Context mContext; private final PowerManager mPowerManager; private PowerManager mPowerManager; private boolean mSystemReady; private boolean mRegistrationRequired; private @Nullable BroadcastReceiver mReceiver; public SystemDeviceIdleHelper(Context context) { mContext = context; mPowerManager = context.getSystemService(PowerManager.class); } public synchronized void onSystemReady() { mSystemReady = true; mPowerManager = Objects.requireNonNull(mContext.getSystemService(PowerManager.class)); onRegistrationStateChanged(); } @Override protected void registerInternal() { if (mReceiver == null) { mReceiver = new BroadcastReceiver() { protected synchronized void registerInternal() { mRegistrationRequired = true; onRegistrationStateChanged(); } @Override protected synchronized void unregisterInternal() { mRegistrationRequired = false; onRegistrationStateChanged(); } private void onRegistrationStateChanged() { if (!mSystemReady) { return; } final long identity = Binder.clearCallingIdentity(); try { if (mRegistrationRequired && mReceiver == null) { BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { notifyDeviceIdleChanged(); } }; mContext.registerReceiver(mReceiver, mContext.registerReceiver(receiver, new IntentFilter(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED), null, FgThread.getHandler()); mReceiver = receiver; } else if (!mRegistrationRequired && mReceiver != null) { BroadcastReceiver receiver = mReceiver; mReceiver = null; mContext.unregisterReceiver(receiver); } } @Override protected void unregisterInternal() { if (mReceiver != null) { mContext.unregisterReceiver(mReceiver); } finally { Binder.restoreCallingIdentity(identity); } } @Override public boolean isDeviceIdle() { Preconditions.checkState(mPowerManager != null); return mPowerManager.isDeviceIdleMode(); } }
services/core/java/com/android/server/location/injector/SystemDeviceStationaryHelper.java +23 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package com.android.server.location.injector; import android.os.Binder; import com.android.internal.util.Preconditions; import com.android.server.DeviceIdleInternal; import com.android.server.LocalServices; Loading @@ -26,19 +29,35 @@ import java.util.Objects; */ public class SystemDeviceStationaryHelper extends DeviceStationaryHelper { private final DeviceIdleInternal mDeviceIdle; private DeviceIdleInternal mDeviceIdle; public SystemDeviceStationaryHelper() {} public SystemDeviceStationaryHelper() { public void onSystemReady() { mDeviceIdle = Objects.requireNonNull(LocalServices.getService(DeviceIdleInternal.class)); } @Override public void addListener(DeviceIdleInternal.StationaryListener listener) { Preconditions.checkState(mDeviceIdle != null); long identity = Binder.clearCallingIdentity(); try { mDeviceIdle.registerStationaryListener(listener); } finally { Binder.restoreCallingIdentity(identity); } } @Override public void removeListener(DeviceIdleInternal.StationaryListener listener) { Preconditions.checkState(mDeviceIdle != null); long identity = Binder.clearCallingIdentity(); try { mDeviceIdle.unregisterStationaryListener(listener); } finally { Binder.restoreCallingIdentity(identity); } } }
services/core/java/com/android/server/location/injector/SystemScreenInteractiveHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ public class SystemScreenInteractiveHelper extends ScreenInteractiveHelper { mReady = true; } private void onScreenInteractiveChanged(boolean interactive) { void onScreenInteractiveChanged(boolean interactive) { if (interactive == mIsInteractive) { return; } Loading