|
@@ -117,6 +117,8 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
|
117
|
117
|
|
118
|
118
|
protected RNCWebChromeClient mWebChromeClient = null;
|
119
|
119
|
protected boolean mAllowsFullscreenVideo = false;
|
|
120
|
+ protected @Nullable String mUserAgent = null;
|
|
121
|
+ protected @Nullable String mUserAgentWithApplicationName = null;
|
120
|
122
|
|
121
|
123
|
public RNCWebViewManager() {
|
122
|
124
|
mWebViewConfig = new WebViewConfig() {
|
|
@@ -298,8 +300,34 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
|
298
|
300
|
@ReactProp(name = "userAgent")
|
299
|
301
|
public void setUserAgent(WebView view, @Nullable String userAgent) {
|
300
|
302
|
if (userAgent != null) {
|
301
|
|
- // TODO(8496850): Fix incorrect behavior when property is unset (uA == null)
|
302
|
|
- view.getSettings().setUserAgentString(userAgent);
|
|
303
|
+ mUserAgent = userAgent;
|
|
304
|
+ } else {
|
|
305
|
+ mUserAgent = null;
|
|
306
|
+ }
|
|
307
|
+ this.setUserAgentString(view);
|
|
308
|
+ }
|
|
309
|
+
|
|
310
|
+ @ReactProp(name = "applicationNameForUserAgent")
|
|
311
|
+ public void setApplicationNameForUserAgent(WebView view, @Nullable String applicationName) {
|
|
312
|
+ if(applicationName != null) {
|
|
313
|
+ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
|
314
|
+ String defaultUserAgent = WebSettings.getDefaultUserAgent(view.getContext());
|
|
315
|
+ mUserAgentWithApplicationName = defaultUserAgent + " " + applicationName;
|
|
316
|
+ }
|
|
317
|
+ } else {
|
|
318
|
+ mUserAgentWithApplicationName = null;
|
|
319
|
+ }
|
|
320
|
+ this.setUserAgentString(view);
|
|
321
|
+ }
|
|
322
|
+
|
|
323
|
+ protected void setUserAgentString(WebView view) {
|
|
324
|
+ if(mUserAgent != null) {
|
|
325
|
+ view.getSettings().setUserAgentString(mUserAgent);
|
|
326
|
+ } else if(mUserAgentWithApplicationName != null) {
|
|
327
|
+ view.getSettings().setUserAgentString(mUserAgentWithApplicationName);
|
|
328
|
+ } else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
|
329
|
+ // handle unsets of `userAgent` prop as long as device is >= API 17
|
|
330
|
+ view.getSettings().setUserAgentString(WebSettings.getDefaultUserAgent(view.getContext()));
|
303
|
331
|
}
|
304
|
332
|
}
|
305
|
333
|
|