Merge \"Fix issue #29545190: JobScheduler ContentUri NOTIFY_FOR_DESCENDANTS flag...\" into nyc-dev

am: a62a7eef24

Change-Id: I62361e51b439e563b91e86d6886d5b46f64737b0
This commit is contained in:
Dianne Hackborn
2016-06-22 17:18:38 +00:00
committed by android-build-merger
2 changed files with 23 additions and 5 deletions

View File

@@ -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
@@ -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();

View File

@@ -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) {
@@ -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() &
@@ -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);
}
}
}
@@ -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("):");