react-native-webview-bootpay 13.8.41 → 13.13.4-4.alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -69
- package/android/build.gradle +1 -11
- package/android/gradle.properties +5 -47
- package/android/src/main/AndroidManifest.xml +9 -5
- package/android/src/main/AndroidManifestNew.xml +97 -0
- package/android/src/main/java/kr/co/bootpay/webview/BPCWebChromeClient.java +57 -11
- package/android/src/main/java/kr/co/bootpay/webview/BPCWebView.java +101 -68
- package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewClient.java +70 -56
- package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewManagerImpl.kt +119 -65
- package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewMessagingModule.kt +9 -0
- package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewModuleImpl.java +1 -1
- package/android/src/main/java/kr/co/bootpay/webview/BootpayUrlHelper.java +91 -75
- package/android/src/newarch/{com/reactnativecommunity → kr/co/bootpay}/webview/BPCWebViewManager.java +118 -109
- package/android/src/newarch/{com/reactnativecommunity → kr/co/bootpay}/webview/BPCWebViewModule.java +1 -1
- package/android/src/{main/java → oldarch}/kr/co/bootpay/webview/BPCWebViewManager.java +63 -58
- package/android/src/{main/java → oldarch}/kr/co/bootpay/webview/BPCWebViewModule.java +1 -1
- package/apple/BPCWebView.mm +21 -12
- package/apple/BPCWebViewImpl.h +10 -0
- package/apple/BPCWebViewImpl.m +267 -205
- package/apple/BPCWebViewManager.mm +5 -24
- package/apple/BPCWebViewModule.h +23 -0
- package/apple/BPCWebViewModule.mm +34 -0
- package/apple/RCTConvert+WKDataDetectorTypes.h +11 -0
- package/apple/RCTConvert+WKDataDetectorTypes.m +27 -0
- package/index.d.ts +54 -48
- package/ios/RNCWebView.xcodeproj/project.pbxproj +24 -24
- package/ios/RNCWebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/RNCWebView.xcodeproj/project.xcworkspace/xcuserdata/taesupyoon.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNCWebView.xcodeproj/xcuserdata/taesupyoon.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/lib/BPCWebViewNativeComponent.d.ts +24 -25
- package/lib/BPCWebViewNativeComponent.js +1 -1
- package/lib/{NativeBPCWebView.d.ts → NativeBPCWebViewModule.d.ts} +2 -5
- package/lib/{NativeBPCWebView.js → NativeBPCWebViewModule.js} +1 -1
- package/lib/WebView.android.d.ts +0 -1
- package/lib/WebView.android.js +1 -1
- package/lib/WebView.d.ts +0 -1
- package/lib/WebView.ios.d.ts +0 -1
- package/lib/WebView.ios.js +1 -1
- package/lib/WebView.js +1 -1
- package/lib/WebView.macos.d.ts +0 -1
- package/lib/WebView.macos.js +1 -1
- package/lib/WebView.styles.d.ts +37 -11
- package/lib/WebView.styles.js +1 -1
- package/lib/WebView.windows.d.ts +0 -1
- package/lib/WebView.windows.js +1 -1
- package/lib/WebViewNativeComponent.macos.d.ts +1 -2
- package/lib/WebViewNativeComponent.windows.d.ts +1 -2
- package/lib/WebViewShared.d.ts +0 -1
- package/lib/WebViewShared.js +1 -1
- package/lib/WebViewTypes.d.ts +51 -3
- package/lib/WebViewTypes.js +1 -1
- package/lib/index.d.ts +0 -1
- package/macos/RNCWebView.xcodeproj/project.pbxproj +36 -36
- package/package.json +12 -11
- package/react-native-webview-bootpay.podspec +2 -2
- package/react-native.config.js +1 -5
- package/src/BPCWebViewNativeComponent.ts +143 -79
- package/src/NativeBPCWebViewModule.ts +13 -0
- package/src/WebView.android.tsx +295 -190
- package/src/WebView.ios.tsx +253 -186
- package/src/WebView.macos.tsx +220 -152
- package/src/WebView.styles.ts +9 -12
- package/src/WebView.tsx +14 -7
- package/src/WebView.windows.tsx +180 -126
- package/src/WebViewNativeComponent.macos.ts +4 -5
- package/src/WebViewNativeComponent.windows.ts +6 -8
- package/src/WebViewShared.tsx +139 -91
- package/src/WebViewTypes.ts +80 -35
- package/src/__tests__/WebViewShared-test.js +170 -55
- package/windows/ReactNativeWebView/ReactNativeWebView.vcxproj +8 -17
- package/windows/ReactNativeWebView/ReactPackageProvider.cpp +5 -1
- package/windows/ReactNativeWebView/ReactWebView.cpp +73 -6
- package/windows/ReactNativeWebView/ReactWebView.h +11 -1
- package/windows/ReactNativeWebView/ReactWebView.idl +12 -3
- package/windows/ReactNativeWebView/ReactWebView2.cpp +294 -129
- package/windows/ReactNativeWebView/ReactWebView2.h +42 -5
- package/windows/ReactNativeWebView/ReactWebView2Manager.cpp +60 -34
- package/windows/ReactNativeWebView/ReactWebView2Manager.h +4 -4
- package/windows/ReactNativeWebView/ReactWebViewHelpers.cpp +70 -0
- package/windows/ReactNativeWebView/ReactWebViewHelpers.h +16 -0
- package/windows/ReactNativeWebView/ReactWebViewManager.cpp +22 -3
- package/windows/ReactNativeWebView/ReactWebViewManager.h +6 -1
- package/windows/ReactNativeWebView/pch.h +11 -7
- package/windows/ReactNativeWebView.sln +14 -14
- package/ios/main.jsbundle +0 -457
- package/lib/BPCWebViewNativeComponent.d.ts.map +0 -1
- package/lib/NativeBPCWebView.d.ts.map +0 -1
- package/lib/WebView.android.d.ts.map +0 -1
- package/lib/WebView.d.ts.map +0 -1
- package/lib/WebView.ios.d.ts.map +0 -1
- package/lib/WebView.macos.d.ts.map +0 -1
- package/lib/WebView.styles.d.ts.map +0 -1
- package/lib/WebView.windows.d.ts.map +0 -1
- package/lib/WebViewNativeComponent.macos.d.ts.map +0 -1
- package/lib/WebViewNativeComponent.windows.d.ts.map +0 -1
- package/lib/WebViewShared.d.ts.map +0 -1
- package/lib/WebViewTypes.d.ts.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/src/NativeBPCWebView.ts +0 -14
- package/windows/ReactNativeWebView/packages.config +0 -5
- /package/android/src/main/java/kr/co/bootpay/webview/{BPCWebviewWrapper.kt → BPCWebViewWrapper.kt} +0 -0
|
@@ -6,13 +6,10 @@ import androidx.annotation.Nullable;
|
|
|
6
6
|
import com.facebook.react.bridge.ReadableArray;
|
|
7
7
|
import com.facebook.react.bridge.ReadableMap;
|
|
8
8
|
import com.facebook.react.common.MapBuilder;
|
|
9
|
-
import com.facebook.react.uimanager.SimpleViewManager;
|
|
10
9
|
import com.facebook.react.uimanager.ThemedReactContext;
|
|
10
|
+
import com.facebook.react.uimanager.ViewGroupManager;
|
|
11
11
|
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
12
12
|
import com.facebook.react.views.scroll.ScrollEventType;
|
|
13
|
-
|
|
14
|
-
import java.util.Map;
|
|
15
|
-
|
|
16
13
|
import kr.co.bootpay.webview.events.TopCustomMenuSelectionEvent;
|
|
17
14
|
import kr.co.bootpay.webview.events.TopHttpErrorEvent;
|
|
18
15
|
import kr.co.bootpay.webview.events.TopLoadingErrorEvent;
|
|
@@ -24,7 +21,9 @@ import kr.co.bootpay.webview.events.TopOpenWindowEvent;
|
|
|
24
21
|
import kr.co.bootpay.webview.events.TopRenderProcessGoneEvent;
|
|
25
22
|
import kr.co.bootpay.webview.events.TopShouldStartLoadWithRequestEvent;
|
|
26
23
|
|
|
27
|
-
|
|
24
|
+
import java.util.Map;
|
|
25
|
+
|
|
26
|
+
public class BPCWebViewManager extends ViewGroupManager<BPCWebViewWrapper> {
|
|
28
27
|
|
|
29
28
|
private final BPCWebViewManagerImpl mBPCWebViewManagerImpl;
|
|
30
29
|
|
|
@@ -38,246 +37,246 @@ public class BPCWebViewManager extends SimpleViewManager<BPCWebView> {
|
|
|
38
37
|
}
|
|
39
38
|
|
|
40
39
|
@Override
|
|
41
|
-
public
|
|
40
|
+
public BPCWebViewWrapper createViewInstance(ThemedReactContext context) {
|
|
42
41
|
return mBPCWebViewManagerImpl.createViewInstance(context);
|
|
43
42
|
}
|
|
44
43
|
|
|
45
|
-
public
|
|
46
|
-
return mBPCWebViewManagerImpl.createViewInstance(context,
|
|
44
|
+
public BPCWebViewWrapper createViewInstance(ThemedReactContext context, BPCWebView view) {
|
|
45
|
+
return mBPCWebViewManagerImpl.createViewInstance(context, view);
|
|
47
46
|
}
|
|
48
47
|
|
|
49
48
|
@ReactProp(name = "allowFileAccess")
|
|
50
|
-
public void setAllowFileAccess(
|
|
49
|
+
public void setAllowFileAccess(BPCWebViewWrapper view, boolean value) {
|
|
51
50
|
mBPCWebViewManagerImpl.setAllowFileAccess(view, value);
|
|
52
51
|
}
|
|
53
52
|
|
|
54
53
|
@ReactProp(name = "allowFileAccessFromFileURLs")
|
|
55
|
-
public void setAllowFileAccessFromFileURLs(
|
|
54
|
+
public void setAllowFileAccessFromFileURLs(BPCWebViewWrapper view, boolean value) {
|
|
56
55
|
mBPCWebViewManagerImpl.setAllowFileAccessFromFileURLs(view, value);
|
|
57
56
|
|
|
58
57
|
}
|
|
59
58
|
|
|
60
59
|
@ReactProp(name = "allowUniversalAccessFromFileURLs")
|
|
61
|
-
public void setAllowUniversalAccessFromFileURLs(
|
|
60
|
+
public void setAllowUniversalAccessFromFileURLs(BPCWebViewWrapper view, boolean value) {
|
|
62
61
|
mBPCWebViewManagerImpl.setAllowUniversalAccessFromFileURLs(view, value);
|
|
63
62
|
}
|
|
64
63
|
|
|
65
64
|
@ReactProp(name = "allowsFullscreenVideo")
|
|
66
|
-
public void setAllowsFullscreenVideo(
|
|
65
|
+
public void setAllowsFullscreenVideo(BPCWebViewWrapper view, boolean value) {
|
|
67
66
|
mBPCWebViewManagerImpl.setAllowsFullscreenVideo(view, value);
|
|
68
67
|
}
|
|
69
68
|
|
|
70
69
|
@ReactProp(name = "allowsProtectedMedia")
|
|
71
|
-
public void setAllowsProtectedMedia(
|
|
70
|
+
public void setAllowsProtectedMedia(BPCWebViewWrapper view, boolean value) {
|
|
72
71
|
mBPCWebViewManagerImpl.setAllowsProtectedMedia(view, value);
|
|
73
72
|
}
|
|
74
73
|
|
|
75
74
|
@ReactProp(name = "androidLayerType")
|
|
76
|
-
public void setAndroidLayerType(
|
|
75
|
+
public void setAndroidLayerType(BPCWebViewWrapper view, @Nullable String value) {
|
|
77
76
|
mBPCWebViewManagerImpl.setAndroidLayerType(view, value);
|
|
78
77
|
}
|
|
79
78
|
|
|
80
79
|
@ReactProp(name = "applicationNameForUserAgent")
|
|
81
|
-
public void setApplicationNameForUserAgent(
|
|
80
|
+
public void setApplicationNameForUserAgent(BPCWebViewWrapper view, @Nullable String value) {
|
|
82
81
|
mBPCWebViewManagerImpl.setApplicationNameForUserAgent(view, value);
|
|
83
82
|
}
|
|
84
83
|
|
|
85
84
|
@ReactProp(name = "basicAuthCredential")
|
|
86
|
-
public void setBasicAuthCredential(
|
|
85
|
+
public void setBasicAuthCredential(BPCWebViewWrapper view, @Nullable ReadableMap value) {
|
|
87
86
|
mBPCWebViewManagerImpl.setBasicAuthCredential(view, value);
|
|
88
87
|
}
|
|
89
88
|
|
|
90
89
|
@ReactProp(name = "cacheEnabled")
|
|
91
|
-
public void setCacheEnabled(
|
|
90
|
+
public void setCacheEnabled(BPCWebViewWrapper view, boolean value) {
|
|
92
91
|
mBPCWebViewManagerImpl.setCacheEnabled(view, value);
|
|
93
92
|
}
|
|
94
93
|
|
|
95
94
|
@ReactProp(name = "cacheMode")
|
|
96
|
-
public void setCacheMode(
|
|
95
|
+
public void setCacheMode(BPCWebViewWrapper view, @Nullable String value) {
|
|
97
96
|
mBPCWebViewManagerImpl.setCacheMode(view, value);
|
|
98
97
|
}
|
|
99
98
|
|
|
100
99
|
@ReactProp(name = "domStorageEnabled")
|
|
101
|
-
public void setDomStorageEnabled(
|
|
100
|
+
public void setDomStorageEnabled(BPCWebViewWrapper view, boolean value) {
|
|
102
101
|
mBPCWebViewManagerImpl.setDomStorageEnabled(view, value);
|
|
103
102
|
}
|
|
104
103
|
|
|
105
104
|
@ReactProp(name = "downloadingMessage")
|
|
106
|
-
public void setDownloadingMessage(
|
|
105
|
+
public void setDownloadingMessage(BPCWebViewWrapper view, @Nullable String value) {
|
|
107
106
|
mBPCWebViewManagerImpl.setDownloadingMessage(value);
|
|
108
107
|
}
|
|
109
108
|
|
|
110
109
|
@ReactProp(name = "forceDarkOn")
|
|
111
|
-
public void setForceDarkOn(
|
|
110
|
+
public void setForceDarkOn(BPCWebViewWrapper view, boolean value) {
|
|
112
111
|
mBPCWebViewManagerImpl.setForceDarkOn(view, value);
|
|
113
112
|
}
|
|
114
113
|
|
|
115
114
|
@ReactProp(name = "geolocationEnabled")
|
|
116
|
-
public void setGeolocationEnabled(
|
|
115
|
+
public void setGeolocationEnabled(BPCWebViewWrapper view, boolean value) {
|
|
117
116
|
mBPCWebViewManagerImpl.setGeolocationEnabled(view, value);
|
|
118
117
|
}
|
|
119
118
|
|
|
120
119
|
@ReactProp(name = "hasOnScroll")
|
|
121
|
-
public void setHasOnScroll(
|
|
120
|
+
public void setHasOnScroll(BPCWebViewWrapper view, boolean hasScrollEvent) {
|
|
122
121
|
mBPCWebViewManagerImpl.setHasOnScroll(view, hasScrollEvent);
|
|
123
122
|
}
|
|
124
123
|
|
|
125
124
|
@ReactProp(name = "incognito")
|
|
126
|
-
public void setIncognito(
|
|
125
|
+
public void setIncognito(BPCWebViewWrapper view, boolean value) {
|
|
127
126
|
mBPCWebViewManagerImpl.setIncognito(view, value);
|
|
128
127
|
}
|
|
129
128
|
|
|
130
129
|
@ReactProp(name = "injectedJavaScript")
|
|
131
|
-
public void setInjectedJavaScript(
|
|
130
|
+
public void setInjectedJavaScript(BPCWebViewWrapper view, @Nullable String value) {
|
|
132
131
|
mBPCWebViewManagerImpl.setInjectedJavaScript(view, value);
|
|
133
132
|
}
|
|
134
133
|
|
|
135
134
|
@ReactProp(name = "injectedJavaScriptBeforeContentLoaded")
|
|
136
|
-
public void setInjectedJavaScriptBeforeContentLoaded(
|
|
135
|
+
public void setInjectedJavaScriptBeforeContentLoaded(BPCWebViewWrapper view, @Nullable String value) {
|
|
137
136
|
mBPCWebViewManagerImpl.setInjectedJavaScriptBeforeContentLoaded(view, value);
|
|
138
137
|
}
|
|
139
138
|
|
|
140
139
|
@ReactProp(name = "injectedJavaScriptForMainFrameOnly")
|
|
141
|
-
public void setInjectedJavaScriptForMainFrameOnly(
|
|
140
|
+
public void setInjectedJavaScriptForMainFrameOnly(BPCWebViewWrapper view, boolean value) {
|
|
142
141
|
mBPCWebViewManagerImpl.setInjectedJavaScriptForMainFrameOnly(view, value);
|
|
143
142
|
|
|
144
143
|
}
|
|
145
144
|
|
|
146
145
|
@ReactProp(name = "injectedJavaScriptBeforeContentLoadedForMainFrameOnly")
|
|
147
|
-
public void setInjectedJavaScriptBeforeContentLoadedForMainFrameOnly(
|
|
146
|
+
public void setInjectedJavaScriptBeforeContentLoadedForMainFrameOnly(BPCWebViewWrapper view, boolean value) {
|
|
148
147
|
mBPCWebViewManagerImpl.setInjectedJavaScriptBeforeContentLoadedForMainFrameOnly(view, value);
|
|
149
148
|
|
|
150
149
|
}
|
|
151
150
|
|
|
152
151
|
@ReactProp(name = "injectedJavaScriptObject")
|
|
153
|
-
public void setInjectedJavaScriptObject(
|
|
152
|
+
public void setInjectedJavaScriptObject(BPCWebViewWrapper view, @Nullable String value) {
|
|
154
153
|
mBPCWebViewManagerImpl.setInjectedJavaScriptObject(view, value);
|
|
155
154
|
}
|
|
156
155
|
|
|
157
156
|
@ReactProp(name = "javaScriptCanOpenWindowsAutomatically")
|
|
158
|
-
public void setJavaScriptCanOpenWindowsAutomatically(
|
|
157
|
+
public void setJavaScriptCanOpenWindowsAutomatically(BPCWebViewWrapper view, boolean value) {
|
|
159
158
|
mBPCWebViewManagerImpl.setJavaScriptCanOpenWindowsAutomatically(view, value);
|
|
160
159
|
}
|
|
161
160
|
|
|
162
161
|
@ReactProp(name = "javaScriptEnabled")
|
|
163
|
-
public void setJavaScriptEnabled(
|
|
162
|
+
public void setJavaScriptEnabled(BPCWebViewWrapper view, boolean enabled) {
|
|
164
163
|
mBPCWebViewManagerImpl.setJavaScriptEnabled(view, enabled);
|
|
165
164
|
}
|
|
166
165
|
|
|
167
166
|
@ReactProp(name = "lackPermissionToDownloadMessage")
|
|
168
|
-
public void setLackPermissionToDownloadMessage(
|
|
167
|
+
public void setLackPermissionToDownloadMessage(BPCWebViewWrapper view, @Nullable String value) {
|
|
169
168
|
mBPCWebViewManagerImpl.setLackPermissionToDownloadMessage(value);
|
|
170
169
|
}
|
|
171
170
|
|
|
172
171
|
@ReactProp(name = "hasOnOpenWindowEvent")
|
|
173
|
-
public void setHasOnOpenWindowEvent(
|
|
172
|
+
public void setHasOnOpenWindowEvent(BPCWebViewWrapper view, boolean hasEvent) {
|
|
174
173
|
mBPCWebViewManagerImpl.setHasOnOpenWindowEvent(view, hasEvent);
|
|
175
174
|
}
|
|
176
175
|
|
|
177
176
|
@ReactProp(name = "mediaPlaybackRequiresUserAction")
|
|
178
|
-
public void setMediaPlaybackRequiresUserAction(
|
|
177
|
+
public void setMediaPlaybackRequiresUserAction(BPCWebViewWrapper view, boolean value) {
|
|
179
178
|
mBPCWebViewManagerImpl.setMediaPlaybackRequiresUserAction(view, value);
|
|
180
179
|
}
|
|
181
180
|
|
|
182
181
|
@ReactProp(name = "messagingEnabled")
|
|
183
|
-
public void setMessagingEnabled(
|
|
182
|
+
public void setMessagingEnabled(BPCWebViewWrapper view, boolean value) {
|
|
184
183
|
mBPCWebViewManagerImpl.setMessagingEnabled(view, value);
|
|
185
184
|
}
|
|
186
185
|
|
|
187
186
|
@ReactProp(name = "menuItems")
|
|
188
|
-
public void setMenuCustomItems(
|
|
187
|
+
public void setMenuCustomItems(BPCWebViewWrapper view, @Nullable ReadableArray items) {
|
|
189
188
|
mBPCWebViewManagerImpl.setMenuCustomItems(view, items);
|
|
190
189
|
}
|
|
191
190
|
|
|
192
191
|
@ReactProp(name = "messagingModuleName")
|
|
193
|
-
public void setMessagingModuleName(
|
|
192
|
+
public void setMessagingModuleName(BPCWebViewWrapper view, @Nullable String value) {
|
|
194
193
|
mBPCWebViewManagerImpl.setMessagingModuleName(view, value);
|
|
195
194
|
}
|
|
196
195
|
|
|
197
196
|
@ReactProp(name = "minimumFontSize")
|
|
198
|
-
public void setMinimumFontSize(
|
|
197
|
+
public void setMinimumFontSize(BPCWebViewWrapper view, int value) {
|
|
199
198
|
mBPCWebViewManagerImpl.setMinimumFontSize(view, value);
|
|
200
199
|
}
|
|
201
200
|
|
|
202
201
|
@ReactProp(name = "mixedContentMode")
|
|
203
|
-
public void setMixedContentMode(
|
|
202
|
+
public void setMixedContentMode(BPCWebViewWrapper view, @Nullable String value) {
|
|
204
203
|
mBPCWebViewManagerImpl.setMixedContentMode(view, value);
|
|
205
204
|
}
|
|
206
205
|
|
|
207
206
|
@ReactProp(name = "nestedScrollEnabled")
|
|
208
|
-
public void setNestedScrollEnabled(
|
|
207
|
+
public void setNestedScrollEnabled(BPCWebViewWrapper view, boolean value) {
|
|
209
208
|
mBPCWebViewManagerImpl.setNestedScrollEnabled(view, value);
|
|
210
209
|
}
|
|
211
210
|
|
|
212
211
|
@ReactProp(name = "overScrollMode")
|
|
213
|
-
public void setOverScrollMode(
|
|
212
|
+
public void setOverScrollMode(BPCWebViewWrapper view, @Nullable String value) {
|
|
214
213
|
mBPCWebViewManagerImpl.setOverScrollMode(view, value);
|
|
215
214
|
}
|
|
216
215
|
|
|
217
216
|
@ReactProp(name = "saveFormDataDisabled")
|
|
218
|
-
public void setSaveFormDataDisabled(
|
|
217
|
+
public void setSaveFormDataDisabled(BPCWebViewWrapper view, boolean value) {
|
|
219
218
|
mBPCWebViewManagerImpl.setSaveFormDataDisabled(view, value);
|
|
220
219
|
}
|
|
221
220
|
|
|
222
221
|
@ReactProp(name = "scalesPageToFit")
|
|
223
|
-
public void setScalesPageToFit(
|
|
222
|
+
public void setScalesPageToFit(BPCWebViewWrapper view, boolean value) {
|
|
224
223
|
mBPCWebViewManagerImpl.setScalesPageToFit(view, value);
|
|
225
224
|
}
|
|
226
225
|
|
|
227
226
|
@ReactProp(name = "setBuiltInZoomControls")
|
|
228
|
-
public void setSetBuiltInZoomControls(
|
|
227
|
+
public void setSetBuiltInZoomControls(BPCWebViewWrapper view, boolean value) {
|
|
229
228
|
mBPCWebViewManagerImpl.setSetBuiltInZoomControls(view, value);
|
|
230
229
|
}
|
|
231
230
|
|
|
232
231
|
@ReactProp(name = "setDisplayZoomControls")
|
|
233
|
-
public void setSetDisplayZoomControls(
|
|
232
|
+
public void setSetDisplayZoomControls(BPCWebViewWrapper view, boolean value) {
|
|
234
233
|
mBPCWebViewManagerImpl.setSetDisplayZoomControls(view, value);
|
|
235
234
|
}
|
|
236
235
|
|
|
237
236
|
@ReactProp(name = "setSupportMultipleWindows")
|
|
238
|
-
public void setSetSupportMultipleWindows(
|
|
237
|
+
public void setSetSupportMultipleWindows(BPCWebViewWrapper view, boolean value) {
|
|
239
238
|
mBPCWebViewManagerImpl.setSetSupportMultipleWindows(view, value);
|
|
240
239
|
}
|
|
241
240
|
|
|
242
241
|
@ReactProp(name = "showsHorizontalScrollIndicator")
|
|
243
|
-
public void setShowsHorizontalScrollIndicator(
|
|
242
|
+
public void setShowsHorizontalScrollIndicator(BPCWebViewWrapper view, boolean value) {
|
|
244
243
|
mBPCWebViewManagerImpl.setShowsHorizontalScrollIndicator(view, value);
|
|
245
244
|
}
|
|
246
245
|
|
|
247
246
|
@ReactProp(name = "showsVerticalScrollIndicator")
|
|
248
|
-
public void setShowsVerticalScrollIndicator(
|
|
247
|
+
public void setShowsVerticalScrollIndicator(BPCWebViewWrapper view, boolean value) {
|
|
249
248
|
mBPCWebViewManagerImpl.setShowsVerticalScrollIndicator(view, value);
|
|
250
249
|
}
|
|
251
250
|
|
|
252
251
|
@ReactProp(name = "source")
|
|
253
|
-
public void setSource(
|
|
254
|
-
mBPCWebViewManagerImpl.setSource(view, value
|
|
252
|
+
public void setSource(BPCWebViewWrapper view, @Nullable ReadableMap value) {
|
|
253
|
+
mBPCWebViewManagerImpl.setSource(view, value);
|
|
255
254
|
}
|
|
256
255
|
|
|
257
256
|
@ReactProp(name = "textZoom")
|
|
258
|
-
public void setTextZoom(
|
|
257
|
+
public void setTextZoom(BPCWebViewWrapper view, int value) {
|
|
259
258
|
mBPCWebViewManagerImpl.setTextZoom(view, value);
|
|
260
259
|
}
|
|
261
260
|
|
|
262
261
|
@ReactProp(name = "thirdPartyCookiesEnabled")
|
|
263
|
-
public void setThirdPartyCookiesEnabled(
|
|
262
|
+
public void setThirdPartyCookiesEnabled(BPCWebViewWrapper view, boolean value) {
|
|
264
263
|
mBPCWebViewManagerImpl.setThirdPartyCookiesEnabled(view, value);
|
|
265
264
|
}
|
|
266
265
|
|
|
267
266
|
@ReactProp(name = "webviewDebuggingEnabled")
|
|
268
|
-
public void setWebviewDebuggingEnabled(
|
|
267
|
+
public void setWebviewDebuggingEnabled(BPCWebViewWrapper view, boolean value) {
|
|
269
268
|
mBPCWebViewManagerImpl.setWebviewDebuggingEnabled(view, value);
|
|
270
269
|
}
|
|
271
270
|
|
|
272
271
|
@ReactProp(name = "userAgent")
|
|
273
|
-
public void setUserAgent(
|
|
272
|
+
public void setUserAgent(BPCWebViewWrapper view, @Nullable String value) {
|
|
274
273
|
mBPCWebViewManagerImpl.setUserAgent(view, value);
|
|
275
274
|
}
|
|
276
275
|
|
|
277
276
|
@Override
|
|
278
|
-
protected void addEventEmitters(@NonNull ThemedReactContext reactContext,
|
|
277
|
+
protected void addEventEmitters(@NonNull ThemedReactContext reactContext, BPCWebViewWrapper viewWrapper) {
|
|
279
278
|
// Do not register default touch emitter and let WebView implementation handle touches
|
|
280
|
-
|
|
279
|
+
viewWrapper.getWebView().setWebViewClient(new BPCWebViewClient());
|
|
281
280
|
}
|
|
282
281
|
|
|
283
282
|
@Override
|
|
@@ -310,13 +309,19 @@ public class BPCWebViewManager extends SimpleViewManager<BPCWebView> {
|
|
|
310
309
|
}
|
|
311
310
|
|
|
312
311
|
@Override
|
|
313
|
-
public void receiveCommand(@NonNull
|
|
312
|
+
public void receiveCommand(@NonNull BPCWebViewWrapper reactWebView, String commandId, @Nullable ReadableArray args) {
|
|
314
313
|
mBPCWebViewManagerImpl.receiveCommand(reactWebView, commandId, args);
|
|
315
314
|
super.receiveCommand(reactWebView, commandId, args);
|
|
316
315
|
}
|
|
317
316
|
|
|
318
317
|
@Override
|
|
319
|
-
|
|
318
|
+
protected void onAfterUpdateTransaction(@NonNull BPCWebViewWrapper view) {
|
|
319
|
+
super.onAfterUpdateTransaction(view);
|
|
320
|
+
mBPCWebViewManagerImpl.onAfterUpdateTransaction(view);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
@Override
|
|
324
|
+
public void onDropViewInstance(@NonNull BPCWebViewWrapper view) {
|
|
320
325
|
mBPCWebViewManagerImpl.onDropViewInstance(view);
|
|
321
326
|
super.onDropViewInstance(view);
|
|
322
327
|
}
|
|
@@ -2,9 +2,9 @@ package kr.co.bootpay.webview;
|
|
|
2
2
|
|
|
3
3
|
import android.app.DownloadManager;
|
|
4
4
|
import android.net.Uri;
|
|
5
|
-
import android.webkit.ValueCallback;
|
|
6
5
|
|
|
7
6
|
import androidx.annotation.NonNull;
|
|
7
|
+
import android.webkit.ValueCallback;
|
|
8
8
|
|
|
9
9
|
import com.facebook.react.bridge.Promise;
|
|
10
10
|
import com.facebook.react.bridge.ReactApplicationContext;
|
package/apple/BPCWebView.mm
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
#import <react/renderer/components/BPCWebViewSpec/Props.h>
|
|
9
9
|
#import <react/renderer/components/BPCWebViewSpec/RCTComponentViewHelpers.h>
|
|
10
10
|
|
|
11
|
-
#import
|
|
11
|
+
#import <React/RCTFabricComponentsPlugins.h>
|
|
12
12
|
|
|
13
13
|
using namespace facebook::react;
|
|
14
14
|
|
|
@@ -52,11 +52,19 @@ auto stringToOnLoadingFinishNavigationTypeEnum(std::string value) {
|
|
|
52
52
|
return concreteComponentDescriptorProvider<BPCWebViewComponentDescriptor>();
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
#if !TARGET_OS_OSX
|
|
55
56
|
// Reproduce the idea from here: https://github.com/facebook/react-native/blob/8bd3edec88148d0ab1f225d2119435681fbbba33/React/Fabric/Mounting/ComponentViews/InputAccessory/RCTInputAccessoryComponentView.mm#L142
|
|
56
57
|
- (void)prepareForRecycle {
|
|
57
58
|
[super prepareForRecycle];
|
|
58
59
|
[_view destroyWebView];
|
|
59
60
|
}
|
|
61
|
+
#endif // !TARGET_OS_OSX
|
|
62
|
+
|
|
63
|
+
// Needed because of this: https://github.com/facebook/react-native/pull/37274
|
|
64
|
+
+ (void)load
|
|
65
|
+
{
|
|
66
|
+
[super load];
|
|
67
|
+
}
|
|
60
68
|
|
|
61
69
|
- (instancetype)initWithFrame:(CGRect)frame
|
|
62
70
|
{
|
|
@@ -75,7 +83,7 @@ auto stringToOnLoadingFinishNavigationTypeEnum(std::string value) {
|
|
|
75
83
|
.title = std::string([[dictionary valueForKey:@"title"] UTF8String]),
|
|
76
84
|
.navigationType = stringToOnShouldStartLoadWithRequestNavigationTypeEnum(std::string([[dictionary valueForKey:@"navigationType"] UTF8String])),
|
|
77
85
|
.canGoBack = static_cast<bool>([[dictionary valueForKey:@"canGoBack"] boolValue]),
|
|
78
|
-
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"
|
|
86
|
+
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"canGoForward"] boolValue]),
|
|
79
87
|
.isTopFrame = static_cast<bool>([[dictionary valueForKey:@"isTopFrame"] boolValue]),
|
|
80
88
|
.loading = static_cast<bool>([[dictionary valueForKey:@"loading"] boolValue]),
|
|
81
89
|
.mainDocumentURL = std::string([[dictionary valueForKey:@"mainDocumentURL"] UTF8String])
|
|
@@ -92,7 +100,7 @@ auto stringToOnLoadingFinishNavigationTypeEnum(std::string value) {
|
|
|
92
100
|
.title = std::string([[dictionary valueForKey:@"title"] UTF8String]),
|
|
93
101
|
.navigationType = stringToOnLoadingStartNavigationTypeEnum(std::string([[dictionary valueForKey:@"navigationType"] UTF8String])),
|
|
94
102
|
.canGoBack = static_cast<bool>([[dictionary valueForKey:@"canGoBack"] boolValue]),
|
|
95
|
-
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"
|
|
103
|
+
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"canGoForward"] boolValue]),
|
|
96
104
|
.loading = static_cast<bool>([[dictionary valueForKey:@"loading"] boolValue]),
|
|
97
105
|
.mainDocumentURL = std::string([[dictionary valueForKey:@"mainDocumentURL"] UTF8String], [[dictionary valueForKey:@"mainDocumentURL"] lengthOfBytesUsingEncoding:NSUTF8StringEncoding])
|
|
98
106
|
};
|
|
@@ -107,9 +115,9 @@ auto stringToOnLoadingFinishNavigationTypeEnum(std::string value) {
|
|
|
107
115
|
.lockIdentifier = [[dictionary valueForKey:@"lockIdentifier"] doubleValue],
|
|
108
116
|
.title = std::string([[dictionary valueForKey:@"title"] UTF8String]),
|
|
109
117
|
.code = [[dictionary valueForKey:@"code"] intValue],
|
|
110
|
-
.description = std::string([[dictionary valueForKey:@"description"] UTF8String]),
|
|
118
|
+
.description = std::string([[dictionary valueForKey:@"description"] UTF8String] ?: ""),
|
|
111
119
|
.canGoBack = static_cast<bool>([[dictionary valueForKey:@"canGoBack"] boolValue]),
|
|
112
|
-
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"
|
|
120
|
+
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"canGoForward"] boolValue]),
|
|
113
121
|
.loading = static_cast<bool>([[dictionary valueForKey:@"loading"] boolValue]),
|
|
114
122
|
.domain = std::string([[dictionary valueForKey:@"domain"] UTF8String])
|
|
115
123
|
};
|
|
@@ -124,7 +132,7 @@ auto stringToOnLoadingFinishNavigationTypeEnum(std::string value) {
|
|
|
124
132
|
.lockIdentifier = [[dictionary valueForKey:@"lockIdentifier"] doubleValue],
|
|
125
133
|
.title = std::string([[dictionary valueForKey:@"title"] UTF8String]),
|
|
126
134
|
.canGoBack = static_cast<bool>([[dictionary valueForKey:@"canGoBack"] boolValue]),
|
|
127
|
-
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"
|
|
135
|
+
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"canGoForward"] boolValue]),
|
|
128
136
|
.loading = static_cast<bool>([[dictionary valueForKey:@"loading"] boolValue]),
|
|
129
137
|
.data = std::string([[dictionary valueForKey:@"data"] UTF8String])
|
|
130
138
|
};
|
|
@@ -140,7 +148,7 @@ auto stringToOnLoadingFinishNavigationTypeEnum(std::string value) {
|
|
|
140
148
|
.title = std::string([[dictionary valueForKey:@"title"] UTF8String]),
|
|
141
149
|
.navigationType = stringToOnLoadingFinishNavigationTypeEnum(std::string([[dictionary valueForKey:@"navigationType"] UTF8String], [[dictionary valueForKey:@"navigationType"] lengthOfBytesUsingEncoding:NSUTF8StringEncoding])),
|
|
142
150
|
.canGoBack = static_cast<bool>([[dictionary valueForKey:@"canGoBack"] boolValue]),
|
|
143
|
-
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"
|
|
151
|
+
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"canGoForward"] boolValue]),
|
|
144
152
|
.loading = static_cast<bool>([[dictionary valueForKey:@"loading"] boolValue]),
|
|
145
153
|
.mainDocumentURL = std::string([[dictionary valueForKey:@"mainDocumentURL"] UTF8String], [[dictionary valueForKey:@"mainDocumentURL"] lengthOfBytesUsingEncoding:NSUTF8StringEncoding])
|
|
146
154
|
};
|
|
@@ -155,7 +163,7 @@ auto stringToOnLoadingFinishNavigationTypeEnum(std::string value) {
|
|
|
155
163
|
.lockIdentifier = [[dictionary valueForKey:@"lockIdentifier"] doubleValue],
|
|
156
164
|
.title = std::string([[dictionary valueForKey:@"title"] UTF8String]),
|
|
157
165
|
.canGoBack = static_cast<bool>([[dictionary valueForKey:@"canGoBack"] boolValue]),
|
|
158
|
-
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"
|
|
166
|
+
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"canGoForward"] boolValue]),
|
|
159
167
|
.loading = static_cast<bool>([[dictionary valueForKey:@"loading"] boolValue]),
|
|
160
168
|
.progress = [[dictionary valueForKey:@"progress"] doubleValue]
|
|
161
169
|
};
|
|
@@ -170,7 +178,7 @@ auto stringToOnLoadingFinishNavigationTypeEnum(std::string value) {
|
|
|
170
178
|
.lockIdentifier = [[dictionary valueForKey:@"lockIdentifier"] doubleValue],
|
|
171
179
|
.title = std::string([[dictionary valueForKey:@"title"] UTF8String]),
|
|
172
180
|
.canGoBack = static_cast<bool>([[dictionary valueForKey:@"canGoBack"] boolValue]),
|
|
173
|
-
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"
|
|
181
|
+
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"canGoForward"] boolValue]),
|
|
174
182
|
.loading = static_cast<bool>([[dictionary valueForKey:@"loading"] boolValue])
|
|
175
183
|
};
|
|
176
184
|
webViewEventEmitter->onContentProcessDidTerminate(data);
|
|
@@ -228,9 +236,9 @@ auto stringToOnLoadingFinishNavigationTypeEnum(std::string value) {
|
|
|
228
236
|
.lockIdentifier = [[dictionary valueForKey:@"lockIdentifier"] doubleValue],
|
|
229
237
|
.title = std::string([[dictionary valueForKey:@"title"] UTF8String]),
|
|
230
238
|
.statusCode = [[dictionary valueForKey:@"statusCode"] intValue],
|
|
231
|
-
.description = std::string([[dictionary valueForKey:@"description"] UTF8String]),
|
|
239
|
+
.description = std::string([[dictionary valueForKey:@"description"] UTF8String] ?: ""),
|
|
232
240
|
.canGoBack = static_cast<bool>([[dictionary valueForKey:@"canGoBack"] boolValue]),
|
|
233
|
-
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"
|
|
241
|
+
.canGoForward = static_cast<bool>([[dictionary valueForKey:@"canGoForward"] boolValue]),
|
|
234
242
|
.loading = static_cast<bool>([[dictionary valueForKey:@"loading"] boolValue])
|
|
235
243
|
};
|
|
236
244
|
webViewEventEmitter->onHttpError(data);
|
|
@@ -272,6 +280,7 @@ auto stringToOnLoadingFinishNavigationTypeEnum(std::string value) {
|
|
|
272
280
|
REMAP_WEBVIEW_PROP(allowFileAccessFromFileURLs)
|
|
273
281
|
REMAP_WEBVIEW_PROP(allowUniversalAccessFromFileURLs)
|
|
274
282
|
REMAP_WEBVIEW_PROP(allowsInlineMediaPlayback)
|
|
283
|
+
REMAP_WEBVIEW_PROP(allowsPictureInPictureMediaPlayback)
|
|
275
284
|
REMAP_WEBVIEW_PROP(webviewDebuggingEnabled)
|
|
276
285
|
REMAP_WEBVIEW_PROP(allowsAirPlayForMediaPlayback)
|
|
277
286
|
REMAP_WEBVIEW_PROP(mediaPlaybackRequiresUserAction)
|
|
@@ -291,6 +300,7 @@ auto stringToOnLoadingFinishNavigationTypeEnum(std::string value) {
|
|
|
291
300
|
#endif // !TARGET_OS_OSX
|
|
292
301
|
REMAP_WEBVIEW_PROP(enableApplePay)
|
|
293
302
|
REMAP_WEBVIEW_PROP(pullToRefreshEnabled)
|
|
303
|
+
REMAP_WEBVIEW_PROP(refreshControlLightMode)
|
|
294
304
|
REMAP_WEBVIEW_PROP(bounces)
|
|
295
305
|
REMAP_WEBVIEW_PROP(useSharedProcessPool)
|
|
296
306
|
REMAP_WEBVIEW_STRING_PROP(userAgent)
|
|
@@ -534,4 +544,3 @@ Class<RCTComponentViewProtocol> BPCWebViewCls(void)
|
|
|
534
544
|
|
|
535
545
|
@end
|
|
536
546
|
#endif
|
|
537
|
-
|
package/apple/BPCWebViewImpl.h
CHANGED
|
@@ -44,7 +44,15 @@ shouldStartLoadForRequest:(NSMutableDictionary<NSString *, id> *)request
|
|
|
44
44
|
|
|
45
45
|
@end
|
|
46
46
|
|
|
47
|
+
#if !TARGET_OS_OSX
|
|
48
|
+
@interface BPCWebViewImpl : RCTView <UIEditMenuInteractionDelegate, UIGestureRecognizerDelegate>
|
|
49
|
+
|
|
50
|
+
@property (nonatomic, nullable) UIEditMenuInteraction *editMenuInteraction API_AVAILABLE(ios(16.0));
|
|
51
|
+
#else
|
|
47
52
|
@interface BPCWebViewImpl : RCTView
|
|
53
|
+
#endif // !TARGET_OS_OSX
|
|
54
|
+
|
|
55
|
+
|
|
48
56
|
@property (nonatomic, copy) RCTDirectEventBlock onFileDownload;
|
|
49
57
|
@property (nonatomic, copy) RCTDirectEventBlock onLoadingStart;
|
|
50
58
|
@property (nonatomic, copy) RCTDirectEventBlock onLoadingFinish;
|
|
@@ -72,6 +80,7 @@ shouldStartLoadForRequest:(NSMutableDictionary<NSString *, id> *)request
|
|
|
72
80
|
@property (nonatomic, assign) BOOL pagingEnabled;
|
|
73
81
|
@property (nonatomic, assign) CGFloat decelerationRate;
|
|
74
82
|
@property (nonatomic, assign) BOOL allowsInlineMediaPlayback;
|
|
83
|
+
@property (nonatomic, assign) BOOL allowsPictureInPictureMediaPlayback;
|
|
75
84
|
@property (nonatomic, assign) BOOL webviewDebuggingEnabled;
|
|
76
85
|
@property (nonatomic, assign) BOOL allowsAirPlayForMediaPlayback;
|
|
77
86
|
@property (nonatomic, assign) BOOL bounces;
|
|
@@ -98,6 +107,7 @@ shouldStartLoadForRequest:(NSMutableDictionary<NSString *, id> *)request
|
|
|
98
107
|
@property (nonatomic, copy) NSString * _Nullable allowingReadAccessToURL;
|
|
99
108
|
@property (nonatomic, copy) NSDictionary * _Nullable basicAuthCredential;
|
|
100
109
|
@property (nonatomic, assign) BOOL pullToRefreshEnabled;
|
|
110
|
+
@property (nonatomic, assign) BOOL refreshControlLightMode;
|
|
101
111
|
@property (nonatomic, assign) BOOL enableApplePay;
|
|
102
112
|
@property (nonatomic, copy) NSArray<NSDictionary *> * _Nullable menuItems;
|
|
103
113
|
@property (nonatomic, copy) NSArray<NSString *> * _Nullable suppressMenuItems;
|