tAdd config option for microphone and webcam access - surf - customized build o… | |
git clone git://src.adamsgaard.dk/surf | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit bcd05ae321de686840fd560931f2894f62ba8345 | |
parent f5be376ccc1fef96722df610c4783e99ce1e944e | |
Author: Quentin Rameau <[email protected]> | |
Date: Thu, 18 May 2017 11:20:07 +0200 | |
Add config option for microphone and webcam access | |
Diffstat: | |
M config.def.h | 2 ++ | |
M surf.c | 30 ++++++++++++++++++++++++------ | |
2 files changed, 26 insertions(+), 6 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -10,6 +10,8 @@ static char *cookiefile = "~/.surf/cookies.txt"; | |
/* Webkit default features */ | |
static Parameter defconfig[ParameterLast] = { | |
SETB(AcceleratedCanvas, 1), | |
+ SETB(AccessMicrophone, 0), | |
+ SETB(AccessWebcam, 0), | |
SETB(Certificate, 0), | |
SETB(CaretBrowsing, 0), | |
SETV(CookiePolicies, "@Aa"), | |
diff --git a/surf.c b/surf.c | |
t@@ -61,6 +61,8 @@ enum { | |
typedef enum { | |
AcceleratedCanvas, | |
+ AccessMicrophone, | |
+ AccessWebcam, | |
CaretBrowsing, | |
Certificate, | |
CookiePolicies, | |
t@@ -678,6 +680,10 @@ setparameter(Client *c, int refresh, ParamName p, const A… | |
case AcceleratedCanvas: | |
webkit_settings_set_enable_accelerated_2d_canvas(s, a->b); | |
break; | |
+ case AccessMicrophone: | |
+ return; /* do nothing */ | |
+ case AccessWebcam: | |
+ return; /* do nothing */ | |
case CaretBrowsing: | |
webkit_settings_set_enable_caret_browsing(s, a->b); | |
refresh = 0; | |
t@@ -1450,15 +1456,27 @@ mousetargetchanged(WebKitWebView *v, WebKitHitTestResu… | |
gboolean | |
permissionrequested(WebKitWebView *v, WebKitPermissionRequest *r, Client *c) | |
{ | |
+ ParamName param = ParameterLast; | |
+ | |
if (WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(r)) { | |
- if (curconfig[Geolocation].val.b) | |
- webkit_permission_request_allow(r); | |
- else | |
- webkit_permission_request_deny(r); | |
- return TRUE; | |
+ param = Geolocation; | |
+ } else if (WEBKIT_IS_USER_MEDIA_PERMISSION_REQUEST(r)) { | |
+ if (webkit_user_media_permission_is_for_audio_device( | |
+ WEBKIT_USER_MEDIA_PERMISSION_REQUEST(r))) | |
+ param = AccessMicrophone; | |
+ else if (webkit_user_media_permission_is_for_video_device( | |
+ WEBKIT_USER_MEDIA_PERMISSION_REQUEST(r))) | |
+ param = AccessWebcam; | |
+ } else { | |
+ return FALSE; | |
} | |
- return FALSE; | |
+ if (curconfig[param].val.b) | |
+ webkit_permission_request_allow(r); | |
+ else | |
+ webkit_permission_request_deny(r); | |
+ | |
+ return TRUE; | |
} | |
gboolean |