diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogActivity.java b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogActivity.java index 63661a537b..191b6313bc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogActivity.java @@ -27,6 +27,7 @@ import androidx.lifecycle.ViewModelProvider; import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import org.signal.core.util.concurrent.SignalExecutors; import org.signal.debuglogsviewer.DebugLogsViewer; import org.thoughtcrime.securesms.BaseActivity; import org.thoughtcrime.securesms.R; @@ -357,27 +358,29 @@ public class SubmitDebugLogActivity extends BaseActivity { hasPresentedLines = true; } - int chunkSize = 1000; - int count = 0; + SignalExecutors.BOUNDED.execute(() -> { + int chunkSize = 1000; + int count = 0; - StringBuilder lineBuilder = new StringBuilder(); + StringBuilder lineBuilder = new StringBuilder(); - for (LogLine line : lines) { - if (line == null) continue; + for (LogLine line : lines) { + if (line == null) continue; - lineBuilder.append(String.format("%s\n", line.getText())); - count++; + lineBuilder.append(String.format("%s\n", line.getText())); + count++; - if (count >= chunkSize) { - DebugLogsViewer.presentLines(logWebView, lineBuilder.toString()); - lineBuilder.setLength(0); - count = 0; + if (count >= chunkSize) { + DebugLogsViewer.presentLines(logWebView, lineBuilder.toString()); + lineBuilder.setLength(0); + count = 0; + } } - } - if (lineBuilder.length() > 0) { - DebugLogsViewer.presentLines(logWebView, lineBuilder.toString()); - } + if (lineBuilder.length() > 0) { + DebugLogsViewer.presentLines(logWebView, lineBuilder.toString()); + } + }); } private void presentMode(@NonNull SubmitDebugLogViewModel.Mode mode) { diff --git a/debuglogs-viewer/lib/src/main/java/org/signal/debuglogsviewer/DebugLogsViewer.kt b/debuglogs-viewer/lib/src/main/java/org/signal/debuglogsviewer/DebugLogsViewer.kt index da831c931a..91e154401c 100644 --- a/debuglogs-viewer/lib/src/main/java/org/signal/debuglogsviewer/DebugLogsViewer.kt +++ b/debuglogs-viewer/lib/src/main/java/org/signal/debuglogsviewer/DebugLogsViewer.kt @@ -5,8 +5,6 @@ package org.signal.debuglogsviewer -import android.content.ClipData -import android.content.ClipboardManager import android.content.Context import android.content.res.Configuration import android.webkit.ValueCallback @@ -14,10 +12,9 @@ import android.webkit.WebView import android.webkit.WebViewClient import kotlinx.coroutines.Runnable import org.json.JSONObject +import org.signal.core.util.ThreadUtil import java.util.function.Consumer -var readOnly = true - object DebugLogsViewer { @JvmStatic fun initWebView(webview: WebView, context: Context, onFinished: Runnable) { @@ -47,7 +44,7 @@ object DebugLogsViewer { fun presentLines(webview: WebView, lines: String) { // Set the debug log lines val escaped = JSONObject.quote(lines) - webview.evaluateJavascript("editor.insert($escaped); logLines+=$escaped;", null) + ThreadUtil.runOnMain { webview.evaluateJavascript("editor.insert($escaped); logLines+=$escaped;", null) } } @JvmStatic @@ -110,26 +107,4 @@ object DebugLogsViewer { fun onSearchClose(webview: WebView) { webview.evaluateJavascript("onSearchClose();", null) } - - @JvmStatic - fun onEdit(webview: WebView) { - readOnly = !readOnly - webview.evaluateJavascript("editor.setReadOnly($readOnly);", null) - } - - @JvmStatic - fun onCancelEdit(webview: WebView, lines: String) { - readOnly = !readOnly - webview.evaluateJavascript("editor.setReadOnly($readOnly);", null) - webview.evaluateJavascript("editor.setValue($lines, -1);", null) - } - - @JvmStatic - fun onCopy(webview: WebView, context: Context, appName: String) { - webview.evaluateJavascript("editor.getValue();") { value -> - val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText(appName, value) - clipboard.setPrimaryClip(clip) - } - } }