Loading Android.bp +0 −48 Original line number Diff line number Diff line Loading @@ -350,8 +350,6 @@ java_defaults { ":framework-non-updatable-sources", "core/java/**/*.logtags", ], // See comment on framework-atb-backward-compatibility module below exclude_srcs: ["core/java/android/content/pm/AndroidTestBaseUpdater.java"], aidl: { generate_get_transaction_name: true, local_include_dirs: [ Loading Loading @@ -462,20 +460,6 @@ platform_compat_config { src: ":framework-minus-apex", } // A temporary build target that is conditionally included on the bootclasspath if // android.test.base library has been removed and which provides support for // maintaining backwards compatibility for APKs that target pre-P and depend on // android.test.base classes. This is used iff REMOVE_ATB_FROM_BCP=true is // specified on the build command line. java_library { name: "framework-atb-backward-compatibility", installable: true, libs: ["app-compat-annotations"], srcs: [ "core/java/android/content/pm/AndroidTestBaseUpdater.java", ], } genrule { name: "statslog-framework-java-gen", tools: ["stats-log-api-gen"], Loading Loading @@ -1003,38 +987,6 @@ aidl_interface { }, } // TODO(b/77285514): remove this once the last few hidl interfaces have been // updated to use hwbinder.stubs. java_library { name: "hwbinder", sdk_version: "core_platform", srcs: [ "core/java/android/os/HidlSupport.java", "core/java/android/annotation/IntDef.java", "core/java/android/annotation/IntRange.java", "core/java/android/annotation/NonNull.java", "core/java/android/annotation/Nullable.java", "core/java/android/annotation/SystemApi.java", "core/java/android/annotation/TestApi.java", "core/java/android/os/HidlMemory.java", "core/java/android/os/HwBinder.java", "core/java/android/os/HwBlob.java", "core/java/android/os/HwParcel.java", "core/java/android/os/IHwBinder.java", "core/java/android/os/IHwInterface.java", "core/java/android/os/DeadObjectException.java", "core/java/android/os/DeadSystemException.java", "core/java/android/os/NativeHandle.java", "core/java/android/os/RemoteException.java", "core/java/android/util/AndroidException.java", ], libs: ["unsupportedappusage"], dxflags: ["--core-library"], installable: false, } python_defaults { name: "base_default", version: { Loading apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +11 −0 Original line number Diff line number Diff line Loading @@ -1220,6 +1220,7 @@ public class JobSchedulerService extends com.android.server.SystemService void updateUidState(int uid, int procState) { synchronized (mLock) { final int prevPriority = mUidPriorityOverride.get(uid, JobInfo.PRIORITY_DEFAULT); if (procState == ActivityManager.PROCESS_STATE_TOP) { // Only use this if we are exactly the top app. All others can live // with just the foreground priority. This means that persistent processes Loading @@ -1232,6 +1233,16 @@ public class JobSchedulerService extends com.android.server.SystemService } else { mUidPriorityOverride.delete(uid); } final int newPriority = mUidPriorityOverride.get(uid, JobInfo.PRIORITY_DEFAULT); if (prevPriority != newPriority) { if (DEBUG) { Slog.d(TAG, "UID " + uid + " priority changed from " + prevPriority + " to " + newPriority); } for (int c = 0; c < mControllers.size(); ++c) { mControllers.get(c).onUidPriorityChangedLocked(uid, newPriority); } } } } Loading apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java +75 −29 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkPolicyManager; import android.net.NetworkRequest; import android.os.Handler; import android.os.Looper; Loading Loading @@ -83,6 +84,19 @@ public final class ConnectivityController extends RestrictingController implemen */ private static final long MIN_STATS_UPDATE_INTERVAL_MS = 30_000L; private static final int UNBYPASSABLE_BG_BLOCKED_REASONS = ~ConnectivityManager.BLOCKED_REASON_NONE; private static final int UNBYPASSABLE_EJ_BLOCKED_REASONS = ~(ConnectivityManager.BLOCKED_REASON_APP_STANDBY | ConnectivityManager.BLOCKED_REASON_BATTERY_SAVER | ConnectivityManager.BLOCKED_REASON_DOZE); private static final int UNBYPASSABLE_FOREGROUND_BLOCKED_REASONS = ~(ConnectivityManager.BLOCKED_REASON_APP_STANDBY | ConnectivityManager.BLOCKED_REASON_BATTERY_SAVER | ConnectivityManager.BLOCKED_REASON_DOZE | ConnectivityManager.BLOCKED_METERED_REASON_DATA_SAVER | ConnectivityManager.BLOCKED_METERED_REASON_USER_RESTRICTED); private final ConnectivityManager mConnManager; private final NetworkPolicyManagerInternal mNetPolicyManagerInternal; Loading Loading @@ -152,6 +166,9 @@ public final class ConnectivityController extends RestrictingController implemen } else if (us1.earliestEJEnqueueTime > us2.earliestEJEnqueueTime) { return 1; } if (us1.basePriority != us2.basePriority) { return us2.basePriority - us1.basePriority; } if (us1.earliestEnqueueTime < us2.earliestEnqueueTime) { return -1; } Loading Loading @@ -454,6 +471,16 @@ public final class ConnectivityController extends RestrictingController implemen postAdjustCallbacks(); } @GuardedBy("mLock") @Override public void onUidPriorityChangedLocked(int uid, int newPriority) { UidStats uidStats = mUidStats.get(uid); if (uidStats != null && uidStats.basePriority != newPriority) { uidStats.basePriority = newPriority; maybeAdjustRegisteredCallbacksLocked(); } } private boolean isUsable(NetworkCapabilities capabilities) { return capabilities != null && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED); Loading Loading @@ -757,6 +784,42 @@ public final class ConnectivityController extends RestrictingController implemen } } @GuardedBy("mLock") @Nullable private Network getNetworkLocked(@NonNull JobStatus jobStatus) { final UidDefaultNetworkCallback defaultNetworkCallback = mCurrentDefaultNetworkCallbacks.get(jobStatus.getSourceUid()); if (defaultNetworkCallback == null) { return null; } UidStats uidStats = mUidStats.get(jobStatus.getSourceUid()); final int unbypassableBlockedReasons; // TOP will probably have fewer reasons, so we may not have to worry about returning // BG_BLOCKED for a TOP app. However, better safe than sorry. if (uidStats.basePriority >= JobInfo.PRIORITY_BOUND_FOREGROUND_SERVICE || (jobStatus.getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0) { if (DEBUG) { Slog.d(TAG, "Using FG bypass for " + jobStatus.getSourceUid()); } unbypassableBlockedReasons = UNBYPASSABLE_FOREGROUND_BLOCKED_REASONS; } else if (jobStatus.shouldTreatAsExpeditedJob() || jobStatus.startedAsExpeditedJob) { if (DEBUG) { Slog.d(TAG, "Using EJ bypass for " + jobStatus.getSourceUid()); } unbypassableBlockedReasons = UNBYPASSABLE_EJ_BLOCKED_REASONS; } else { if (DEBUG) { Slog.d(TAG, "Using BG bypass for " + jobStatus.getSourceUid()); } unbypassableBlockedReasons = UNBYPASSABLE_BG_BLOCKED_REASONS; } return (unbypassableBlockedReasons & defaultNetworkCallback.mBlockedReasons) == 0 ? defaultNetworkCallback.mDefaultNetwork : null; } private boolean updateConstraintsSatisfied(JobStatus jobStatus) { final long nowElapsed = sElapsedRealtimeClock.millis(); final UidDefaultNetworkCallback defaultNetworkCallback = Loading @@ -765,9 +828,7 @@ public final class ConnectivityController extends RestrictingController implemen maybeRegisterDefaultNetworkCallbackLocked(jobStatus); return updateConstraintsSatisfied(jobStatus, nowElapsed, null, null); } final Network network = (jobStatus.shouldIgnoreNetworkBlocking() || !defaultNetworkCallback.mBlocked) ? defaultNetworkCallback.mDefaultNetwork : null; final Network network = getNetworkLocked(jobStatus); final NetworkCapabilities capabilities = getNetworkCapabilities(network); return updateConstraintsSatisfied(jobStatus, nowElapsed, network, capabilities); } Loading Loading @@ -829,32 +890,15 @@ public final class ConnectivityController extends RestrictingController implemen return false; } final Network network = defaultNetworkCallback.mBlocked ? null : defaultNetworkCallback.mDefaultNetwork; final NetworkCapabilities capabilities = getNetworkCapabilities(network); final boolean networkMatch = (filterNetwork == null || Objects.equals(filterNetwork, network)); // Ignore blocked final Network exemptedNetwork = defaultNetworkCallback.mDefaultNetwork; final NetworkCapabilities exemptedNetworkCapabilities = getNetworkCapabilities(exemptedNetwork); final boolean exemptedNetworkMatch = (filterNetwork == null || Objects.equals(filterNetwork, exemptedNetwork)); final long nowElapsed = sElapsedRealtimeClock.millis(); boolean changed = false; for (int i = jobs.size() - 1; i >= 0; i--) { final JobStatus js = jobs.valueAt(i); Network net = network; NetworkCapabilities netCap = capabilities; boolean match = networkMatch; if (js.shouldIgnoreNetworkBlocking()) { net = exemptedNetwork; netCap = exemptedNetworkCapabilities; match = exemptedNetworkMatch; } final Network net = getNetworkLocked(js); final NetworkCapabilities netCap = getNetworkCapabilities(net); final boolean match = (filterNetwork == null || Objects.equals(filterNetwork, net)); // Update either when we have a network match, or when the // job hasn't yet been evaluated against the currently Loading Loading @@ -950,7 +994,7 @@ public final class ConnectivityController extends RestrictingController implemen private int mUid; @Nullable private Network mDefaultNetwork; private boolean mBlocked; private int mBlockedReasons; private void setUid(int uid) { mUid = uid; Loading @@ -968,17 +1012,17 @@ public final class ConnectivityController extends RestrictingController implemen } @Override public void onBlockedStatusChanged(Network network, boolean blocked) { public void onBlockedStatusChanged(Network network, int blockedReasons) { if (DEBUG) { Slog.v(TAG, "default-onBlockedStatusChanged(" + mUid + "): " + network + " -> " + blocked); + network + " -> " + blockedReasons); } if (mUid == UserHandle.USER_NULL) { return; } synchronized (mLock) { mDefaultNetwork = network; mBlocked = blocked; mBlockedReasons = blockedReasons; updateTrackedJobsLocked(mUid, network); } } Loading Loading @@ -1037,7 +1081,7 @@ public final class ConnectivityController extends RestrictingController implemen pw.print("Network: "); pw.print(mDefaultNetwork); pw.print(" (blocked="); pw.print(mBlocked); pw.print(NetworkPolicyManager.blockedReasonsToString(mBlockedReasons)); pw.print(")"); } pw.println(); Loading @@ -1046,6 +1090,7 @@ public final class ConnectivityController extends RestrictingController implemen private static class UidStats { public final int uid; public int basePriority; public int numRunning; public int numReadyWithConnectivity; public int numRequestedNetworkAvailable; Loading @@ -1062,6 +1107,7 @@ public final class ConnectivityController extends RestrictingController implemen private void dumpLocked(IndentingPrintWriter pw, final long nowElapsed) { pw.print("UidStats{"); pw.print("uid", uid); pw.print("pri", basePriority); pw.print("#run", numRunning); pw.print("#readyWithConn", numReadyWithConnectivity); pw.print("#netAvail", numRequestedNetworkAvailable); Loading apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java +0 −5 Original line number Diff line number Diff line Loading @@ -1139,11 +1139,6 @@ public final class JobStatus { && (mDynamicConstraints & CONSTRAINT_BACKGROUND_NOT_RESTRICTED) == 0); } boolean shouldIgnoreNetworkBlocking() { return (getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0 || (shouldTreatAsExpeditedJob() || startedAsExpeditedJob); } /** @return true if the constraint was changed, false otherwise. */ boolean setChargingConstraintSatisfied(final long nowElapsed, boolean state) { return setConstraintSatisfied(CONSTRAINT_CHARGING, nowElapsed, state); Loading apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java +9 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.util.IndentingPrintWriter; import android.util.Slog; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.GuardedBy; import com.android.server.job.JobSchedulerService; import com.android.server.job.JobSchedulerService.Constants; import com.android.server.job.StateChangedListener; Loading Loading @@ -125,6 +126,14 @@ public abstract class StateController { public void reevaluateStateLocked(int uid) { } /** * Called when a UID's base priority has changed. The more positive the priority, the more * important the UID is. */ @GuardedBy("mLock") public void onUidPriorityChangedLocked(int uid, int newPriority) { } protected boolean wouldBeReadyWithConstraintLocked(JobStatus jobStatus, int constraint) { // This is very cheap to check (just a few conditions on data in JobStatus). final boolean jobWouldBeReady = jobStatus.wouldBeReadyWithConstraint(constraint); Loading Loading
Android.bp +0 −48 Original line number Diff line number Diff line Loading @@ -350,8 +350,6 @@ java_defaults { ":framework-non-updatable-sources", "core/java/**/*.logtags", ], // See comment on framework-atb-backward-compatibility module below exclude_srcs: ["core/java/android/content/pm/AndroidTestBaseUpdater.java"], aidl: { generate_get_transaction_name: true, local_include_dirs: [ Loading Loading @@ -462,20 +460,6 @@ platform_compat_config { src: ":framework-minus-apex", } // A temporary build target that is conditionally included on the bootclasspath if // android.test.base library has been removed and which provides support for // maintaining backwards compatibility for APKs that target pre-P and depend on // android.test.base classes. This is used iff REMOVE_ATB_FROM_BCP=true is // specified on the build command line. java_library { name: "framework-atb-backward-compatibility", installable: true, libs: ["app-compat-annotations"], srcs: [ "core/java/android/content/pm/AndroidTestBaseUpdater.java", ], } genrule { name: "statslog-framework-java-gen", tools: ["stats-log-api-gen"], Loading Loading @@ -1003,38 +987,6 @@ aidl_interface { }, } // TODO(b/77285514): remove this once the last few hidl interfaces have been // updated to use hwbinder.stubs. java_library { name: "hwbinder", sdk_version: "core_platform", srcs: [ "core/java/android/os/HidlSupport.java", "core/java/android/annotation/IntDef.java", "core/java/android/annotation/IntRange.java", "core/java/android/annotation/NonNull.java", "core/java/android/annotation/Nullable.java", "core/java/android/annotation/SystemApi.java", "core/java/android/annotation/TestApi.java", "core/java/android/os/HidlMemory.java", "core/java/android/os/HwBinder.java", "core/java/android/os/HwBlob.java", "core/java/android/os/HwParcel.java", "core/java/android/os/IHwBinder.java", "core/java/android/os/IHwInterface.java", "core/java/android/os/DeadObjectException.java", "core/java/android/os/DeadSystemException.java", "core/java/android/os/NativeHandle.java", "core/java/android/os/RemoteException.java", "core/java/android/util/AndroidException.java", ], libs: ["unsupportedappusage"], dxflags: ["--core-library"], installable: false, } python_defaults { name: "base_default", version: { Loading
apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +11 −0 Original line number Diff line number Diff line Loading @@ -1220,6 +1220,7 @@ public class JobSchedulerService extends com.android.server.SystemService void updateUidState(int uid, int procState) { synchronized (mLock) { final int prevPriority = mUidPriorityOverride.get(uid, JobInfo.PRIORITY_DEFAULT); if (procState == ActivityManager.PROCESS_STATE_TOP) { // Only use this if we are exactly the top app. All others can live // with just the foreground priority. This means that persistent processes Loading @@ -1232,6 +1233,16 @@ public class JobSchedulerService extends com.android.server.SystemService } else { mUidPriorityOverride.delete(uid); } final int newPriority = mUidPriorityOverride.get(uid, JobInfo.PRIORITY_DEFAULT); if (prevPriority != newPriority) { if (DEBUG) { Slog.d(TAG, "UID " + uid + " priority changed from " + prevPriority + " to " + newPriority); } for (int c = 0; c < mControllers.size(); ++c) { mControllers.get(c).onUidPriorityChangedLocked(uid, newPriority); } } } } Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java +75 −29 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkPolicyManager; import android.net.NetworkRequest; import android.os.Handler; import android.os.Looper; Loading Loading @@ -83,6 +84,19 @@ public final class ConnectivityController extends RestrictingController implemen */ private static final long MIN_STATS_UPDATE_INTERVAL_MS = 30_000L; private static final int UNBYPASSABLE_BG_BLOCKED_REASONS = ~ConnectivityManager.BLOCKED_REASON_NONE; private static final int UNBYPASSABLE_EJ_BLOCKED_REASONS = ~(ConnectivityManager.BLOCKED_REASON_APP_STANDBY | ConnectivityManager.BLOCKED_REASON_BATTERY_SAVER | ConnectivityManager.BLOCKED_REASON_DOZE); private static final int UNBYPASSABLE_FOREGROUND_BLOCKED_REASONS = ~(ConnectivityManager.BLOCKED_REASON_APP_STANDBY | ConnectivityManager.BLOCKED_REASON_BATTERY_SAVER | ConnectivityManager.BLOCKED_REASON_DOZE | ConnectivityManager.BLOCKED_METERED_REASON_DATA_SAVER | ConnectivityManager.BLOCKED_METERED_REASON_USER_RESTRICTED); private final ConnectivityManager mConnManager; private final NetworkPolicyManagerInternal mNetPolicyManagerInternal; Loading Loading @@ -152,6 +166,9 @@ public final class ConnectivityController extends RestrictingController implemen } else if (us1.earliestEJEnqueueTime > us2.earliestEJEnqueueTime) { return 1; } if (us1.basePriority != us2.basePriority) { return us2.basePriority - us1.basePriority; } if (us1.earliestEnqueueTime < us2.earliestEnqueueTime) { return -1; } Loading Loading @@ -454,6 +471,16 @@ public final class ConnectivityController extends RestrictingController implemen postAdjustCallbacks(); } @GuardedBy("mLock") @Override public void onUidPriorityChangedLocked(int uid, int newPriority) { UidStats uidStats = mUidStats.get(uid); if (uidStats != null && uidStats.basePriority != newPriority) { uidStats.basePriority = newPriority; maybeAdjustRegisteredCallbacksLocked(); } } private boolean isUsable(NetworkCapabilities capabilities) { return capabilities != null && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED); Loading Loading @@ -757,6 +784,42 @@ public final class ConnectivityController extends RestrictingController implemen } } @GuardedBy("mLock") @Nullable private Network getNetworkLocked(@NonNull JobStatus jobStatus) { final UidDefaultNetworkCallback defaultNetworkCallback = mCurrentDefaultNetworkCallbacks.get(jobStatus.getSourceUid()); if (defaultNetworkCallback == null) { return null; } UidStats uidStats = mUidStats.get(jobStatus.getSourceUid()); final int unbypassableBlockedReasons; // TOP will probably have fewer reasons, so we may not have to worry about returning // BG_BLOCKED for a TOP app. However, better safe than sorry. if (uidStats.basePriority >= JobInfo.PRIORITY_BOUND_FOREGROUND_SERVICE || (jobStatus.getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0) { if (DEBUG) { Slog.d(TAG, "Using FG bypass for " + jobStatus.getSourceUid()); } unbypassableBlockedReasons = UNBYPASSABLE_FOREGROUND_BLOCKED_REASONS; } else if (jobStatus.shouldTreatAsExpeditedJob() || jobStatus.startedAsExpeditedJob) { if (DEBUG) { Slog.d(TAG, "Using EJ bypass for " + jobStatus.getSourceUid()); } unbypassableBlockedReasons = UNBYPASSABLE_EJ_BLOCKED_REASONS; } else { if (DEBUG) { Slog.d(TAG, "Using BG bypass for " + jobStatus.getSourceUid()); } unbypassableBlockedReasons = UNBYPASSABLE_BG_BLOCKED_REASONS; } return (unbypassableBlockedReasons & defaultNetworkCallback.mBlockedReasons) == 0 ? defaultNetworkCallback.mDefaultNetwork : null; } private boolean updateConstraintsSatisfied(JobStatus jobStatus) { final long nowElapsed = sElapsedRealtimeClock.millis(); final UidDefaultNetworkCallback defaultNetworkCallback = Loading @@ -765,9 +828,7 @@ public final class ConnectivityController extends RestrictingController implemen maybeRegisterDefaultNetworkCallbackLocked(jobStatus); return updateConstraintsSatisfied(jobStatus, nowElapsed, null, null); } final Network network = (jobStatus.shouldIgnoreNetworkBlocking() || !defaultNetworkCallback.mBlocked) ? defaultNetworkCallback.mDefaultNetwork : null; final Network network = getNetworkLocked(jobStatus); final NetworkCapabilities capabilities = getNetworkCapabilities(network); return updateConstraintsSatisfied(jobStatus, nowElapsed, network, capabilities); } Loading Loading @@ -829,32 +890,15 @@ public final class ConnectivityController extends RestrictingController implemen return false; } final Network network = defaultNetworkCallback.mBlocked ? null : defaultNetworkCallback.mDefaultNetwork; final NetworkCapabilities capabilities = getNetworkCapabilities(network); final boolean networkMatch = (filterNetwork == null || Objects.equals(filterNetwork, network)); // Ignore blocked final Network exemptedNetwork = defaultNetworkCallback.mDefaultNetwork; final NetworkCapabilities exemptedNetworkCapabilities = getNetworkCapabilities(exemptedNetwork); final boolean exemptedNetworkMatch = (filterNetwork == null || Objects.equals(filterNetwork, exemptedNetwork)); final long nowElapsed = sElapsedRealtimeClock.millis(); boolean changed = false; for (int i = jobs.size() - 1; i >= 0; i--) { final JobStatus js = jobs.valueAt(i); Network net = network; NetworkCapabilities netCap = capabilities; boolean match = networkMatch; if (js.shouldIgnoreNetworkBlocking()) { net = exemptedNetwork; netCap = exemptedNetworkCapabilities; match = exemptedNetworkMatch; } final Network net = getNetworkLocked(js); final NetworkCapabilities netCap = getNetworkCapabilities(net); final boolean match = (filterNetwork == null || Objects.equals(filterNetwork, net)); // Update either when we have a network match, or when the // job hasn't yet been evaluated against the currently Loading Loading @@ -950,7 +994,7 @@ public final class ConnectivityController extends RestrictingController implemen private int mUid; @Nullable private Network mDefaultNetwork; private boolean mBlocked; private int mBlockedReasons; private void setUid(int uid) { mUid = uid; Loading @@ -968,17 +1012,17 @@ public final class ConnectivityController extends RestrictingController implemen } @Override public void onBlockedStatusChanged(Network network, boolean blocked) { public void onBlockedStatusChanged(Network network, int blockedReasons) { if (DEBUG) { Slog.v(TAG, "default-onBlockedStatusChanged(" + mUid + "): " + network + " -> " + blocked); + network + " -> " + blockedReasons); } if (mUid == UserHandle.USER_NULL) { return; } synchronized (mLock) { mDefaultNetwork = network; mBlocked = blocked; mBlockedReasons = blockedReasons; updateTrackedJobsLocked(mUid, network); } } Loading Loading @@ -1037,7 +1081,7 @@ public final class ConnectivityController extends RestrictingController implemen pw.print("Network: "); pw.print(mDefaultNetwork); pw.print(" (blocked="); pw.print(mBlocked); pw.print(NetworkPolicyManager.blockedReasonsToString(mBlockedReasons)); pw.print(")"); } pw.println(); Loading @@ -1046,6 +1090,7 @@ public final class ConnectivityController extends RestrictingController implemen private static class UidStats { public final int uid; public int basePriority; public int numRunning; public int numReadyWithConnectivity; public int numRequestedNetworkAvailable; Loading @@ -1062,6 +1107,7 @@ public final class ConnectivityController extends RestrictingController implemen private void dumpLocked(IndentingPrintWriter pw, final long nowElapsed) { pw.print("UidStats{"); pw.print("uid", uid); pw.print("pri", basePriority); pw.print("#run", numRunning); pw.print("#readyWithConn", numReadyWithConnectivity); pw.print("#netAvail", numRequestedNetworkAvailable); Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java +0 −5 Original line number Diff line number Diff line Loading @@ -1139,11 +1139,6 @@ public final class JobStatus { && (mDynamicConstraints & CONSTRAINT_BACKGROUND_NOT_RESTRICTED) == 0); } boolean shouldIgnoreNetworkBlocking() { return (getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0 || (shouldTreatAsExpeditedJob() || startedAsExpeditedJob); } /** @return true if the constraint was changed, false otherwise. */ boolean setChargingConstraintSatisfied(final long nowElapsed, boolean state) { return setConstraintSatisfied(CONSTRAINT_CHARGING, nowElapsed, state); Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java +9 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.util.IndentingPrintWriter; import android.util.Slog; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.GuardedBy; import com.android.server.job.JobSchedulerService; import com.android.server.job.JobSchedulerService.Constants; import com.android.server.job.StateChangedListener; Loading Loading @@ -125,6 +126,14 @@ public abstract class StateController { public void reevaluateStateLocked(int uid) { } /** * Called when a UID's base priority has changed. The more positive the priority, the more * important the UID is. */ @GuardedBy("mLock") public void onUidPriorityChangedLocked(int uid, int newPriority) { } protected boolean wouldBeReadyWithConstraintLocked(JobStatus jobStatus, int constraint) { // This is very cheap to check (just a few conditions on data in JobStatus). final boolean jobWouldBeReady = jobStatus.wouldBeReadyWithConstraint(constraint); Loading