Loading core/java/android/app/job/JobInfo.java +15 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.os.PersistableBundle; import android.util.Log; import java.util.ArrayList; import java.util.Objects; /** * Container of data passed to the {@link android.app.job.JobScheduler} fully encapsulating the Loading Loading @@ -494,6 +495,20 @@ public class JobInfo implements Parcelable { return mFlags; } @Override public boolean equals(Object o) { if (!(o instanceof TriggerContentUri)) { return false; } TriggerContentUri t = (TriggerContentUri) o; return Objects.equals(t.mUri, mUri) && t.mFlags == mFlags; } @Override public int hashCode() { return (mUri == null ? 0 : mUri.hashCode()) ^ mFlags; } private TriggerContentUri(Parcel in) { mUri = Uri.CREATOR.createFromParcel(in); mFlags = in.readInt(); Loading services/core/java/com/android/server/job/controllers/ContentObserverController.java +8 −5 Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ public class ContentObserverController extends StateController { private static volatile ContentObserverController sController; final private List<JobStatus> mTrackedTasks = new ArrayList<JobStatus>(); ArrayMap<Uri, ObserverInstance> mObservers = new ArrayMap<>(); ArrayMap<JobInfo.TriggerContentUri, ObserverInstance> mObservers = new ArrayMap<>(); final Handler mHandler; public static ContentObserverController get(JobSchedulerService taskManagerService) { Loading Loading @@ -253,10 +253,10 @@ public class ContentObserverController extends StateController { final JobInfo.TriggerContentUri[] uris = jobStatus.getJob().getTriggerContentUris(); if (uris != null) { for (JobInfo.TriggerContentUri uri : uris) { ObserverInstance obs = mObservers.get(uri.getUri()); ObserverInstance obs = mObservers.get(uri); if (obs == null) { obs = new ObserverInstance(mHandler, uri.getUri()); mObservers.put(uri.getUri(), obs); mObservers.put(uri, obs); mContext.getContentResolver().registerContentObserver( uri.getUri(), (uri.getFlags() & Loading Loading @@ -316,7 +316,7 @@ public class ContentObserverController extends StateController { obs.mJobs.remove(this); if (obs.mJobs.size() == 0) { mContext.getContentResolver().unregisterContentObserver(obs); mObservers.remove(obs.mUri); mObservers.remove(obs); } } } Loading Loading @@ -355,7 +355,10 @@ public class ContentObserverController extends StateController { continue; } pw.print(" "); pw.print(mObservers.keyAt(i)); JobInfo.TriggerContentUri trigger = mObservers.keyAt(i); pw.print(trigger.getUri()); pw.print(" 0x"); pw.print(Integer.toHexString(trigger.getFlags())); pw.print(" ("); pw.print(System.identityHashCode(obs)); pw.println("):"); Loading Loading
core/java/android/app/job/JobInfo.java +15 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.os.PersistableBundle; import android.util.Log; import java.util.ArrayList; import java.util.Objects; /** * Container of data passed to the {@link android.app.job.JobScheduler} fully encapsulating the Loading Loading @@ -494,6 +495,20 @@ public class JobInfo implements Parcelable { return mFlags; } @Override public boolean equals(Object o) { if (!(o instanceof TriggerContentUri)) { return false; } TriggerContentUri t = (TriggerContentUri) o; return Objects.equals(t.mUri, mUri) && t.mFlags == mFlags; } @Override public int hashCode() { return (mUri == null ? 0 : mUri.hashCode()) ^ mFlags; } private TriggerContentUri(Parcel in) { mUri = Uri.CREATOR.createFromParcel(in); mFlags = in.readInt(); Loading
services/core/java/com/android/server/job/controllers/ContentObserverController.java +8 −5 Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ public class ContentObserverController extends StateController { private static volatile ContentObserverController sController; final private List<JobStatus> mTrackedTasks = new ArrayList<JobStatus>(); ArrayMap<Uri, ObserverInstance> mObservers = new ArrayMap<>(); ArrayMap<JobInfo.TriggerContentUri, ObserverInstance> mObservers = new ArrayMap<>(); final Handler mHandler; public static ContentObserverController get(JobSchedulerService taskManagerService) { Loading Loading @@ -253,10 +253,10 @@ public class ContentObserverController extends StateController { final JobInfo.TriggerContentUri[] uris = jobStatus.getJob().getTriggerContentUris(); if (uris != null) { for (JobInfo.TriggerContentUri uri : uris) { ObserverInstance obs = mObservers.get(uri.getUri()); ObserverInstance obs = mObservers.get(uri); if (obs == null) { obs = new ObserverInstance(mHandler, uri.getUri()); mObservers.put(uri.getUri(), obs); mObservers.put(uri, obs); mContext.getContentResolver().registerContentObserver( uri.getUri(), (uri.getFlags() & Loading Loading @@ -316,7 +316,7 @@ public class ContentObserverController extends StateController { obs.mJobs.remove(this); if (obs.mJobs.size() == 0) { mContext.getContentResolver().unregisterContentObserver(obs); mObservers.remove(obs.mUri); mObservers.remove(obs); } } } Loading Loading @@ -355,7 +355,10 @@ public class ContentObserverController extends StateController { continue; } pw.print(" "); pw.print(mObservers.keyAt(i)); JobInfo.TriggerContentUri trigger = mObservers.keyAt(i); pw.print(trigger.getUri()); pw.print(" 0x"); pw.print(Integer.toHexString(trigger.getFlags())); pw.print(" ("); pw.print(System.identityHashCode(obs)); pw.println("):"); Loading