react-native-webview-bootpay 11.18.11 → 11.18.14
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 +93 -83
- package/apple/BPCWebView.h +0 -19
- package/apple/BPCWebView.m +197 -336
- package/apple/BPCWebViewManager.h +0 -2
- package/apple/BPCWebViewManager.m +1 -25
- package/index.d.ts +5 -5
- package/ios/RNCWebView.xcodeproj/project.pbxproj +18 -18
- package/lib/WebView.android.d.ts +0 -3
- package/lib/WebView.android.d.ts.map +1 -1
- package/lib/WebView.android.js +4 -11
- package/lib/WebView.d.ts +2 -2
- package/lib/WebView.d.ts.map +1 -1
- package/lib/WebView.ios.d.ts +0 -1
- package/lib/WebView.ios.d.ts.map +1 -1
- package/lib/WebView.ios.js +7 -12
- package/lib/WebView.macos.d.ts.map +1 -1
- package/lib/WebView.macos.js +6 -10
- package/lib/WebView.windows.d.ts +2 -4
- package/lib/WebView.windows.d.ts.map +1 -1
- package/lib/WebView.windows.js +12 -18
- package/lib/WebViewShared.d.ts +0 -1
- package/lib/WebViewShared.d.ts.map +1 -1
- package/lib/WebViewTypes.d.ts +2 -113
- package/lib/WebViewTypes.d.ts.map +1 -1
- package/package.json +9 -10
- package/react-native-webview-bootpay.podspec +3 -1
- package/react-native.config.js +61 -47
- package/windows/ReactNativeWebView/ReactNativeWebView.vcxproj +20 -37
- package/windows/ReactNativeWebView/ReactPackageProvider.cpp +1 -5
- package/windows/ReactNativeWebView/ReactWebView.cpp +6 -2
- package/windows/ReactNativeWebView/ReactWebView.h +2 -3
- package/windows/ReactNativeWebView/ReactWebView.idl +1 -13
- package/windows/ReactNativeWebView/ReactWebViewManager.cpp +31 -36
- package/windows/ReactNativeWebView/packages.config +0 -2
- package/windows/ReactNativeWebView/pch.h +0 -6
- package/windows/ReactNativeWebView.sln +119 -81
- package/windows/WebViewBridgeComponent/PropertySheet.props +16 -0
- package/windows/{ReactNativeWebView → WebViewBridgeComponent}/WebBridge.cpp +1 -1
- package/windows/{ReactNativeWebView → WebViewBridgeComponent}/WebBridge.h +2 -2
- package/windows/{ReactNativeWebView → WebViewBridgeComponent}/WebBridge.idl +1 -1
- package/windows/WebViewBridgeComponent/WebViewBridgeComponent.def +3 -0
- package/windows/WebViewBridgeComponent/WebViewBridgeComponent.vcxproj +160 -0
- package/windows/WebViewBridgeComponent/WebViewBridgeComponent.vcxproj.filters +33 -0
- package/windows/WebViewBridgeComponent/packages.config +4 -0
- package/windows/WebViewBridgeComponent/pch.cpp +1 -0
- package/windows/WebViewBridgeComponent/pch.h +4 -0
- package/windows/WebViewBridgeComponent/readme.txt +23 -0
- package/android/.DS_Store +0 -0
- package/android/.gradle/6.8/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.8/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.8/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.8/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.8/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.8/gc.properties +0 -0
- package/android/.gradle/7.0-rc-1/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.0-rc-1/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/7.0-rc-1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/7.0-rc-1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/7.0-rc-1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.0-rc-1/gc.properties +0 -0
- package/android/.gradle/7.1.1/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.1.1/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/7.1.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/7.1.1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/7.1.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.1.1/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/configuration-cache/gc.properties +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.idea/.gitignore +0 -3
- package/android/.idea/compiler.xml +0 -6
- package/android/.idea/gradle.xml +0 -19
- package/android/.idea/jarRepositories.xml +0 -35
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_0_0.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_0_2_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_0_0.xml +0 -11
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_collection_collection_1_0_0.xml +0 -11
- package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_core_core_1_0_1_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_0_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_0_0.xml +0 -11
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_0_1_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_0_3.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_11_2.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_62_2_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_8_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_8_0.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_8_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_14_1.xml +0 -13
- package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_1.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_1.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +0 -13
- package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_3_50.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_3_50.xml +0 -13
- package/android/.idea/misc.xml +0 -9
- package/android/.idea/modules/android.iml +0 -124
- package/android/.idea/modules.xml +0 -8
- package/android/.idea/vcs.xml +0 -6
- package/android/.project +0 -34
- package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
- package/android/build/.transforms/4e87ba7f47baac309fba5367e008cf44/results.bin +0 -1
- package/android/build/.transforms/4e87ba7f47baac309fba5367e008cf44/transformed/classes/classes.dex +0 -0
- package/android/build/.transforms/d5207f219c4292752e7af446f7cc2789/classes/classes.dex +0 -0
- package/android/build/.transforms/d5207f219c4292752e7af446f7cc2789.bin +0 -1
- package/android/build/generated/source/buildConfig/debug/kr/co/bootpay/webview/BuildConfig.java +0 -10
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +0 -100
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +0 -18
- package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +0 -4
- package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +0 -1
- package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/R.txt +0 -1857
- package/android/build/intermediates/compiled_local_resources/debug/out/xml_file_provider_paths.xml.flat +0 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +0 -2
- package/android/build/intermediates/incremental/packageDebugResources/compile-file-map.properties +0 -2
- package/android/build/intermediates/incremental/packageDebugResources/merger.xml +0 -2
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebChromeClient$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebChromeClient.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$BPCWebViewBridge.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$ProgressChangedFilter.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewClient.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewFileProvider.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$2.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$3.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$4.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule$2.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule$MimeType.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule$ShouldOverrideUrlLoadingLock$ShouldOverrideCallbackState.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule$ShouldOverrideUrlLoadingLock.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BuildConfig.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/WebViewConfig.class +0 -0
- package/android/build/intermediates/library_java_res/debug/res.jar +0 -0
- package/android/build/intermediates/library_manifest/debug/AndroidManifest.xml +0 -102
- package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +0 -3
- package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +0 -200
- package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +0 -100
- package/android/build/intermediates/navigation_json/debug/navigation.json +0 -1
- package/android/build/intermediates/packaged_manifests/debug/output-metadata.json +0 -18
- package/android/build/intermediates/packaged_res/debug/xml/file_provider_paths.xml +0 -6
- package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +0 -1377
- package/android/build/kotlin/compileDebugKotlin/build-history.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/counters.tab +0 -2
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/lookups.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/last-build.bin +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -221
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/source-classes-mapping.txt +0 -29
- package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-webview-bootpay_debug.kotlin_module +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/BPCWebViewPackage.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopMessageEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopMessageEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent.class +0 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +0 -5
- package/android/gradlew +0 -185
- package/android/gradlew.bat +0 -89
- package/android/local.properties +0 -8
- package/android/src/.DS_Store +0 -0
- package/android/src/main/.DS_Store +0 -0
- package/android/src/main/java/.DS_Store +0 -0
- package/android/src/main/java/kr/.DS_Store +0 -0
- package/android/src/main/java/kr/co/.DS_Store +0 -0
- package/android/src/main/java/kr/co/bootpay/.DS_Store +0 -0
- package/ios/.DS_Store +0 -0
- package/ios/RNCWebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/ios/RNCWebView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/ios/RNCWebView.xcodeproj/project.xcworkspace/xcuserdata/bootpay.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNCWebView.xcodeproj/xcuserdata/bootpay.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
- package/lib/WebViewNativeComponent.android.d.ts +0 -4
- package/lib/WebViewNativeComponent.android.d.ts.map +0 -1
- package/lib/WebViewNativeComponent.android.js +0 -3
- package/lib/WebViewNativeComponent.ios.d.ts +0 -4
- package/lib/WebViewNativeComponent.ios.d.ts.map +0 -1
- package/lib/WebViewNativeComponent.ios.js +0 -3
- package/lib/WebViewNativeComponent.macos.d.ts +0 -4
- package/lib/WebViewNativeComponent.macos.d.ts.map +0 -1
- package/lib/WebViewNativeComponent.macos.js +0 -3
- package/lib/WebViewNativeComponent.windows.d.ts +0 -4
- package/lib/WebViewNativeComponent.windows.d.ts.map +0 -1
- package/lib/WebViewNativeComponent.windows.js +0 -3
- package/lib/index.d.ts +0 -4
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -3
- package/windows/.gitignore +0 -353
- package/windows/ExperimentalFeatures.props +0 -12
- package/windows/ReactNativeWebView/ReactWebView2.cpp +0 -119
- package/windows/ReactNativeWebView/ReactWebView2.h +0 -43
- package/windows/ReactNativeWebView/ReactWebView2Manager.cpp +0 -147
- package/windows/ReactNativeWebView/ReactWebView2Manager.h +0 -54
package/apple/BPCWebView.m
CHANGED
|
@@ -18,13 +18,11 @@
|
|
|
18
18
|
#import "objc/runtime.h"
|
|
19
19
|
|
|
20
20
|
static NSTimer *keyboardTimer;
|
|
21
|
-
static NSString *const HistoryShimName = @"
|
|
22
|
-
static NSString *const MessageHandlerName = @"
|
|
21
|
+
static NSString *const HistoryShimName = @"ReactNativeHistoryShimBootpay";
|
|
22
|
+
static NSString *const MessageHandlerName = @"BootpayRNWebView";
|
|
23
23
|
static NSURLCredential* clientAuthenticationCredential;
|
|
24
24
|
static NSDictionary* customCertificatesForHost;
|
|
25
25
|
|
|
26
|
-
NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
27
|
-
|
|
28
26
|
#if !TARGET_OS_OSX
|
|
29
27
|
// runtime trick to remove WKWebView keyboard default toolbar
|
|
30
28
|
// see: http://stackoverflow.com/questions/19033292/ios-7-uiwebview-keyboard-issue/19042279#19042279
|
|
@@ -53,9 +51,9 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
53
51
|
@end
|
|
54
52
|
@implementation BPCWKWebView
|
|
55
53
|
- (void)scrollWheel:(NSEvent *)theEvent {
|
|
56
|
-
BPCWebView *
|
|
57
|
-
RCTAssert([
|
|
58
|
-
if (![
|
|
54
|
+
BPCWebView *bpcWebView = (BPCWebView *)[self superview];
|
|
55
|
+
RCTAssert([bpcWebView isKindOfClass:[bpcWebView class]], @"superview must be an BPCWebView");
|
|
56
|
+
if (![bpcWebView scrollEnabled]) {
|
|
59
57
|
[[self nextResponder] scrollWheel:theEvent];
|
|
60
58
|
return;
|
|
61
59
|
}
|
|
@@ -149,9 +147,6 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
149
147
|
_savedAutomaticallyAdjustsScrollIndicatorInsets = NO;
|
|
150
148
|
#endif
|
|
151
149
|
_enableApplePay = NO;
|
|
152
|
-
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 150000 /* iOS 15 */
|
|
153
|
-
_mediaCapturePermissionGrantType = BPCWebViewPermissionGrantType_Prompt;
|
|
154
|
-
#endif
|
|
155
150
|
}
|
|
156
151
|
|
|
157
152
|
#if !TARGET_OS_OSX
|
|
@@ -193,126 +188,45 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
193
188
|
return self;
|
|
194
189
|
}
|
|
195
190
|
|
|
196
|
-
#if !TARGET_OS_OSX
|
|
197
|
-
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
|
|
198
|
-
// Only allow long press gesture
|
|
199
|
-
if ([otherGestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]]) {
|
|
200
|
-
return YES;
|
|
201
|
-
}else{
|
|
202
|
-
return NO;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
// Listener for long presses
|
|
207
|
-
- (void)startLongPress:(UILongPressGestureRecognizer *)pressSender
|
|
208
|
-
{
|
|
209
|
-
// When a long press ends, bring up our custom UIMenu
|
|
210
|
-
if(pressSender.state == UIGestureRecognizerStateEnded) {
|
|
211
|
-
if (!self.menuItems || self.menuItems.count == 0) {
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
UIMenuController *menuController = [UIMenuController sharedMenuController];
|
|
215
|
-
NSMutableArray *menuControllerItems = [NSMutableArray arrayWithCapacity:self.menuItems.count];
|
|
216
|
-
|
|
217
|
-
for(NSDictionary *menuItem in self.menuItems) {
|
|
218
|
-
NSString *menuItemLabel = [RCTConvert NSString:menuItem[@"label"]];
|
|
219
|
-
NSString *menuItemKey = [RCTConvert NSString:menuItem[@"key"]];
|
|
220
|
-
NSString *sel = [NSString stringWithFormat:@"%@%@", CUSTOM_SELECTOR, menuItemKey];
|
|
221
|
-
UIMenuItem *item = [[UIMenuItem alloc] initWithTitle: menuItemLabel
|
|
222
|
-
action: NSSelectorFromString(sel)];
|
|
223
|
-
|
|
224
|
-
[menuControllerItems addObject: item];
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
menuController.menuItems = menuControllerItems;
|
|
228
|
-
[menuController setMenuVisible:YES animated:YES];
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
#endif // !TARGET_OS_OSX
|
|
233
|
-
|
|
234
191
|
- (void)dealloc
|
|
235
192
|
{
|
|
236
193
|
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
|
237
194
|
}
|
|
238
195
|
|
|
239
|
-
|
|
196
|
+
/**
|
|
197
|
+
* See https://stackoverflow.com/questions/25713069/why-is-wkwebview-not-opening-links-with-target-blank/25853806#25853806 for details.
|
|
198
|
+
*/
|
|
199
|
+
- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures
|
|
240
200
|
{
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
[self.webView evaluateJavaScript: @"window.getSelection().toString()" completionHandler: ^(id result, NSError *error) {
|
|
244
|
-
if (error != nil) {
|
|
245
|
-
RCTLogWarn(@"%@", [NSString stringWithFormat:@"Error evaluating injectedJavaScript: This is possibly due to an unsupported return type. Try adding true to the end of your injectedJavaScript string. %@", error]);
|
|
246
|
-
} else {
|
|
247
|
-
if (self.onCustomMenuSelection) {
|
|
248
|
-
NSPredicate *filter = [NSPredicate predicateWithFormat:@"key contains[c] %@ ",eventType];
|
|
249
|
-
NSArray *filteredMenuItems = [self.menuItems filteredArrayUsingPredicate:filter];
|
|
250
|
-
NSDictionary *selectedMenuItem = filteredMenuItems[0];
|
|
251
|
-
NSString *label = [RCTConvert NSString:selectedMenuItem[@"label"]];
|
|
252
|
-
self.onCustomMenuSelection(@{
|
|
253
|
-
@"key": eventType,
|
|
254
|
-
@"label": label,
|
|
255
|
-
@"selectedText": result
|
|
256
|
-
});
|
|
257
|
-
} else {
|
|
258
|
-
RCTLogWarn(@"Error evaluating onCustomMenuSelection: You must implement an `onCustomMenuSelection` callback when using custom menu items");
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}];
|
|
262
|
-
}
|
|
201
|
+
//팝업관련
|
|
202
|
+
NSLog(@"------ popup url: %@", navigationAction.request.URL.absoluteString);
|
|
263
203
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
- (NSMethodSignature *)methodSignatureForSelector:(SEL)sel
|
|
267
|
-
{
|
|
268
|
-
NSMethodSignature *existingSelector = [super methodSignatureForSelector:sel];
|
|
269
|
-
if (existingSelector) {
|
|
270
|
-
return existingSelector;
|
|
271
|
-
}
|
|
272
|
-
return [super methodSignatureForSelector:@selector(tappedMenuItem:)];
|
|
273
|
-
}
|
|
204
|
+
if([navigationAction.request.URL.absoluteString rangeOfString:@"bootpay.co.kr"].location == NSNotFound) {
|
|
205
|
+
NSLog(@"111");
|
|
274
206
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
NSRange match = [sel rangeOfString:CUSTOM_SELECTOR];
|
|
281
|
-
if (match.location == 0) {
|
|
282
|
-
[self tappedMenuItem:[sel substringFromIndex:17]];
|
|
207
|
+
//원래 로직
|
|
208
|
+
if (!navigationAction.targetFrame.isMainFrame) {
|
|
209
|
+
[webView loadRequest:navigationAction.request];
|
|
210
|
+
}
|
|
211
|
+
return nil;
|
|
283
212
|
} else {
|
|
284
|
-
[super forwardInvocation:invocation];
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
213
|
|
|
288
|
-
|
|
289
|
-
- (BOOL)canBecomeFirstResponder
|
|
290
|
-
{
|
|
291
|
-
return YES;
|
|
292
|
-
}
|
|
214
|
+
NSLog(@"222");
|
|
293
215
|
|
|
294
|
-
|
|
295
|
-
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
|
|
296
|
-
{
|
|
297
|
-
NSString *sel = NSStringFromSelector(action);
|
|
298
|
-
// Do any of them have our custom keys?
|
|
299
|
-
NSRange match = [sel rangeOfString:CUSTOM_SELECTOR];
|
|
216
|
+
WKWebView *popupView = [[WKWebView alloc] initWithFrame:webView.bounds configuration:configuration];
|
|
300
217
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
218
|
+
popupView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
|
|
219
|
+
popupView.navigationDelegate = self;
|
|
220
|
+
popupView.UIDelegate = self;
|
|
221
|
+
[webView addSubview:popupView];
|
|
222
|
+
|
|
223
|
+
return popupView;
|
|
224
|
+
}
|
|
305
225
|
}
|
|
306
226
|
|
|
307
|
-
|
|
308
|
-
*
|
|
309
|
-
|
|
310
|
-
- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures
|
|
311
|
-
{
|
|
312
|
-
if (!navigationAction.targetFrame.isMainFrame) {
|
|
313
|
-
[webView loadRequest:navigationAction.request];
|
|
314
|
-
}
|
|
315
|
-
return nil;
|
|
227
|
+
|
|
228
|
+
- (void)webViewDidClose:(WKWebView *)webView {
|
|
229
|
+
[webView removeFromSuperview];
|
|
316
230
|
}
|
|
317
231
|
|
|
318
232
|
- (WKWebViewConfiguration *)setUpWkWebViewConfig
|
|
@@ -335,14 +249,6 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
335
249
|
[prefs setValue:@TRUE forKey:@"javaScriptCanOpenWindowsAutomatically"];
|
|
336
250
|
_prefsUsed = YES;
|
|
337
251
|
}
|
|
338
|
-
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 140500 /* iOS 14.5 */
|
|
339
|
-
if (@available(iOS 14.5, *)) {
|
|
340
|
-
if (!_textInteractionEnabled) {
|
|
341
|
-
[prefs setValue:@FALSE forKey:@"textInteractionEnabled"];
|
|
342
|
-
_prefsUsed = YES;
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
#endif
|
|
346
252
|
if (_prefsUsed) {
|
|
347
253
|
wkWebViewConfig.preferences = prefs;
|
|
348
254
|
}
|
|
@@ -430,7 +336,9 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
430
336
|
[_webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context:nil];
|
|
431
337
|
_webView.allowsBackForwardNavigationGestures = _allowsBackForwardNavigationGestures;
|
|
432
338
|
|
|
433
|
-
|
|
339
|
+
if (_userAgent) {
|
|
340
|
+
_webView.customUserAgent = _userAgent;
|
|
341
|
+
}
|
|
434
342
|
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 /* __IPHONE_11_0 */
|
|
435
343
|
if ([_webView.scrollView respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) {
|
|
436
344
|
_webView.scrollView.contentInsetAdjustmentBehavior = _savedContentInsetAdjustmentBehavior;
|
|
@@ -447,18 +355,6 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
447
355
|
[self setKeyboardDisplayRequiresUserAction: _savedKeyboardDisplayRequiresUserAction];
|
|
448
356
|
[self visitSource];
|
|
449
357
|
}
|
|
450
|
-
#if !TARGET_OS_OSX
|
|
451
|
-
// Allow this object to recognize gestures
|
|
452
|
-
if (self.menuItems != nil) {
|
|
453
|
-
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(startLongPress:)];
|
|
454
|
-
longPress.delegate = self;
|
|
455
|
-
|
|
456
|
-
longPress.minimumPressDuration = 0.4f;
|
|
457
|
-
longPress.numberOfTouchesRequired = 1;
|
|
458
|
-
longPress.cancelsTouchesInView = YES;
|
|
459
|
-
[self addGestureRecognizer:longPress];
|
|
460
|
-
}
|
|
461
|
-
#endif // !TARGET_OS_OSX
|
|
462
358
|
}
|
|
463
359
|
|
|
464
360
|
// Update webview property when the component prop changes.
|
|
@@ -683,39 +579,38 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
683
579
|
}
|
|
684
580
|
[_webView loadHTMLString:html baseURL:baseURL];
|
|
685
581
|
return;
|
|
686
|
-
}
|
|
687
|
-
//
|
|
688
|
-
NSString *headerCookie = [RCTConvert NSString:_source[@"headers"][@"cookie"]];
|
|
582
|
+
}
|
|
583
|
+
//Add cookie for subsequent resource requests sent by page itself, if cookie was set in headers on WebView
|
|
584
|
+
NSString *headerCookie = [RCTConvert NSString:_source[@"headers"][@"cookie"]];
|
|
689
585
|
if(headerCookie) {
|
|
690
586
|
NSDictionary *headers = [NSDictionary dictionaryWithObjectsAndKeys:headerCookie,@"Set-Cookie",nil];
|
|
691
587
|
NSURL *urlString = [NSURL URLWithString:_source[@"uri"]];
|
|
692
588
|
NSArray *httpCookies = [NSHTTPCookie cookiesWithResponseHeaderFields:headers forURL:urlString];
|
|
693
|
-
|
|
589
|
+
for (NSHTTPCookie *httpCookie in httpCookies) {
|
|
590
|
+
[_webView.configuration.websiteDataStore.httpCookieStore setCookie:httpCookie completionHandler:nil];
|
|
591
|
+
}
|
|
694
592
|
}
|
|
695
593
|
|
|
696
594
|
NSURLRequest *request = [self requestForSource:_source];
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
[_webView loadFileURL:request.URL allowingReadAccessToURL:readAccessUrl];
|
|
717
|
-
}
|
|
718
|
-
}];
|
|
595
|
+
// Because of the way React works, as pages redirect, we actually end up
|
|
596
|
+
// passing the redirect urls back here, so we ignore them if trying to load
|
|
597
|
+
// the same url. We'll expose a call to 'reload' to allow a user to load
|
|
598
|
+
// the existing page.
|
|
599
|
+
if ([request.URL isEqual:_webView.URL]) {
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
if (!request.URL) {
|
|
603
|
+
// Clear the webview
|
|
604
|
+
[_webView loadHTMLString:@"" baseURL:nil];
|
|
605
|
+
return;
|
|
606
|
+
}
|
|
607
|
+
if (request.URL.host) {
|
|
608
|
+
[_webView loadRequest:request];
|
|
609
|
+
}
|
|
610
|
+
else {
|
|
611
|
+
NSURL* readAccessUrl = _allowingReadAccessToURL ? [RCTConvert NSURL:_allowingReadAccessToURL] : request.URL;
|
|
612
|
+
[_webView loadFileURL:request.URL allowingReadAccessToURL:readAccessUrl];
|
|
613
|
+
}
|
|
719
614
|
}
|
|
720
615
|
|
|
721
616
|
#if !TARGET_OS_OSX
|
|
@@ -831,12 +726,6 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
831
726
|
}
|
|
832
727
|
#endif // !TARGET_OS_OSX
|
|
833
728
|
|
|
834
|
-
- (void)setUserAgent:(NSString*)userAgent
|
|
835
|
-
{
|
|
836
|
-
_userAgent = userAgent;
|
|
837
|
-
_webView.customUserAgent = userAgent;
|
|
838
|
-
}
|
|
839
|
-
|
|
840
729
|
- (void)setScrollEnabled:(BOOL)scrollEnabled
|
|
841
730
|
{
|
|
842
731
|
_scrollEnabled = scrollEnabled;
|
|
@@ -972,15 +861,6 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
972
861
|
}
|
|
973
862
|
}
|
|
974
863
|
}
|
|
975
|
-
if ([[challenge protectionSpace] authenticationMethod] == NSURLAuthenticationMethodHTTPBasic) {
|
|
976
|
-
NSString *username = [_basicAuthCredential valueForKey:@"username"];
|
|
977
|
-
NSString *password = [_basicAuthCredential valueForKey:@"password"];
|
|
978
|
-
if (username && password) {
|
|
979
|
-
NSURLCredential *credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistenceNone];
|
|
980
|
-
completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
|
|
981
|
-
return;
|
|
982
|
-
}
|
|
983
|
-
}
|
|
984
864
|
completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil);
|
|
985
865
|
}
|
|
986
866
|
|
|
@@ -1075,32 +955,6 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
1075
955
|
#endif // !TARGET_OS_OSX
|
|
1076
956
|
}
|
|
1077
957
|
|
|
1078
|
-
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 150000 /* iOS 15 */
|
|
1079
|
-
/**
|
|
1080
|
-
* Media capture permissions (prevent multiple prompts)
|
|
1081
|
-
*/
|
|
1082
|
-
- (void) webView:(WKWebView *)webView
|
|
1083
|
-
requestMediaCapturePermissionForOrigin:(WKSecurityOrigin *)origin
|
|
1084
|
-
initiatedByFrame:(WKFrameInfo *)frame
|
|
1085
|
-
type:(WKMediaCaptureType)type
|
|
1086
|
-
decisionHandler:(void (^)(WKPermissionDecision decision))decisionHandler {
|
|
1087
|
-
if (_mediaCapturePermissionGrantType == BPCWebViewPermissionGrantType_GrantIfSameHost_ElsePrompt || _mediaCapturePermissionGrantType == BPCWebViewPermissionGrantType_GrantIfSameHost_ElseDeny) {
|
|
1088
|
-
if ([origin.host isEqualToString:webView.URL.host]) {
|
|
1089
|
-
decisionHandler(WKPermissionDecisionGrant);
|
|
1090
|
-
} else {
|
|
1091
|
-
WKPermissionDecision decision = _mediaCapturePermissionGrantType == BPCWebViewPermissionGrantType_GrantIfSameHost_ElsePrompt ? WKPermissionDecisionPrompt : WKPermissionDecisionDeny;
|
|
1092
|
-
decisionHandler(decision);
|
|
1093
|
-
}
|
|
1094
|
-
} else if (_mediaCapturePermissionGrantType == BPCWebViewPermissionGrantType_Deny) {
|
|
1095
|
-
decisionHandler(WKPermissionDecisionDeny);
|
|
1096
|
-
} else if (_mediaCapturePermissionGrantType == BPCWebViewPermissionGrantType_Grant) {
|
|
1097
|
-
decisionHandler(WKPermissionDecisionGrant);
|
|
1098
|
-
} else {
|
|
1099
|
-
decisionHandler(WKPermissionDecisionPrompt);
|
|
1100
|
-
}
|
|
1101
|
-
}
|
|
1102
|
-
#endif
|
|
1103
|
-
|
|
1104
958
|
#if !TARGET_OS_OSX
|
|
1105
959
|
/**
|
|
1106
960
|
* topViewController
|
|
@@ -1131,129 +985,169 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
1131
985
|
}
|
|
1132
986
|
|
|
1133
987
|
|
|
1134
|
-
- (
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
988
|
+
- (NSString*) getQueryStringParameter:(NSString*)url :(NSString*)param {
|
|
989
|
+
NSMutableDictionary *queryStringDictionary = [[NSMutableDictionary alloc] init];
|
|
990
|
+
NSArray *urlComponents = [url componentsSeparatedByString:@"&"];
|
|
991
|
+
|
|
992
|
+
for (NSString *keyValuePair in urlComponents)
|
|
993
|
+
{
|
|
994
|
+
NSArray *pairComponents = [keyValuePair componentsSeparatedByString:@"="];
|
|
995
|
+
NSString *key = [[pairComponents firstObject] stringByRemovingPercentEncoding];
|
|
996
|
+
NSString *value = [[pairComponents lastObject] stringByRemovingPercentEncoding];
|
|
997
|
+
|
|
998
|
+
if([param isEqualToString:key]) {
|
|
999
|
+
return value;
|
|
1000
|
+
}
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
return @"";
|
|
1138
1004
|
}
|
|
1139
1005
|
|
|
1140
|
-
- (void)
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
if(
|
|
1006
|
+
- (void) startAppToApp:(NSURL*) url {
|
|
1007
|
+
UIApplication *application = [UIApplication sharedApplication];
|
|
1008
|
+
|
|
1009
|
+
// if (@available(iOS 10.0, *)) {
|
|
1010
|
+
// [application openURL:url options:@{} completionHandler:nil];
|
|
1011
|
+
// } else {
|
|
1012
|
+
// [application openURL:url];
|
|
1013
|
+
// }
|
|
1014
|
+
|
|
1015
|
+
if (@available(iOS 10.0, *)) {
|
|
1016
|
+
[application openURL:url options:@{} completionHandler: ^(BOOL success) {
|
|
1017
|
+
if(success == false) {
|
|
1018
|
+
[self startItunesToInstall:url];
|
|
1019
|
+
}
|
|
1020
|
+
}];
|
|
1021
|
+
} else {
|
|
1022
|
+
[application openURL:url];
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
|
|
1027
|
+
- (void) startItunesToInstall:(NSURL*) url {
|
|
1028
|
+
NSString *sUrl = url.absoluteString;
|
|
1029
|
+
NSString *itunesUrl = @"";
|
|
1030
|
+
|
|
1031
|
+
if([sUrl hasPrefix: @"kfc-bankpay"]) {
|
|
1144
1032
|
itunesUrl = @"https://apps.apple.com/kr/app/%EB%B1%85%ED%81%AC%ED%8E%98%EC%9D%B4-%EA%B8%88%EC%9C%B5%EA%B8%B0%EA%B4%80-%EA%B3%B5%EB%8F%99-%EA%B3%84%EC%A2%8C%EC%9D%B4%EC%B2%B4-%EA%B2%B0%EC%A0%9C-%EC%A0%9C%EB%A1%9C%ED%8E%98%EC%9D%B4/id398456030";
|
|
1145
|
-
} else if([
|
|
1146
|
-
itunesUrl = @"https://apps.apple.com/kr/app/isp
|
|
1147
|
-
} else if([
|
|
1033
|
+
} else if([sUrl hasPrefix: @"ispmobile"]) {
|
|
1034
|
+
itunesUrl = @"https://apps.apple.com/kr/app/isp/id369125087";
|
|
1035
|
+
} else if([sUrl hasPrefix: @"hdcardappcardansimclick"] || [sUrl hasPrefix: @"smhyundaiansimclick"]) {
|
|
1148
1036
|
itunesUrl = @"https://apps.apple.com/kr/app/%ED%98%84%EB%8C%80%EC%B9%B4%EB%93%9C/id702653088";
|
|
1149
|
-
}
|
|
1037
|
+
} else if([sUrl hasPrefix: @"shinhan-sr-ansimclick"] || [sUrl hasPrefix: @"smshinhanansimclick"]) {
|
|
1150
1038
|
itunesUrl = @"https://apps.apple.com/kr/app/%EC%8B%A0%ED%95%9C%ED%8E%98%EC%9D%B4%ED%8C%90/id572462317";
|
|
1151
|
-
} else if([
|
|
1039
|
+
} else if([sUrl hasPrefix: @"kb-acp"]) {
|
|
1152
1040
|
itunesUrl = @"https://apps.apple.com/kr/app/kb-pay/id695436326";
|
|
1153
|
-
} else if([
|
|
1041
|
+
} else if([sUrl hasPrefix: @"liivbank"]) {
|
|
1042
|
+
itunesUrl = @"https://apps.apple.com/kr/app/%EB%A6%AC%EB%B8%8C/id1126232922";
|
|
1043
|
+
} else if([sUrl hasPrefix: @"mpocket.online.ansimclick"] || [sUrl hasPrefix: @"ansimclickscard"] || [sUrl hasPrefix: @"ansimclickipcollect"] || [sUrl hasPrefix: @"samsungpay"] || [sUrl hasPrefix: @"scardcertiapp"]) {
|
|
1154
1044
|
itunesUrl = @"https://apps.apple.com/kr/app/%EC%82%BC%EC%84%B1%EC%B9%B4%EB%93%9C/id535125356";
|
|
1155
|
-
} else if([
|
|
1045
|
+
} else if([sUrl hasPrefix: @"lottesmartpay"]) {
|
|
1156
1046
|
itunesUrl = @"https://apps.apple.com/us/app/%EB%A1%AF%EB%8D%B0%EC%B9%B4%EB%93%9C-%EC%95%B1%EC%B9%B4%EB%93%9C/id688047200";
|
|
1157
|
-
} else if([
|
|
1158
|
-
itunesUrl = @"https://apps.apple.com/
|
|
1159
|
-
} else if([
|
|
1160
|
-
itunesUrl = @"https://apps.apple.com/kr/app/%
|
|
1161
|
-
} else if([
|
|
1047
|
+
} else if([sUrl hasPrefix: @"lotteappcard"]) {
|
|
1048
|
+
itunesUrl = @"https://apps.apple.com/kr/app/%EB%94%94%EC%A7%80%EB%A1%9C%EC%B9%B4-%EB%A1%AF%EB%8D%B0%EC%B9%B4%EB%93%9C/id688047200";
|
|
1049
|
+
} else if([sUrl hasPrefix: @"newsmartpib"]) {
|
|
1050
|
+
itunesUrl = @"https://apps.apple.com/kr/app/%EC%9A%B0%EB%A6%AC-won-%EB%B1%85%ED%82%B9/id1470181651";
|
|
1051
|
+
} else if([sUrl hasPrefix: @"com.wooricard.wcard"]) {
|
|
1052
|
+
itunesUrl = @"https://apps.apple.com/kr/app/%EC%9A%B0%EB%A6%ACwon%EC%B9%B4%EB%93%9C/id1499598869";
|
|
1053
|
+
} else if([sUrl hasPrefix: @"citispay"] || [sUrl hasPrefix: @"citicardappkr"] || [sUrl hasPrefix: @"citimobileapp"]) {
|
|
1054
|
+
itunesUrl = @"https://apps.apple.com/kr/app/%EC%94%A8%ED%8B%B0%EB%AA%A8%EB%B0%94%EC%9D%BC/id1179759666";
|
|
1055
|
+
} else if([sUrl hasPrefix: @"shinsegaeeasypayment"]) {
|
|
1056
|
+
itunesUrl = @"https://apps.apple.com/kr/app/ssgpay/id666237916";
|
|
1057
|
+
} else if([sUrl hasPrefix: @"cloudpay"]) {
|
|
1058
|
+
itunesUrl = @"https://apps.apple.com/kr/app/%ED%95%98%EB%82%98%EC%B9%B4%EB%93%9C-%EC%9B%90%ED%81%90%ED%8E%98%EC%9D%B4/id847268987";
|
|
1059
|
+
} else if([sUrl hasPrefix: @"hanawalletmembers"]) {
|
|
1060
|
+
itunesUrl = @"https://apps.apple.com/kr/app/n-wallet/id492190784";
|
|
1061
|
+
} else if([sUrl hasPrefix: @"nhappvardansimclick"]) {
|
|
1162
1062
|
itunesUrl = @"https://apps.apple.com/kr/app/%EC%98%AC%EC%9B%90%ED%8E%98%EC%9D%B4-nh%EC%95%B1%EC%B9%B4%EB%93%9C/id1177889176";
|
|
1163
|
-
} else if([
|
|
1063
|
+
} else if([sUrl hasPrefix: @"nhallonepayansimclick"] || [sUrl hasPrefix: @"nhappcardansimclick"] || [sUrl hasPrefix: @"nhallonepayansimclick"] || [sUrl hasPrefix: @"nonghyupcardansimclick"]) {
|
|
1164
1064
|
itunesUrl = @"https://apps.apple.com/kr/app/%EC%98%AC%EC%9B%90%ED%8E%98%EC%9D%B4-nh%EC%95%B1%EC%B9%B4%EB%93%9C/id1177889176";
|
|
1165
|
-
} else if([
|
|
1166
|
-
itunesUrl = @"https://apps.apple.com/kr/app
|
|
1167
|
-
} else if([
|
|
1168
|
-
itunesUrl = @"https://apps.apple.com/kr/app/
|
|
1169
|
-
} else if([
|
|
1065
|
+
} else if([sUrl hasPrefix: @"payco"]) {
|
|
1066
|
+
itunesUrl = @"https://apps.apple.com/kr/app/payco/id924292102";
|
|
1067
|
+
} else if([sUrl hasPrefix: @"lpayapp"] || [sUrl hasPrefix: @"lmslpay"]) {
|
|
1068
|
+
itunesUrl = @"https://apps.apple.com/kr/app/l-point-with-l-pay/id473250588";
|
|
1069
|
+
} else if([sUrl hasPrefix: @"naversearchapp"]) {
|
|
1170
1070
|
itunesUrl = @"https://apps.apple.com/kr/app/%EB%84%A4%EC%9D%B4%EB%B2%84-naver/id393499958";
|
|
1071
|
+
} else if([sUrl hasPrefix: @"tauthlink"]) {
|
|
1072
|
+
itunesUrl = @"https://apps.apple.com/kr/app/pass-by-skt/id1141258007";
|
|
1073
|
+
} else if([sUrl hasPrefix: @"uplusauth"] || [sUrl hasPrefix: @"upluscorporation"] ) {
|
|
1074
|
+
itunesUrl = @"https://apps.apple.com/kr/app/pass-by-u/id1147394645";
|
|
1075
|
+
} else if([sUrl hasPrefix: @"ktauthexternalcall"]) {
|
|
1076
|
+
itunesUrl = @"https://apps.apple.com/kr/app/pass-by-kt/id1134371550";
|
|
1077
|
+
} else if([sUrl hasPrefix: @"supertoss"]) {
|
|
1078
|
+
itunesUrl = @"https://apps.apple.com/kr/app/%ED%86%A0%EC%8A%A4/id839333328";
|
|
1079
|
+
} else if([sUrl hasPrefix: @"kakaotalk"]) {
|
|
1080
|
+
itunesUrl = @"https://apps.apple.com/kr/app/kakaotalk/id362057947";
|
|
1081
|
+
} else if([sUrl hasPrefix: @"chaipayment"]) {
|
|
1082
|
+
itunesUrl = @"https://apps.apple.com/kr/app/%EC%B0%A8%EC%9D%B4/id1459979272";
|
|
1083
|
+
} else if([sUrl hasPrefix: @"ukbanksmartbanknonloginpay"]) {
|
|
1084
|
+
itunesUrl = @"https://itunes.apple.com/kr/developer/%EC%BC%80%EC%9D%B4%EB%B1%85%ED%81%AC/id1178872626?mt=8";
|
|
1171
1085
|
}
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
- (void) startAppToApp:(NSURL*)url {
|
|
1179
|
-
UIApplication *application = [UIApplication sharedApplication];
|
|
1180
|
-
if (@available(iOS 10.0, *)) {
|
|
1181
|
-
[application openURL:url options:@{} completionHandler:nil];
|
|
1182
|
-
} else {
|
|
1183
|
-
[application openURL:url];
|
|
1184
|
-
}
|
|
1185
|
-
}
|
|
1186
|
-
|
|
1187
|
-
- (void) openAppURL:(WKNavigationAction *)navigationAction {
|
|
1188
|
-
if (@available(iOS 10.0, *)) {
|
|
1189
|
-
[[UIApplication sharedApplication] openURL:navigationAction.request.URL options:@{} completionHandler:^(BOOL success) {}];
|
|
1190
|
-
} else {
|
|
1191
|
-
[[UIApplication sharedApplication] openURL:navigationAction.request.URL];
|
|
1086
|
+
|
|
1087
|
+
if(itunesUrl.length > 0) {
|
|
1088
|
+
NSURL *appstore = [NSURL URLWithString: itunesUrl];
|
|
1089
|
+
[self startAppToApp: appstore];
|
|
1192
1090
|
}
|
|
1193
1091
|
}
|
|
1194
1092
|
|
|
1195
|
-
- (
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
} else {
|
|
1199
|
-
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
|
|
1200
|
-
}
|
|
1093
|
+
- (BOOL) isItunesURL:(NSString*) urlString {
|
|
1094
|
+
NSRange match = [urlString rangeOfString: @"itunes.apple.com"];
|
|
1095
|
+
return match.location != NSNotFound;
|
|
1201
1096
|
}
|
|
1202
1097
|
|
|
1203
1098
|
|
|
1204
|
-
|
|
1205
|
-
- (void) navigationOriginRN:(WKWebView *)webView
|
|
1099
|
+
- (void) navigationOriginRN:(WKWebView *)webView
|
|
1206
1100
|
decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction
|
|
1207
1101
|
decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
|
|
1208
1102
|
{
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
if (_onShouldStartLoadWithRequest) {
|
|
1228
|
-
NSMutableDictionary<NSString *, id> *event = [self baseEvent];
|
|
1229
|
-
[event addEntriesFromDictionary: @{
|
|
1230
|
-
@"url": (request.URL).absoluteString,
|
|
1231
|
-
@"mainDocumentURL": (request.mainDocumentURL).absoluteString,
|
|
1232
|
-
@"navigationType": navigationTypes[@(navigationType)],
|
|
1233
|
-
@"isTopFrame": @(isTopFrame)
|
|
1234
|
-
}];
|
|
1235
|
-
if (![self.delegate webView:self
|
|
1236
|
-
shouldStartLoadForRequest:event
|
|
1237
|
-
withCallback:_onShouldStartLoadWithRequest]) {
|
|
1238
|
-
decisionHandler(WKNavigationActionPolicyCancel);
|
|
1239
|
-
return;
|
|
1240
|
-
}
|
|
1241
|
-
}
|
|
1103
|
+
static NSDictionary<NSNumber *, NSString *> *navigationTypes;
|
|
1104
|
+
static dispatch_once_t onceToken;
|
|
1105
|
+
|
|
1106
|
+
dispatch_once(&onceToken, ^{
|
|
1107
|
+
navigationTypes = @{
|
|
1108
|
+
@(WKNavigationTypeLinkActivated): @"click",
|
|
1109
|
+
@(WKNavigationTypeFormSubmitted): @"formsubmit",
|
|
1110
|
+
@(WKNavigationTypeBackForward): @"backforward",
|
|
1111
|
+
@(WKNavigationTypeReload): @"reload",
|
|
1112
|
+
@(WKNavigationTypeFormResubmitted): @"formresubmit",
|
|
1113
|
+
@(WKNavigationTypeOther): @"other",
|
|
1114
|
+
};
|
|
1115
|
+
});
|
|
1116
|
+
|
|
1117
|
+
WKNavigationType navigationType = navigationAction.navigationType;
|
|
1118
|
+
NSURLRequest *request = navigationAction.request;
|
|
1119
|
+
BOOL isTopFrame = [request.URL isEqual:request.mainDocumentURL];
|
|
1242
1120
|
|
|
1243
|
-
|
|
1244
|
-
// We have this check to filter out iframe requests and whatnot
|
|
1245
|
-
if (isTopFrame) {
|
|
1121
|
+
if (_onShouldStartLoadWithRequest) {
|
|
1246
1122
|
NSMutableDictionary<NSString *, id> *event = [self baseEvent];
|
|
1247
1123
|
[event addEntriesFromDictionary: @{
|
|
1248
1124
|
@"url": (request.URL).absoluteString,
|
|
1249
|
-
@"
|
|
1125
|
+
@"mainDocumentURL": (request.mainDocumentURL).absoluteString,
|
|
1126
|
+
@"navigationType": navigationTypes[@(navigationType)],
|
|
1127
|
+
@"isTopFrame": @(isTopFrame)
|
|
1250
1128
|
}];
|
|
1251
|
-
|
|
1129
|
+
if (![self.delegate webView:self
|
|
1130
|
+
shouldStartLoadForRequest:event
|
|
1131
|
+
withCallback:_onShouldStartLoadWithRequest]) {
|
|
1132
|
+
decisionHandler(WKNavigationActionPolicyCancel);
|
|
1133
|
+
return;
|
|
1134
|
+
}
|
|
1252
1135
|
}
|
|
1253
|
-
}
|
|
1254
1136
|
|
|
1255
|
-
|
|
1256
|
-
|
|
1137
|
+
if (_onLoadingStart) {
|
|
1138
|
+
// We have this check to filter out iframe requests and whatnot
|
|
1139
|
+
if (isTopFrame) {
|
|
1140
|
+
NSMutableDictionary<NSString *, id> *event = [self baseEvent];
|
|
1141
|
+
[event addEntriesFromDictionary: @{
|
|
1142
|
+
@"url": (request.URL).absoluteString,
|
|
1143
|
+
@"navigationType": navigationTypes[@(navigationType)]
|
|
1144
|
+
}];
|
|
1145
|
+
_onLoadingStart(event);
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
// Allow all navigation by default
|
|
1150
|
+
decisionHandler(WKNavigationActionPolicyAllow);
|
|
1257
1151
|
}
|
|
1258
1152
|
|
|
1259
1153
|
/**
|
|
@@ -1406,15 +1300,6 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
1406
1300
|
- (void)webView:(WKWebView *)webView
|
|
1407
1301
|
didFinishNavigation:(WKNavigation *)navigation
|
|
1408
1302
|
{
|
|
1409
|
-
if(_sharedCookiesEnabled && @available(iOS 11.0, *)) {
|
|
1410
|
-
// Write all cookies from WKWebView back to sharedHTTPCookieStorage
|
|
1411
|
-
[webView.configuration.websiteDataStore.httpCookieStore getAllCookies:^(NSArray* cookies) {
|
|
1412
|
-
for (NSHTTPCookie *cookie in cookies) {
|
|
1413
|
-
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
|
|
1414
|
-
}
|
|
1415
|
-
}];
|
|
1416
|
-
}
|
|
1417
|
-
|
|
1418
1303
|
if (_ignoreSilentHardwareSwitch) {
|
|
1419
1304
|
[self forceIgnoreSilentHardwareSwitch:true];
|
|
1420
1305
|
}
|
|
@@ -1448,6 +1333,7 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
1448
1333
|
*/
|
|
1449
1334
|
NSURLRequest *request = [self requestForSource:self.source];
|
|
1450
1335
|
|
|
1336
|
+
|
|
1451
1337
|
if (request.URL && !_webView.URL.absoluteString.length) {
|
|
1452
1338
|
[_webView loadRequest:request];
|
|
1453
1339
|
} else {
|
|
@@ -1560,33 +1446,6 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
1560
1446
|
}
|
|
1561
1447
|
}
|
|
1562
1448
|
|
|
1563
|
-
- (void)writeCookiesToWebView:(NSArray<NSHTTPCookie *>*)cookies completion:(void (^)(void))completion {
|
|
1564
|
-
// The required cookie APIs only became available on iOS 11
|
|
1565
|
-
if(_sharedCookiesEnabled && @available(iOS 11.0, *)) {
|
|
1566
|
-
dispatch_async(dispatch_get_main_queue(), ^{
|
|
1567
|
-
dispatch_group_t group = dispatch_group_create();
|
|
1568
|
-
for (NSHTTPCookie *cookie in cookies) {
|
|
1569
|
-
dispatch_group_enter(group);
|
|
1570
|
-
[_webView.configuration.websiteDataStore.httpCookieStore setCookie:cookie completionHandler:^{
|
|
1571
|
-
dispatch_group_leave(group);
|
|
1572
|
-
}];
|
|
1573
|
-
}
|
|
1574
|
-
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
|
|
1575
|
-
if (completion) {
|
|
1576
|
-
completion();
|
|
1577
|
-
}
|
|
1578
|
-
});
|
|
1579
|
-
});
|
|
1580
|
-
} else if (completion) {
|
|
1581
|
-
completion();
|
|
1582
|
-
}
|
|
1583
|
-
}
|
|
1584
|
-
|
|
1585
|
-
- (void)syncCookiesToWebView:(void (^)(void))completion {
|
|
1586
|
-
NSArray<NSHTTPCookie *> *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
|
|
1587
|
-
[self writeCookiesToWebView:cookies completion:completion];
|
|
1588
|
-
}
|
|
1589
|
-
|
|
1590
1449
|
- (void)resetupScripts:(WKWebViewConfiguration *)wkWebViewConfig {
|
|
1591
1450
|
[wkWebViewConfig.userContentController removeAllUserScripts];
|
|
1592
1451
|
[wkWebViewConfig.userContentController removeScriptMessageHandlerForName:MessageHandlerName];
|
|
@@ -1631,7 +1490,9 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
|
|
|
1631
1490
|
if(!_incognito && !_cacheEnabled) {
|
|
1632
1491
|
wkWebViewConfig.websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
|
|
1633
1492
|
}
|
|
1634
|
-
[
|
|
1493
|
+
for (NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
|
|
1494
|
+
[wkWebViewConfig.websiteDataStore.httpCookieStore setCookie:cookie completionHandler:nil];
|
|
1495
|
+
}
|
|
1635
1496
|
} else {
|
|
1636
1497
|
NSMutableString *script = [NSMutableString string];
|
|
1637
1498
|
|