From 03e841b493e7c4b4d8f3c0983fbaf66136d0f51c Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 9 Sep 2021 11:49:01 +0200 Subject: [PATCH] Improved encryption debug info --- .../email/FragmentOptionsEncryption.java | 76 +++++++++++++++---- .../layout/fragment_options_encryption.xml | 1 + 2 files changed, 61 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java b/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java index c856e9820e..a89eb1a716 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java @@ -25,13 +25,16 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.graphics.Typeface; import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.security.KeyChain; import android.text.SpannableStringBuilder; +import android.text.Spanned; import android.text.TextUtils; import android.text.style.RelativeSizeSpan; +import android.text.style.StyleSpan; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -392,28 +395,69 @@ public class FragmentOptionsEncryption extends FragmentBase implements SharedPre tvKeySize.setText(Log.formatThrowable(ex)); } - try { - SpannableStringBuilder ssb = new SpannableStringBuilder(); - Provider[] providers = Security.getProviders(); - for (int p = 0; p < providers.length; p++) { - Provider provider = providers[p]; - ssb.append(Integer.toString(p + 1)).append(' ') - .append(provider.toString()).append('\n'); - //int start = ssb.length(); - //for (Enumeration e = provider.keys(); e.hasMoreElements(); ) - // ssb.append('-').append(e.nextElement().toString()).append('\n'); - //ssb.setSpan(new RelativeSizeSpan(HtmlHelper.FONT_SMALL), start, ssb.length(), 0); - } - tvProviders.setText(ssb); - } catch (Throwable ex) { - tvProviders.setText(Log.formatThrowable(ex)); - } + tvProviders.setText(null); PreferenceManager.getDefaultSharedPreferences(getContext()).registerOnSharedPreferenceChangeListener(this); return view; } + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + boolean debug = prefs.getBoolean("debug", false); + + Bundle args = new Bundle(); + args.putBoolean("debug", debug); + + new SimpleTask() { + @Override + protected Spanned onExecute(Context context, Bundle args) { + boolean debug = args.getBoolean("debug"); + SpannableStringBuilder ssb = new SpannableStringBuilder(); + + int dp24 = Helper.dp2pixels(context, 24); + + Provider[] providers = Security.getProviders(); + for (int p = 0; p < providers.length; p++) { + Provider provider = providers[p]; + ssb.append(Integer.toString(p + 1)).append(' ') + .append(provider.toString()).append('\n'); + String info = provider.getInfo(); + if (info != null) { + int line = ssb.length(); + ssb.append(info).append('\n'); + ssb.setSpan(new IndentSpan(dp24), line, ssb.length(), 0); + ssb.setSpan(new StyleSpan(Typeface.ITALIC), line, ssb.length(), 0); + } + if (debug) { + int start = ssb.length(); + for (Enumeration e = provider.keys(); e.hasMoreElements(); ) { + int line = ssb.length(); + ssb.append(e.nextElement().toString()).append('\n'); + ssb.setSpan(new IndentSpan(dp24), line, ssb.length(), 0); + } + ssb.setSpan(new RelativeSizeSpan(HtmlHelper.FONT_SMALL), start, ssb.length(), 0); + } + } + + return ssb; + } + + @Override + protected void onExecuted(Bundle args, Spanned providers) { + tvProviders.setText(providers); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + tvProviders.setText(Log.formatThrowable(ex)); + } + }.execute(this, args, "encryption:providers"); + } + @Override public void onDestroyView() { PreferenceManager.getDefaultSharedPreferences(getContext()).unregisterOnSharedPreferenceChangeListener(this); diff --git a/app/src/main/res/layout/fragment_options_encryption.xml b/app/src/main/res/layout/fragment_options_encryption.xml index 96effeaef5..c7a7f255a5 100644 --- a/app/src/main/res/layout/fragment_options_encryption.xml +++ b/app/src/main/res/layout/fragment_options_encryption.xml @@ -442,6 +442,7 @@ android:layout_marginTop="12dp" android:text="Providers" android:textAppearance="@style/TextAppearance.AppCompat.Small" + android:textIsSelectable="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvKeySize" />