Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a62a7eef authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android (Google) Code Review
Browse files

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

parents 6b6bf9cd 121e1645
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -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();
+8 −5
Original line number Diff line number Diff line
@@ -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("):");