From cf3da71ca5dbf402f347fe0b79e7085088c5f5ff Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Mon, 11 Aug 2025 10:33:20 +0200 Subject: [PATCH] control log level --- app/android/app/proguard-rules.pro | 3 +- app/lib/main.dart | 6 +- .../flutter_mozilla_components/Components.kt | 2 + .../EngineProvider.kt | 10 +- .../GlobalComponents.kt | 4 +- .../api/GeckoBrowserApiImpl.kt | 39 +++- .../components/Events.kt | 1 - .../pigeons/Gecko.g.kt | 190 ++++++++++-------- .../lib/flutter_mozilla_components.dart | 1 + .../src/domain/services/gecko_browser.dart | 4 +- .../lib/src/pigeons/gecko.g.dart | 175 ++++++++-------- .../pigeons/gecko.dart | 4 +- 12 files changed, 259 insertions(+), 180 deletions(-) diff --git a/app/android/app/proguard-rules.pro b/app/android/app/proguard-rules.pro index e592dbfd..12037847 100644 --- a/app/android/app/proguard-rules.pro +++ b/app/android/app/proguard-rules.pro @@ -32,11 +32,12 @@ } #################################################################################################### -# Remove debug logs from release builds +# REMOVE all Log messages except warnings and errors #################################################################################################### -assumenosideeffects class android.util.Log { public static boolean isLoggable(java.lang.String, int); public static int v(...); + public static int i(...); public static int d(...); } diff --git a/app/lib/main.dart b/app/lib/main.dart index c9f35c24..635e6072 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -24,7 +24,7 @@ import 'package:dynamic_color/dynamic_color.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_mozilla_components/flutter_mozilla_components.dart' - show GeckoBrowserService; + show GeckoBrowserService, LogLevel; import 'package:home_widget/home_widget.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:weblibre/core/error_observer.dart'; @@ -58,7 +58,9 @@ void main() async { //Ensure everything is ready await Future.delayed(Duration.zero); - await GeckoBrowserService().initialize(); + await GeckoBrowserService().initialize( + kDebugMode ? LogLevel.debug : LogLevel.warn, + ); await HomeWidget.setAppGroupId('weblibre'); diff --git a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/Components.kt b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/Components.kt index 3a181b22..d182286e 100644 --- a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/Components.kt +++ b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/Components.kt @@ -28,11 +28,13 @@ import mozilla.components.feature.downloads.DefaultFileSizeFormatter import mozilla.components.feature.downloads.DownloadEstimator import mozilla.components.feature.downloads.FileSizeFormatter import mozilla.components.support.base.android.NotificationsDelegate +import mozilla.components.support.base.log.Log class Components(private val context: Context, val flutterEvents: GeckoStateEvents, val readerViewController: ReaderViewController, val selectionAction: SelectionActionDelegate, + val logLevel: Log.Priority, private val addonEvents: GeckoAddonEvents, private val tabContentEvents: GeckoTabContentEvents, private val extensionEvents: BrowserExtensionEvents diff --git a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/EngineProvider.kt b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/EngineProvider.kt index b26c07bd..7f3eeea5 100644 --- a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/EngineProvider.kt +++ b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/EngineProvider.kt @@ -17,6 +17,7 @@ import mozilla.components.concept.engine.DefaultSettings import mozilla.components.concept.engine.Engine import mozilla.components.concept.fetch.Client import mozilla.components.feature.webcompat.WebCompatFeature +import mozilla.components.support.base.log.Log import mozilla.components.support.base.log.logger.Logger import org.mozilla.geckoview.GeckoRuntime import org.mozilla.geckoview.GeckoRuntimeSettings @@ -24,6 +25,10 @@ import org.mozilla.geckoview.GeckoRuntimeSettings object EngineProvider { private var runtime: GeckoRuntime? = null + private val components by lazy { + requireNotNull(GlobalComponents.components) { "Components not initialized" } + } + @Synchronized fun getOrCreateRuntime(context: Context): GeckoRuntime { if (runtime == null) { @@ -38,9 +43,8 @@ object EngineProvider { builder.aboutConfigEnabled(true) builder.extensionsProcessEnabled(true) builder.extensionsWebAPIEnabled(true) - - // Disable output for now to improve performance - // builder.consoleOutput(true) + builder.debugLogging(components.logLevel == Log.Priority.DEBUG) + builder.consoleOutput(components.logLevel == Log.Priority.DEBUG) runtime = GeckoRuntime.create(context, builder.build()) } diff --git a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/GlobalComponents.kt b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/GlobalComponents.kt index 0fcac5d7..8938088c 100644 --- a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/GlobalComponents.kt +++ b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/GlobalComponents.kt @@ -52,7 +52,8 @@ object GlobalComponents { selectionAction: SelectionActionDelegate, addonEvents: GeckoAddonEvents, tabContentEvents: GeckoTabContentEvents, - extensionEvents: BrowserExtensionEvents + extensionEvents: BrowserExtensionEvents, + logLevel: Log.Priority ) { Logger.debug("Creating new components") @@ -61,6 +62,7 @@ object GlobalComponents { flutterEvents, readerViewController, selectionAction, + logLevel, addonEvents, tabContentEvents, extensionEvents diff --git a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/api/GeckoBrowserApiImpl.kt b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/api/GeckoBrowserApiImpl.kt index 2074f78b..5138d669 100644 --- a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/api/GeckoBrowserApiImpl.kt +++ b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/api/GeckoBrowserApiImpl.kt @@ -37,6 +37,7 @@ import eu.weblibre.flutter_mozilla_components.pigeons.GeckoSuggestionApi import eu.weblibre.flutter_mozilla_components.pigeons.GeckoSuggestionEvents import eu.weblibre.flutter_mozilla_components.pigeons.GeckoTabContentEvents import eu.weblibre.flutter_mozilla_components.pigeons.GeckoTabsApi +import eu.weblibre.flutter_mozilla_components.pigeons.LogLevel import eu.weblibre.flutter_mozilla_components.pigeons.ReaderViewController import eu.weblibre.flutter_mozilla_components.pigeons.ReaderViewEvents import io.flutter.embedding.engine.plugins.FlutterPlugin @@ -45,6 +46,26 @@ import mozilla.components.browser.state.action.SystemAction import mozilla.components.feature.addons.logger import mozilla.components.support.base.log.Log import mozilla.components.support.base.log.sink.AndroidLogSink +import mozilla.components.support.base.log.sink.LogSink + +class PriorityAwareLogSink( + private val minLogPriority: Log.Priority, + private val androidLogSink: LogSink, +) : LogSink { + + override fun log( + priority: Log.Priority, + tag: String?, + throwable: Throwable?, + message: String, + ) { + if (priority < minLogPriority) { + return + } + + androidLogSink.log(priority, tag, throwable, message) + } +} /** * Implementation of GeckoBrowserApi that handles browser-related operations @@ -94,12 +115,19 @@ class GeckoBrowserApiImpl : GeckoBrowserApi { isPlatformViewRegistered = false } - override fun initialize() { + override fun initialize(logLevel: LogLevel) { synchronized(this) { if(!isGeckoInitialized) { - Log.addSink(AndroidLogSink()) + val level = when(logLevel) { + LogLevel.DEBUG -> Log.Priority.DEBUG + LogLevel.INFO -> Log.Priority.INFO + LogLevel.WARN -> Log.Priority.WARN + LogLevel.ERROR -> Log.Priority.ERROR + }; - setupGeckoEngine() + Log.addSink(PriorityAwareLogSink(level, AndroidLogSink("WebLibre"))) + + setupGeckoEngine(level) isGeckoInitialized = true } } @@ -115,7 +143,7 @@ class GeckoBrowserApiImpl : GeckoBrowserApi { return false } - private fun setupGeckoEngine() { + private fun setupGeckoEngine(logLevel: Log.Priority) { val selectionActionEvents = GeckoSelectionActionEvents(_flutterPluginBinding.binaryMessenger) val selectionActionDelegate = DefaultSelectionActionDelegate(selectionActionEvents) { actions -> @@ -144,7 +172,8 @@ class GeckoBrowserApiImpl : GeckoBrowserApi { selectionActionDelegate, addonEvents, tabContentEvents, - extensionEvents + extensionEvents, + logLevel ) GeckoEngineSettingsApi.setUp(_flutterPluginBinding.binaryMessenger, GeckoEngineSettingsApiImpl()) diff --git a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/components/Events.kt b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/components/Events.kt index d0f198c8..c8660431 100644 --- a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/components/Events.kt +++ b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/components/Events.kt @@ -159,7 +159,6 @@ class Events( } .debounce { 50 } .collect { tab -> - logger.info("title: ${tab.content.title} ${tab.content.url}") flutterEvents.onTabContentStateChange( System.currentTimeMillis(), TabContentState( diff --git a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/pigeons/Gecko.g.kt b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/pigeons/Gecko.g.kt index 906c201c..f109206e 100644 --- a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/pigeons/Gecko.g.kt +++ b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/pigeons/Gecko.g.kt @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v25.5.0), do not edit directly. +// Autogenerated from Pigeon (v26.0.0), do not edit directly. // See also: https://pub.dev/packages/pigeon @file:Suppress("UNCHECKED_CAST", "ArrayInDataClass") @@ -286,6 +286,19 @@ enum class DownloadStatus(val raw: Int) { } } +enum class LogLevel(val raw: Int) { + DEBUG(0), + INFO(1), + WARN(2), + ERROR(3); + + companion object { + fun ofRaw(raw: Int): LogLevel? { + return values().firstOrNull { it.raw == raw } + } + } +} + /** * Translation options that map to the Gecko Translations Options. * @@ -2003,196 +2016,201 @@ private open class GeckoPigeonCodec : StandardMessageCodec() { } } 143.toByte() -> { - return (readValue(buffer) as? List)?.let { - TranslationOptions.fromList(it) + return (readValue(buffer) as Long?)?.let { + LogLevel.ofRaw(it.toInt()) } } 144.toByte() -> { return (readValue(buffer) as? List)?.let { - ReaderState.fromList(it) + TranslationOptions.fromList(it) } } 145.toByte() -> { return (readValue(buffer) as? List)?.let { - LastMediaAccessState.fromList(it) + ReaderState.fromList(it) } } 146.toByte() -> { return (readValue(buffer) as? List)?.let { - HistoryMetadataKey.fromList(it) + LastMediaAccessState.fromList(it) } } 147.toByte() -> { return (readValue(buffer) as? List)?.let { - PackageCategoryValue.fromList(it) + HistoryMetadataKey.fromList(it) } } 148.toByte() -> { return (readValue(buffer) as? List)?.let { - ExternalPackage.fromList(it) + PackageCategoryValue.fromList(it) } } 149.toByte() -> { return (readValue(buffer) as? List)?.let { - LoadUrlFlagsValue.fromList(it) + ExternalPackage.fromList(it) } } 150.toByte() -> { return (readValue(buffer) as? List)?.let { - SourceValue.fromList(it) + LoadUrlFlagsValue.fromList(it) } } 151.toByte() -> { return (readValue(buffer) as? List)?.let { - TabState.fromList(it) + SourceValue.fromList(it) } } 152.toByte() -> { return (readValue(buffer) as? List)?.let { - RecoverableTab.fromList(it) + TabState.fromList(it) } } 153.toByte() -> { return (readValue(buffer) as? List)?.let { - RecoverableBrowserState.fromList(it) + RecoverableTab.fromList(it) } } 154.toByte() -> { return (readValue(buffer) as? List)?.let { - IconRequest.fromList(it) + RecoverableBrowserState.fromList(it) } } 155.toByte() -> { return (readValue(buffer) as? List)?.let { - ResourceSize.fromList(it) + IconRequest.fromList(it) } } 156.toByte() -> { return (readValue(buffer) as? List)?.let { - Resource.fromList(it) + ResourceSize.fromList(it) } } 157.toByte() -> { return (readValue(buffer) as? List)?.let { - IconResult.fromList(it) + Resource.fromList(it) } } 158.toByte() -> { return (readValue(buffer) as? List)?.let { - CookiePartitionKey.fromList(it) + IconResult.fromList(it) } } 159.toByte() -> { return (readValue(buffer) as? List)?.let { - Cookie.fromList(it) + CookiePartitionKey.fromList(it) } } 160.toByte() -> { return (readValue(buffer) as? List)?.let { - HistoryItem.fromList(it) + Cookie.fromList(it) } } 161.toByte() -> { return (readValue(buffer) as? List)?.let { - HistoryState.fromList(it) + HistoryItem.fromList(it) } } 162.toByte() -> { return (readValue(buffer) as? List)?.let { - ReaderableState.fromList(it) + HistoryState.fromList(it) } } 163.toByte() -> { return (readValue(buffer) as? List)?.let { - SecurityInfoState.fromList(it) + ReaderableState.fromList(it) } } 164.toByte() -> { return (readValue(buffer) as? List)?.let { - TabContentState.fromList(it) + SecurityInfoState.fromList(it) } } 165.toByte() -> { return (readValue(buffer) as? List)?.let { - FindResultState.fromList(it) + TabContentState.fromList(it) } } 166.toByte() -> { return (readValue(buffer) as? List)?.let { - CustomSelectionAction.fromList(it) + FindResultState.fromList(it) } } 167.toByte() -> { return (readValue(buffer) as? List)?.let { - WebExtensionData.fromList(it) + CustomSelectionAction.fromList(it) } } 168.toByte() -> { return (readValue(buffer) as? List)?.let { - GeckoSuggestion.fromList(it) + WebExtensionData.fromList(it) } } 169.toByte() -> { return (readValue(buffer) as? List)?.let { - TabContent.fromList(it) + GeckoSuggestion.fromList(it) } } 170.toByte() -> { return (readValue(buffer) as? List)?.let { - GeckoEngineSettings.fromList(it) + TabContent.fromList(it) } } 171.toByte() -> { return (readValue(buffer) as? List)?.let { - AutocompleteResult.fromList(it) + GeckoEngineSettings.fromList(it) } } 172.toByte() -> { return (readValue(buffer) as? List)?.let { - UnknownHitResult.fromList(it) + AutocompleteResult.fromList(it) } } 173.toByte() -> { return (readValue(buffer) as? List)?.let { - ImageHitResult.fromList(it) + UnknownHitResult.fromList(it) } } 174.toByte() -> { return (readValue(buffer) as? List)?.let { - VideoHitResult.fromList(it) + ImageHitResult.fromList(it) } } 175.toByte() -> { return (readValue(buffer) as? List)?.let { - AudioHitResult.fromList(it) + VideoHitResult.fromList(it) } } 176.toByte() -> { return (readValue(buffer) as? List)?.let { - ImageSrcHitResult.fromList(it) + AudioHitResult.fromList(it) } } 177.toByte() -> { return (readValue(buffer) as? List)?.let { - PhoneHitResult.fromList(it) + ImageSrcHitResult.fromList(it) } } 178.toByte() -> { return (readValue(buffer) as? List)?.let { - EmailHitResult.fromList(it) + PhoneHitResult.fromList(it) } } 179.toByte() -> { return (readValue(buffer) as? List)?.let { - GeoHitResult.fromList(it) + EmailHitResult.fromList(it) } } 180.toByte() -> { return (readValue(buffer) as? List)?.let { - DownloadState.fromList(it) + GeoHitResult.fromList(it) } } 181.toByte() -> { + return (readValue(buffer) as? List)?.let { + DownloadState.fromList(it) + } + } + 182.toByte() -> { return (readValue(buffer) as? List)?.let { ShareInternetResourceState.fromList(it) } @@ -2258,162 +2276,166 @@ private open class GeckoPigeonCodec : StandardMessageCodec() { stream.write(142) writeValue(stream, value.raw) } - is TranslationOptions -> { + is LogLevel -> { stream.write(143) - writeValue(stream, value.toList()) + writeValue(stream, value.raw) } - is ReaderState -> { + is TranslationOptions -> { stream.write(144) writeValue(stream, value.toList()) } - is LastMediaAccessState -> { + is ReaderState -> { stream.write(145) writeValue(stream, value.toList()) } - is HistoryMetadataKey -> { + is LastMediaAccessState -> { stream.write(146) writeValue(stream, value.toList()) } - is PackageCategoryValue -> { + is HistoryMetadataKey -> { stream.write(147) writeValue(stream, value.toList()) } - is ExternalPackage -> { + is PackageCategoryValue -> { stream.write(148) writeValue(stream, value.toList()) } - is LoadUrlFlagsValue -> { + is ExternalPackage -> { stream.write(149) writeValue(stream, value.toList()) } - is SourceValue -> { + is LoadUrlFlagsValue -> { stream.write(150) writeValue(stream, value.toList()) } - is TabState -> { + is SourceValue -> { stream.write(151) writeValue(stream, value.toList()) } - is RecoverableTab -> { + is TabState -> { stream.write(152) writeValue(stream, value.toList()) } - is RecoverableBrowserState -> { + is RecoverableTab -> { stream.write(153) writeValue(stream, value.toList()) } - is IconRequest -> { + is RecoverableBrowserState -> { stream.write(154) writeValue(stream, value.toList()) } - is ResourceSize -> { + is IconRequest -> { stream.write(155) writeValue(stream, value.toList()) } - is Resource -> { + is ResourceSize -> { stream.write(156) writeValue(stream, value.toList()) } - is IconResult -> { + is Resource -> { stream.write(157) writeValue(stream, value.toList()) } - is CookiePartitionKey -> { + is IconResult -> { stream.write(158) writeValue(stream, value.toList()) } - is Cookie -> { + is CookiePartitionKey -> { stream.write(159) writeValue(stream, value.toList()) } - is HistoryItem -> { + is Cookie -> { stream.write(160) writeValue(stream, value.toList()) } - is HistoryState -> { + is HistoryItem -> { stream.write(161) writeValue(stream, value.toList()) } - is ReaderableState -> { + is HistoryState -> { stream.write(162) writeValue(stream, value.toList()) } - is SecurityInfoState -> { + is ReaderableState -> { stream.write(163) writeValue(stream, value.toList()) } - is TabContentState -> { + is SecurityInfoState -> { stream.write(164) writeValue(stream, value.toList()) } - is FindResultState -> { + is TabContentState -> { stream.write(165) writeValue(stream, value.toList()) } - is CustomSelectionAction -> { + is FindResultState -> { stream.write(166) writeValue(stream, value.toList()) } - is WebExtensionData -> { + is CustomSelectionAction -> { stream.write(167) writeValue(stream, value.toList()) } - is GeckoSuggestion -> { + is WebExtensionData -> { stream.write(168) writeValue(stream, value.toList()) } - is TabContent -> { + is GeckoSuggestion -> { stream.write(169) writeValue(stream, value.toList()) } - is GeckoEngineSettings -> { + is TabContent -> { stream.write(170) writeValue(stream, value.toList()) } - is AutocompleteResult -> { + is GeckoEngineSettings -> { stream.write(171) writeValue(stream, value.toList()) } - is UnknownHitResult -> { + is AutocompleteResult -> { stream.write(172) writeValue(stream, value.toList()) } - is ImageHitResult -> { + is UnknownHitResult -> { stream.write(173) writeValue(stream, value.toList()) } - is VideoHitResult -> { + is ImageHitResult -> { stream.write(174) writeValue(stream, value.toList()) } - is AudioHitResult -> { + is VideoHitResult -> { stream.write(175) writeValue(stream, value.toList()) } - is ImageSrcHitResult -> { + is AudioHitResult -> { stream.write(176) writeValue(stream, value.toList()) } - is PhoneHitResult -> { + is ImageSrcHitResult -> { stream.write(177) writeValue(stream, value.toList()) } - is EmailHitResult -> { + is PhoneHitResult -> { stream.write(178) writeValue(stream, value.toList()) } - is GeoHitResult -> { + is EmailHitResult -> { stream.write(179) writeValue(stream, value.toList()) } - is DownloadState -> { + is GeoHitResult -> { stream.write(180) writeValue(stream, value.toList()) } - is ShareInternetResourceState -> { + is DownloadState -> { stream.write(181) writeValue(stream, value.toList()) } + is ShareInternetResourceState -> { + stream.write(182) + writeValue(stream, value.toList()) + } else -> super.writeValue(stream, value) } } @@ -2422,7 +2444,7 @@ private open class GeckoPigeonCodec : StandardMessageCodec() { /** Generated interface from Pigeon that represents a handler of messages from Flutter. */ interface GeckoBrowserApi { - fun initialize() + fun initialize(logLevel: LogLevel) fun showNativeFragment(): Boolean fun onTrimMemory(level: Long) @@ -2438,9 +2460,11 @@ interface GeckoBrowserApi { run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.flutter_mozilla_components.GeckoBrowserApi.initialize$separatedMessageChannelSuffix", codec) if (api != null) { - channel.setMessageHandler { _, reply -> + channel.setMessageHandler { message, reply -> + val args = message as List + val logLevelArg = args[0] as LogLevel val wrapped: List = try { - api.initialize() + api.initialize(logLevelArg) listOf(null) } catch (exception: Throwable) { GeckoPigeonUtils.wrapError(exception) diff --git a/packages/flutter_mozilla_components/lib/flutter_mozilla_components.dart b/packages/flutter_mozilla_components/lib/flutter_mozilla_components.dart index ccc19e7b..b5351849 100644 --- a/packages/flutter_mozilla_components/lib/flutter_mozilla_components.dart +++ b/packages/flutter_mozilla_components/lib/flutter_mozilla_components.dart @@ -45,6 +45,7 @@ export 'src/pigeons/gecko.g.dart' IconType, ImageHitResult, ImageSrcHitResult, + LogLevel, PhoneHitResult, Resource, ResourceSize, diff --git a/packages/flutter_mozilla_components/lib/src/domain/services/gecko_browser.dart b/packages/flutter_mozilla_components/lib/src/domain/services/gecko_browser.dart index 2cbd6981..ced8bd6a 100644 --- a/packages/flutter_mozilla_components/lib/src/domain/services/gecko_browser.dart +++ b/packages/flutter_mozilla_components/lib/src/domain/services/gecko_browser.dart @@ -13,8 +13,8 @@ class GeckoBrowserService { GeckoBrowserService({GeckoBrowserApi? api}) : _api = api ?? _apiInstance; - Future initialize() { - return _api.initialize(); + Future initialize(LogLevel logLevel) { + return _api.initialize(logLevel); } Future showNativeFragment() { diff --git a/packages/flutter_mozilla_components/lib/src/pigeons/gecko.g.dart b/packages/flutter_mozilla_components/lib/src/pigeons/gecko.g.dart index e31bfbc6..ad4c88e2 100644 --- a/packages/flutter_mozilla_components/lib/src/pigeons/gecko.g.dart +++ b/packages/flutter_mozilla_components/lib/src/pigeons/gecko.g.dart @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v25.5.0), do not edit directly. +// Autogenerated from Pigeon (v26.0.0), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers @@ -156,6 +156,13 @@ enum DownloadStatus { completed, } +enum LogLevel { + debug, + info, + warn, + error, +} + /// Translation options that map to the Gecko Translations Options. /// /// @property downloadModel If the necessary models should be downloaded on request. If false, then @@ -2523,123 +2530,126 @@ class _PigeonCodec extends StandardMessageCodec { } else if (value is DownloadStatus) { buffer.putUint8(142); writeValue(buffer, value.index); - } else if (value is TranslationOptions) { + } else if (value is LogLevel) { buffer.putUint8(143); - writeValue(buffer, value.encode()); - } else if (value is ReaderState) { + writeValue(buffer, value.index); + } else if (value is TranslationOptions) { buffer.putUint8(144); writeValue(buffer, value.encode()); - } else if (value is LastMediaAccessState) { + } else if (value is ReaderState) { buffer.putUint8(145); writeValue(buffer, value.encode()); - } else if (value is HistoryMetadataKey) { + } else if (value is LastMediaAccessState) { buffer.putUint8(146); writeValue(buffer, value.encode()); - } else if (value is PackageCategoryValue) { + } else if (value is HistoryMetadataKey) { buffer.putUint8(147); writeValue(buffer, value.encode()); - } else if (value is ExternalPackage) { + } else if (value is PackageCategoryValue) { buffer.putUint8(148); writeValue(buffer, value.encode()); - } else if (value is LoadUrlFlagsValue) { + } else if (value is ExternalPackage) { buffer.putUint8(149); writeValue(buffer, value.encode()); - } else if (value is SourceValue) { + } else if (value is LoadUrlFlagsValue) { buffer.putUint8(150); writeValue(buffer, value.encode()); - } else if (value is TabState) { + } else if (value is SourceValue) { buffer.putUint8(151); writeValue(buffer, value.encode()); - } else if (value is RecoverableTab) { + } else if (value is TabState) { buffer.putUint8(152); writeValue(buffer, value.encode()); - } else if (value is RecoverableBrowserState) { + } else if (value is RecoverableTab) { buffer.putUint8(153); writeValue(buffer, value.encode()); - } else if (value is IconRequest) { + } else if (value is RecoverableBrowserState) { buffer.putUint8(154); writeValue(buffer, value.encode()); - } else if (value is ResourceSize) { + } else if (value is IconRequest) { buffer.putUint8(155); writeValue(buffer, value.encode()); - } else if (value is Resource) { + } else if (value is ResourceSize) { buffer.putUint8(156); writeValue(buffer, value.encode()); - } else if (value is IconResult) { + } else if (value is Resource) { buffer.putUint8(157); writeValue(buffer, value.encode()); - } else if (value is CookiePartitionKey) { + } else if (value is IconResult) { buffer.putUint8(158); writeValue(buffer, value.encode()); - } else if (value is Cookie) { + } else if (value is CookiePartitionKey) { buffer.putUint8(159); writeValue(buffer, value.encode()); - } else if (value is HistoryItem) { + } else if (value is Cookie) { buffer.putUint8(160); writeValue(buffer, value.encode()); - } else if (value is HistoryState) { + } else if (value is HistoryItem) { buffer.putUint8(161); writeValue(buffer, value.encode()); - } else if (value is ReaderableState) { + } else if (value is HistoryState) { buffer.putUint8(162); writeValue(buffer, value.encode()); - } else if (value is SecurityInfoState) { + } else if (value is ReaderableState) { buffer.putUint8(163); writeValue(buffer, value.encode()); - } else if (value is TabContentState) { + } else if (value is SecurityInfoState) { buffer.putUint8(164); writeValue(buffer, value.encode()); - } else if (value is FindResultState) { + } else if (value is TabContentState) { buffer.putUint8(165); writeValue(buffer, value.encode()); - } else if (value is CustomSelectionAction) { + } else if (value is FindResultState) { buffer.putUint8(166); writeValue(buffer, value.encode()); - } else if (value is WebExtensionData) { + } else if (value is CustomSelectionAction) { buffer.putUint8(167); writeValue(buffer, value.encode()); - } else if (value is GeckoSuggestion) { + } else if (value is WebExtensionData) { buffer.putUint8(168); writeValue(buffer, value.encode()); - } else if (value is TabContent) { + } else if (value is GeckoSuggestion) { buffer.putUint8(169); writeValue(buffer, value.encode()); - } else if (value is GeckoEngineSettings) { + } else if (value is TabContent) { buffer.putUint8(170); writeValue(buffer, value.encode()); - } else if (value is AutocompleteResult) { + } else if (value is GeckoEngineSettings) { buffer.putUint8(171); writeValue(buffer, value.encode()); - } else if (value is UnknownHitResult) { + } else if (value is AutocompleteResult) { buffer.putUint8(172); writeValue(buffer, value.encode()); - } else if (value is ImageHitResult) { + } else if (value is UnknownHitResult) { buffer.putUint8(173); writeValue(buffer, value.encode()); - } else if (value is VideoHitResult) { + } else if (value is ImageHitResult) { buffer.putUint8(174); writeValue(buffer, value.encode()); - } else if (value is AudioHitResult) { + } else if (value is VideoHitResult) { buffer.putUint8(175); writeValue(buffer, value.encode()); - } else if (value is ImageSrcHitResult) { + } else if (value is AudioHitResult) { buffer.putUint8(176); writeValue(buffer, value.encode()); - } else if (value is PhoneHitResult) { + } else if (value is ImageSrcHitResult) { buffer.putUint8(177); writeValue(buffer, value.encode()); - } else if (value is EmailHitResult) { + } else if (value is PhoneHitResult) { buffer.putUint8(178); writeValue(buffer, value.encode()); - } else if (value is GeoHitResult) { + } else if (value is EmailHitResult) { buffer.putUint8(179); writeValue(buffer, value.encode()); - } else if (value is DownloadState) { + } else if (value is GeoHitResult) { buffer.putUint8(180); writeValue(buffer, value.encode()); - } else if (value is ShareInternetResourceState) { + } else if (value is DownloadState) { buffer.putUint8(181); writeValue(buffer, value.encode()); + } else if (value is ShareInternetResourceState) { + buffer.putUint8(182); + writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } @@ -2691,82 +2701,85 @@ class _PigeonCodec extends StandardMessageCodec { final int? value = readValue(buffer) as int?; return value == null ? null : DownloadStatus.values[value]; case 143: - return TranslationOptions.decode(readValue(buffer)!); + final int? value = readValue(buffer) as int?; + return value == null ? null : LogLevel.values[value]; case 144: - return ReaderState.decode(readValue(buffer)!); + return TranslationOptions.decode(readValue(buffer)!); case 145: - return LastMediaAccessState.decode(readValue(buffer)!); + return ReaderState.decode(readValue(buffer)!); case 146: - return HistoryMetadataKey.decode(readValue(buffer)!); + return LastMediaAccessState.decode(readValue(buffer)!); case 147: - return PackageCategoryValue.decode(readValue(buffer)!); + return HistoryMetadataKey.decode(readValue(buffer)!); case 148: - return ExternalPackage.decode(readValue(buffer)!); + return PackageCategoryValue.decode(readValue(buffer)!); case 149: - return LoadUrlFlagsValue.decode(readValue(buffer)!); + return ExternalPackage.decode(readValue(buffer)!); case 150: - return SourceValue.decode(readValue(buffer)!); + return LoadUrlFlagsValue.decode(readValue(buffer)!); case 151: - return TabState.decode(readValue(buffer)!); + return SourceValue.decode(readValue(buffer)!); case 152: - return RecoverableTab.decode(readValue(buffer)!); + return TabState.decode(readValue(buffer)!); case 153: - return RecoverableBrowserState.decode(readValue(buffer)!); + return RecoverableTab.decode(readValue(buffer)!); case 154: - return IconRequest.decode(readValue(buffer)!); + return RecoverableBrowserState.decode(readValue(buffer)!); case 155: - return ResourceSize.decode(readValue(buffer)!); + return IconRequest.decode(readValue(buffer)!); case 156: - return Resource.decode(readValue(buffer)!); + return ResourceSize.decode(readValue(buffer)!); case 157: - return IconResult.decode(readValue(buffer)!); + return Resource.decode(readValue(buffer)!); case 158: - return CookiePartitionKey.decode(readValue(buffer)!); + return IconResult.decode(readValue(buffer)!); case 159: - return Cookie.decode(readValue(buffer)!); + return CookiePartitionKey.decode(readValue(buffer)!); case 160: - return HistoryItem.decode(readValue(buffer)!); + return Cookie.decode(readValue(buffer)!); case 161: - return HistoryState.decode(readValue(buffer)!); + return HistoryItem.decode(readValue(buffer)!); case 162: - return ReaderableState.decode(readValue(buffer)!); + return HistoryState.decode(readValue(buffer)!); case 163: - return SecurityInfoState.decode(readValue(buffer)!); + return ReaderableState.decode(readValue(buffer)!); case 164: - return TabContentState.decode(readValue(buffer)!); + return SecurityInfoState.decode(readValue(buffer)!); case 165: - return FindResultState.decode(readValue(buffer)!); + return TabContentState.decode(readValue(buffer)!); case 166: - return CustomSelectionAction.decode(readValue(buffer)!); + return FindResultState.decode(readValue(buffer)!); case 167: - return WebExtensionData.decode(readValue(buffer)!); + return CustomSelectionAction.decode(readValue(buffer)!); case 168: - return GeckoSuggestion.decode(readValue(buffer)!); + return WebExtensionData.decode(readValue(buffer)!); case 169: - return TabContent.decode(readValue(buffer)!); + return GeckoSuggestion.decode(readValue(buffer)!); case 170: - return GeckoEngineSettings.decode(readValue(buffer)!); + return TabContent.decode(readValue(buffer)!); case 171: - return AutocompleteResult.decode(readValue(buffer)!); + return GeckoEngineSettings.decode(readValue(buffer)!); case 172: - return UnknownHitResult.decode(readValue(buffer)!); + return AutocompleteResult.decode(readValue(buffer)!); case 173: - return ImageHitResult.decode(readValue(buffer)!); + return UnknownHitResult.decode(readValue(buffer)!); case 174: - return VideoHitResult.decode(readValue(buffer)!); + return ImageHitResult.decode(readValue(buffer)!); case 175: - return AudioHitResult.decode(readValue(buffer)!); + return VideoHitResult.decode(readValue(buffer)!); case 176: - return ImageSrcHitResult.decode(readValue(buffer)!); + return AudioHitResult.decode(readValue(buffer)!); case 177: - return PhoneHitResult.decode(readValue(buffer)!); + return ImageSrcHitResult.decode(readValue(buffer)!); case 178: - return EmailHitResult.decode(readValue(buffer)!); + return PhoneHitResult.decode(readValue(buffer)!); case 179: - return GeoHitResult.decode(readValue(buffer)!); + return EmailHitResult.decode(readValue(buffer)!); case 180: - return DownloadState.decode(readValue(buffer)!); + return GeoHitResult.decode(readValue(buffer)!); case 181: + return DownloadState.decode(readValue(buffer)!); + case 182: return ShareInternetResourceState.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -2787,14 +2800,14 @@ class GeckoBrowserApi { final String pigeonVar_messageChannelSuffix; - Future initialize() async { + Future initialize(LogLevel logLevel) async { final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoBrowserApi.initialize$pigeonVar_messageChannelSuffix'; final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([logLevel]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { diff --git a/packages/flutter_mozilla_components/pigeons/gecko.dart b/packages/flutter_mozilla_components/pigeons/gecko.dart index dee65450..ca7c4367 100644 --- a/packages/flutter_mozilla_components/pigeons/gecko.dart +++ b/packages/flutter_mozilla_components/pigeons/gecko.dart @@ -732,6 +732,8 @@ class ShareInternetResourceState { ); } +enum LogLevel { debug, info, warn, error } + @ConfigurePigeon( PigeonOptions( dartOut: 'lib/src/pigeons/gecko.g.dart', @@ -746,7 +748,7 @@ class ShareInternetResourceState { ) @HostApi() abstract class GeckoBrowserApi { - void initialize(); + void initialize(LogLevel logLevel); bool showNativeFragment(); void onTrimMemory(int level); }