From 8591d8ae717a692da8cd3ec678bd1f315a1030f4 Mon Sep 17 00:00:00 2001 From: Faraz Sherwani Date: Sun, 9 Apr 2017 21:32:57 -0700 Subject: [PATCH] Webview disable save form prop Summary: Adds functionality to be able to disable saving of form data and thereby disabling autocomplete in webview on Android. Can be used as a workaround for #13241 Manual testing that autocomplete is disabled when the property is set to true, and still enabled when it is unset or set to false. Closes https://github.com/facebook/react-native/pull/13271 Differential Revision: D4858899 Pulled By: ericvicenti fbshipit-source-id: 62738b0685e4c1958c8a32e184fa2fe4f711b336 --- Libraries/Components/WebView/WebView.android.js | 8 ++++++++ .../facebook/react/views/webview/ReactWebViewManager.java | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/Libraries/Components/WebView/WebView.android.js b/Libraries/Components/WebView/WebView.android.js index 3bbb58ec5..2ded46b1b 100644 --- a/Libraries/Components/WebView/WebView.android.js +++ b/Libraries/Components/WebView/WebView.android.js @@ -184,11 +184,18 @@ class WebView extends React.Component { 'always', 'compatibility' ]), + + /** + * Used on Android only, controls whether form autocomplete data should be saved + * @platform android + */ + saveFormDataDisabled: PropTypes.bool, }; static defaultProps = { javaScriptEnabled : true, scalesPageToFit: true, + saveFormDataDisabled: false }; state = { @@ -261,6 +268,7 @@ class WebView extends React.Component { mediaPlaybackRequiresUserAction={this.props.mediaPlaybackRequiresUserAction} allowUniversalAccessFromFileURLs={this.props.allowUniversalAccessFromFileURLs} mixedContentMode={this.props.mixedContentMode} + saveFormDataDisabled={this.props.saveFormDataDisabled} />; return ( diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/webview/ReactWebViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/webview/ReactWebViewManager.java index ec3107f20..7e246a7ff 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/webview/ReactWebViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/webview/ReactWebViewManager.java @@ -397,6 +397,11 @@ public class ReactWebViewManager extends SimpleViewManager { public void setAllowUniversalAccessFromFileURLs(WebView view, boolean allow) { view.getSettings().setAllowUniversalAccessFromFileURLs(allow); } + + @ReactProp(name = "saveFormDataDisabled") + public void setSaveFormDataDisabled(WebView view, boolean disable) { + view.getSettings().setSaveFormData(!disable); + } @ReactProp(name = "injectedJavaScript") public void setInjectedJavaScript(WebView view, @Nullable String injectedJavaScript) {