private void assertNativeJobInfoMatchesJobInfo(android.app.job.JobInfo nativeJob, JobInfo job) { assertEquals(nativeJob.getId(), job.getId()); assertEquals(new PersistableBundle(nativeJob.getExtras()).toMap(10), job.getExtras().toMap(10)); assertEquals(nativeJob.getService(), new ComponentName(context, JobSchedulerJobService.class)); assertEquals(nativeJob.isRequireCharging(), job.isRequireCharging()); assertEquals(nativeJob.isRequireDeviceIdle(), job.isRequireDeviceIdle()); assertEquals(nativeJob.getNetworkType(), job.getNetworkType()); assertEquals(nativeJob.getMinLatencyMillis(), job.getMinLatencyMillis()); assertEquals(nativeJob.getMaxExecutionDelayMillis(), job.getMaxExecutionDelayMillis()); assertEquals(nativeJob.isPeriodic(), job.isPeriodic()); assertEquals(nativeJob.isPersisted(), job.isPersisted()); assertEquals(nativeJob.getInitialBackoffMillis(), job.getInitialBackoffMillis()); assertEquals(nativeJob.getBackoffPolicy(), job.getBackoffPolicy()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { assertEquals(nativeJob.getFlexMillis(), job.getFlexMillis()); assertArrayEquals(getUris(nativeJob.getTriggerContentUris()), getUris(job.getTriggerContentUris())); assertEquals(nativeJob.getTriggerContentUpdateDelay(), job.getTriggerContentUpdateDelay()); assertEquals(nativeJob.getTriggerContentMaxDelay(), job.getTriggerContentMaxDelay()); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { assertEquals( BundleUtils.toMap(nativeJob.getTransientExtras(), 10), BundleUtils.toMap(job.getTransientExtras(), 10)); assertEquals(nativeJob.isRequireBatteryNotLow(), job.isRequireBatteryNotLow()); assertEquals(nativeJob.isRequireStorageNotLow(), job.isRequireBatteryNotLow()); } }