Merge "Use JS thread for idleness tracking." into udc-dev

This commit is contained in:
Kweku Adams
2023-02-27 16:29:05 +00:00
committed by Android (Google) Code Review
2 changed files with 10 additions and 9 deletions

View File

@@ -24,6 +24,7 @@ import android.util.Log;
import android.util.Slog; import android.util.Slog;
import android.util.proto.ProtoOutputStream; import android.util.proto.ProtoOutputStream;
import com.android.server.JobSchedulerBackgroundThread;
import com.android.server.am.ActivityManagerService; import com.android.server.am.ActivityManagerService;
import com.android.server.job.JobSchedulerService; import com.android.server.job.JobSchedulerService;
import com.android.server.job.StateControllerProto; import com.android.server.job.StateControllerProto;
@@ -50,7 +51,7 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
public static final String ACTION_UNFORCE_IDLE = "com.android.server.jobscheduler.UNFORCE_IDLE"; public static final String ACTION_UNFORCE_IDLE = "com.android.server.jobscheduler.UNFORCE_IDLE";
// After construction, mutations of idle/screen-on state will only happen // After construction, mutations of idle/screen-on state will only happen
// on the main looper thread, either in onReceive() or in an alarm callback. // on the JobScheduler thread, either in onReceive() or in an alarm callback.
private boolean mIdle; private boolean mIdle;
private boolean mGarageModeOn; private boolean mGarageModeOn;
private boolean mForced; private boolean mForced;
@@ -90,7 +91,7 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
filter.addAction(ACTION_UNFORCE_IDLE); filter.addAction(ACTION_UNFORCE_IDLE);
filter.addAction(ActivityManagerService.ACTION_TRIGGER_IDLE); filter.addAction(ActivityManagerService.ACTION_TRIGGER_IDLE);
context.registerReceiver(this, filter); context.registerReceiver(this, filter, null, JobSchedulerBackgroundThread.getHandler());
} }
@Override @Override

View File

@@ -31,6 +31,7 @@ import android.util.Log;
import android.util.Slog; import android.util.Slog;
import android.util.proto.ProtoOutputStream; import android.util.proto.ProtoOutputStream;
import com.android.server.JobSchedulerBackgroundThread;
import com.android.server.am.ActivityManagerService; import com.android.server.am.ActivityManagerService;
import com.android.server.job.JobSchedulerService; import com.android.server.job.JobSchedulerService;
import com.android.server.job.StateControllerProto; import com.android.server.job.StateControllerProto;
@@ -47,8 +48,8 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id
private AlarmManager mAlarm; private AlarmManager mAlarm;
private PowerManager mPowerManager; private PowerManager mPowerManager;
// After construction, mutations of idle/screen-on state will only happen // After construction, mutations of idle/screen-on/projection states will only happen
// on the main looper thread, either in onReceive() or in an alarm callback. // on the JobScheduler thread, either in onReceive(), in an alarm callback, or in on.*Changed.
private long mInactivityIdleThreshold; private long mInactivityIdleThreshold;
private long mIdleWindowSlop; private long mIdleWindowSlop;
private boolean mIdle; private boolean mIdle;
@@ -101,12 +102,10 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id
filter.addAction(Intent.ACTION_DOCK_IDLE); filter.addAction(Intent.ACTION_DOCK_IDLE);
filter.addAction(Intent.ACTION_DOCK_ACTIVE); filter.addAction(Intent.ACTION_DOCK_ACTIVE);
context.registerReceiver(this, filter); context.registerReceiver(this, filter, null, JobSchedulerBackgroundThread.getHandler());
// TODO(b/172579710): Move the callbacks off the main executor and on to
// JobSchedulerBackgroundThread.getExecutor() once synchronization is fixed in this class.
context.getSystemService(UiModeManager.class).addOnProjectionStateChangedListener( context.getSystemService(UiModeManager.class).addOnProjectionStateChangedListener(
UiModeManager.PROJECTION_TYPE_ALL, context.getMainExecutor(), UiModeManager.PROJECTION_TYPE_ALL, JobSchedulerBackgroundThread.getExecutor(),
mOnProjectionStateChangedListener); mOnProjectionStateChangedListener);
} }
@@ -226,7 +225,8 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id
Slog.v(TAG, "Scheduling idle : " + reason + " now:" + nowElapsed + " when=" + when); Slog.v(TAG, "Scheduling idle : " + reason + " now:" + nowElapsed + " when=" + when);
} }
mAlarm.setWindow(AlarmManager.ELAPSED_REALTIME_WAKEUP, mAlarm.setWindow(AlarmManager.ELAPSED_REALTIME_WAKEUP,
when, mIdleWindowSlop, "JS idleness", mIdleAlarmListener, null); when, mIdleWindowSlop, "JS idleness",
JobSchedulerBackgroundThread.getExecutor(), mIdleAlarmListener);
} }
} }