diff --git a/CHANGELOG.md b/CHANGELOG.md index e3327cd..5c889d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Features + +- Add support for passing custom headers to `WebView` (only for the openInWebView option). [RMET-4287](https://outsystemsrd.atlassian.net/browse/RMET-4287). + ### Chores - Migrate publishing from OSSRH to Central Portal (https://outsystemsrd.atlassian.net/browse/RMET-4217) diff --git a/src/main/java/com.outsystems.plugins.inappbrowser/osinappbrowserlib/routeradapters/OSIABWebViewRouterAdapter.kt b/src/main/java/com.outsystems.plugins.inappbrowser/osinappbrowserlib/routeradapters/OSIABWebViewRouterAdapter.kt index c8977c8..6f5b741 100644 --- a/src/main/java/com.outsystems.plugins.inappbrowser/osinappbrowserlib/routeradapters/OSIABWebViewRouterAdapter.kt +++ b/src/main/java/com.outsystems.plugins.inappbrowser/osinappbrowserlib/routeradapters/OSIABWebViewRouterAdapter.kt @@ -2,6 +2,7 @@ package com.outsystems.plugins.inappbrowser.osinappbrowserlib.routeradapters import android.content.Context import android.content.Intent +import android.os.Bundle import com.outsystems.plugins.inappbrowser.osinappbrowserlib.OSIABEvents import com.outsystems.plugins.inappbrowser.osinappbrowserlib.helpers.OSIABFlowHelperInterface import com.outsystems.plugins.inappbrowser.osinappbrowserlib.models.OSIABWebViewOptions @@ -19,7 +20,8 @@ class OSIABWebViewRouterAdapter( flowHelper: OSIABFlowHelperInterface, onBrowserPageLoaded: () -> Unit, onBrowserFinished: () -> Unit, - private val onBrowserPageNavigationCompleted: (String?) -> Unit + private val onBrowserPageNavigationCompleted: (String?) -> Unit, + private val customHeaders: Map? = null ) : OSIABBaseRouterAdapter( context = context, lifecycleScope = lifecycleScope, @@ -33,6 +35,7 @@ class OSIABWebViewRouterAdapter( companion object { const val WEB_VIEW_URL_EXTRA = "WEB_VIEW_URL_EXTRA" const val WEB_VIEW_OPTIONS_EXTRA = "WEB_VIEW_OPTIONS_EXTRA" + const val CUSTOM_HEADERS_EXTRA = "CUSTOM_HEADERS_EXTRA" } private var webViewActivityRef: WeakReference? = null @@ -101,6 +104,11 @@ class OSIABWebViewRouterAdapter( putExtra(OSIABEvents.EXTRA_BROWSER_ID, browserId) putExtra(WEB_VIEW_URL_EXTRA, url) putExtra(WEB_VIEW_OPTIONS_EXTRA, options) + putExtra(CUSTOM_HEADERS_EXTRA, Bundle().apply { + customHeaders?.forEach { (key, value) -> + putString(key, value) + } + }) } ) diff --git a/src/main/java/com.outsystems.plugins.inappbrowser/osinappbrowserlib/views/OSIABWebViewActivity.kt b/src/main/java/com.outsystems.plugins.inappbrowser/osinappbrowserlib/views/OSIABWebViewActivity.kt index bf14734..a739ab4 100644 --- a/src/main/java/com.outsystems.plugins.inappbrowser/osinappbrowserlib/views/OSIABWebViewActivity.kt +++ b/src/main/java/com.outsystems.plugins.inappbrowser/osinappbrowserlib/views/OSIABWebViewActivity.kt @@ -87,6 +87,7 @@ class OSIABWebViewActivity : AppCompatActivity() { companion object { const val WEB_VIEW_URL_EXTRA = "WEB_VIEW_URL_EXTRA" const val WEB_VIEW_OPTIONS_EXTRA = "WEB_VIEW_OPTIONS_EXTRA" + const val CUSTOM_HEADERS_EXTRA = "CUSTOM_HEADERS_EXTRA" const val DISABLED_ALPHA = 0.3f const val ENABLED_ALPHA = 1.0f const val REQUEST_STANDARD_PERMISSION = 622 @@ -104,7 +105,7 @@ class OSIABWebViewActivity : AppCompatActivity() { browserId = intent.getStringExtra(OSIABEvents.EXTRA_BROWSER_ID) ?: "" - sendWebViewEvent(OSIABWebViewEvent(browserId,this@OSIABWebViewActivity)) + sendWebViewEvent(OSIABWebViewEvent(browserId, this@OSIABWebViewActivity)) appName = applicationInfo.loadLabel(packageManager).toString() @@ -119,6 +120,10 @@ class OSIABWebViewActivity : AppCompatActivity() { intent.extras?.getSerializable(WEB_VIEW_OPTIONS_EXTRA) as OSIABWebViewOptions } + val customHeaders: Map? = intent.getBundleExtra(CUSTOM_HEADERS_EXTRA)?.let { bundle -> + bundle.keySet().associateWith { bundle.getString(it).orEmpty() } + } + setContentView(R.layout.activity_web_view) //get elements in screen @@ -157,7 +162,7 @@ class OSIABWebViewActivity : AppCompatActivity() { setupWebView() if (urlToOpen != null) { - webView.loadUrl(urlToOpen) + webView.loadUrl(urlToOpen, customHeaders ?: emptyMap()) showLoadingScreen() }