tauri-apps / wry

Cross-platform WebView library in Rust for Tauri.
Apache License 2.0
3.58k stars 268 forks source link

Support for web APIs that require permissions #81

Open nklayman opened 3 years ago

nklayman commented 3 years ago

Is your feature request related to a problem? Please describe. Currently (at least on Linux), doing any action that requires permission (such as geolocation) fails as the permission request is immediately denied.

Describe the solution you'd like There should be a way to specify what permissions the app should have so they are automatically allowed.

Would you assign yourself to implement this feature?

Additional context For linux: https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebView.html#WebKitWebView-permission-request

wusyong commented 3 years ago

We also already enable some permissions required featured like clipboard on Windows already. https://github.com/tauri-apps/wry/blob/dev/src/webview/win32/mod.rs#L154

I couldn't find similar option on mac. And it seems lots of permission related features are not available to WkWebView. Edit: looks like this is an on-going feature to be implemented. Future custom protocol will be treated as secure content. https://bugs.webkit.org/show_bug.cgi?id=220184

nothingismagick commented 3 years ago

I think we did as good as we can do here, especially now that webrtc is working on macos, i think we are good.

lemarier commented 3 years ago

We should try with the localhost fix as it use same engine as macOS webview

wusyong commented 3 years ago

Reopen it until the PR is delivered

nklayman commented 3 years ago

It appears that PR didn't quite solve the issue I was referring to. There still doesn't seem to be a way to allow prompting for web APIs such as geolocation. If you try to use it inside Tauri (on Linux at least) it just fails immediately. If you use epiphany which also uses webkit2gtk, it prompts for location permissions. I think we should offer a way to prompt for or automatically allow certain permissions.

kantum commented 2 years ago

Hello,

I have a WebRTC app that I would like to make it work with tauri. Would love to see this issue going forward!

kevinelliott commented 2 years ago

What's the status of this? Need to use geolocation in a tauri app and noticing that it doesn't work.

cliqer commented 2 years ago

It seems this is responsible for navigator.mediaDevices.getDisplayMedia not working too. We are stuck on porting to tauri because of this...

FabianLars commented 2 years ago

@cliqer getDisplayMedia is not supported in WKWebView at all right now. No promises (just an idea), but we probably could do something similar to electron and inject it in getUserMedia, but don't hold your horses :/

I wanted to sent this comment a few weeks/months ago but something went wrong, anyway here it is, but i can't find the source for this right now, gonna update this comment if i find it again.

cliqer commented 2 years ago

@FabianLars Indeed it is not :/ and unfortunately, this has stopped us from porting our application to tauri for the time being.

The alternative at the moment, like building webrtc and adding an egui for screen capturing display selection within the rust layer, is almost impossible for us.

Many thanks and please do something similar to electron. Waiting eagerly for the implementation.

mhsfh commented 1 year ago

is there any update ? i need to use Geolocation

petermakeswebsites commented 1 year ago

I would also like to use the microphone. MacOS. Looking through my inspector with permissions api, it says the microphone permission is set to "prompt", implying that the web might be thinking the prompt dialogue is showing when it isn't. When I try to start the dictation anyway, the console puts the error: Speech recognition error - "not-allowed". It works fine on Safari after I accept the permission prompt, which is either hidden or doesn't exist in Tauri. I would really appreciate having some kind of solution to this because dictation is central to my application.

wusyong commented 1 year ago

I think we should split this into smaller issues. The problems each user face is not the same. And each platform will need some extra works too. I believe we will need Infoplist on macOS for example. If you are interested in specific feature, please consider open an issue and hopefully a working wry example. We'll try to look into further if someone has time.

kevinelliott commented 1 year ago

I think we should split this into smaller issues. The problems each user face is not the same. And each platform will need some extra works too. I believe we will need Infoplist on macOS for example. If you are interested in specific feature, please consider open an issue and hopefully a working wry example. We'll try to look into further if someone has time.

How about start with geolocation :)

ajayghoshcmonk commented 6 months ago

Any update on this ?