|
@@ -23,7 +23,6 @@ import java.util.Map;
|
23
|
23
|
import android.content.ActivityNotFoundException;
|
24
|
24
|
import android.content.Intent;
|
25
|
25
|
import android.graphics.Bitmap;
|
26
|
|
-import android.graphics.Picture;
|
27
|
26
|
import android.net.Uri;
|
28
|
27
|
import android.os.Build;
|
29
|
28
|
import android.os.Environment;
|
|
@@ -126,7 +125,6 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
|
126
|
125
|
protected static final String BLANK_URL = "about:blank";
|
127
|
126
|
|
128
|
127
|
protected WebViewConfig mWebViewConfig;
|
129
|
|
- protected @Nullable WebView.PictureListener mPictureListener;
|
130
|
128
|
|
131
|
129
|
protected static class RNCWebViewClient extends WebViewClient {
|
132
|
130
|
|
|
@@ -227,6 +225,11 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
|
227
|
225
|
protected @Nullable String injectedJS;
|
228
|
226
|
protected boolean messagingEnabled = false;
|
229
|
227
|
protected @Nullable RNCWebViewClient mRNCWebViewClient;
|
|
228
|
+ protected boolean sendContentSizeChangeEvents = false;
|
|
229
|
+ public void setSendContentSizeChangeEvents(boolean sendContentSizeChangeEvents) {
|
|
230
|
+ this.sendContentSizeChangeEvents = sendContentSizeChangeEvents;
|
|
231
|
+ }
|
|
232
|
+
|
230
|
233
|
|
231
|
234
|
protected class RNCWebViewBridge {
|
232
|
235
|
RNCWebView mContext;
|
|
@@ -267,6 +270,20 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
|
267
|
270
|
cleanupCallbacksAndDestroy();
|
268
|
271
|
}
|
269
|
272
|
|
|
273
|
+ @Override
|
|
274
|
+ protected void onSizeChanged(int w, int h, int ow, int oh) {
|
|
275
|
+ if (sendContentSizeChangeEvents) {
|
|
276
|
+ dispatchEvent(
|
|
277
|
+ this,
|
|
278
|
+ new ContentSizeChangeEvent(
|
|
279
|
+ this.getId(),
|
|
280
|
+ w,
|
|
281
|
+ h
|
|
282
|
+ )
|
|
283
|
+ );
|
|
284
|
+ }
|
|
285
|
+ }
|
|
286
|
+
|
270
|
287
|
@Override
|
271
|
288
|
public void setWebViewClient(WebViewClient client) {
|
272
|
289
|
super.setWebViewClient(client);
|
|
@@ -641,11 +658,7 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
|
641
|
658
|
|
642
|
659
|
@ReactProp(name = "onContentSizeChange")
|
643
|
660
|
public void setOnContentSizeChange(WebView view, boolean sendContentSizeChangeEvents) {
|
644
|
|
- if (sendContentSizeChangeEvents) {
|
645
|
|
- view.setPictureListener(getPictureListener());
|
646
|
|
- } else {
|
647
|
|
- view.setPictureListener(null);
|
648
|
|
- }
|
|
661
|
+ ((RNCWebView) view).setSendContentSizeChangeEvents(sendContentSizeChangeEvents);
|
649
|
662
|
}
|
650
|
663
|
|
651
|
664
|
@ReactProp(name = "mixedContentMode")
|
|
@@ -770,23 +783,6 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
|
770
|
783
|
((RNCWebView) webView).cleanupCallbacksAndDestroy();
|
771
|
784
|
}
|
772
|
785
|
|
773
|
|
- protected WebView.PictureListener getPictureListener() {
|
774
|
|
- if (mPictureListener == null) {
|
775
|
|
- mPictureListener = new WebView.PictureListener() {
|
776
|
|
- @Override
|
777
|
|
- public void onNewPicture(WebView webView, Picture picture) {
|
778
|
|
- dispatchEvent(
|
779
|
|
- webView,
|
780
|
|
- new ContentSizeChangeEvent(
|
781
|
|
- webView.getId(),
|
782
|
|
- webView.getWidth(),
|
783
|
|
- webView.getContentHeight()));
|
784
|
|
- }
|
785
|
|
- };
|
786
|
|
- }
|
787
|
|
- return mPictureListener;
|
788
|
|
- }
|
789
|
|
-
|
790
|
786
|
protected static void dispatchEvent(WebView webView, Event event) {
|
791
|
787
|
ReactContext reactContext = (ReactContext) webView.getContext();
|
792
|
788
|
EventDispatcher eventDispatcher =
|