Pier Angelo Vendrame pushed to branch tor-browser-128.6.0esr-14.5-1 at The Tor Project / Applications / Tor Browser

Commits:

8 changed files:

Changes:

  • mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorController.kt
    ... ... @@ -20,7 +20,7 @@ class TorError(
    20 20
     ) { }
    
    21 21
     
    
    22 22
     interface TorLogs {
    
    23
    -    fun onLog(type: String?, message: String?)
    
    23
    +    fun onLog(type: String?, message: String?, timestamp: String?)
    
    24 24
     }
    
    25 25
     
    
    26 26
     internal enum class TorStatus(val status: String) {
    
    ... ... @@ -32,7 +32,7 @@ internal enum class TorStatus(val status: String) {
    32 32
     }
    
    33 33
     
    
    34 34
     interface TorController: TorEvents {
    
    35
    -    val logEntries: MutableList<Pair<String?, String?>>
    
    35
    +    val logEntries: MutableList<TorLog>
    
    36 36
         val isStarting: Boolean
    
    37 37
         val isRestarting: Boolean
    
    38 38
         val isBootstrapped: Boolean
    

  • mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorControllerGV.kt
    ... ... @@ -66,7 +66,7 @@ class TorControllerGV(
    66 66
         private var isTorBootstrapped = false
    
    67 67
             get() = ((_lastKnownStatus.value.isStarted()) && wasTorBootstrapped)
    
    68 68
     
    
    69
    -    private val entries = mutableListOf<Pair<String?, String?>>()
    
    69
    +    private val entries = mutableListOf<TorLog>()
    
    70 70
         override val logEntries get() = entries
    
    71 71
         override val isStarting get() = _lastKnownStatus.value.isStarting()
    
    72 72
         override val isRestarting get() = isTorRestarting
    
    ... ... @@ -217,10 +217,10 @@ class TorControllerGV(
    217 217
             }
    
    218 218
         }
    
    219 219
     
    
    220
    -    override fun onLog(type: String?, message: String?) {
    
    220
    +    override fun onLog(type: String?, message: String?, timestamp: String?) {
    
    221 221
             synchronized(torLogListeners) {
    
    222
    -            entries.add(Pair(type, message))
    
    223
    -            torLogListeners.toList().forEach { it.onLog(type, message) }
    
    222
    +            entries.add(TorLog(type ?: "null", message ?: "null", timestamp ?: "null"))
    
    223
    +            torLogListeners.toList().forEach { it.onLog(type ?: "null", message ?: "null", timestamp) }
    
    224 224
             }
    
    225 225
         }
    
    226 226
     
    

  • mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorLog.kt
    1
    +package org.mozilla.fenix.tor
    
    2
    +
    
    3
    +import androidx.compose.runtime.Stable
    
    4
    +
    
    5
    +@Stable
    
    6
    +data class TorLog(
    
    7
    +    val type: String,
    
    8
    +    val text: String,
    
    9
    +    val timestamp: String,
    
    10
    +)

  • mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorLogsComposeFragment.kt
    ... ... @@ -108,16 +108,14 @@ class TorLogsComposeFragment : Fragment() {
    108 108
                         bottom = 16.dp,
    
    109 109
                     ),
    
    110 110
             ) {
    
    111
    -            DisableSelection {
    
    112
    -                Text(
    
    113
    -                    text = log.timestamp.toString(),
    
    114
    -                    color = PhotonColors.LightGrey40,
    
    115
    -                    modifier = modifier
    
    116
    -                        .padding(bottom = 4.dp),
    
    117
    -                )
    
    118
    -            }
    
    119 111
                 Text(
    
    120
    -                text = log.text,
    
    112
    +                text = log.timestamp,
    
    113
    +                color = PhotonColors.LightGrey40,
    
    114
    +                modifier = modifier
    
    115
    +                    .padding(bottom = 4.dp),
    
    116
    +            )
    
    117
    +            Text(
    
    118
    +                text = "[${log.type}] " + log.text,
    
    121 119
                     color = PhotonColors.LightGrey05,
    
    122 120
                 )
    
    123 121
             }
    

  • mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorLogsViewModel.kt
    ... ... @@ -10,22 +10,18 @@ import android.content.ClipboardManager
    10 10
     import android.content.Context
    
    11 11
     import android.os.Build
    
    12 12
     import android.widget.Toast
    
    13
    -import androidx.compose.runtime.Stable
    
    14 13
     import androidx.lifecycle.AndroidViewModel
    
    15 14
     import androidx.lifecycle.LiveData
    
    16 15
     import androidx.lifecycle.MutableLiveData
    
    17 16
     import org.mozilla.fenix.R
    
    18 17
     import org.mozilla.fenix.ext.components
    
    19
    -import java.sql.Timestamp
    
    20 18
     
    
    21 19
     class TorLogsViewModel(application: Application) : AndroidViewModel(application), TorLogs {
    
    22 20
         private val torController = application.components.torController
    
    23 21
         private val clipboardManager =
    
    24 22
             application.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
    
    25 23
     
    
    26
    -    private val _torLogs: MutableLiveData<List<TorLog>> = MutableLiveData(
    
    27
    -        mutableListOf(TorLog("---------------" + application.getString(R.string.tor_initializing_log) + "---------------")),
    
    28
    -    )
    
    24
    +    private val _torLogs: MutableLiveData<List<TorLog>> = MutableLiveData(mutableListOf())
    
    29 25
     
    
    30 26
         fun torLogs(): LiveData<List<TorLog>> {
    
    31 27
             return _torLogs
    
    ... ... @@ -38,20 +34,14 @@ class TorLogsViewModel(application: Application) : AndroidViewModel(application)
    38 34
         init {
    
    39 35
             setupClipboardListener()
    
    40 36
             torController.registerTorLogListener(this)
    
    41
    -        val currentEntries = torController.logEntries.filter { it.second != null }
    
    42
    -            .filter { !(it.second!!.startsWith("Circuit") && it.first == "ON") }
    
    43
    -            // Keep synchronized with format in onTorStatusUpdate
    
    44
    -            .flatMap { listOf(TorLog("[${it.first}] ${it.second}")) }
    
    37
    +        val currentEntries = torController.logEntries
    
    45 38
             for (log in currentEntries) {
    
    46 39
                 addLog(log)
    
    47 40
             }
    
    48 41
         }
    
    49 42
     
    
    50
    -    override fun onLog(type: String?, message: String?) {
    
    51
    -        if (message == null || type == null) return
    
    52
    -        if (type == "ON" && type.startsWith("Circuit")) return
    
    53
    -
    
    54
    -        addLog(TorLog("[$type] $message"))
    
    43
    +    override fun onLog(type: String?, message: String?, timestamp: String?) {
    
    44
    +        addLog(TorLog(type ?: "null", message ?: "null", timestamp ?: "null"))
    
    55 45
         }
    
    56 46
     
    
    57 47
         override fun onCleared() {
    
    ... ... @@ -86,14 +76,8 @@ class TorLogsViewModel(application: Application) : AndroidViewModel(application)
    86 76
             var ret = ""
    
    87 77
             for (log in torLogs().value
    
    88 78
                 ?: return getApplication<Application>().getString(R.string.default_error_msg)) {
    
    89
    -            ret += log.text + '\n'
    
    79
    +            ret += "${log.timestamp} [${log.type}] ${log.text}\n"
    
    90 80
             }
    
    91 81
             return ret
    
    92 82
         }
    
    93 83
     }
    94
    -
    
    95
    -@Stable
    
    96
    -data class TorLog(
    
    97
    -    val text: String,
    
    98
    -    val timestamp: Timestamp = Timestamp(System.currentTimeMillis()),
    
    99
    -)

  • mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorIntegrationAndroid.java
    ... ... @@ -169,8 +169,9 @@ public class TorIntegrationAndroid implements BundleEventListener {
    169 169
         } else if (EVENT_TOR_LOGS.equals(event)) {
    
    170 170
           String msg = message.getString("message");
    
    171 171
           String type = message.getString("logType");
    
    172
    +      String timestamp = message.getString("timestamp");
    
    172 173
           for (TorLogListener listener : mLogListeners) {
    
    173
    -        listener.onLog(type, msg);
    
    174
    +        listener.onLog(type, msg, timestamp);
    
    174 175
           }
    
    175 176
         }
    
    176 177
       }
    
    ... ... @@ -636,7 +637,7 @@ public class TorIntegrationAndroid implements BundleEventListener {
    636 637
       }
    
    637 638
     
    
    638 639
       public interface TorLogListener {
    
    639
    -    void onLog(String logType, String message);
    
    640
    +    void onLog(String logType, String message, String timestamp);
    
    640 641
       }
    
    641 642
     
    
    642 643
       private @NonNull void reloadSettings() {
    

  • toolkit/components/tor-launcher/TorProvider.sys.mjs
    ... ... @@ -47,7 +47,7 @@ const logger = console.createInstance({
    47 47
      */
    
    48 48
     /**
    
    49 49
      * @typedef {object} LogEntry An object with a log message
    
    50
    - * @property {Date} date The date at which we received the message
    
    50
    + * @property {string} timestamp The local date-time stamp at which we received the message
    
    51 51
      * @property {string} type The message level
    
    52 52
      * @property {string} msg The message
    
    53 53
      */
    
    ... ... @@ -518,13 +518,7 @@ export class TorProvider {
    518 518
        */
    
    519 519
       getLog() {
    
    520 520
         return this.#logs
    
    521
    -      .map(logObj => {
    
    522
    -        const timeStr = logObj.date
    
    523
    -          .toISOString()
    
    524
    -          .replace("T", " ")
    
    525
    -          .replace("Z", "");
    
    526
    -        return `${timeStr} [${logObj.type}] ${logObj.msg}`;
    
    527
    -      })
    
    521
    +      .map(logObj => `${logObj.timestamp} [${logObj.type}] ${logObj.msg}`)
    
    528 522
           .join(TorLauncherUtil.isWindows ? "\r\n" : "\n");
    
    529 523
       }
    
    530 524
     
    
    ... ... @@ -1031,9 +1025,16 @@ export class TorProvider {
    1031 1025
           Services.obs.notifyObservers(null, TorProviderTopics.HasWarnOrErr);
    
    1032 1026
         }
    
    1033 1027
     
    
    1034
    -    Services.obs.notifyObservers({ type, msg }, TorProviderTopics.TorLog);
    
    1028
    +    const timestamp = new Date()
    
    1029
    +      .toISOString()
    
    1030
    +      .replace("T", " ")
    
    1031
    +      .replace("Z", "");
    
    1032
    +
    
    1033
    +    Services.obs.notifyObservers(
    
    1034
    +      { type, msg, timestamp },
    
    1035
    +      TorProviderTopics.TorLog
    
    1036
    +    );
    
    1035 1037
     
    
    1036
    -    const date = new Date();
    
    1037 1038
         const maxEntries = Services.prefs.getIntPref(
    
    1038 1039
           Preferences.MaxLogEntries,
    
    1039 1040
           1000
    
    ... ... @@ -1042,7 +1043,7 @@ export class TorProvider {
    1042 1043
           this.#logs.splice(0, 1);
    
    1043 1044
         }
    
    1044 1045
     
    
    1045
    -    this.#logs.push({ date, type, msg });
    
    1046
    +    this.#logs.push({ type, msg, timestamp });
    
    1046 1047
         switch (type) {
    
    1047 1048
           case "ERR":
    
    1048 1049
             logger.error(`[Tor error] ${msg}`);
    

  • toolkit/modules/TorAndroidIntegration.sys.mjs
    ... ... @@ -136,6 +136,7 @@ class TorAndroidIntegrationImpl {
    136 136
               type: EmittedEvents.torLogs,
    
    137 137
               logType: subj.wrappedJSObject.type ?? "",
    
    138 138
               message: subj.wrappedJSObject.msg ?? "",
    
    139
    +          timestamp: subj.wrappedJSObject.timestamp ?? "",
    
    139 140
             });
    
    140 141
             break;
    
    141 142
           case lazy.TorSettingsTopics.Ready: