64 Commits
Author SHA1 Message Date
Roman Volosovskyi e2cf5fdc76 Don't allow camera and mic permissions by default.
Notify user about permission request
2020-10-08 17:15:34 +03:00
22a60fd23a feat(iOS): Add prop autoManageStatusBarEnabled (#914)
Co-authored-by: Jamon Holmgren <jamon@infinite.red>
Co-authored-by: Jamon Holmgren <jamonholmgren@gmail.com>
Co-authored-by: Thibault Malbranche <thibault.malbranche@epitech.eu>
2020-09-15 02:42:09 +02:00
Daniel Vicory 4d4b5e2387 Synchronously decide if Android WebView should load a URL or not. (#1590)
This solves a class of issues when the WebView loses "context"
that a subsequent page load is the same as what was attempted
to be loaded previously. This solves a bug where a HTTP redirect
in combination with history manipulations causes a user to be
stuck and prevented from going back. Since WebView requests are
allowed to happen normally, debugging the WebView and tracking
redirects and page load initiators is more accurate and easier.
This will also bypass bridge latency and provide a faster navigation.

To do this, we must lock in the shouldOverrideUrlLoading callback
and send an event to JS. Currently, this callback is ran on
the main UI thread, of which we have no control over. This is
problematic as using the bridge in most ways seems to require
the main UI thread, which will cause a deadlock. However, using
BatchedBridge for Java->JS and a synchronous method for JS->Java
doesn't cause any problems. Additionally, it's been designed so
that if WebView suddenly runs the callback on a different thread
allowing for concurrency, it will continue to work.
2020-08-26 08:59:51 +02:00
Caleb ClarkeandJamon Holmgren a48c9819c5 fix(ts): Convert ContentInsetAdjustmentBehavior from an enum back to a string union type (#1536)
ContentInsetAdjustmentBehavior was originally added as a string union type. The change to support MacOS replaced it with an enum, which was a bit of a breaking change, especially as the enum was not exported from the main library. Exporting the enum would probably also help, but since this was the only enum and the rest of react-native-webview uses string unions instead, it seems best to revert it to a string union.

Co-authored-by: Jamon Holmgren <jamonholmgren@gmail.com>
2020-08-26 01:16:18 +02:00
oliviacaraimanandOlivia Caraiman 9ffca8f9db feat(android): Add androidLayerType as prop (#1588)
* Add androidLayerType as a prop

* Deprecate "androidHardwareAccelerationDisabled" prop

* Update reference

Co-authored-by: Olivia Caraiman <olcaraim@microsoft.com>
2020-08-24 14:23:38 +02:00
Sergei Butko a02d88f54f feat(iOS): Add the pull to refresh (#1265)
* Add pull to refresh support for iOS

* Add pull to refresh control removal from WebView

* Add the type and reference description about pull to refresh

* Set bounces to true when enabling pull to refresh, add references

* Add the back to props anchor to pullToRefreshEnabled
2020-08-17 12:07:36 +02:00
Caleb ClarkeandJamon Holmgren 6a9116f2d1 feat(events): Add isTopFrame to shouldStartLoadForRequest (#1537)
* Add isTopFrame to shouldStartLoadForRequest on iOS

onLoadingStart is not raised for inner frames, but onShouldStartLoadWithRequest still is. This keeps that behavior but adds isTopFrame to onShouldStartLoadWithRequest so that apps can perform their own filtering if desired.

* Update docs

Co-authored-by: Jamon Holmgren <jamonholmgren@gmail.com>
2020-08-15 11:21:38 +02:00
Caleb ClarkeandJamon Holmgren 8b69452643 feat(ios): Add iOS contentMode property (#1538 by @TheAlmightyBob)
This allows overriding iPadOS 13's desktop-class browsing to load mobile content instead of desktop content.

Co-authored-by: Jamon Holmgren <jamonholmgren@gmail.com>
2020-08-14 20:16:54 -07:00
cristianoccazinspandCristiano Coelho 8a8b7ceb98 feat(android): WebView crash handling (#1480)
Co-authored-by: Cristiano Coelho <cristianocca@hotmail.com>
2020-08-06 22:21:01 +02:00
Caleb Clarke 91295e5258 fix(types): Add missing applicationNameForUserAgent type in WebViewSharedProps (#1542) 2020-07-29 17:00:28 +02:00
trcoffman b0ac0c15be chore(windows): Add a .gitattributes to fix line endings across myriad files. (#1431 by @trcoffman)
[skip ci]
2020-06-16 11:53:22 -07:00
Salvatore Randazzo ac4e05e0f2 feat(android): Add support for injectedJavaScriptBeforeContentLoaded on Android (#1099 by @SRandazzo and @ @shirakaba) 2020-06-13 13:54:48 -07:00
Kai Guo e402e739ea fix(windows): Add postMessage for Windows WebView (#1263 by @kaiguo) 2020-05-29 13:19:11 -07:00
trcoffman 91df544fae feat(webview): Allow javascript to open windows automatically (#1409 by @trcoffman)
[skip ci]
2020-05-28 09:54:20 -07:00
228f10d917 feat(compatibility): Support React Native 0.62 (#1364 by @jussikinnula and @kaiguo)
Co-authored-by: Kai Guo <kaigu@microsoft.com>
Co-authored-by: Jamon Holmgren <jamonholmgren@gmail.com>
2020-05-26 20:55:02 -07:00
trcoffman a6010d93e0 feat(iOS): Add onFileDownload callback (#1214)
`onFileDownload` is called with the URL that you can use to download the file.
When RNCWebView detects that the HTTP response should result in a file download,
`onFileDownload` is called. The client can then provide code to download
the file.

RNCWebView determines that a file download should take place if either of the
following is true:
1. The HTTP response contains a `Content-Disposition` header that is of type
  'attachment'
2. The MIME type of the response cannot be rendered by the iOS WebView
2020-04-29 09:09:22 -07:00
Artur Yorsh 438e29298b fix(Android): Resolve crypto error with uuid usage (#1334)
* fix(Android): uuid generation issue

* chore: remove redundant types/uuid dependency

* refactor(Android): replace uuid function with unique instance counter
2020-04-21 07:41:25 -07:00
ivari 04f9fb23ba fix(Android): Ensure each mounted WebView binds their personal onMessage handler (#1301)
* Ensure each mounted WebView binds their personal onMessage handler

* Changed unique ref generation to uuid

Uses `uuid` npm package.
Dashes are removed from the ref for sanity.
2020-04-09 08:05:44 -07:00
ivari c88e380762 feat(Android): Implement direct communication between Android code and JS (#1203) 2020-04-06 10:25:28 -07:00
Giovanni MontenegroandGiovanni Montenegro 3c06d78239 fix(types): Remove readonly definition in WebViewTypes.ts (#1272)
Co-authored-by: Giovanni Montenegro <giovanni.montenegro@fincons.com>
2020-03-27 08:33:14 -07:00
Jamie Birch 9cb2f6e2f3 feat(iOS): WKUserScripts (e.g. injectedJavaScript) can now update upon props change; and can be configured to inject into all frames. (#1119)
BREAKING CHANGE: 
• Props updates to `injectedJavaScript` are no longer immutable.

• `injectedJavaScript` no longer attaches a `jsEvaluationValue` property to the `onLoadingFinish` event. Check out: https://github.com/react-native-community/react-native-webview/pull/1119#issuecomment-574919464 to migrate with the same behavior.
2020-03-17 14:01:20 -07:00
Kai Guo ffee0d4362 feat(Windows): Windows support! (#1220) 2020-03-16 19:30:25 -07:00
Tom Underhill 1e572318ec feat(macOS): macOS Support (#1164) 2020-02-12 15:39:11 -08:00
aarondailandJason Safaiyeh 0442126595 fix(whitelisted origins): Prevent handling of un-whitelisted URLs
* Preventing an unhandled promise rejection when: a URL is loaded by the WebView, but the URL isn't in the origin whitelist, so it is handed off to the OS to handle by calling Linking.openURL(), but Linking.openURL has an error.  The code wasn't catching the error, so this would result in an unhandled promise rejection. Now the error is being caught.

* Fixing a problem where a URL is handled to the OS to deal with, via Linking.openURL, and also loaded in the WebView by making those cases mutually exclusive (they weren't previously).  In more detail: when a URL is loaded by the WebView that isn't in the origin whitelist it is handled off to the OS to handle by calling Linking.openURL.  But, if the onShouldStartLoadWithRequest prop is set, then that function would also be called, and then that would determine whether the URL should be loaded.  This can result in a situation where the URL is passed to Linking.openURL and onShouldStartLoadWithRequest returns true so it is also loaded in the WebView.  The client can fix this by duplicating the origin whitelist logic in their onShouldStartLoadWithRequest of course, but this change makes it so they don't have to.

Co-authored-by: Jason Safaiyeh <safaiyeh@protonmail.com>
2020-01-07 17:18:43 -08:00
Salvatore Randazzo 604495e399 feat(iOS): new prop injectedJavaScriptBeforeContentLoaded (#1038)
* Run the injectedJavaScript on DocumentStart for iOS

* Add new prop injectedJavaScriptBeforeContentLoaded
Update types
Update docs

* Self review
2019-12-06 11:15:02 +01:00
Stanislav Shakirov 4a4f4a2c45 feat(android): add clearHistory, clearCache and clearFormData (#450)
* add clearHistory, clearCache and clearFormData android webview api.

* remove pointless `async`

* add docs for new android webview methods

* Update Reference.md

* update commands types

* add more strict type for RNCWebViewUIManager `Commands` property
2019-11-12 10:09:16 +01:00
小米-余乐 05c286fc23 fix(android): crash problem while loading local html resource (#1010) 2019-11-12 10:05:29 +01:00
Jonathan Bones e529fa9006 fix(deps): Fix RNCWebViewUIManager interface typescript error (#… (#928)
* fix(deps): Fix RNCWebViewUIManager interface typescript error (#901)

* fix: Revert indentation changes
2019-10-03 10:10:20 +02:00
Borut Balazek 4db3d84dda feat(android): allowFileAccessFromFileURLs prop added (#831)
* add allowFileAccessFromFileURLs propery to do the expected on android

* Added types

* Update WebViewTypes.ts
2019-09-29 15:50:39 +02:00
Andres Castano 5da59251ce feat(android): Expose cacheMode property (#895) 2019-09-29 15:45:20 +02:00
Marco Marinangeli 902d3d1e7f feat(new prop): containerStyle (#912)
* feat(new prop): containerStyle

* chore(docs): Add documentation for `containerStyle`
2019-09-29 15:43:48 +02:00
Roc 01de9e5fa0 fix(android): renderError - the error status might be overwritte… (#915) 2019-09-29 15:40:12 +02:00
Silver Chen b010e0e04f fix(types): Make onContentProcessDidTerminate optional (#890) 2019-09-23 18:34:02 +02:00
Tyler Alves b296f24dd2 fix(android): redirect and renderLoading issues (#548)
* Filter out extra onLoadProgress calls; add url to onLoadProgress

* remove note about onLoadProgress not having the url property in docs

* fix redirect renderLoading on android by checking that onLoadingFinish and onLoadingStart urls are equal

* add fallback to set viewState to idle when progress is 1
2019-09-23 10:44:26 +02:00
Samuel Sieg a76811da93 feat(iOS): Add callback for webViewWebContentProcessDidTerminate (#774)
* Add callback for WKWebView's onContentProcessDidTerminate

* Add platform information to docs

* Add new WebViewTerminatedEvent type
2019-09-23 10:20:12 +02:00
Jason Chia-Hsien Ho 552472c414 feat(new prop): onHttpError callback (#885) 2019-09-21 02:43:28 +02:00
Cosmo Wolfe 33f1ee384f fix(iOS): Call dispatchViewManagerCommand with correct number of arguments (#886) 2019-09-21 02:40:53 +02:00
Thibault Malbranche 85b921ce64 fix(deps): updated dependancies and types (#847)
* wip

* Update WebViewShared.tsx

* Update config.yml
2019-09-19 11:40:51 +02:00
Thibault Malbranche 8549be5fd0 fix(iOS): UIWebView Removal (#828)
Apple required us to remove this (see #819)

BREAKING CHANGE: UIWebView has been removed
BREAKING CHANGE: useWebkit prop removal
BREAKING CHANGE: scalesPageToFit prop removal on iOS (since it's not compatible with WKWebview)
BREAKING CHANGE: Renamed RNCWKWebView to RNCWebView on iOS
2019-08-30 12:04:32 +02:00
aksmfosef11 a28096bfe7 feat(iOS): add-javaScriptEnabled prop (#592)
* add-javaScriptEnabled-in-IOS

* Update WebViewTypes.ts
2019-08-29 17:09:42 +02:00
Harry Yu 0424dd0801 feat(iOS): Add prop for allowingReadAccessToURL (#771) 2019-08-29 16:53:09 +02:00
aarondail 493b65de21 feat(iOS): added contentInsetAdjustmentBehavior prop
* Adding a `contentInsetAdjustmentBehavior` prop to the WebView for iOS.
This controls the way iOS will automatically adjust the insets when the
webview is behind things like the iPhone X notch.

* Removing the code to explicitly pass contentInsetAdjustmentBehavior to the WebView since it is already passed in otherProps.
2019-08-09 10:55:35 +02:00
DemMarcupan 6f053bad7b feat(focus): Add functionality to imperatively focus webview (#567)
*  - add focus functionality for devices without touch screen
 (faced problem while developing for android TV, cause there only remote controller for device)

* Reimplement as a ref method.

*  - remove redundant requestFocus
2019-08-06 10:56:59 +02:00
Raphael Eidus 9c592d621c feat(android): polyfill applicationNameForUserAgent on Android (#707) 2019-08-02 10:46:03 +02:00
José Luis Pereira 25bc5a55c6 feat(android props): Add incognito to Android (#524) 2019-08-02 09:48:54 +02:00
Erik Engervall 1d649a81c8 chore: Update WebView.tsx (#751 by @erikengervall)
[skip ci]
2019-07-31 15:09:24 -07:00
Penar Musaraj 71d1fcc675 feat(iOS WKWebView): Add mainDocumentURL to onShouldStartLoadWithRequest(#493)
* Pass mainDocumentURL to onShouldStartLoadWithRequest

* Update reference

* Update typescript types

* Update WebViewTypes.ts
2019-06-13 08:59:52 +02:00
Dariusz Niemczyk f8a560ba51 fix(types): android/allowsFullscreenVideo (#590)
Fix missing `allowsFullscreenVideo` prop after https://github.com/react-native-community/react-native-webview/pull/325 got merged.
2019-06-13 08:52:04 +02:00
Penar Musaraj b06be7e136 fix(types): Add missing applicationNameForUserAgent type (#589) 2019-06-02 21:11:51 +02:00
Penar Musaraj d429e82c3a feat(loading): Changed loading/error rendering (#612) 2019-06-02 20:32:22 +02:00