Add config option for microphone and webcam access

This commit is contained in:
Quentin Rameau 2017-05-18 11:20:07 +02:00
parent f5be376ccc
commit bcd05ae321
2 changed files with 26 additions and 6 deletions

View file

@ -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"),

30
surf.c
View file

@ -61,6 +61,8 @@ enum {
typedef enum {
AcceleratedCanvas,
AccessMicrophone,
AccessWebcam,
CaretBrowsing,
Certificate,
CookiePolicies,
@ -678,6 +680,10 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *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;
@ -1450,15 +1456,27 @@ mousetargetchanged(WebKitWebView *v, WebKitHitTestResult *h, guint modifiers,
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