Merge \"Fix issue #29545190: JobScheduler ContentUri NOTIFY_FOR_DESCENDANTS flag...\" into nyc-dev
am: a62a7eef24
Change-Id: Ieb9435479b727da5ea3ce5f512b43986898675fd
This commit is contained in:
@@ -28,6 +28,7 @@ import android.os.PersistableBundle;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Container of data passed to the {@link android.app.job.JobScheduler} fully encapsulating the
|
* 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;
|
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) {
|
private TriggerContentUri(Parcel in) {
|
||||||
mUri = Uri.CREATOR.createFromParcel(in);
|
mUri = Uri.CREATOR.createFromParcel(in);
|
||||||
mFlags = in.readInt();
|
mFlags = in.readInt();
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class ContentObserverController extends StateController {
|
|||||||
private static volatile ContentObserverController sController;
|
private static volatile ContentObserverController sController;
|
||||||
|
|
||||||
final private List<JobStatus> mTrackedTasks = new ArrayList<JobStatus>();
|
final private List<JobStatus> mTrackedTasks = new ArrayList<JobStatus>();
|
||||||
ArrayMap<Uri, ObserverInstance> mObservers = new ArrayMap<>();
|
ArrayMap<JobInfo.TriggerContentUri, ObserverInstance> mObservers = new ArrayMap<>();
|
||||||
final Handler mHandler;
|
final Handler mHandler;
|
||||||
|
|
||||||
public static ContentObserverController get(JobSchedulerService taskManagerService) {
|
public static ContentObserverController get(JobSchedulerService taskManagerService) {
|
||||||
@@ -253,10 +253,10 @@ public class ContentObserverController extends StateController {
|
|||||||
final JobInfo.TriggerContentUri[] uris = jobStatus.getJob().getTriggerContentUris();
|
final JobInfo.TriggerContentUri[] uris = jobStatus.getJob().getTriggerContentUris();
|
||||||
if (uris != null) {
|
if (uris != null) {
|
||||||
for (JobInfo.TriggerContentUri uri : uris) {
|
for (JobInfo.TriggerContentUri uri : uris) {
|
||||||
ObserverInstance obs = mObservers.get(uri.getUri());
|
ObserverInstance obs = mObservers.get(uri);
|
||||||
if (obs == null) {
|
if (obs == null) {
|
||||||
obs = new ObserverInstance(mHandler, uri.getUri());
|
obs = new ObserverInstance(mHandler, uri.getUri());
|
||||||
mObservers.put(uri.getUri(), obs);
|
mObservers.put(uri, obs);
|
||||||
mContext.getContentResolver().registerContentObserver(
|
mContext.getContentResolver().registerContentObserver(
|
||||||
uri.getUri(),
|
uri.getUri(),
|
||||||
(uri.getFlags() &
|
(uri.getFlags() &
|
||||||
@@ -316,7 +316,7 @@ public class ContentObserverController extends StateController {
|
|||||||
obs.mJobs.remove(this);
|
obs.mJobs.remove(this);
|
||||||
if (obs.mJobs.size() == 0) {
|
if (obs.mJobs.size() == 0) {
|
||||||
mContext.getContentResolver().unregisterContentObserver(obs);
|
mContext.getContentResolver().unregisterContentObserver(obs);
|
||||||
mObservers.remove(obs.mUri);
|
mObservers.remove(obs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -355,7 +355,10 @@ public class ContentObserverController extends StateController {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
pw.print(" ");
|
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(" (");
|
||||||
pw.print(System.identityHashCode(obs));
|
pw.print(System.identityHashCode(obs));
|
||||||
pw.println("):");
|
pw.println("):");
|
||||||
|
|||||||
Reference in New Issue
Block a user