mirror of
https://github.com/status-im/react-native.git
synced 2025-02-23 14:48:25 +00:00
AutoFormat ReactWebViewManager
Summary: easy diff to auto format ReactWebViewManager using our current java code guidelines Reviewed By: fkgozali Differential Revision: D13425320 fbshipit-source-id: e59407751c324896e9d6aea8a356949e7cadccaa
This commit is contained in:
parent
d1b90ee9e2
commit
f8bc32abb0
@ -1,10 +1,9 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
*
|
*
|
||||||
* This source code is licensed under the MIT license found in the
|
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
|
||||||
* LICENSE file in the root directory of this source tree.
|
* directory of this source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.facebook.react.views.webview;
|
package com.facebook.react.views.webview;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
@ -66,23 +65,15 @@ import org.json.JSONObject;
|
|||||||
/**
|
/**
|
||||||
* Manages instances of {@link WebView}
|
* Manages instances of {@link WebView}
|
||||||
*
|
*
|
||||||
* Can accept following commands:
|
* <p>Can accept following commands: - GO_BACK - GO_FORWARD - RELOAD
|
||||||
* - GO_BACK
|
|
||||||
* - GO_FORWARD
|
|
||||||
* - RELOAD
|
|
||||||
*
|
*
|
||||||
* {@link WebView} instances could emit following direct events:
|
* <p>{@link WebView} instances could emit following direct events: - topLoadingFinish -
|
||||||
* - topLoadingFinish
|
* topLoadingStart - topLoadingError
|
||||||
* - topLoadingStart
|
|
||||||
* - topLoadingError
|
|
||||||
*
|
*
|
||||||
* Each event will carry the following properties:
|
* <p>Each event will carry the following properties: - target - view's react tag - url - url set
|
||||||
* - target - view's react tag
|
* for the webview - loading - whether webview is in a loading state - title - title of the current
|
||||||
* - url - url set for the webview
|
* page - canGoBack - boolean, whether there is anything on a history stack to go back -
|
||||||
* - loading - whether webview is in a loading state
|
* canGoForward - boolean, whether it is possible to request GO_FORWARD command
|
||||||
* - title - title of the current page
|
|
||||||
* - canGoBack - boolean, whether there is anything on a history stack to go back
|
|
||||||
* - canGoForward - boolean, whether it is possible to request GO_FORWARD command
|
|
||||||
*/
|
*/
|
||||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||||
@ReactModule(name = ReactWebViewManager.REACT_CLASS)
|
@ReactModule(name = ReactWebViewManager.REACT_CLASS)
|
||||||
@ -134,10 +125,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
mLastLoadFailed = false;
|
mLastLoadFailed = false;
|
||||||
|
|
||||||
dispatchEvent(
|
dispatchEvent(
|
||||||
webView,
|
webView, new TopLoadingStartEvent(webView.getId(), createWebViewEvent(webView, url)));
|
||||||
new TopLoadingStartEvent(
|
|
||||||
webView.getId(),
|
|
||||||
createWebViewEvent(webView, url)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -146,8 +134,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
|
|
||||||
// url blacklisting
|
// url blacklisting
|
||||||
if (mUrlPrefixesForDefaultIntent != null && mUrlPrefixesForDefaultIntent.size() > 0) {
|
if (mUrlPrefixesForDefaultIntent != null && mUrlPrefixesForDefaultIntent.size() > 0) {
|
||||||
ArrayList<Object> urlPrefixesForDefaultIntent =
|
ArrayList<Object> urlPrefixesForDefaultIntent = mUrlPrefixesForDefaultIntent.toArrayList();
|
||||||
mUrlPrefixesForDefaultIntent.toArrayList();
|
|
||||||
for (Object urlPrefix : urlPrefixesForDefaultIntent) {
|
for (Object urlPrefix : urlPrefixesForDefaultIntent) {
|
||||||
if (url.startsWith((String) urlPrefix)) {
|
if (url.startsWith((String) urlPrefix)) {
|
||||||
launchIntent(view.getContext(), url);
|
launchIntent(view.getContext(), url);
|
||||||
@ -190,10 +177,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReceivedError(
|
public void onReceivedError(
|
||||||
WebView webView,
|
WebView webView, int errorCode, String description, String failingUrl) {
|
||||||
int errorCode,
|
|
||||||
String description,
|
|
||||||
String failingUrl) {
|
|
||||||
super.onReceivedError(webView, errorCode, description, failingUrl);
|
super.onReceivedError(webView, errorCode, description, failingUrl);
|
||||||
mLastLoadFailed = true;
|
mLastLoadFailed = true;
|
||||||
|
|
||||||
@ -205,17 +189,12 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
eventData.putDouble("code", errorCode);
|
eventData.putDouble("code", errorCode);
|
||||||
eventData.putString("description", description);
|
eventData.putString("description", description);
|
||||||
|
|
||||||
dispatchEvent(
|
dispatchEvent(webView, new TopLoadingErrorEvent(webView.getId(), eventData));
|
||||||
webView,
|
|
||||||
new TopLoadingErrorEvent(webView.getId(), eventData));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void emitFinishEvent(WebView webView, String url) {
|
protected void emitFinishEvent(WebView webView, String url) {
|
||||||
dispatchEvent(
|
dispatchEvent(
|
||||||
webView,
|
webView, new TopLoadingFinishEvent(webView.getId(), createWebViewEvent(webView, url)));
|
||||||
new TopLoadingFinishEvent(
|
|
||||||
webView.getId(),
|
|
||||||
createWebViewEvent(webView, url)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected WritableMap createWebViewEvent(WebView webView, String url) {
|
protected WritableMap createWebViewEvent(WebView webView, String url) {
|
||||||
@ -265,9 +244,8 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
/**
|
/**
|
||||||
* WebView must be created with an context of the current activity
|
* WebView must be created with an context of the current activity
|
||||||
*
|
*
|
||||||
* Activity Context is required for creation of dialogs internally by WebView
|
* <p>Activity Context is required for creation of dialogs internally by WebView Reactive Native
|
||||||
* Reactive Native needed for access to ReactNative internal system functionality
|
* needed for access to ReactNative internal system functionality
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public ReactWebView(ThemedReactContext reactContext) {
|
public ReactWebView(ThemedReactContext reactContext) {
|
||||||
super(reactContext);
|
super(reactContext);
|
||||||
@ -291,7 +269,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
@Override
|
@Override
|
||||||
public void setWebViewClient(WebViewClient client) {
|
public void setWebViewClient(WebViewClient client) {
|
||||||
super.setWebViewClient(client);
|
super.setWebViewClient(client);
|
||||||
mReactWebViewClient = (ReactWebViewClient)client;
|
mReactWebViewClient = (ReactWebViewClient) client;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @Nullable ReactWebViewClient getReactWebViewClient() {
|
public @Nullable ReactWebViewClient getReactWebViewClient() {
|
||||||
@ -335,9 +313,9 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void callInjectedJavaScript() {
|
public void callInjectedJavaScript() {
|
||||||
if (getSettings().getJavaScriptEnabled() &&
|
if (getSettings().getJavaScriptEnabled()
|
||||||
injectedJS != null &&
|
&& injectedJS != null
|
||||||
!TextUtils.isEmpty(injectedJS)) {
|
&& !TextUtils.isEmpty(injectedJS)) {
|
||||||
evaluateJavascriptWithFallback("(function() {\n" + injectedJS + ";\n})();");
|
evaluateJavascriptWithFallback("(function() {\n" + injectedJS + ";\n})();");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -346,23 +324,30 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
if (messagingEnabled) {
|
if (messagingEnabled) {
|
||||||
if (ReactBuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
if (ReactBuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||||
// See isNative in lodash
|
// See isNative in lodash
|
||||||
String testPostMessageNative = "String(window.postMessage) === String(Object.hasOwnProperty).replace('hasOwnProperty', 'postMessage')";
|
String testPostMessageNative =
|
||||||
evaluateJavascript(testPostMessageNative, new ValueCallback<String>() {
|
"String(window.postMessage) === String(Object.hasOwnProperty).replace('hasOwnProperty', 'postMessage')";
|
||||||
@Override
|
evaluateJavascript(
|
||||||
public void onReceiveValue(String value) {
|
testPostMessageNative,
|
||||||
if (value.equals("true")) {
|
new ValueCallback<String>() {
|
||||||
FLog.w(ReactConstants.TAG, "Setting onMessage on a WebView overrides existing values of window.postMessage, but a previous value was defined");
|
@Override
|
||||||
}
|
public void onReceiveValue(String value) {
|
||||||
}
|
if (value.equals("true")) {
|
||||||
});
|
FLog.w(
|
||||||
|
ReactConstants.TAG,
|
||||||
|
"Setting onMessage on a WebView overrides existing values of window.postMessage, but a previous value was defined");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
evaluateJavascriptWithFallback("(" +
|
evaluateJavascriptWithFallback(
|
||||||
"window.originalPostMessage = window.postMessage," +
|
"("
|
||||||
"window.postMessage = function(data) {" +
|
+ "window.originalPostMessage = window.postMessage,"
|
||||||
BRIDGE_NAME + ".postMessage(String(data));" +
|
+ "window.postMessage = function(data) {"
|
||||||
"}" +
|
+ BRIDGE_NAME
|
||||||
")");
|
+ ".postMessage(String(data));"
|
||||||
|
+ "}"
|
||||||
|
+ ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,10 +362,10 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ReactWebViewManager() {
|
public ReactWebViewManager() {
|
||||||
mWebViewConfig = new WebViewConfig() {
|
mWebViewConfig =
|
||||||
public void configWebView(WebView webView) {
|
new WebViewConfig() {
|
||||||
}
|
public void configWebView(WebView webView) {}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReactWebViewManager(WebViewConfig webViewConfig) {
|
public ReactWebViewManager(WebViewConfig webViewConfig) {
|
||||||
@ -400,21 +385,23 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||||
protected WebView createViewInstance(ThemedReactContext reactContext) {
|
protected WebView createViewInstance(ThemedReactContext reactContext) {
|
||||||
ReactWebView webView = createReactWebViewInstance(reactContext);
|
ReactWebView webView = createReactWebViewInstance(reactContext);
|
||||||
webView.setWebChromeClient(new WebChromeClient() {
|
webView.setWebChromeClient(
|
||||||
@Override
|
new WebChromeClient() {
|
||||||
public boolean onConsoleMessage(ConsoleMessage message) {
|
@Override
|
||||||
if (ReactBuildConfig.DEBUG) {
|
public boolean onConsoleMessage(ConsoleMessage message) {
|
||||||
return super.onConsoleMessage(message);
|
if (ReactBuildConfig.DEBUG) {
|
||||||
}
|
return super.onConsoleMessage(message);
|
||||||
// Ignore console logs in non debug builds.
|
}
|
||||||
return true;
|
// Ignore console logs in non debug builds.
|
||||||
}
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
|
public void onGeolocationPermissionsShowPrompt(
|
||||||
callback.invoke(origin, true, false);
|
String origin, GeolocationPermissions.Callback callback) {
|
||||||
}
|
callback.invoke(origin, true, false);
|
||||||
});
|
}
|
||||||
|
});
|
||||||
reactContext.addLifecycleEventListener(webView);
|
reactContext.addLifecycleEventListener(webView);
|
||||||
mWebViewConfig.configWebView(webView);
|
mWebViewConfig.configWebView(webView);
|
||||||
WebSettings settings = webView.getSettings();
|
WebSettings settings = webView.getSettings();
|
||||||
@ -431,9 +418,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
setMixedContentMode(webView, "never");
|
setMixedContentMode(webView, "never");
|
||||||
|
|
||||||
// Fixes broken full-screen modals/galleries due to body height being 0.
|
// Fixes broken full-screen modals/galleries due to body height being 0.
|
||||||
webView.setLayoutParams(
|
webView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
|
||||||
new LayoutParams(LayoutParams.MATCH_PARENT,
|
|
||||||
LayoutParams.MATCH_PARENT));
|
|
||||||
|
|
||||||
setGeolocationEnabled(webView, false);
|
setGeolocationEnabled(webView, false);
|
||||||
if (ReactBuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
if (ReactBuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||||
@ -517,7 +502,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
String html = source.getString("html");
|
String html = source.getString("html");
|
||||||
if (source.hasKey("baseUrl")) {
|
if (source.hasKey("baseUrl")) {
|
||||||
view.loadDataWithBaseURL(
|
view.loadDataWithBaseURL(
|
||||||
source.getString("baseUrl"), html, HTML_MIME_TYPE, HTML_ENCODING, null);
|
source.getString("baseUrl"), html, HTML_MIME_TYPE, HTML_ENCODING, null);
|
||||||
} else {
|
} else {
|
||||||
view.loadData(html, HTML_MIME_TYPE, HTML_ENCODING);
|
view.loadData(html, HTML_MIME_TYPE, HTML_ENCODING);
|
||||||
}
|
}
|
||||||
@ -594,8 +579,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
|
|
||||||
@ReactProp(name = "urlPrefixesForDefaultIntent")
|
@ReactProp(name = "urlPrefixesForDefaultIntent")
|
||||||
public void setUrlPrefixesForDefaultIntent(
|
public void setUrlPrefixesForDefaultIntent(
|
||||||
WebView view,
|
WebView view, @Nullable ReadableArray urlPrefixesForDefaultIntent) {
|
||||||
@Nullable ReadableArray urlPrefixesForDefaultIntent) {
|
|
||||||
ReactWebViewClient client = ((ReactWebView) view).getReactWebViewClient();
|
ReactWebViewClient client = ((ReactWebView) view).getReactWebViewClient();
|
||||||
if (client != null && urlPrefixesForDefaultIntent != null) {
|
if (client != null && urlPrefixesForDefaultIntent != null) {
|
||||||
client.setUrlPrefixesForDefaultIntent(urlPrefixesForDefaultIntent);
|
client.setUrlPrefixesForDefaultIntent(urlPrefixesForDefaultIntent);
|
||||||
@ -603,27 +587,21 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ReactProp(name = "allowFileAccess")
|
@ReactProp(name = "allowFileAccess")
|
||||||
public void setAllowFileAccess(
|
public void setAllowFileAccess(WebView view, @Nullable Boolean allowFileAccess) {
|
||||||
WebView view,
|
|
||||||
@Nullable Boolean allowFileAccess) {
|
|
||||||
view.getSettings().setAllowFileAccess(allowFileAccess != null && allowFileAccess);
|
view.getSettings().setAllowFileAccess(allowFileAccess != null && allowFileAccess);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ReactProp(name = "geolocationEnabled")
|
@ReactProp(name = "geolocationEnabled")
|
||||||
public void setGeolocationEnabled(
|
public void setGeolocationEnabled(WebView view, @Nullable Boolean isGeolocationEnabled) {
|
||||||
WebView view,
|
|
||||||
@Nullable Boolean isGeolocationEnabled) {
|
|
||||||
view.getSettings().setGeolocationEnabled(isGeolocationEnabled != null && isGeolocationEnabled);
|
view.getSettings().setGeolocationEnabled(isGeolocationEnabled != null && isGeolocationEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ReactProp(name = "originWhitelist")
|
@ReactProp(name = "originWhitelist")
|
||||||
public void setOriginWhitelist(
|
public void setOriginWhitelist(WebView view, @Nullable ReadableArray originWhitelist) {
|
||||||
WebView view,
|
|
||||||
@Nullable ReadableArray originWhitelist) {
|
|
||||||
ReactWebViewClient client = ((ReactWebView) view).getReactWebViewClient();
|
ReactWebViewClient client = ((ReactWebView) view).getReactWebViewClient();
|
||||||
if (client != null && originWhitelist != null) {
|
if (client != null && originWhitelist != null) {
|
||||||
List<Pattern> whiteList = new LinkedList<>();
|
List<Pattern> whiteList = new LinkedList<>();
|
||||||
for (int i = 0 ; i < originWhitelist.size() ; i++) {
|
for (int i = 0; i < originWhitelist.size(); i++) {
|
||||||
whiteList.add(Pattern.compile(originWhitelist.getString(i)));
|
whiteList.add(Pattern.compile(originWhitelist.getString(i)));
|
||||||
}
|
}
|
||||||
client.setOriginWhitelist(whiteList);
|
client.setOriginWhitelist(whiteList);
|
||||||
@ -639,13 +617,12 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
@Override
|
@Override
|
||||||
public @Nullable Map<String, Integer> getCommandsMap() {
|
public @Nullable Map<String, Integer> getCommandsMap() {
|
||||||
return MapBuilder.of(
|
return MapBuilder.of(
|
||||||
"goBack", COMMAND_GO_BACK,
|
"goBack", COMMAND_GO_BACK,
|
||||||
"goForward", COMMAND_GO_FORWARD,
|
"goForward", COMMAND_GO_FORWARD,
|
||||||
"reload", COMMAND_RELOAD,
|
"reload", COMMAND_RELOAD,
|
||||||
"stopLoading", COMMAND_STOP_LOADING,
|
"stopLoading", COMMAND_STOP_LOADING,
|
||||||
"postMessage", COMMAND_POST_MESSAGE,
|
"postMessage", COMMAND_POST_MESSAGE,
|
||||||
"injectJavaScript", COMMAND_INJECT_JAVASCRIPT
|
"injectJavaScript", COMMAND_INJECT_JAVASCRIPT);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -668,17 +645,20 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
ReactWebView reactWebView = (ReactWebView) root;
|
ReactWebView reactWebView = (ReactWebView) root;
|
||||||
JSONObject eventInitDict = new JSONObject();
|
JSONObject eventInitDict = new JSONObject();
|
||||||
eventInitDict.put("data", args.getString(0));
|
eventInitDict.put("data", args.getString(0));
|
||||||
reactWebView.evaluateJavascriptWithFallback("(function () {" +
|
reactWebView.evaluateJavascriptWithFallback(
|
||||||
"var event;" +
|
"(function () {"
|
||||||
"var data = " + eventInitDict.toString() + ";" +
|
+ "var event;"
|
||||||
"try {" +
|
+ "var data = "
|
||||||
"event = new MessageEvent('message', data);" +
|
+ eventInitDict.toString()
|
||||||
"} catch (e) {" +
|
+ ";"
|
||||||
"event = document.createEvent('MessageEvent');" +
|
+ "try {"
|
||||||
"event.initMessageEvent('message', true, true, data.data, data.origin, data.lastEventId, data.source);" +
|
+ "event = new MessageEvent('message', data);"
|
||||||
"}" +
|
+ "} catch (e) {"
|
||||||
"document.dispatchEvent(event);" +
|
+ "event = document.createEvent('MessageEvent');"
|
||||||
"})();");
|
+ "event.initMessageEvent('message', true, true, data.data, data.origin, data.lastEventId, data.source);"
|
||||||
|
+ "}"
|
||||||
|
+ "document.dispatchEvent(event);"
|
||||||
|
+ "})();");
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
@ -693,23 +673,23 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
@Override
|
@Override
|
||||||
public void onDropViewInstance(WebView webView) {
|
public void onDropViewInstance(WebView webView) {
|
||||||
super.onDropViewInstance(webView);
|
super.onDropViewInstance(webView);
|
||||||
((ThemedReactContext) webView.getContext()).removeLifecycleEventListener((ReactWebView) webView);
|
((ThemedReactContext) webView.getContext())
|
||||||
|
.removeLifecycleEventListener((ReactWebView) webView);
|
||||||
((ReactWebView) webView).cleanupCallbacksAndDestroy();
|
((ReactWebView) webView).cleanupCallbacksAndDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected WebView.PictureListener getPictureListener() {
|
protected WebView.PictureListener getPictureListener() {
|
||||||
if (mPictureListener == null) {
|
if (mPictureListener == null) {
|
||||||
mPictureListener = new WebView.PictureListener() {
|
mPictureListener =
|
||||||
@Override
|
new WebView.PictureListener() {
|
||||||
public void onNewPicture(WebView webView, Picture picture) {
|
@Override
|
||||||
dispatchEvent(
|
public void onNewPicture(WebView webView, Picture picture) {
|
||||||
webView,
|
dispatchEvent(
|
||||||
new ContentSizeChangeEvent(
|
webView,
|
||||||
webView.getId(),
|
new ContentSizeChangeEvent(
|
||||||
webView.getWidth(),
|
webView.getId(), webView.getWidth(), webView.getContentHeight()));
|
||||||
webView.getContentHeight()));
|
}
|
||||||
}
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
return mPictureListener;
|
return mPictureListener;
|
||||||
}
|
}
|
||||||
@ -717,7 +697,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||||||
protected static void dispatchEvent(WebView webView, Event event) {
|
protected static void dispatchEvent(WebView webView, Event event) {
|
||||||
ReactContext reactContext = (ReactContext) webView.getContext();
|
ReactContext reactContext = (ReactContext) webView.getContext();
|
||||||
EventDispatcher eventDispatcher =
|
EventDispatcher eventDispatcher =
|
||||||
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher();
|
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher();
|
||||||
eventDispatcher.dispatchEvent(event);
|
eventDispatcher.dispatchEvent(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user