diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java index f765c1630..2f7d0a795 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java @@ -72,7 +72,7 @@ public class HotspotErrorFragment extends BaseFragment { Button feedbackButton = v.findViewById(R.id.feedbackButton); feedbackButton.setOnClickListener( - button -> triggerFeedback(requireContext())); + button -> triggerFeedback(requireContext(), errorMessage)); FallbackFragment fallbackFragment = new FallbackFragment(); FragmentTransaction ta = getChildFragmentManager().beginTransaction(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarExceptionHandler.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarExceptionHandler.java index 740ebbddd..320f6d431 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarExceptionHandler.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarExceptionHandler.java @@ -34,7 +34,7 @@ class BriarExceptionHandler implements UncaughtExceptionHandler { // activity runs in its own process, so we can kill the old one startDevReportActivity(app.getApplicationContext(), - CrashReportActivity.class, e, appStartTime, logKey); + CrashReportActivity.class, e, appStartTime, logKey, null); Process.killProcess(Process.myPid()); System.exit(10); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/CrashReportActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/CrashReportActivity.java index e07b63d53..38dd7c545 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/CrashReportActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/CrashReportActivity.java @@ -33,6 +33,7 @@ import static java.util.Objects.requireNonNull; public class CrashReportActivity extends BaseActivity implements BaseFragmentListener { + public static final String EXTRA_INITIAL_COMMENT = "initialComment"; public static final String EXTRA_THROWABLE = "throwable"; public static final String EXTRA_APP_START_TIME = "appStartTime"; public static final String EXTRA_APP_LOGCAT = "logcat"; @@ -55,10 +56,11 @@ public class CrashReportActivity extends BaseActivity setContentView(R.layout.activity_dev_report); Intent intent = getIntent(); + String initialComment = intent.getStringExtra(EXTRA_INITIAL_COMMENT); Throwable t = (Throwable) intent.getSerializableExtra(EXTRA_THROWABLE); long appStartTime = intent.getLongExtra(EXTRA_APP_START_TIME, -1); byte[] logKey = intent.getByteArrayExtra(EXTRA_APP_LOGCAT); - viewModel.init(t, appStartTime, logKey); + viewModel.init(t, appStartTime, logKey, initialComment); viewModel.getShowReport().observeEvent(this, show -> { if (show) displayFragment(true); }); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportFormFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportFormFragment.java index 2efd021e8..328ced375 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportFormFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportFormFragment.java @@ -78,6 +78,9 @@ public class ReportFormFragment extends BaseFragment { list = v.findViewById(R.id.list); progress = v.findViewById(R.id.progress_wheel); + if (viewModel.getInitialComment() != null) + userCommentView.setText(viewModel.getInitialComment()); + if (viewModel.isFeedback()) { includeDebugReport .setText(getString(R.string.include_debug_report_feedback)); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportViewModel.java index ef8679b7b..6e0a898b6 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportViewModel.java @@ -64,6 +64,8 @@ class ReportViewModel extends AndroidViewModel { private final MutableLiveEvent closeReport = new MutableLiveEvent<>(); private boolean isFeedback; + @Nullable + private String initialComment; @Inject ReportViewModel(@NonNull Application application, @@ -80,7 +82,8 @@ class ReportViewModel extends AndroidViewModel { } void init(@Nullable Throwable t, long appStartTime, - @Nullable byte[] logKey) { + @Nullable byte[] logKey, @Nullable String initialComment) { + this.initialComment = initialComment; isFeedback = t == null; if (reportData.getValue() == null) new SingleShotAndroidExecutor(() -> { String decryptedLogs; @@ -103,6 +106,11 @@ class ReportViewModel extends AndroidViewModel { }).start(); } + @Nullable + String getInitialComment() { + return initialComment; + } + boolean isFeedback() { return isFeedback; } @@ -140,7 +148,7 @@ class ReportViewModel extends AndroidViewModel { /** * The content of the report that will be loaded after - * {@link #init(Throwable, long, byte[])} was called. + * {@link #init(Throwable, long, byte[], String)} was called. */ LiveData getReportData() { return reportData; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java index bd0911d48..66378bf22 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java @@ -118,6 +118,7 @@ import static org.briarproject.briar.BuildConfig.APPLICATION_ID; import static org.briarproject.briar.android.TestingConstants.EXPIRY_DATE; import static org.briarproject.briar.android.reporting.CrashReportActivity.EXTRA_APP_LOGCAT; import static org.briarproject.briar.android.reporting.CrashReportActivity.EXTRA_APP_START_TIME; +import static org.briarproject.briar.android.reporting.CrashReportActivity.EXTRA_INITIAL_COMMENT; import static org.briarproject.briar.android.reporting.CrashReportActivity.EXTRA_THROWABLE; @MethodsNotNullByDefault @@ -434,17 +435,25 @@ public class UiUtils { } public static void triggerFeedback(Context ctx) { - startDevReportActivity(ctx, FeedbackActivity.class, null, null, null); + triggerFeedback(ctx, null); + } + + public static void triggerFeedback(Context ctx, + @Nullable String initialComment) { + startDevReportActivity(ctx, FeedbackActivity.class, null, null, null, + initialComment); } public static void startDevReportActivity(Context ctx, Class activity, @Nullable Throwable t, - @Nullable Long appStartTime, @Nullable byte[] logKey) { + @Nullable Long appStartTime, @Nullable byte[] logKey, @Nullable + String initialComment) { final Intent dialogIntent = new Intent(ctx, activity); dialogIntent.setFlags(FLAG_ACTIVITY_NEW_TASK); dialogIntent.putExtra(EXTRA_THROWABLE, t); dialogIntent.putExtra(EXTRA_APP_START_TIME, appStartTime); dialogIntent.putExtra(EXTRA_APP_LOGCAT, logKey); + dialogIntent.putExtra(EXTRA_INITIAL_COMMENT, initialComment); ctx.startActivity(dialogIntent); }