Really really delay SMS processing until sqlcipher migration completes

Blocking the SMS job on the screen lock isn't enough, since then
the job races against the migration.

Fixes #7390
This commit is contained in:
Moxie Marlinspike
2018-02-26 14:02:12 -08:00
parent a0a9e412b4
commit 18aa202695
6 changed files with 87 additions and 4 deletions

View File

@@ -0,0 +1,31 @@
package org.thoughtcrime.securesms.jobs.requirements;
import android.content.Context;
import android.support.annotation.NonNull;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.whispersystems.jobqueue.dependencies.ContextDependent;
import org.whispersystems.jobqueue.requirements.Requirement;
public class SqlCipherMigrationRequirement implements Requirement, ContextDependent {
@SuppressWarnings("unused")
private static final String TAG = SqlCipherMigrationRequirement.class.getSimpleName();
private transient Context context;
public SqlCipherMigrationRequirement(@NonNull Context context) {
this.context = context;
}
@Override
public void setContext(Context context) {
this.context = context;
}
@Override
public boolean isPresent() {
return !TextSecurePreferences.getNeedsSqlCipherMigration(context);
}
}

View File

@@ -0,0 +1,31 @@
package org.thoughtcrime.securesms.jobs.requirements;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import org.whispersystems.jobqueue.requirements.RequirementListener;
import org.whispersystems.jobqueue.requirements.RequirementProvider;
public class SqlCipherMigrationRequirementProvider implements RequirementProvider {
private RequirementListener listener;
public SqlCipherMigrationRequirementProvider() {
EventBus.getDefault().register(this);
}
@Override
public void setListener(RequirementListener listener) {
this.listener = listener;
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(SqlCipherNeedsMigrationEvent event) {
if (listener != null) listener.onRequirementStatusChanged();
}
public static class SqlCipherNeedsMigrationEvent {
}
}