private void backupRequested(Context context, Intent intent) { if (new Preferences(context).isAllow3rdPartyIntegration()) { Log.d(TAG, "backup requested via broadcast intent"); new BackupJobs(context).scheduleImmediate(); } else { Log.d(TAG, "backup requested via broadcast intent but ignored"); } } }
private void bootup(Context context) { Log.i(TAG, "bootup"); getBackupJobs(context).scheduleBootup(); }
private void rescheduleJobs() { backupJobs.cancelAll(); if (preferences.isAutoBackupEnabled()) { backupJobs.scheduleRegular(); if (preferences.getIncomingTimeoutSecs() > 0 && !preferences.isUseOldScheduler()) { backupJobs.scheduleContentTriggerJob(); } } }
public void cancelAll() { cancelRegular(); cancelContentUriTrigger(); }
public @Nullable Job scheduleBootup() { if (!preferences.isAutoBackupEnabled()) { Log.d(TAG, "auto backup no longer enabled, canceling all jobs"); cancelAll(); return null; } else if (preferences.isUseOldScheduler()) { return schedule(BOOT_BACKUP_DELAY, REGULAR, false); } else { // everything else should be persistent by GCM return null; } }
protected BackupJobs getBackupJobs(Context context) { return new BackupJobs(context); } }
private void incomingSMS(Context context) { if (shouldSchedule(context)) { getBackupJobs(context).scheduleIncoming(); } else { Log.i(TAG, "Received SMS but not set up to back up."); } }
private void scheduleNextBackup(BackupState state) { if (state.backupType == REGULAR && getPreferences().isUseOldScheduler()) { final Job nextSync = getBackupJobs().scheduleRegular(); if (nextSync != null) { JobTrigger.ExecutionWindowTrigger trigger = (JobTrigger.ExecutionWindowTrigger) nextSync.getTrigger(); Date date = new Date(System.currentTimeMillis() + (trigger.getWindowStart() * 1000)); appLog(R.string.app_log_scheduled_next_sync, DateFormat.format("kk:mm", date)); } else { appLog(R.string.app_log_no_next_sync); } } // else job already persisted }
@Test public void shouldScheduleContentUriTriggerForCallLogIfEnabled() throws Exception { when(preferences.isCallLogBackupAfterCallEnabled()).thenReturn(true); when(dataTypePreferences.isBackupEnabled(CALLLOG)).thenReturn(true); Job job = subject.scheduleContentTriggerJob(); assertThat(job.getTrigger()).isInstanceOf(JobTrigger.ContentUriTrigger.class); JobTrigger.ContentUriTrigger contentUriTrigger = (JobTrigger.ContentUriTrigger) job.getTrigger(); assertThat(contentUriTrigger.getUris()).containsExactly( new ObservedUri(SMS_PROVIDER, FLAG_NOTIFY_FOR_DESCENDANTS), new ObservedUri(CALLLOG_PROVIDER, FLAG_NOTIFY_FOR_DESCENDANTS) ); }
@Test public void shouldScheduleImmediate() throws Exception { Job job = subject.scheduleImmediate(); verifyJobScheduled(job, -1, "BROADCAST_INTENT"); }
private void cancelContentUriTrigger() { cancel(CONTENT_TRIGGER_TAG); }
private boolean shouldRun(JobParameters jobParameters) { if (BackupType.fromName(jobParameters.getTag()) == REGULAR) { final Preferences prefs = new Preferences(this); final boolean autoBackupEnabled = prefs.isAutoBackupEnabled(); if (!autoBackupEnabled) { // was disabled in meantime, cancel getBackupJobs().cancelRegular(); } return autoBackupEnabled; } else { return true; } }
private BackupJobs getBackupJobs() { return new BackupJobs(this); } }
Log.v(TAG, "scheduling follow-up job for content triggered job "+jobParameters); getBackupJobs().scheduleIncoming(); return false; } else if (shouldRun(jobParameters)) {
@Test public void shouldNotScheduleRegularBackupIfAutoBackupIsDisabled() throws Exception { when(preferences.isAutoBackupEnabled()).thenReturn(false); assertThat(subject.scheduleRegular()).isEqualTo(null); }
@Test public void shouldScheduleContentUriTriggerForSMS() throws Exception { Job job = subject.scheduleContentTriggerJob(); assertThat(job.getTrigger()).isInstanceOf(JobTrigger.ContentUriTrigger.class); JobTrigger.ContentUriTrigger contentUriTrigger = (JobTrigger.ContentUriTrigger) job.getTrigger(); assertThat(contentUriTrigger.getUris()).containsExactly(new ObservedUri(SMS_PROVIDER, FLAG_NOTIFY_FOR_DESCENDANTS)); }
public void cancelRegular() { cancel(REGULAR.name()); }
protected BackupJobs getBackupJobs(Context context) { return new BackupJobs(context); }
@Test public void shouldScheduleIncomingBackupAfterIncomingMessage() throws Exception { mockScheduled(); receiver.onReceive(context, new Intent().setAction("android.provider.Telephony.SMS_RECEIVED")); verify(backupJobs, times(1)).scheduleIncoming(); }
@Test public void shouldScheduleBootupBackupAfterBootup() throws Exception { receiver.onReceive(RuntimeEnvironment.application, new Intent().setAction(Intent.ACTION_BOOT_COMPLETED)); verify(backupJobs, times(1)).scheduleBootup(); } }