@@ -567,6 +567,18 @@ abstract class AndroidWebkitLibraryPigeonProxyApiRegistrar(val binaryMessenger:
567
567
*/
568
568
abstract fun getPigeonApiCertificate (): PigeonApiCertificate
569
569
570
+ /* *
571
+ * An implementation of [PigeonApiWebSettingsCompat] used to add a new Dart instance of
572
+ * `WebSettingsCompat` to the Dart `InstanceManager`.
573
+ */
574
+ abstract fun getPigeonApiWebSettingsCompat (): PigeonApiWebSettingsCompat
575
+
576
+ /* *
577
+ * An implementation of [PigeonApiWebViewFeature] used to add a new Dart instance of
578
+ * `WebViewFeature` to the Dart `InstanceManager`.
579
+ */
580
+ abstract fun getPigeonApiWebViewFeature (): PigeonApiWebViewFeature
581
+
570
582
fun setUp () {
571
583
AndroidWebkitLibraryPigeonInstanceManagerApi .setUpMessageHandlers(
572
584
binaryMessenger, instanceManager)
@@ -598,6 +610,9 @@ abstract class AndroidWebkitLibraryPigeonProxyApiRegistrar(val binaryMessenger:
598
610
binaryMessenger, getPigeonApiSslCertificateDName())
599
611
PigeonApiSslCertificate .setUpMessageHandlers(binaryMessenger, getPigeonApiSslCertificate())
600
612
PigeonApiCertificate .setUpMessageHandlers(binaryMessenger, getPigeonApiCertificate())
613
+ PigeonApiWebSettingsCompat .setUpMessageHandlers(
614
+ binaryMessenger, getPigeonApiWebSettingsCompat())
615
+ PigeonApiWebViewFeature .setUpMessageHandlers(binaryMessenger, getPigeonApiWebViewFeature())
601
616
}
602
617
603
618
fun tearDown () {
@@ -623,6 +638,8 @@ abstract class AndroidWebkitLibraryPigeonProxyApiRegistrar(val binaryMessenger:
623
638
PigeonApiSslCertificateDName .setUpMessageHandlers(binaryMessenger, null )
624
639
PigeonApiSslCertificate .setUpMessageHandlers(binaryMessenger, null )
625
640
PigeonApiCertificate .setUpMessageHandlers(binaryMessenger, null )
641
+ PigeonApiWebSettingsCompat .setUpMessageHandlers(binaryMessenger, null )
642
+ PigeonApiWebViewFeature .setUpMessageHandlers(binaryMessenger, null )
626
643
}
627
644
}
628
645
@@ -727,6 +744,10 @@ private class AndroidWebkitLibraryPigeonProxyApiBaseCodec(
727
744
registrar.getPigeonApiSslCertificate().pigeon_newInstance(value) {}
728
745
} else if (value is java.security.cert.Certificate ) {
729
746
registrar.getPigeonApiCertificate().pigeon_newInstance(value) {}
747
+ } else if (value is androidx.webkit.WebSettingsCompat ) {
748
+ registrar.getPigeonApiWebSettingsCompat().pigeon_newInstance(value) {}
749
+ } else if (value is androidx.webkit.WebViewFeature ) {
750
+ registrar.getPigeonApiWebViewFeature().pigeon_newInstance(value) {}
730
751
}
731
752
732
753
when {
@@ -6310,3 +6331,159 @@ abstract class PigeonApiCertificate(
6310
6331
}
6311
6332
}
6312
6333
}
6334
+ /* *
6335
+ * Compatibility version of `WebSettings`.
6336
+ *
6337
+ * See https://developer.android.com/reference/kotlin/androidx/webkit/WebSettingsCompat.
6338
+ */
6339
+ @Suppress(" UNCHECKED_CAST" )
6340
+ abstract class PigeonApiWebSettingsCompat (
6341
+ open val pigeonRegistrar : AndroidWebkitLibraryPigeonProxyApiRegistrar
6342
+ ) {
6343
+ abstract fun setPaymentRequestEnabled (webSettings : android.webkit.WebSettings , enabled : Boolean )
6344
+
6345
+ companion object {
6346
+ @Suppress(" LocalVariableName" )
6347
+ fun setUpMessageHandlers (binaryMessenger : BinaryMessenger , api : PigeonApiWebSettingsCompat ? ) {
6348
+ val codec = api?.pigeonRegistrar?.codec ? : AndroidWebkitLibraryPigeonCodec ()
6349
+ run {
6350
+ val channel =
6351
+ BasicMessageChannel <Any ?>(
6352
+ binaryMessenger,
6353
+ " dev.flutter.pigeon.webview_flutter_android.WebSettingsCompat.setPaymentRequestEnabled" ,
6354
+ codec)
6355
+ if (api != null ) {
6356
+ channel.setMessageHandler { message, reply ->
6357
+ val args = message as List <Any ?>
6358
+ val webSettingsArg = args[0 ] as android.webkit.WebSettings
6359
+ val enabledArg = args[1 ] as Boolean
6360
+ val wrapped: List <Any ?> =
6361
+ try {
6362
+ api.setPaymentRequestEnabled(webSettingsArg, enabledArg)
6363
+ listOf (null )
6364
+ } catch (exception: Throwable ) {
6365
+ AndroidWebkitLibraryPigeonUtils .wrapError(exception)
6366
+ }
6367
+ reply.reply(wrapped)
6368
+ }
6369
+ } else {
6370
+ channel.setMessageHandler(null )
6371
+ }
6372
+ }
6373
+ }
6374
+ }
6375
+
6376
+ @Suppress(" LocalVariableName" , " FunctionName" )
6377
+ /* * Creates a Dart instance of WebSettingsCompat and attaches it to [pigeon_instanceArg]. */
6378
+ fun pigeon_newInstance (
6379
+ pigeon_instanceArg : androidx.webkit.WebSettingsCompat ,
6380
+ callback : (Result <Unit >) -> Unit
6381
+ ) {
6382
+ if (pigeonRegistrar.ignoreCallsToDart) {
6383
+ callback(
6384
+ Result .failure(
6385
+ AndroidWebKitError (" ignore-calls-error" , " Calls to Dart are being ignored." , " " )))
6386
+ } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) {
6387
+ callback(Result .success(Unit ))
6388
+ } else {
6389
+ val pigeon_identifierArg =
6390
+ pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeon_instanceArg)
6391
+ val binaryMessenger = pigeonRegistrar.binaryMessenger
6392
+ val codec = pigeonRegistrar.codec
6393
+ val channelName =
6394
+ " dev.flutter.pigeon.webview_flutter_android.WebSettingsCompat.pigeon_newInstance"
6395
+ val channel = BasicMessageChannel <Any ?>(binaryMessenger, channelName, codec)
6396
+ channel.send(listOf (pigeon_identifierArg)) {
6397
+ if (it is List <* >) {
6398
+ if (it.size > 1 ) {
6399
+ callback(
6400
+ Result .failure(
6401
+ AndroidWebKitError (it[0 ] as String , it[1 ] as String , it[2 ] as String? )))
6402
+ } else {
6403
+ callback(Result .success(Unit ))
6404
+ }
6405
+ } else {
6406
+ callback(
6407
+ Result .failure(AndroidWebkitLibraryPigeonUtils .createConnectionError(channelName)))
6408
+ }
6409
+ }
6410
+ }
6411
+ }
6412
+ }
6413
+ /* *
6414
+ * Utility class for checking which WebView Support Library features are supported on the device.
6415
+ *
6416
+ * See https://developer.android.com/reference/kotlin/androidx/webkit/WebViewFeature.
6417
+ */
6418
+ @Suppress(" UNCHECKED_CAST" )
6419
+ abstract class PigeonApiWebViewFeature (
6420
+ open val pigeonRegistrar : AndroidWebkitLibraryPigeonProxyApiRegistrar
6421
+ ) {
6422
+ abstract fun isFeatureSupported (feature : String ): Boolean
6423
+
6424
+ companion object {
6425
+ @Suppress(" LocalVariableName" )
6426
+ fun setUpMessageHandlers (binaryMessenger : BinaryMessenger , api : PigeonApiWebViewFeature ? ) {
6427
+ val codec = api?.pigeonRegistrar?.codec ? : AndroidWebkitLibraryPigeonCodec ()
6428
+ run {
6429
+ val channel =
6430
+ BasicMessageChannel <Any ?>(
6431
+ binaryMessenger,
6432
+ " dev.flutter.pigeon.webview_flutter_android.WebViewFeature.isFeatureSupported" ,
6433
+ codec)
6434
+ if (api != null ) {
6435
+ channel.setMessageHandler { message, reply ->
6436
+ val args = message as List <Any ?>
6437
+ val featureArg = args[0 ] as String
6438
+ val wrapped: List <Any ?> =
6439
+ try {
6440
+ listOf (api.isFeatureSupported(featureArg))
6441
+ } catch (exception: Throwable ) {
6442
+ AndroidWebkitLibraryPigeonUtils .wrapError(exception)
6443
+ }
6444
+ reply.reply(wrapped)
6445
+ }
6446
+ } else {
6447
+ channel.setMessageHandler(null )
6448
+ }
6449
+ }
6450
+ }
6451
+ }
6452
+
6453
+ @Suppress(" LocalVariableName" , " FunctionName" )
6454
+ /* * Creates a Dart instance of WebViewFeature and attaches it to [pigeon_instanceArg]. */
6455
+ fun pigeon_newInstance (
6456
+ pigeon_instanceArg : androidx.webkit.WebViewFeature ,
6457
+ callback : (Result <Unit >) -> Unit
6458
+ ) {
6459
+ if (pigeonRegistrar.ignoreCallsToDart) {
6460
+ callback(
6461
+ Result .failure(
6462
+ AndroidWebKitError (" ignore-calls-error" , " Calls to Dart are being ignored." , " " )))
6463
+ } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) {
6464
+ callback(Result .success(Unit ))
6465
+ } else {
6466
+ val pigeon_identifierArg =
6467
+ pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeon_instanceArg)
6468
+ val binaryMessenger = pigeonRegistrar.binaryMessenger
6469
+ val codec = pigeonRegistrar.codec
6470
+ val channelName =
6471
+ " dev.flutter.pigeon.webview_flutter_android.WebViewFeature.pigeon_newInstance"
6472
+ val channel = BasicMessageChannel <Any ?>(binaryMessenger, channelName, codec)
6473
+ channel.send(listOf (pigeon_identifierArg)) {
6474
+ if (it is List <* >) {
6475
+ if (it.size > 1 ) {
6476
+ callback(
6477
+ Result .failure(
6478
+ AndroidWebKitError (it[0 ] as String , it[1 ] as String , it[2 ] as String? )))
6479
+ } else {
6480
+ callback(Result .success(Unit ))
6481
+ }
6482
+ } else {
6483
+ callback(
6484
+ Result .failure(AndroidWebkitLibraryPigeonUtils .createConnectionError(channelName)))
6485
+ }
6486
+ }
6487
+ }
6488
+ }
6489
+ }
0 commit comments