Commit Graph

65 Commits

Author SHA1 Message Date
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
Harry Yu 5cc3c965ed chore(docs): Fixed broken link in Custom-Android.md (#676)
"Native UI Components" needs to link to the main React Native site, not within this repo.
2019-08-29 17:18:11 +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
Raphael Eidus 9c592d621c feat(android): polyfill applicationNameForUserAgent on Android (#707) 2019-08-02 10:46:03 +02:00
Thibault Malbranche 2333e45208
chore(docs): clarify install steps 2019-08-02 10:45:00 +02:00
José Luis Pereira 25bc5a55c6 feat(android props): Add incognito to Android (#524) 2019-08-02 09:48:54 +02:00
Ian Ownbey d6044c2b5d fix(install guide): Add pod install step to getting started guide (#678) 2019-07-02 17:45:34 +02:00
BettyJJ 1e809932ff chore(types): Update Reference.md (#687)
added doc for the `textZoom` property
2019-07-02 17:38:00 +02: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
Tijs Teulings a863c6557f chore(docs): Added additional note to `source` parameter (#621)
Added a note about the baseUrl usage since this has been the cause of some filed issues e.g. https://github.com/react-native-community/react-native-webview/issues/526#issuecomment-498067637
2019-06-04 16:46:27 +02:00
A C SREEDHAR REDDY fab6008dd1 chore(docs): npm install instructions to docs (#616 by @a-c-sreedhar-reddy)
[skip ci]
2019-06-01 21:06:31 -07:00
Penar Musaraj 4dc4b89e64 feat(iOS WkWebview): Add applicationNameForUserAgent support (#506) 2019-05-21 00:01:22 +02:00
Thibault Malbranche 7db138c0e5
chore(docs): getting started update 2019-05-20 10:25:52 +02:00
Thibault Malbranche 585ac7a243
fix(AndroidX support): Fixed broken import + added instructions (#583)
Hello, in order to use react-native-webview > 6.0.2 please make your android/gradle.properties contains:
```
android.useAndroidX=true
android.enableJetifier=true
```
This enables AndroidX libraries which are the new standard.

fixes #580 
fixes #581 
fixes #582
2019-05-20 00:36:51 +02:00
Malcolm Scruggs a0daff92c0 chore(docs): Create example for injectedJavaScript (#571) 2019-05-17 00:24:18 +02:00
Daniel Vicory d72c2ae144 feat(fullscreen videos): Support fullscreen video on Android (#325)
* Extract WebChromeClient from an anonymous class

* Support fullscreen videos on Android

Forces landscape mode while playing.

* Use sticky immersive mode for fullscreen videos

No longer forces landscape mode as that is a problem for portrait videos - allow
the user to rotate as necessary.

Only supports KitKat or greater, and falls back to leaving the status and navigation
bars visible for lower than KitKat. This is the easiest way to prevent issues with
resizing the video during playback.

Also implement a lifecyle event listener which means if a user backgrounds the app
or locks the screen with the video fullscreen, the UI visibility is re-applied.

* Add allowsFullscreenVideo prop to control whether videos can be fullscreen on Android

Luckily, we're able to change the WebChromeClient on demand in response to prop changes
without seeming to do any harm. If you switch to disallow fullscreen, it will attempt
to close the currently fullscreened video (if there is one) so users aren't stuck.

I did notice a bug that if you go from fullscreen allowed, to fullscreen disallowed,
the fullscreen button will remain on the video. Tapping the button will have no effect.
2019-05-17 00:22:08 +02:00
Jamon Holmgren c0332ec607 chore(docs): Adds guide for intercepting hash URL changes (#555) 2019-05-13 09:42:25 +02:00
Eric Lewis 455c30e000 feat(WKWebView): Allow focus without user interaction (#540)
* [iOS] Allow focus without user interaction

* Add documentation for keyboardDisplayRequiresUserAction

* set keyboardDisplayRequiresUserAction default to true
2019-04-29 17:46:07 +02:00
SebiVPS cdbfc19cd2 feat(iOS cookies): implement sharedCookiesEnabled prop for iOS RNCWKWebView (#175)
We had the problem on iOS WebViews that local cookies (stored in local HTTPCookieStorage, set with  [react-native-cookie](https://github.com/shimohq/react-native-cookie) ) were not added in loadRequests. On Android the local stored cookies were sent like expected.
This kinda "hacky" solution is the only way we found, that works for us.
The stack overview link is in the code below.
If someone finds a better solution we would very much like to accept that.
2019-04-15 10:19:10 +02:00
Malcolm Scruggs ee3a7c4d34 chore(docs): Remove duplicate example of onShouldStartLoadWithRequest (#479) 2019-04-05 00:41:45 +02:00
Thibault Malbranche 15ae93428f
Update Contributing.md 2019-03-20 12:58:43 +00:00
Thibault Malbranche 453b7dd3a0
feat(typescript): Source code rewrite using typescript (#425)
Rewrote the whole repository into typescript. This will provide way better and up to date documentation. This should also add some safety for people contributing 😄 .
Flow types were not working until now which is why this PR doesn't have them but feel free to PR.

This also fixes #384 #435 #206 #171 #168.
2019-03-20 12:35:13 +00:00
Jian Wei 08cc600eb8 feat(WKWebView): add prop `directionalLockEnabled` for iOS (#389) 2019-03-07 10:27:29 +01:00
Andrei Pfeiffer ff32e34eb5 chore(docs): Add multiple file upload selection in the docs (#382) 2019-03-07 10:13:22 +01:00
Jamon Holmgren 2260690810 chore(docs): Added guides for communication between React Native and web pages (#377)
* Added guides for communication between React Native and web pages

* Updated Guide a bit
2019-03-03 01:32:42 +01:00
Malcolm Scruggs 34b98de0bd chore(docs): Add API Examples in reference documentation (#329)
* Add reference examples for:
- onError
- onNavigationStateChange
- originWhiteList
- renderError
- renderLoading
- onShouldStartLoadWithRequest

* Update to use jsx as code
Add properties of objects passed into methods

* Add examples for:
- onLoad
- onLoadEnd
- onLoadStart
- onLoadProgress
- style

* Add object descriptions, fix style issues, and remove onShouldStartLoad example

Object Descriptions for:
- onLoad
- onLoadEnd
- onLoadStart
- onLoadProgress

* Update Reference.md
2019-03-01 01:36:56 +01:00
Jamon Holmgren d28071cf52 chore(docs): Adds example for onShouldStartLoadWithRequest (#321)
Per #320, this adds an example for onShouldStartLoadWithRequest.
2019-03-01 01:27:17 +01:00
Jamon Holmgren 4ad7036733 chore(docs): Adds guide for handling navigation state changes (#144)
* Adds guide for handling navigation state changes

* Update Guide.md
2019-03-01 01:21:01 +01:00
Thibault Malbranche b150f987ea
Update Getting-Started.md 2019-03-01 00:26:28 +01:00
Andrei Pfeiffer 8217cb5503 chore(docs): Update Reference.md (#359)
I was able to fix a bug with videos loaded from Azure that wouldn't start unless I set that prop to `false`
2019-02-28 22:10:47 +01:00
Chet Corcos 0e6e92a7f1 fix(WKWebview Scroll): Don't allow the scrollView to scroll when `scrollEnabled={false}`. (#158)
* Don't allow the scrollview to scroll the WebView body.

* Readme comment

* Remove duplicate protocol def
2019-02-28 22:01:42 +01:00
Julien Eluard b1cbf077e0 chore(docs): Custom Android: Reflect migration to react-native-webview project (#347)
Doc is now up-to-date with latest `react-native-webview` changes
2019-02-15 11:56:55 +01:00
Jordan Sexton 92c20581ae feat(toggle scroll bar): added new props showsVerticalScrollIndicator / showsHorizontalScrollIndicator (#250) 2019-02-12 14:47:24 +01:00
Maosen Jason Hu fc5fd242e2 feat(wkwebview): create api to allow clients to present a client credential for authentication (#141)
* In order for TLS Mutual Auth to work for webviews, the caller must present a credential. Expose a setter that can be called to set a credential.
2019-02-12 10:35:14 +01:00
Momazo7u7 80efc3155c chore(docs): Deleted onShouldStartLoadWithRequest platform reference (#317)
* Deleted onShouldStartLoadWithRequest platform reference

according to b1b662628e it's supported on android and Ios so  no platfor reference is needed

* Deleted onShouldStartLoadWithRequest platform reference 

Now with added note
2019-02-08 12:31:17 +01:00
Malcolm Scruggs fb78d13120 fix(webviewShared.js): Support all valid URI schemes and add testing (#293)
* Change origin whitelist to allow for all valid URIs

- Now supports +, -, and .
- Prevent whitelist from matching when preceded by unwanted characters
- URI must begin with letter
- URI Scheme syntax: https://tools.ietf.org/html/rfc3986#section-3.1

* Add jest testing framework and run it on CI

* Add tests for WebViewShared's createOnShouldStartLoadWithRequest
2019-02-03 19:45:58 +01:00
Thibault Malbranche d5fc028383 fix(PostMessage): Renamed ReactNativeWebview to ReactNativeWebView
fixes #304
2019-02-01 22:04:11 +01:00
Thibault Malbranche e4b851e01a
Update Reference.md 2019-02-01 19:14:07 +01:00
Thibault Malbranche f3bdab5a22
feat(Android/iOS postMessage): refactoring the old postMessage implementation (#303)
fixes #29
fixes #272
fixes #221
fixes #105
fixes #66

BREAKING CHANGE: Communication from webview to react-native has been completely rewritten. React-native-webview will not use or override window.postMessage anymore. Reasons behind these changes can be found throughout so many issues that it made sense to go that way.

Instead of using window.postMessage(data, *), please now use window.ReactNativeWebView.postMessage(data).

Side note: if you wish to keep compatibility with the old version when you upgrade, you can use the injectedJavascript prop to do that:

const injectedJavascript = `(function() {
  window.postMessage = function(data) {
    window.ReactNativeWebView.postMessage(data);
  };
})()`;

Huge thanks to @jordansexton and @KoenLav!
2019-02-01 18:37:28 +01:00
Thibault Malbranche bf3f790358
chore(readme): Updated linking steps 2019-01-31 16:32:14 +01:00
Michael Diarmid 83ce79ff89 feat(iOS/Android): Add `cacheEnabled` prop (#152)
Added a new cacheEnabled prop to toggle Android & iOS webview caching behavior.

BREAKING CHANGE:  This change makes caching enabled by default when previously there was no caching behavior which may cause unexpected behaviour changes in your existing implementations.
2019-01-30 10:32:46 +01:00
Margaret d3fc5e6cde feat(android props): Add `androidHardwareAccelerationDisabled` prop (#265)
* add test code for disable hardware acceleration

* add interface to disable android hardware acceleration

* Update index.d.ts
2019-01-22 10:21:10 +01:00
Roy Zheng 245120df0c Fix typo in Reference.md (#252) 2019-01-18 02:26:20 +01:00
José Luis Pereira 62f871c186 feat(WKWebview): Add incognito prop to iOS WKWebview
Allows the webview to be opened with an ephemeral data storage.
2019-01-11 14:59:03 +01:00
Scott Mathson 2114a9b327 feat(Android Webview): Add file download support for Android (#203)
Addresses #80.

Caveat: I am not an Android developer. This code comes from a fork of the original RN WebView that we have been using in production for some time, so all credit goes to @Oblongmana: https://github.com/Oblongmana/react-native-webview-file-upload-android.

Setting up a DownloadManager for the WebView is pretty straightforward, as is adding any known cookies to the request. Most of the complication comes from the requirement after SDK 23 to ask the user for the WRITE_EXTERNAL_STORAGE permission. Unfortunately there is no mechanism to suspend the download request until permission is resolved so this code stores off the request and sets up a listener that enqueues the download once permissions are resolved so the user experience is really nice.

I didn't see anything in the way of tests or documentation that needs to be added for this change, so let me know if I missed anything. Thanks!
2019-01-07 15:02:47 +01:00
Chi-AnTai 8427a8db69 chore(docs): Add update style doc (#225)
* add style doc in reference.md

* Update Reference.md
2019-01-07 14:56:48 +01:00
Ryan Linton ec469cf00d fix(WKWebview): Surface evaluateJavaScript errors (#179)
In the current code using `startInLoadingState` and `injectedJavaScript` will result in an infinite loading state if `injectedJavaScript` fails to evaluate for some reason. This adds a red box error explaining there was a failure to evaluate javascript. In my case this was do to the JS string not returning a valid type so I've added a that as a potential solution in the error message and added some documentation to the API Reference with some additional warnings.

To reproduce the existing behavior setup a webview with `startInLoadingState` and `injectedJavaScript` that returns an invalid type (in my case it returned a function). You should see an infinite loading state as `onLoadEnd` is never called.

Try the same with this branch and you'll get a nice red box error suggesting one potential solution to the problem.

![simulator screen shot - iphone 8 plus - 2018-11-28 at 15 09 25](https://user-images.githubusercontent.com/1944151/49193714-fccde100-f334-11e8-89dc-bf220e0adf23.png)
2018-12-14 11:24:52 +01:00
Jermaine Oosterling 731dd03fc6 feat(WKWebView): [ios] Add allowsLinkPreview property to WKWebView (#170)
* [ios] Add ‘allowsLinkPreview’ property to iOS WKWebView.

* Add divider in docs

* Typo: add hyphen -> _allowsLinkPreview
2018-11-25 11:17:28 +01:00
wiscat 4870e1f06a feat(WKWebview): [ios] Add 'pagingEnabled' property to the iOS WKWebview (#165) 2018-11-22 13:58:07 +01:00