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; } }
@Subscribe public void autoBackupSettingsChanged(final AutoBackupSettingsChangedEvent event) { if (LOCAL_LOGV) { Log.v(TAG, "autoBackupSettingsChanged("+event+")"); } setBroadcastReceiversEnabled(preferences.isUseOldScheduler() && preferences.isAutoBackupEnabled()); rescheduleJobs(); }
private void mockScheduled() { when(authPreferences.isLoginInformationSet()).thenReturn(true); when(preferences.isAutoBackupEnabled()).thenReturn(true); when(preferences.isFirstBackup()).thenReturn(false); when(preferences.isUseOldScheduler()).thenReturn(true); } }
@Test public void shouldScheduleNothingAfterBootForNewScheduler() throws Exception { when(preferences.isAutoBackupEnabled()).thenReturn(true); when(preferences.isUseOldScheduler()).thenReturn(false); Job job = subject.scheduleBootup(); assertThat(job).isNull(); }
private void rescheduleJobs() { backupJobs.cancelAll(); if (preferences.isAutoBackupEnabled()) { backupJobs.scheduleRegular(); if (preferences.getIncomingTimeoutSecs() > 0 && !preferences.isUseOldScheduler()) { backupJobs.scheduleContentTriggerJob(); } } }
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 }
BackupJobs(Context context, Preferences preferences) { this.preferences = preferences; firebaseJobDispatcher = new FirebaseJobDispatcher( preferences.isUseOldScheduler() ? new AlarmManagerDriver(context) : new GooglePlayDriver(context)); }
@Test public void shouldScheduleRegularJobAfterBootForOldScheduler() throws Exception { when(preferences.isAutoBackupEnabled()).thenReturn(true); when(preferences.isUseOldScheduler()).thenReturn(true); Job job = subject.scheduleBootup(); verifyJobScheduled(job, 60, "REGULAR"); }
@Test public void shouldNotCheckForConnectivityBeforeBackingUpWithNewScheduler() throws Exception { when(preferences.isUseOldScheduler()).thenReturn(false); Intent intent = new Intent(REGULAR.name()); shadowConnectivityManager.setActiveNetworkInfo(null); shadowConnectivityManager.setBackgroundDataSetting(true); service.handleIntent(intent); verify(backupTask).execute(any(BackupConfig.class)); }
@Before public void before() { initMocks(this); sentNotifications = new ArrayList<NotificationCompat.Builder>(); service = new SmsBackupService() { @Override public Context getApplicationContext() { return RuntimeEnvironment.application; } @Override public Resources getResources() { return getApplicationContext().getResources(); } @Override protected BackupTask getBackupTask() { return backupTask; } @Override protected BackupJobs getBackupJobs() { return backupJobs; } @Override protected Preferences getPreferences() { return preferences; } @Override public int checkPermission(String permission, int pid, int uid) { return PERMISSION_GRANTED; } @Override protected AuthPreferences getAuthPreferences() { return authPreferences; } @Override protected void notifyUser(int icon, NotificationCompat.Builder builder) { sentNotifications.add(builder); } }; shadowConnectivityManager = shadowOf(service.getConnectivityManager()); shadowWifiManager = shadowOf(service.getWifiManager()); service.onCreate(); when(authPreferences.getStoreUri()).thenReturn("imap+ssl+://xoauth:foooo@imap.gmail.com:993"); when(authPreferences.isLoginInformationSet()).thenReturn(true); when(preferences.getBackupContactGroup()).thenReturn(ContactGroup.EVERYBODY); when(preferences.isUseOldScheduler()).thenReturn(true); when(preferences.getDataTypePreferences()).thenReturn(dataTypePreferences); when(dataTypePreferences.enabled()).thenReturn(EnumSet.of(DataType.SMS)); }
private void backup(BackupType backupType) { getNotifier().cancel(NOTIFICATION_ID_WARNING); try { // set initial state state = new BackupState(INITIAL, 0, 0, backupType, null, null); EnumSet<DataType> enabledTypes = getEnabledBackupTypes(); checkPermissions(enabledTypes); if (backupType != SKIP) { checkCredentials(); if (getPreferences().isUseOldScheduler()) { legacyCheckConnectivity(); } } appLog(R.string.app_log_start_backup, backupType); getBackupTask().execute(getBackupConfig(backupType, enabledTypes, getBackupImapStore())); } catch (MessagingException e) { Log.w(TAG, e); moveToState(state.transition(ERROR, e)); } catch (ConnectivityException e) { moveToState(state.transition(ERROR, e)); } catch (RequiresLoginException e) { appLog(R.string.app_log_missing_credentials); moveToState(state.transition(ERROR, e)); } catch (BackupDisabledException e) { moveToState(state.transition(FINISHED_BACKUP, e)); } catch (MissingPermissionException e) { moveToState(state.transition(ERROR, e)); } }