Refactor MasterSecret initialization, access, and timeout paths.

1) Consolidate all of the KeyCachingService interaction into a single
   mixin. Activities extend delegates which call through to the mixin.

2) Switch Activity increment/decrement triggers from onStop to onPause
   in order to account for some screen locks that don't stop activities.
This commit is contained in:
Moxie Marlinspike
2013-02-10 17:30:51 -08:00
parent 90280a62ae
commit c2dcf7ae74
15 changed files with 412 additions and 250 deletions

View File

@@ -22,17 +22,15 @@ import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import org.thoughtcrime.securesms.recipients.Recipients;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.ActionBar.TabListener;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import org.thoughtcrime.securesms.recipients.Recipients;
import org.thoughtcrime.securesms.service.KeyCachingService;
/**
* Activity container for selecting a list of contacts. Provides a tab frame for
* contact, group, and "recent contact" activity tabs. Used by ComposeMessageActivity
@@ -41,7 +39,7 @@ import org.thoughtcrime.securesms.service.KeyCachingService;
* @author Moxie Marlinspike
*
*/
public class ContactSelectionActivity extends SherlockFragmentActivity {
public class ContactSelectionActivity extends PassphraseRequiredSherlockFragmentActivity {
private ContactSelectionListFragment contactsFragment;
private ContactSelectionGroupsFragment groupsFragment;
@@ -64,18 +62,6 @@ public class ContactSelectionActivity extends SherlockFragmentActivity {
setupRecentTab();
}
@Override
protected void onStart() {
super.onStart();
registerPassphraseActivityStarted();
}
@Override
protected void onStop() {
super.onStop();
registerPassphraseActivityStopped();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = this.getSupportMenuInflater();
@@ -160,19 +146,4 @@ public class ContactSelectionActivity extends SherlockFragmentActivity {
recentTab.setIcon(R.drawable.ic_tab_recent);
this.getSupportActionBar().addTab(recentTab);
}
private void registerPassphraseActivityStarted() {
Intent intent = new Intent(this, KeyCachingService.class);
intent.setAction(KeyCachingService.ACTIVITY_START_EVENT);
startService(intent);
}
private void registerPassphraseActivityStopped() {
Intent intent = new Intent(this, KeyCachingService.class);
intent.setAction(KeyCachingService.ACTIVITY_STOP_EVENT);
startService(intent);
}
}