From 12750268038d3e56ebf9aecb1d2c75fdbcf6ca1e Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Fri, 8 Mar 2024 16:02:50 +0100 Subject: [PATCH] feat(android): new WebView property 'multipleWindows' --- .../modules/titanium/ui/widget/webview/TiUIWebView.java | 3 ++- .../titanium/src/java/org/appcelerator/titanium/TiC.java | 1 + apidoc/Titanium/UI/WebView.yml | 8 ++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiUIWebView.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiUIWebView.java index be414648747..c1e86e766cc 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiUIWebView.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiUIWebView.java @@ -305,10 +305,11 @@ public TiUIWebView(TiViewProxy proxy) } webView.setVerticalScrollbarOverlay(true); + boolean multipleWindows = TiConvert.toBoolean(proxy.getProperty(TiC.PROPERTY_MULTIPLE_WINDOWS), true); WebSettings settings = webView.getSettings(); settings.setUseWideViewPort(true); settings.setJavaScriptEnabled(true); - settings.setSupportMultipleWindows(true); + settings.setSupportMultipleWindows(multipleWindows); settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setLoadsImagesAutomatically(true); settings.setDomStorageEnabled(true); // Required by some sites such as Twitter. This is in our iOS WebView too. diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiC.java b/android/titanium/src/java/org/appcelerator/titanium/TiC.java index 704af44e031..a8157a78dd3 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiC.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiC.java @@ -586,6 +586,7 @@ public class TiC public static final String PROPERTY_MOVEABLE = "moveable"; public static final String PROPERTY_MOVING = "moving"; public static final String PROPERTY_MULTIPLY = "multiply"; + public static final String PROPERTY_MULTIPLE_WINDOWS = "multipleWindows"; public static final String PROPERTY_NAME = "name"; public static final String PROPERTY_NATIVE_SPINNER = "nativeSpinner"; public static final String PROPERTY_NAVIGATION_ICON = "navigationIcon"; diff --git a/apidoc/Titanium/UI/WebView.yml b/apidoc/Titanium/UI/WebView.yml index 0c715e3f03e..7731a2b58f9 100644 --- a/apidoc/Titanium/UI/WebView.yml +++ b/apidoc/Titanium/UI/WebView.yml @@ -1039,6 +1039,14 @@ properties: default: false availability: creation + - name: multipleWindows + summary: Set it to `false` to prevent the WebView to open new windows. + type: Boolean + platforms: [android] + since: "12.4.0" + default: true + availability: creation + - name: scalesPageToFit summary: If `true`, scale contents to fit the web view. description: |