Skip to content
Permalink
Browse files

Allowing turning on / off DOM storage on android webviews

Summary:
Was developing on a WebView and couldnt get it to run. Turns out its JS code mostly depends on `localStorage` and I realized it wasnt turned on in RN. This PR adds a prop, similar to `javascriptEnabledAndroid` to be able to turn DOM storage on / off.

TBH I dont really know how it works on IOS, so I created an android specific thingy. I assume DOM storage is enabled by default on IOS.
Closes #5065

Reviewed By: svcscm

Differential Revision: D2797735

Pulled By: androidtrunkagent

fb-gh-sync-id: cd60cfa4d24d80fb82e4f54f387a4517a99e75ab
  • Loading branch information...
odino authored and facebook-github-bot-4 committed Jan 1, 2016
1 parent 55fe7ac commit 67931284350ebd2b60d1e11870690272079b1726
@@ -95,6 +95,7 @@ var WebViewExample = React.createClass({
style={styles.webView}
url={this.state.url}
javaScriptEnabledAndroid={true}
domStorageEnabledAndroid={true}
onNavigationStateChange={this.onNavigationStateChange}
onShouldStartLoadWithRequest={this.onShouldStartLoadWithRequest}
startInLoadingState={true}
@@ -38,7 +38,7 @@ var WebView = React.createClass({

propTypes: {
...View.propTypes,
renderError: PropTypes.func,
renderError: PropTypes.func,
renderLoading: PropTypes.func,
url: PropTypes.string,
html: PropTypes.string,
@@ -54,6 +54,12 @@ var WebView = React.createClass({
*/
javaScriptEnabledAndroid: PropTypes.bool,

/**
* Used on Android only, controls whether DOM Storage is enabled or not
* @platform android
*/
domStorageEnabledAndroid: PropTypes.bool,

/**
* Sets the JS to be injected when the webpage loads.
*/
@@ -117,6 +123,7 @@ var WebView = React.createClass({
injectedJavaScript={this.props.injectedJavaScript}
userAgent={this.props.userAgent}
javaScriptEnabledAndroid={this.props.javaScriptEnabledAndroid}
domStorageEnabledAndroid={this.props.domStorageEnabledAndroid}
contentInset={this.props.contentInset}
automaticallyAdjustContentInsets={this.props.automaticallyAdjustContentInsets}
onLoadingStart={this.onLoadingStart}
@@ -116,6 +116,12 @@ var WebView = React.createClass({
*/
javaScriptEnabledAndroid: PropTypes.bool,

/**
* Used on Android only, controls whether DOM Storage is enabled or not
* @platform android
*/
domStorageEnabledAndroid: PropTypes.bool,

/**
* Sets the JS to be injected when the webpage loads.
*/
@@ -256,6 +256,11 @@ public void setJavaScriptEnabled(WebView view, boolean enabled) {
view.getSettings().setJavaScriptEnabled(enabled);
}

@ReactProp(name = "domStorageEnabledAndroid")
public void setDomStorageEnabled(WebView view, boolean enabled) {
view.getSettings().setDomStorageEnabled(enabled);
}

@ReactProp(name = "userAgent")
public void setUserAgent(WebView view, @Nullable String userAgent) {
if (userAgent != null) {

0 comments on commit 6793128

Please sign in to comment.
You can’t perform that action at this time.