@exodus/react-native-webview 11.26.1-exodus.8 → 13.16.0-exodus.0
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 +36 -63
- package/android/build.gradle +83 -110
- package/android/gradle.properties +3 -4
- package/android/src/main/AndroidManifest.xml +12 -0
- package/android/src/main/AndroidManifestNew.xml +26 -0
- package/android/src/main/java/com/reactnativecommunity/webview/RNCBasicAuthCredential.java +11 -0
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebChromeClient.java +407 -0
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebView.java +468 -0
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewClient.java +330 -0
- package/android/src/main/java/com/reactnativecommunity/webview/{WebViewConfig.java → RNCWebViewConfig.java} +3 -4
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewFileProvider.java +1 -1
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManagerImpl.kt +746 -0
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewMessagingModule.kt +9 -0
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewModuleImpl.java +554 -0
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewPackage.java +57 -12
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewWrapper.kt +39 -0
- package/android/src/main/java/com/reactnativecommunity/webview/events/SubResourceErrorEvent.kt +25 -0
- package/android/src/main/java/com/reactnativecommunity/webview/events/TopCustomMenuSelectionEvent.kt +24 -0
- package/android/src/main/java/com/reactnativecommunity/webview/events/TopHttpErrorEvent.kt +25 -0
- package/android/src/main/java/com/reactnativecommunity/webview/events/TopNewWindowEvent.kt +25 -0
- package/android/src/main/java/com/reactnativecommunity/webview/events/TopRenderProcessGoneEvent.kt +25 -0
- package/android/src/newarch/com/reactnativecommunity/webview/RNCWebViewManager.java +570 -0
- package/android/src/newarch/com/reactnativecommunity/webview/RNCWebViewModule.java +57 -0
- package/android/src/oldarch/com/reactnativecommunity/webview/RNCWebViewManager.java +341 -0
- package/android/src/oldarch/com/reactnativecommunity/webview/RNCWebViewModule.java +59 -0
- package/apple/RCTConvert+WKDataDetectorTypes.h +11 -0
- package/apple/RCTConvert+WKDataDetectorTypes.m +27 -0
- package/apple/RNCWebView.h +26 -100
- package/apple/RNCWebView.mm +555 -0
- package/apple/RNCWebViewDecisionManager.h +20 -0
- package/apple/RNCWebViewDecisionManager.m +47 -0
- package/apple/RNCWebViewImpl.h +164 -0
- package/apple/{RNCWebView.m → RNCWebViewImpl.m} +803 -226
- package/apple/RNCWebViewManager.h +4 -8
- package/apple/RNCWebViewManager.mm +221 -0
- package/apple/RNCWebViewModule.h +23 -0
- package/apple/RNCWebViewModule.mm +34 -0
- package/index.d.ts +2 -3
- package/lib/NativeRNCWebViewModule.d.ts +8 -0
- package/lib/NativeRNCWebViewModule.js +1 -0
- package/lib/RNCWebViewNativeComponent.d.ts +245 -0
- package/lib/RNCWebViewNativeComponent.js +1 -0
- package/lib/WebView.android.d.ts +0 -1
- package/lib/WebView.android.js +1 -135
- package/lib/WebView.d.ts +2 -3
- package/lib/WebView.ios.d.ts +0 -1
- package/lib/WebView.ios.js +1 -114
- package/lib/WebView.js +1 -11
- package/lib/WebView.macos.d.ts +6 -0
- package/lib/WebView.macos.js +1 -0
- package/lib/WebView.styles.d.ts +37 -11
- package/lib/WebView.styles.js +1 -33
- package/lib/WebView.windows.d.ts +17 -0
- package/lib/WebView.windows.js +1 -0
- package/lib/WebViewNativeComponent.macos.d.ts +3 -0
- package/lib/WebViewNativeComponent.macos.js +1 -0
- package/lib/WebViewNativeComponent.windows.d.ts +3 -0
- package/lib/WebViewNativeComponent.windows.js +1 -0
- package/lib/WebViewShared.d.ts +30 -9
- package/lib/WebViewShared.js +1 -174
- package/lib/WebViewTypes.d.ts +514 -98
- package/lib/WebViewTypes.js +1 -6
- package/lib/index.d.ts +0 -1
- package/lib/index.js +1 -3
- package/lib/validation.d.ts +3 -0
- package/lib/validation.js +1 -0
- package/package.json +57 -33
- package/react-native-webview.podspec +32 -5
- package/react-native.config.js +22 -18
- package/src/NativeRNCWebViewModule.ts +13 -0
- package/src/RNCWebViewNativeComponent.ts +348 -0
- package/src/WebView.android.tsx +345 -0
- package/src/WebView.ios.tsx +341 -0
- package/src/WebView.macos.tsx +252 -0
- package/src/WebView.styles.ts +41 -0
- package/src/WebView.tsx +25 -0
- package/src/WebView.windows.tsx +217 -0
- package/src/WebViewNativeComponent.macos.ts +7 -0
- package/src/WebViewNativeComponent.windows.ts +8 -0
- package/src/WebViewShared.tsx +476 -0
- package/src/WebViewTypes.ts +1402 -0
- package/src/__tests__/WebViewShared-test.js +323 -0
- package/src/__tests__/__snapshots__/WebViewShared-test.js.snap +8 -0
- package/src/__tests__/validation-test.js +38 -0
- package/src/index.ts +4 -0
- package/src/validation.ts +20 -0
- package/android/.editorconfig +0 -6
- package/android/.gradle/7.4.2/checksums/checksums.lock +0 -0
- package/android/.gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.4.2/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/7.4.2/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/7.4.2/fileChanges/last-build.bin +0 -0
- package/android/.gradle/7.4.2/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.4.2/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManager.java +0 -1408
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewModule.java +0 -506
- package/apple/RNCWebViewManager.m +0 -278
- package/ios/Pods/Manifest.lock +0 -3
- package/ios/Pods/Pods.xcodeproj/project.pbxproj +0 -397
- package/ios/Pods/Pods.xcodeproj/xcuserdata/gabrielezenwankwo.xcuserdatad/xcschemes/Pods-RNCWebView.xcscheme +0 -58
- package/ios/Pods/Pods.xcodeproj/xcuserdata/gabrielezenwankwo.xcuserdatad/xcschemes/xcschememanagement.plist +0 -16
- package/ios/Pods/Target Support Files/Pods-RNCWebView/Pods-RNCWebView-Info.plist +0 -26
- package/ios/Pods/Target Support Files/Pods-RNCWebView/Pods-RNCWebView-acknowledgements.markdown +0 -3
- package/ios/Pods/Target Support Files/Pods-RNCWebView/Pods-RNCWebView-acknowledgements.plist +0 -29
- package/ios/Pods/Target Support Files/Pods-RNCWebView/Pods-RNCWebView-dummy.m +0 -5
- package/ios/Pods/Target Support Files/Pods-RNCWebView/Pods-RNCWebView-umbrella.h +0 -16
- package/ios/Pods/Target Support Files/Pods-RNCWebView/Pods-RNCWebView.debug.xcconfig +0 -8
- package/ios/Pods/Target Support Files/Pods-RNCWebView/Pods-RNCWebView.modulemap +0 -6
- package/ios/Pods/Target Support Files/Pods-RNCWebView/Pods-RNCWebView.release.xcconfig +0 -8
- package/lib/UpdateOS.d.ts +0 -6
- package/lib/UpdateOS.js +0 -49
- package/lib/WebViewNativeComponent.android.d.ts +0 -4
- package/lib/WebViewNativeComponent.android.js +0 -3
- package/lib/WebViewNativeComponent.ios.d.ts +0 -4
- package/lib/WebViewNativeComponent.ios.js +0 -3
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
package com.reactnativecommunity.webview;
|
|
2
|
+
|
|
3
|
+
import android.app.DownloadManager;
|
|
4
|
+
import android.net.Uri;
|
|
5
|
+
import android.webkit.ValueCallback;
|
|
6
|
+
|
|
7
|
+
import androidx.annotation.NonNull;
|
|
8
|
+
|
|
9
|
+
import com.facebook.react.bridge.Promise;
|
|
10
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
11
|
+
import com.facebook.react.module.annotations.ReactModule;
|
|
12
|
+
|
|
13
|
+
@ReactModule(name = RNCWebViewModuleImpl.NAME)
|
|
14
|
+
public class RNCWebViewModule extends NativeRNCWebViewModuleSpec {
|
|
15
|
+
final private RNCWebViewModuleImpl mRNCWebViewModuleImpl;
|
|
16
|
+
|
|
17
|
+
public RNCWebViewModule(ReactApplicationContext reactContext) {
|
|
18
|
+
super(reactContext);
|
|
19
|
+
mRNCWebViewModuleImpl = new RNCWebViewModuleImpl(reactContext);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@Override
|
|
23
|
+
public void isFileUploadSupported(final Promise promise) {
|
|
24
|
+
promise.resolve(mRNCWebViewModuleImpl.isFileUploadSupported());
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@Override
|
|
28
|
+
public void shouldStartLoadWithLockIdentifier(boolean shouldStart, double lockIdentifier) {
|
|
29
|
+
mRNCWebViewModuleImpl.shouldStartLoadWithLockIdentifier(shouldStart, lockIdentifier);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public void startPhotoPickerIntent(ValueCallback<Uri> filePathCallback, String acceptType) {
|
|
33
|
+
mRNCWebViewModuleImpl.startPhotoPickerIntent(acceptType, filePathCallback);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public boolean startPhotoPickerIntent(final ValueCallback<Uri[]> callback, final String[] acceptTypes, final boolean allowMultiple, final boolean isCaptureEnabled) {
|
|
37
|
+
return mRNCWebViewModuleImpl.startPhotoPickerIntent(acceptTypes, allowMultiple, callback, isCaptureEnabled);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
public void setDownloadRequest(DownloadManager.Request request) {
|
|
41
|
+
mRNCWebViewModuleImpl.setDownloadRequest(request);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public void downloadFile(String downloadingMessage) {
|
|
45
|
+
mRNCWebViewModuleImpl.downloadFile(downloadingMessage);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public boolean grantFileDownloaderPermissions(String downloadingMessage, String lackPermissionToDownloadMessage) {
|
|
49
|
+
return mRNCWebViewModuleImpl.grantFileDownloaderPermissions(downloadingMessage, lackPermissionToDownloadMessage);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@NonNull
|
|
53
|
+
@Override
|
|
54
|
+
public String getName() {
|
|
55
|
+
return RNCWebViewModuleImpl.NAME;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
package com.reactnativecommunity.webview;
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.NonNull;
|
|
4
|
+
import androidx.annotation.Nullable;
|
|
5
|
+
|
|
6
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
7
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
8
|
+
import com.facebook.react.common.MapBuilder;
|
|
9
|
+
import com.facebook.react.uimanager.ThemedReactContext;
|
|
10
|
+
import com.facebook.react.uimanager.ViewGroupManager;
|
|
11
|
+
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
12
|
+
import com.facebook.react.views.scroll.ScrollEventType;
|
|
13
|
+
import com.reactnativecommunity.webview.events.TopCustomMenuSelectionEvent;
|
|
14
|
+
import com.reactnativecommunity.webview.events.SubResourceErrorEvent;
|
|
15
|
+
import com.reactnativecommunity.webview.events.TopHttpErrorEvent;
|
|
16
|
+
import com.reactnativecommunity.webview.events.TopLoadingErrorEvent;
|
|
17
|
+
import com.reactnativecommunity.webview.events.TopLoadingFinishEvent;
|
|
18
|
+
import com.reactnativecommunity.webview.events.TopLoadingProgressEvent;
|
|
19
|
+
import com.reactnativecommunity.webview.events.TopLoadingStartEvent;
|
|
20
|
+
import com.reactnativecommunity.webview.events.TopMessageEvent;
|
|
21
|
+
import com.reactnativecommunity.webview.events.TopOpenWindowEvent;
|
|
22
|
+
import com.reactnativecommunity.webview.events.TopRenderProcessGoneEvent;
|
|
23
|
+
import com.reactnativecommunity.webview.events.TopShouldStartLoadWithRequestEvent;
|
|
24
|
+
|
|
25
|
+
import java.util.Map;
|
|
26
|
+
|
|
27
|
+
public class RNCWebViewManager extends ViewGroupManager<RNCWebViewWrapper> {
|
|
28
|
+
|
|
29
|
+
private final RNCWebViewManagerImpl mRNCWebViewManagerImpl;
|
|
30
|
+
|
|
31
|
+
public RNCWebViewManager() {
|
|
32
|
+
mRNCWebViewManagerImpl = new RNCWebViewManagerImpl();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@Override
|
|
36
|
+
public String getName() {
|
|
37
|
+
return RNCWebViewManagerImpl.NAME;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@Override
|
|
41
|
+
public RNCWebViewWrapper createViewInstance(ThemedReactContext context) {
|
|
42
|
+
return mRNCWebViewManagerImpl.createViewInstance(context);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public RNCWebViewWrapper createViewInstance(ThemedReactContext context, RNCWebView view) {
|
|
46
|
+
return mRNCWebViewManagerImpl.createViewInstance(context, view);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@ReactProp(name = "allowFileAccess")
|
|
50
|
+
public void setAllowFileAccess(RNCWebViewWrapper view, boolean value) {
|
|
51
|
+
mRNCWebViewManagerImpl.setAllowFileAccess(view, value);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@ReactProp(name = "allowFileAccessFromFileURLs")
|
|
55
|
+
public void setAllowFileAccessFromFileURLs(RNCWebViewWrapper view, boolean value) {
|
|
56
|
+
mRNCWebViewManagerImpl.setAllowFileAccessFromFileURLs(view, value);
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@ReactProp(name = "allowUniversalAccessFromFileURLs")
|
|
61
|
+
public void setAllowUniversalAccessFromFileURLs(RNCWebViewWrapper view, boolean value) {
|
|
62
|
+
mRNCWebViewManagerImpl.setAllowUniversalAccessFromFileURLs(view, value);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@ReactProp(name = "allowsFullscreenVideo")
|
|
66
|
+
public void setAllowsFullscreenVideo(RNCWebViewWrapper view, boolean value) {
|
|
67
|
+
mRNCWebViewManagerImpl.setAllowsFullscreenVideo(view, value);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@ReactProp(name = "allowsProtectedMedia")
|
|
71
|
+
public void setAllowsProtectedMedia(RNCWebViewWrapper view, boolean value) {
|
|
72
|
+
mRNCWebViewManagerImpl.setAllowsProtectedMedia(view, value);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@ReactProp(name = "androidLayerType")
|
|
76
|
+
public void setAndroidLayerType(RNCWebViewWrapper view, @Nullable String value) {
|
|
77
|
+
mRNCWebViewManagerImpl.setAndroidLayerType(view, value);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@ReactProp(name = "applicationNameForUserAgent")
|
|
81
|
+
public void setApplicationNameForUserAgent(RNCWebViewWrapper view, @Nullable String value) {
|
|
82
|
+
mRNCWebViewManagerImpl.setApplicationNameForUserAgent(view, value);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@ReactProp(name = "basicAuthCredential")
|
|
86
|
+
public void setBasicAuthCredential(RNCWebViewWrapper view, @Nullable ReadableMap value) {
|
|
87
|
+
mRNCWebViewManagerImpl.setBasicAuthCredential(view, value);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@ReactProp(name = "cacheEnabled")
|
|
91
|
+
public void setCacheEnabled(RNCWebViewWrapper view, boolean value) {
|
|
92
|
+
mRNCWebViewManagerImpl.setCacheEnabled(view, value);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@ReactProp(name = "cacheMode")
|
|
96
|
+
public void setCacheMode(RNCWebViewWrapper view, @Nullable String value) {
|
|
97
|
+
mRNCWebViewManagerImpl.setCacheMode(view, value);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@ReactProp(name = "domStorageEnabled")
|
|
101
|
+
public void setDomStorageEnabled(RNCWebViewWrapper view, boolean value) {
|
|
102
|
+
mRNCWebViewManagerImpl.setDomStorageEnabled(view, value);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@ReactProp(name = "downloadingMessage")
|
|
106
|
+
public void setDownloadingMessage(RNCWebViewWrapper view, @Nullable String value) {
|
|
107
|
+
mRNCWebViewManagerImpl.setDownloadingMessage(value);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@ReactProp(name = "forceDarkOn")
|
|
111
|
+
public void setForceDarkOn(RNCWebViewWrapper view, boolean value) {
|
|
112
|
+
mRNCWebViewManagerImpl.setForceDarkOn(view, value);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@ReactProp(name = "geolocationEnabled")
|
|
116
|
+
public void setGeolocationEnabled(RNCWebViewWrapper view, boolean value) {
|
|
117
|
+
mRNCWebViewManagerImpl.setGeolocationEnabled(view, value);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@ReactProp(name = "hasOnScroll")
|
|
121
|
+
public void setHasOnScroll(RNCWebViewWrapper view, boolean hasScrollEvent) {
|
|
122
|
+
mRNCWebViewManagerImpl.setHasOnScroll(view, hasScrollEvent);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
@ReactProp(name = "incognito")
|
|
126
|
+
public void setIncognito(RNCWebViewWrapper view, boolean value) {
|
|
127
|
+
mRNCWebViewManagerImpl.setIncognito(view, value);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
@ReactProp(name = "injectedJavaScript")
|
|
131
|
+
public void setInjectedJavaScript(RNCWebViewWrapper view, @Nullable String value) {
|
|
132
|
+
mRNCWebViewManagerImpl.setInjectedJavaScript(view, value);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@ReactProp(name = "injectedJavaScriptBeforeContentLoaded")
|
|
136
|
+
public void setInjectedJavaScriptBeforeContentLoaded(RNCWebViewWrapper view, @Nullable String value) {
|
|
137
|
+
mRNCWebViewManagerImpl.setInjectedJavaScriptBeforeContentLoaded(view, value);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@ReactProp(name = "injectedJavaScriptForMainFrameOnly")
|
|
141
|
+
public void setInjectedJavaScriptForMainFrameOnly(RNCWebViewWrapper view, boolean value) {
|
|
142
|
+
mRNCWebViewManagerImpl.setInjectedJavaScriptForMainFrameOnly(view, value);
|
|
143
|
+
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
@ReactProp(name = "injectedJavaScriptBeforeContentLoadedForMainFrameOnly")
|
|
147
|
+
public void setInjectedJavaScriptBeforeContentLoadedForMainFrameOnly(RNCWebViewWrapper view, boolean value) {
|
|
148
|
+
mRNCWebViewManagerImpl.setInjectedJavaScriptBeforeContentLoadedForMainFrameOnly(view, value);
|
|
149
|
+
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
@ReactProp(name = "injectedJavaScriptObject")
|
|
153
|
+
public void setInjectedJavaScriptObject(RNCWebViewWrapper view, @Nullable String value) {
|
|
154
|
+
mRNCWebViewManagerImpl.setInjectedJavaScriptObject(view, value);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
@ReactProp(name = "javaScriptCanOpenWindowsAutomatically")
|
|
158
|
+
public void setJavaScriptCanOpenWindowsAutomatically(RNCWebViewWrapper view, boolean value) {
|
|
159
|
+
mRNCWebViewManagerImpl.setJavaScriptCanOpenWindowsAutomatically(view, value);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
@ReactProp(name = "javaScriptEnabled")
|
|
163
|
+
public void setJavaScriptEnabled(RNCWebViewWrapper view, boolean enabled) {
|
|
164
|
+
mRNCWebViewManagerImpl.setJavaScriptEnabled(view, enabled);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
@ReactProp(name = "lackPermissionToDownloadMessage")
|
|
168
|
+
public void setLackPermissionToDownloadMessage(RNCWebViewWrapper view, @Nullable String value) {
|
|
169
|
+
mRNCWebViewManagerImpl.setLackPermissionToDownloadMessage(value);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
@ReactProp(name = "hasOnOpenWindowEvent")
|
|
173
|
+
public void setHasOnOpenWindowEvent(RNCWebViewWrapper view, boolean hasEvent) {
|
|
174
|
+
mRNCWebViewManagerImpl.setHasOnOpenWindowEvent(view, hasEvent);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
@ReactProp(name = "mediaPlaybackRequiresUserAction")
|
|
178
|
+
public void setMediaPlaybackRequiresUserAction(RNCWebViewWrapper view, boolean value) {
|
|
179
|
+
mRNCWebViewManagerImpl.setMediaPlaybackRequiresUserAction(view, value);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
@ReactProp(name = "messagingEnabled")
|
|
183
|
+
public void setMessagingEnabled(RNCWebViewWrapper view, boolean value) {
|
|
184
|
+
mRNCWebViewManagerImpl.setMessagingEnabled(view, value);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
@ReactProp(name = "menuItems")
|
|
188
|
+
public void setMenuCustomItems(RNCWebViewWrapper view, @Nullable ReadableArray items) {
|
|
189
|
+
mRNCWebViewManagerImpl.setMenuCustomItems(view, items);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
@ReactProp(name = "messagingModuleName")
|
|
193
|
+
public void setMessagingModuleName(RNCWebViewWrapper view, @Nullable String value) {
|
|
194
|
+
mRNCWebViewManagerImpl.setMessagingModuleName(view, value);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
@ReactProp(name = "minimumFontSize")
|
|
198
|
+
public void setMinimumFontSize(RNCWebViewWrapper view, int value) {
|
|
199
|
+
mRNCWebViewManagerImpl.setMinimumFontSize(view, value);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
@ReactProp(name = "mixedContentMode")
|
|
203
|
+
public void setMixedContentMode(RNCWebViewWrapper view, @Nullable String value) {
|
|
204
|
+
mRNCWebViewManagerImpl.setMixedContentMode(view, value);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
@ReactProp(name = "nestedScrollEnabled")
|
|
208
|
+
public void setNestedScrollEnabled(RNCWebViewWrapper view, boolean value) {
|
|
209
|
+
mRNCWebViewManagerImpl.setNestedScrollEnabled(view, value);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
@ReactProp(name = "overScrollMode")
|
|
213
|
+
public void setOverScrollMode(RNCWebViewWrapper view, @Nullable String value) {
|
|
214
|
+
mRNCWebViewManagerImpl.setOverScrollMode(view, value);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
@ReactProp(name = "saveFormDataDisabled")
|
|
218
|
+
public void setSaveFormDataDisabled(RNCWebViewWrapper view, boolean value) {
|
|
219
|
+
mRNCWebViewManagerImpl.setSaveFormDataDisabled(view, value);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
@ReactProp(name = "scalesPageToFit")
|
|
223
|
+
public void setScalesPageToFit(RNCWebViewWrapper view, boolean value) {
|
|
224
|
+
mRNCWebViewManagerImpl.setScalesPageToFit(view, value);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
@ReactProp(name = "setBuiltInZoomControls")
|
|
228
|
+
public void setSetBuiltInZoomControls(RNCWebViewWrapper view, boolean value) {
|
|
229
|
+
mRNCWebViewManagerImpl.setSetBuiltInZoomControls(view, value);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
@ReactProp(name = "setDisplayZoomControls")
|
|
233
|
+
public void setSetDisplayZoomControls(RNCWebViewWrapper view, boolean value) {
|
|
234
|
+
mRNCWebViewManagerImpl.setSetDisplayZoomControls(view, value);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
@ReactProp(name = "setSupportMultipleWindows")
|
|
238
|
+
public void setSetSupportMultipleWindows(RNCWebViewWrapper view, boolean value) {
|
|
239
|
+
mRNCWebViewManagerImpl.setSetSupportMultipleWindows(view, value);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
@ReactProp(name = "showsHorizontalScrollIndicator")
|
|
243
|
+
public void setShowsHorizontalScrollIndicator(RNCWebViewWrapper view, boolean value) {
|
|
244
|
+
mRNCWebViewManagerImpl.setShowsHorizontalScrollIndicator(view, value);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
@ReactProp(name = "showsVerticalScrollIndicator")
|
|
248
|
+
public void setShowsVerticalScrollIndicator(RNCWebViewWrapper view, boolean value) {
|
|
249
|
+
mRNCWebViewManagerImpl.setShowsVerticalScrollIndicator(view, value);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
@ReactProp(name = "source")
|
|
253
|
+
public void setSource(RNCWebViewWrapper view, @Nullable ReadableMap value) {
|
|
254
|
+
mRNCWebViewManagerImpl.setSource(view, value);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
@ReactProp(name = "textZoom")
|
|
258
|
+
public void setTextZoom(RNCWebViewWrapper view, int value) {
|
|
259
|
+
mRNCWebViewManagerImpl.setTextZoom(view, value);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
@ReactProp(name = "thirdPartyCookiesEnabled")
|
|
263
|
+
public void setThirdPartyCookiesEnabled(RNCWebViewWrapper view, boolean value) {
|
|
264
|
+
mRNCWebViewManagerImpl.setThirdPartyCookiesEnabled(view, value);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
@ReactProp(name = "webviewDebuggingEnabled")
|
|
268
|
+
public void setWebviewDebuggingEnabled(RNCWebViewWrapper view, boolean value) {
|
|
269
|
+
mRNCWebViewManagerImpl.setWebviewDebuggingEnabled(view, value);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
@ReactProp(name = "userAgent")
|
|
273
|
+
public void setUserAgent(RNCWebViewWrapper view, @Nullable String value) {
|
|
274
|
+
mRNCWebViewManagerImpl.setUserAgent(view, value);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
@ReactProp(name = "paymentRequestEnabled")
|
|
278
|
+
public void setPaymentRequestEnabled(RNCWebViewWrapper view, boolean value) {
|
|
279
|
+
mRNCWebViewManagerImpl.setPaymentRequestEnabled(view, value);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// Exodus: Camera permission origin whitelist
|
|
283
|
+
@ReactProp(name = "cameraPermissionOriginWhitelist")
|
|
284
|
+
public void setCameraPermissionOriginWhitelist(RNCWebViewWrapper view, @Nullable ReadableArray value) {
|
|
285
|
+
mRNCWebViewManagerImpl.setCameraPermissionOriginWhitelist(view, value);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
@Override
|
|
289
|
+
protected void addEventEmitters(@NonNull ThemedReactContext reactContext, RNCWebViewWrapper viewWrapper) {
|
|
290
|
+
// Do not register default touch emitter and let WebView implementation handle touches
|
|
291
|
+
viewWrapper.getWebView().setWebViewClient(new RNCWebViewClient());
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
@Override
|
|
295
|
+
public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
|
|
296
|
+
Map<String, Object> export = super.getExportedCustomDirectEventTypeConstants();
|
|
297
|
+
if (export == null) {
|
|
298
|
+
export = MapBuilder.newHashMap();
|
|
299
|
+
}
|
|
300
|
+
// Default events but adding them here explicitly for clarity
|
|
301
|
+
export.put(TopLoadingStartEvent.EVENT_NAME, MapBuilder.of("registrationName", "onLoadingStart"));
|
|
302
|
+
export.put(TopLoadingFinishEvent.EVENT_NAME, MapBuilder.of("registrationName", "onLoadingFinish"));
|
|
303
|
+
export.put(TopLoadingErrorEvent.EVENT_NAME, MapBuilder.of("registrationName", "onLoadingError"));
|
|
304
|
+
export.put(SubResourceErrorEvent.EVENT_NAME, MapBuilder.of("registrationName", "onLoadingSubResourceError"));
|
|
305
|
+
export.put(TopMessageEvent.EVENT_NAME, MapBuilder.of("registrationName", "onMessage"));
|
|
306
|
+
// !Default events but adding them here explicitly for clarity
|
|
307
|
+
|
|
308
|
+
export.put(TopLoadingProgressEvent.EVENT_NAME, MapBuilder.of("registrationName", "onLoadingProgress"));
|
|
309
|
+
export.put(TopShouldStartLoadWithRequestEvent.EVENT_NAME, MapBuilder.of("registrationName", "onShouldStartLoadWithRequest"));
|
|
310
|
+
export.put(ScrollEventType.getJSEventName(ScrollEventType.SCROLL), MapBuilder.of("registrationName", "onScroll"));
|
|
311
|
+
export.put(TopHttpErrorEvent.EVENT_NAME, MapBuilder.of("registrationName", "onHttpError"));
|
|
312
|
+
export.put(TopRenderProcessGoneEvent.EVENT_NAME, MapBuilder.of("registrationName", "onRenderProcessGone"));
|
|
313
|
+
export.put(TopCustomMenuSelectionEvent.EVENT_NAME, MapBuilder.of("registrationName", "onCustomMenuSelection"));
|
|
314
|
+
export.put(TopOpenWindowEvent.EVENT_NAME, MapBuilder.of("registrationName", "onOpenWindow"));
|
|
315
|
+
return export;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
@Override
|
|
319
|
+
public @Nullable
|
|
320
|
+
Map<String, Integer> getCommandsMap() {
|
|
321
|
+
return mRNCWebViewManagerImpl.getCommandsMap();
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
@Override
|
|
325
|
+
public void receiveCommand(@NonNull RNCWebViewWrapper reactWebView, String commandId, @Nullable ReadableArray args) {
|
|
326
|
+
mRNCWebViewManagerImpl.receiveCommand(reactWebView, commandId, args);
|
|
327
|
+
super.receiveCommand(reactWebView, commandId, args);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
@Override
|
|
331
|
+
protected void onAfterUpdateTransaction(@NonNull RNCWebViewWrapper view) {
|
|
332
|
+
super.onAfterUpdateTransaction(view);
|
|
333
|
+
mRNCWebViewManagerImpl.onAfterUpdateTransaction(view);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
@Override
|
|
337
|
+
public void onDropViewInstance(@NonNull RNCWebViewWrapper view) {
|
|
338
|
+
mRNCWebViewManagerImpl.onDropViewInstance(view);
|
|
339
|
+
super.onDropViewInstance(view);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
package com.reactnativecommunity.webview;
|
|
2
|
+
|
|
3
|
+
import android.app.DownloadManager;
|
|
4
|
+
import android.net.Uri;
|
|
5
|
+
|
|
6
|
+
import androidx.annotation.NonNull;
|
|
7
|
+
import android.webkit.ValueCallback;
|
|
8
|
+
|
|
9
|
+
import com.facebook.react.bridge.Promise;
|
|
10
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
11
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
12
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
13
|
+
import com.facebook.react.module.annotations.ReactModule;
|
|
14
|
+
|
|
15
|
+
@ReactModule(name = RNCWebViewModuleImpl.NAME)
|
|
16
|
+
public class RNCWebViewModule extends ReactContextBaseJavaModule {
|
|
17
|
+
final private RNCWebViewModuleImpl mRNCWebViewModuleImpl;
|
|
18
|
+
|
|
19
|
+
public RNCWebViewModule(ReactApplicationContext reactContext) {
|
|
20
|
+
super(reactContext);
|
|
21
|
+
mRNCWebViewModuleImpl = new RNCWebViewModuleImpl(reactContext);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@ReactMethod
|
|
25
|
+
public void isFileUploadSupported(final Promise promise) {
|
|
26
|
+
promise.resolve(mRNCWebViewModuleImpl.isFileUploadSupported());
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@ReactMethod
|
|
30
|
+
public void shouldStartLoadWithLockIdentifier(boolean shouldStart, double lockIdentifier) {
|
|
31
|
+
mRNCWebViewModuleImpl.shouldStartLoadWithLockIdentifier(shouldStart, lockIdentifier);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public void startPhotoPickerIntent(ValueCallback<Uri> filePathCallback, String acceptType) {
|
|
35
|
+
mRNCWebViewModuleImpl.startPhotoPickerIntent(acceptType, filePathCallback);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public boolean startPhotoPickerIntent(final ValueCallback<Uri[]> callback, final String[] acceptTypes, final boolean allowMultiple, final boolean isCaptureEnabled) {
|
|
39
|
+
return mRNCWebViewModuleImpl.startPhotoPickerIntent(acceptTypes, allowMultiple, callback, isCaptureEnabled);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public void setDownloadRequest(DownloadManager.Request request) {
|
|
43
|
+
mRNCWebViewModuleImpl.setDownloadRequest(request);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public void downloadFile(String downloadingMessage) {
|
|
47
|
+
mRNCWebViewModuleImpl.downloadFile(downloadingMessage);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public boolean grantFileDownloaderPermissions(String downloadingMessage, String lackPermissionToDownloadMessage) {
|
|
51
|
+
return mRNCWebViewModuleImpl.grantFileDownloaderPermissions(downloadingMessage, lackPermissionToDownloadMessage);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@NonNull
|
|
55
|
+
@Override
|
|
56
|
+
public String getName() {
|
|
57
|
+
return RNCWebViewModuleImpl.NAME;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#import <WebKit/WebKit.h>
|
|
2
|
+
|
|
3
|
+
#import <React/RCTConvert.h>
|
|
4
|
+
|
|
5
|
+
#if TARGET_OS_IPHONE
|
|
6
|
+
|
|
7
|
+
@implementation RCTConvert (WKDataDetectorTypes)
|
|
8
|
+
|
|
9
|
+
RCT_MULTI_ENUM_CONVERTER(
|
|
10
|
+
WKDataDetectorTypes,
|
|
11
|
+
(@{
|
|
12
|
+
@"none" : @(WKDataDetectorTypeNone),
|
|
13
|
+
@"phoneNumber" : @(WKDataDetectorTypePhoneNumber),
|
|
14
|
+
@"link" : @(WKDataDetectorTypeLink),
|
|
15
|
+
@"address" : @(WKDataDetectorTypeAddress),
|
|
16
|
+
@"calendarEvent" : @(WKDataDetectorTypeCalendarEvent),
|
|
17
|
+
@"trackingNumber" : @(WKDataDetectorTypeTrackingNumber),
|
|
18
|
+
@"flightNumber" : @(WKDataDetectorTypeFlightNumber),
|
|
19
|
+
@"lookupSuggestion" : @(WKDataDetectorTypeLookupSuggestion),
|
|
20
|
+
@"all" : @(WKDataDetectorTypeAll),
|
|
21
|
+
}),
|
|
22
|
+
WKDataDetectorTypeNone,
|
|
23
|
+
unsignedLongLongValue)
|
|
24
|
+
|
|
25
|
+
@end
|
|
26
|
+
|
|
27
|
+
#endif // TARGET_OS_IPHONE
|
package/apple/RNCWebView.h
CHANGED
|
@@ -1,109 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*/
|
|
1
|
+
// This guard prevent this file to be compiled in the old architecture.
|
|
2
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
3
|
+
#import <React/RCTViewComponentView.h>
|
|
4
|
+
#import <React/RCTConversions.h>
|
|
5
|
+
#import <WebKit/WKDataDetectorTypes.h>
|
|
7
6
|
|
|
8
|
-
#
|
|
9
|
-
#import <
|
|
10
|
-
#
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
RNCWebViewPermissionGrantType_GrantIfSameHost_ElsePrompt,
|
|
14
|
-
RNCWebViewPermissionGrantType_GrantIfSameHost_ElseDeny,
|
|
15
|
-
RNCWebViewPermissionGrantType_Deny,
|
|
16
|
-
RNCWebViewPermissionGrantType_Grant,
|
|
17
|
-
RNCWebViewPermissionGrantType_Prompt
|
|
18
|
-
} RNCWebViewPermissionGrantType;
|
|
19
|
-
|
|
20
|
-
@class RNCWebView;
|
|
21
|
-
|
|
22
|
-
@protocol RNCWebViewDelegate <NSObject>
|
|
23
|
-
|
|
24
|
-
- (BOOL)webView:(RNCWebView *_Nonnull)webView
|
|
25
|
-
shouldStartLoadForRequest:(NSMutableDictionary<NSString *, id> *_Nonnull)request
|
|
26
|
-
withCallback:(RCTDirectEventBlock _Nonnull)callback;
|
|
27
|
-
|
|
28
|
-
@end
|
|
7
|
+
#if !TARGET_OS_OSX
|
|
8
|
+
#import <UIKit/UIKit.h>
|
|
9
|
+
#else
|
|
10
|
+
#import <React/RCTUIKit.h>
|
|
11
|
+
#endif // !TARGET_OS_OSX
|
|
29
12
|
|
|
30
|
-
|
|
13
|
+
#import <react/renderer/components/RNCWebViewSpec/Props.h>
|
|
31
14
|
|
|
32
|
-
|
|
15
|
+
#ifndef NativeComponentExampleComponentView_h
|
|
16
|
+
#define NativeComponentExampleComponentView_h
|
|
33
17
|
|
|
34
|
-
|
|
18
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
35
19
|
|
|
20
|
+
@interface RNCWebView : RCTViewComponentView
|
|
36
21
|
@end
|
|
37
22
|
|
|
38
|
-
|
|
23
|
+
namespace facebook {
|
|
24
|
+
namespace react {
|
|
25
|
+
inline bool operator==(const RNCWebViewMenuItemsStruct& a, const RNCWebViewMenuItemsStruct& b)
|
|
26
|
+
{
|
|
27
|
+
return b.key == a.key && b.label == a.label;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
39
31
|
|
|
40
|
-
|
|
41
|
-
@property (nonatomic, copy) NSDictionary * _Nullable source;
|
|
42
|
-
@property (nonatomic, assign) BOOL messagingEnabled;
|
|
43
|
-
@property (nonatomic, copy) NSString * _Nullable injectedJavaScript;
|
|
44
|
-
@property (nonatomic, copy) NSString * _Nullable injectedJavaScriptBeforeContentLoaded;
|
|
45
|
-
@property (nonatomic, assign) BOOL scrollEnabled;
|
|
46
|
-
@property (nonatomic, assign) BOOL sharedCookiesEnabled;
|
|
47
|
-
@property (nonatomic, assign) BOOL autoManageStatusBarEnabled;
|
|
48
|
-
@property (nonatomic, assign) BOOL pagingEnabled;
|
|
49
|
-
@property (nonatomic, assign) CGFloat decelerationRate;
|
|
50
|
-
@property (nonatomic, assign) BOOL allowsInlineMediaPlayback;
|
|
51
|
-
@property (nonatomic, assign) BOOL bounces;
|
|
52
|
-
@property (nonatomic, assign) BOOL mediaPlaybackRequiresUserAction;
|
|
53
|
-
#if WEBKIT_IOS_10_APIS_AVAILABLE
|
|
54
|
-
@property (nonatomic, assign) WKDataDetectorTypes dataDetectorTypes;
|
|
55
|
-
#endif
|
|
56
|
-
@property (nonatomic, assign) UIEdgeInsets contentInset;
|
|
57
|
-
@property (nonatomic, assign) BOOL automaticallyAdjustContentInsets;
|
|
58
|
-
@property (nonatomic, assign) BOOL keyboardDisplayRequiresUserAction;
|
|
59
|
-
@property (nonatomic, assign) BOOL hideKeyboardAccessoryView;
|
|
60
|
-
@property (nonatomic, assign) BOOL allowsBackForwardNavigationGestures;
|
|
61
|
-
@property (nonatomic, assign) BOOL incognito;
|
|
62
|
-
@property (nonatomic, assign) BOOL useSharedProcessPool;
|
|
63
|
-
@property (nonatomic, copy) NSString * _Nullable userAgent;
|
|
64
|
-
@property (nonatomic, assign) BOOL cacheEnabled;
|
|
65
|
-
@property (nonatomic, assign) BOOL javaScriptEnabled;
|
|
66
|
-
@property (nonatomic, assign) BOOL allowsLinkPreview;
|
|
67
|
-
@property (nonatomic, assign) BOOL showsHorizontalScrollIndicator;
|
|
68
|
-
@property (nonatomic, assign) BOOL showsVerticalScrollIndicator;
|
|
69
|
-
@property (nonatomic, assign) BOOL directionalLockEnabled;
|
|
70
|
-
@property (nonatomic, copy) NSDictionary * _Nullable basicAuthCredential;
|
|
71
|
-
@property (nonatomic, assign) BOOL pullToRefreshEnabled;
|
|
72
|
-
@property (nonatomic, assign) BOOL enableApplePay;
|
|
73
|
-
@property (nonatomic, copy) NSArray<NSDictionary *> * _Nullable menuItems;
|
|
74
|
-
@property (nonatomic, copy) RCTDirectEventBlock onCustomMenuSelection;
|
|
75
|
-
#if !TARGET_OS_OSX
|
|
76
|
-
@property (nonatomic, weak) UIRefreshControl * _Nullable refreshControl;
|
|
77
|
-
#endif
|
|
32
|
+
NS_ASSUME_NONNULL_END
|
|
78
33
|
|
|
79
|
-
#
|
|
80
|
-
|
|
81
|
-
#endif
|
|
82
|
-
|
|
83
|
-
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 140000 /* iOS 14 */
|
|
84
|
-
@property (nonatomic, assign) BOOL limitsNavigationsToAppBoundDomains;
|
|
85
|
-
#endif
|
|
86
|
-
|
|
87
|
-
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 140500 /* iOS 14.5 */
|
|
88
|
-
@property (nonatomic, assign) BOOL textInteractionEnabled;
|
|
89
|
-
#endif
|
|
90
|
-
|
|
91
|
-
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 150000 /* iOS 15 */
|
|
92
|
-
@property (nonatomic, assign) RNCWebViewPermissionGrantType mediaCapturePermissionGrantType;
|
|
93
|
-
#endif
|
|
94
|
-
|
|
95
|
-
+ (void)setClientAuthenticationCredential:(nullable NSURLCredential*)credential;
|
|
96
|
-
+ (void)setCustomCertificatesForHost:(nullable NSDictionary *)certificates;
|
|
97
|
-
- (void)postMessage:(NSString *_Nullable)message;
|
|
98
|
-
- (void)injectJavaScript:(NSString *_Nullable)script;
|
|
99
|
-
- (void)goForward;
|
|
100
|
-
- (void)goBack;
|
|
101
|
-
- (void)reload;
|
|
102
|
-
- (void)stopLoading;
|
|
103
|
-
- (void)requestFocus;
|
|
104
|
-
#if !TARGET_OS_OSX
|
|
105
|
-
- (void)addPullToRefreshControl;
|
|
106
|
-
- (void)pullToRefresh:(UIRefreshControl *_Nonnull)refreshControl;
|
|
107
|
-
#endif
|
|
108
|
-
|
|
109
|
-
@end
|
|
34
|
+
#endif /* NativeComponentExampleComponentView_h */
|
|
35
|
+
#endif /* RCT_NEW_ARCH_ENABLED */
|