2
0

Apply 'Lhunath' code inspection fixes and improvements.

This commit is contained in:
Maarten Billemont
2017-04-04 20:39:18 -04:00
parent 86f956571d
commit b478691980
59 changed files with 452 additions and 320 deletions

View File

@@ -32,6 +32,7 @@ public class EmergencyActivity extends Activity {
private static final Logger logger = Logger.get( EmergencyActivity.class );
private static final ClipData EMPTY_CLIP = new ClipData( new ClipDescription( "", new String[0] ), new ClipData.Item( "" ) );
private static final int PASSWORD_NOTIFICATION = 0;
public static final int CLIPBOARD_CLEAR_DELAY = 20 /* s */ * MPConstant.MS_PER_S;
private final Preferences preferences = Preferences.get( this );
private final ListeningExecutorService executor = MoreExecutors.listeningDecorator( Executors.newSingleThreadExecutor() );
@@ -81,14 +82,13 @@ public class EmergencyActivity extends Activity {
private int id_version;
private String sitePassword;
public static void start(Context context) {
public static void start(final Context context) {
context.startActivity( new Intent( context, EmergencyActivity.class ) );
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
public void onCreate(@Nullable final Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
Res.init( getResources() );
getWindow().setFlags( WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE );
setContentView( R.layout.activity_emergency );
@@ -157,13 +157,13 @@ public class EmergencyActivity extends Activity {
}
} );
fullNameField.setTypeface( Res.exo_Thin );
fullNameField.setTypeface( Res.get( this ).exo_Thin );
fullNameField.setPaintFlags( fullNameField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
masterPasswordField.setTypeface( Res.sourceCodePro_ExtraLight );
masterPasswordField.setTypeface( Res.get( this ).sourceCodePro_ExtraLight );
masterPasswordField.setPaintFlags( masterPasswordField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
siteNameField.setTypeface( Res.exo_Regular );
siteNameField.setTypeface( Res.get( this ).exo_Regular );
siteNameField.setPaintFlags( siteNameField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
sitePasswordField.setTypeface( Res.sourceCodePro_Black );
sitePasswordField.setTypeface( Res.get( this ).sourceCodePro_Black );
sitePasswordField.setPaintFlags( sitePasswordField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
rememberFullNameField.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@@ -243,9 +243,11 @@ public class EmergencyActivity extends Activity {
final String fullName = fullNameField.getText().toString();
final char[] masterPassword = masterPasswordField.getText().toString().toCharArray();
final MasterKey.Version version = (MasterKey.Version) siteVersionButton.getTag();
if (fullName.hashCode() == id_userName && Arrays.hashCode( masterPassword ) == id_masterPassword &&
version.ordinal() == id_version && masterKeyFuture != null && !masterKeyFuture.isCancelled())
return;
if ((id_userName == fullName.hashCode())
&& (id_masterPassword == Arrays.hashCode( masterPassword ))
&& (id_version == version.ordinal()))
if ((masterKeyFuture != null) && !masterKeyFuture.isCancelled())
return;
id_userName = fullName.hashCode();
id_masterPassword = Arrays.hashCode( masterPassword );
@@ -257,7 +259,7 @@ public class EmergencyActivity extends Activity {
if (masterKeyFuture != null)
masterKeyFuture.cancel( true );
if (fullName.isEmpty() || masterPassword.length == 0) {
if (fullName.isEmpty() || (masterPassword.length == 0)) {
sitePasswordField.setText( "" );
progressView.setVisibility( View.INVISIBLE );
return;
@@ -272,7 +274,7 @@ public class EmergencyActivity extends Activity {
try {
return MasterKey.create( version, fullName, masterPassword );
}
catch (Exception e) {
catch (final Exception e) {
sitePasswordField.setText( "" );
progressView.setVisibility( View.INVISIBLE );
logger.err( e, "While generating master key." );
@@ -297,7 +299,7 @@ public class EmergencyActivity extends Activity {
final MPSiteType type = (MPSiteType) siteTypeButton.getTag();
final UnsignedInteger counter = UnsignedInteger.valueOf( siteCounterButton.getText().toString() );
if (masterKeyFuture == null || siteName.isEmpty() || type == null) {
if ((masterKeyFuture == null) || siteName.isEmpty() || (type == null)) {
sitePasswordField.setText( "" );
progressView.setVisibility( View.INVISIBLE );
@@ -322,17 +324,17 @@ public class EmergencyActivity extends Activity {
}
} );
}
catch (InterruptedException ignored) {
catch (final InterruptedException ignored) {
sitePasswordField.setText( "" );
progressView.setVisibility( View.INVISIBLE );
}
catch (ExecutionException e) {
catch (final ExecutionException e) {
sitePasswordField.setText( "" );
progressView.setVisibility( View.INVISIBLE );
logger.err( e, "While generating site password." );
throw Throwables.propagate( e );
}
catch (RuntimeException e) {
catch (final RuntimeException e) {
sitePasswordField.setText( "" );
progressView.setVisibility( View.INVISIBLE );
logger.err( e, "While generating site password." );
@@ -342,7 +344,7 @@ public class EmergencyActivity extends Activity {
} );
}
public void integrityTests(View view) {
public void integrityTests(final View view) {
if (masterKeyFuture != null) {
masterKeyFuture.cancel( true );
masterKeyFuture = null;
@@ -350,8 +352,8 @@ public class EmergencyActivity extends Activity {
TestActivity.startNoSkip( this );
}
public void copySitePassword(View view) {
final String currentSitePassword = this.sitePassword;
public void copySitePassword(final View view) {
final String currentSitePassword = sitePassword;
if (TextUtils.isEmpty( currentSitePassword ))
return;
@@ -384,7 +386,7 @@ public class EmergencyActivity extends Activity {
notificationManager.cancel( PASSWORD_NOTIFICATION );
timer.cancel();
}
}, 20000 );
}, CLIPBOARD_CLEAR_DELAY );
Intent startMain = new Intent( Intent.ACTION_MAIN );
startMain.addCategory( Intent.CATEGORY_HOME );
@@ -392,7 +394,7 @@ public class EmergencyActivity extends Activity {
startActivity( startMain );
}
private abstract class ValueChangedListener
private abstract static class ValueChangedListener
implements TextWatcher, NumberPicker.OnValueChangeListener, AdapterView.OnItemSelectedListener, View.OnFocusChangeListener {
abstract void update();

View File

@@ -53,7 +53,7 @@ public class MainThreadExecutor extends AbstractExecutorService {
synchronized (commands) {
ImmutableList<Runnable> pendingTasks = ImmutableList.copyOf( commands );
commands.clear();
commands.notify();
commands.notifyAll();
return pendingTasks;
}
}

View File

@@ -12,7 +12,7 @@ import javax.annotation.Nullable;
/**
* @author lhunath, 2016-02-20
*/
public class Preferences {
public final class Preferences {
private static final String PREF_TESTS_PASSED = "integrityTestsPassed";
private static final String PREF_NATIVE_KDF = "nativeKDF";
@@ -35,7 +35,7 @@ public class Preferences {
return instance;
}
private Preferences(Context context) {
private Preferences(final Context context) {
this.context = context;
}
@@ -47,7 +47,7 @@ public class Preferences {
return prefs;
}
public boolean setNativeKDFEnabled(boolean enabled) {
public boolean setNativeKDFEnabled(final boolean enabled) {
if (isAllowNativeKDF() == enabled)
return false;
@@ -71,7 +71,7 @@ public class Preferences {
return prefs().getStringSet( PREF_TESTS_PASSED, ImmutableSet.<String>of() );
}
public boolean setRememberFullName(boolean enabled) {
public boolean setRememberFullName(final boolean enabled) {
if (isRememberFullName() == enabled)
return false;
@@ -83,7 +83,7 @@ public class Preferences {
return prefs().getBoolean( PREF_REMEMBER_FULL_NAME, false );
}
public boolean setForgetPassword(boolean enabled) {
public boolean setForgetPassword(final boolean enabled) {
if (isForgetPassword() == enabled)
return false;
@@ -95,7 +95,7 @@ public class Preferences {
return prefs().getBoolean( PREF_FORGET_PASSWORD, false );
}
public boolean setMaskPassword(boolean enabled) {
public boolean setMaskPassword(final boolean enabled) {
if (isMaskPassword() == enabled)
return false;
@@ -107,7 +107,7 @@ public class Preferences {
return prefs().getBoolean( PREF_MASK_PASSWORD, false );
}
public boolean setFullName(@Nullable String value) {
public boolean setFullName(@Nullable final String value) {
if (getFullName().equals( value ))
return false;
@@ -120,8 +120,8 @@ public class Preferences {
return prefs().getString( PREF_FULL_NAME, "" );
}
public boolean setDefaultSiteType(@Nonnull MPSiteType value) {
if (getDefaultSiteType().equals( value ))
public boolean setDefaultSiteType(@Nonnull final MPSiteType value) {
if (getDefaultSiteType() == value)
return false;
prefs().edit().putInt( PREF_SITE_TYPE, value.ordinal() ).apply();
@@ -133,8 +133,8 @@ public class Preferences {
return MPSiteType.values()[prefs().getInt( PREF_SITE_TYPE, MPSiteType.GeneratedLong.ordinal() )];
}
public boolean setDefaultVersion(@Nonnull MasterKey.Version value) {
if (getDefaultVersion().equals( value ))
public boolean setDefaultVersion(@Nonnull final MasterKey.Version value) {
if (getDefaultVersion() == value)
return false;
prefs().edit().putInt( PREF_ALGORITHM_VERSION, value.ordinal() ).apply();

View File

@@ -1,5 +1,6 @@
package com.lyndir.masterpassword;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Typeface;
@@ -7,28 +8,32 @@ import android.graphics.Typeface;
/**
* @author lhunath, 2014-08-25
*/
public class Res {
public final class Res {
public static Typeface sourceCodePro_Black;
public static Typeface sourceCodePro_ExtraLight;
public static Typeface exo_Bold;
public static Typeface exo_ExtraBold;
public static Typeface exo_Regular;
public static Typeface exo_Thin;
public final Typeface sourceCodePro_Black;
public final Typeface sourceCodePro_ExtraLight;
public final Typeface exo_Bold;
public final Typeface exo_ExtraBold;
public final Typeface exo_Regular;
public final Typeface exo_Thin;
private static boolean initialized;
private static Res res;
public static void init(Resources resources) {
public static synchronized Res get(final Context context) {
if (res == null)
res = new Res( context );
if (initialized)
return;
initialized = true;
return res;
}
sourceCodePro_Black = Typeface.createFromAsset( resources.getAssets(), "SourceCodePro-Black.otf" );
sourceCodePro_ExtraLight = Typeface.createFromAsset( resources.getAssets(), "SourceCodePro-ExtraLight.otf" );
exo_Bold = Typeface.createFromAsset( resources.getAssets(), "Exo2.0-Bold.otf" );
exo_ExtraBold = Typeface.createFromAsset( resources.getAssets(), "Exo2.0-ExtraBold.otf" );
exo_Regular = Typeface.createFromAsset( resources.getAssets(), "Exo2.0-Regular.otf" );
exo_Thin = Typeface.createFromAsset( resources.getAssets(), "Exo2.0-Thin.otf" );
@SuppressWarnings("HardCodedStringLiteral")
private Res(final Context context) {
sourceCodePro_Black = Typeface.createFromAsset( context.getResources().getAssets(), "SourceCodePro-Black.otf" );
sourceCodePro_ExtraLight = Typeface.createFromAsset( context.getResources().getAssets(), "SourceCodePro-ExtraLight.otf" );
exo_Bold = Typeface.createFromAsset( context.getResources().getAssets(), "Exo2.0-Bold.otf" );
exo_ExtraBold = Typeface.createFromAsset( context.getResources().getAssets(), "Exo2.0-ExtraBold.otf" );
exo_Regular = Typeface.createFromAsset( context.getResources().getAssets(), "Exo2.0-Regular.otf" );
exo_Thin = Typeface.createFromAsset( context.getResources().getAssets(), "Exo2.0-Thin.otf" );
}
}

View File

@@ -47,14 +47,13 @@ public class TestActivity extends Activity implements MPTestSuite.Listener {
private Runnable action;
private ImmutableSet<String> testNames;
public static void startNoSkip(Context context) {
public static void startNoSkip(final Context context) {
context.startActivity( new Intent( context, TestActivity.class ) );
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
public void onCreate(@Nullable final Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
Res.init( getResources() );
setContentView( R.layout.activity_test );
ButterKnife.bind( this );
@@ -76,11 +75,11 @@ public class TestActivity extends Activity implements MPTestSuite.Listener {
@Nullable
@Override
public String apply(@Nullable final MPTests.Case input) {
return input == null? null: input.identifier;
return (input == null)? null: input.identifier;
}
} ).filter( Predicates.notNull() ).toSet();
}
catch (MPTestSuite.UnavailableException e) {
catch (final MPTestSuite.UnavailableException e) {
logger.err( e, "While loading test suite" );
setStatus( R.string.tests_unavailable, R.string.tests_btn_unavailable, new Runnable() {
@Override
@@ -111,7 +110,7 @@ public class TestActivity extends Activity implements MPTestSuite.Listener {
Futures.addCallback( testFuture = backgroundExecutor.submit( testSuite ), new FutureCallback<Boolean>() {
@Override
public void onSuccess(@Nullable final Boolean result) {
if (result != null && result)
if ((result != null) && result)
setStatus( R.string.tests_passed, R.string.tests_btn_passed, new Runnable() {
@Override
public void run() {
@@ -141,12 +140,12 @@ public class TestActivity extends Activity implements MPTestSuite.Listener {
}, mainExecutor );
}
public void onAction(View v) {
public void onAction(final View v) {
if (action != null)
action.run();
}
private void setStatus(int statusId, int buttonId, @Nullable Runnable action) {
private void setStatus(final int statusId, final int buttonId, @Nullable final Runnable action) {
this.action = action;
if (statusId == 0)
@@ -166,7 +165,7 @@ public class TestActivity extends Activity implements MPTestSuite.Listener {
runOnUiThread( new Runnable() {
@Override
public void run() {
logView.append( strf( '\n' + messageFormat, args ) );
logView.append( strf( "%n" + messageFormat, args ) );
progressView.setMax( max );
progressView.setProgress( current );

View File

@@ -3,8 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:background="@drawable/background">
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"

View File

@@ -3,8 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:background="@drawable/background">
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
@@ -53,6 +52,7 @@
android:layout_marginTop="20dp"
android:gravity="bottom"
android:background="@android:color/transparent"
android:textIsSelectable="true"
android:textSize="9sp"
android:textColor="@android:color/tertiary_text_dark" />

View File

@@ -2,5 +2,6 @@
<resources>
<style name="MPTheme" parent="android:Theme.Holo.Dialog.MinWidth">
<item name="android:windowBackground">@drawable/background</item>
</style>
</resources>