private static void sendResultSafely(JobCallback callback, int result) { try { callback.jobFinished(result); } catch (Throwable e) { Log.e(TAG, "Encountered error running callback: " + e.getMessage()); } }
@Test public void prepareJob_messenger() { JobInvocation jobInvocation = receiver.prepareJob(callbackMock, new Bundle()); assertNull(jobInvocation); verify(callbackMock).jobFinished(JobService.RESULT_FAIL_NORETRY); }
@Test public void onJobFinished_failWithRetryRecurringContentJob_sendResult() { JobInvocation jobInvocation = receiver.prepareJob(callbackMock, getBundleForContentJobExecutionRecurring()); receiver.onJobFinished(jobInvocation, JobService.RESULT_FAIL_RETRY); // If a job finishes with RESULT_FAIL_RETRY we don't need to send a reschedule request. // Rescheduling will erase previously triggered URIs. verify(callbackMock).jobFinished(JobService.RESULT_FAIL_RETRY); verifyZeroInteractions(driverMock); }
@Test public void onJobFinished_notRecurringContentJob_sendResult() { jobInvocationBuilder.setTrigger( Trigger.contentUriTrigger(Arrays.asList(new ObservedUri(Contacts.CONTENT_URI, 0)))); JobInvocation jobInvocation = receiver.prepareJob(callbackMock, TestUtil.getBundleForContentJobExecution()); receiver.onJobFinished(jobInvocation, JobService.RESULT_SUCCESS); verify(callbackMock).jobFinished(JobService.RESULT_SUCCESS); verifyZeroInteractions(driverMock); }
@Test public void testExtractCallback_goodParcelable() { InspectableBinder binder = new InspectableBinder(); Bundle validBundle = new Bundle(); validBundle.putParcelable("callback", binder.toPendingCallback()); Pair<JobCallback, Bundle> extraction = extractCallback(validBundle); assertNotNull(extraction); assertEquals( "should have stripped the 'callback' entry from the extracted bundle", 0, extraction.second.keySet().size()); extraction.first.jobFinished(JobService.RESULT_SUCCESS); // Check our homemade Binder is doing the right things: TransactionArguments args = binder.getArguments().get(0); // Should have set the transaction code: assertEquals("transaction code", IBinder.FIRST_CALL_TRANSACTION + 1, args.code); // strong mode bit args.data.readInt(); // interface token assertEquals("com.google.android.gms.gcm.INetworkTaskCallback", args.data.readString()); // result assertEquals("result", JobService.RESULT_SUCCESS, args.data.readInt()); }