Add config option for microphone and webcam access
This commit is contained in:
parent
f5be376ccc
commit
bcd05ae321
|
@ -10,6 +10,8 @@ static char *cookiefile = "~/.surf/cookies.txt";
|
||||||
/* Webkit default features */
|
/* Webkit default features */
|
||||||
static Parameter defconfig[ParameterLast] = {
|
static Parameter defconfig[ParameterLast] = {
|
||||||
SETB(AcceleratedCanvas, 1),
|
SETB(AcceleratedCanvas, 1),
|
||||||
|
SETB(AccessMicrophone, 0),
|
||||||
|
SETB(AccessWebcam, 0),
|
||||||
SETB(Certificate, 0),
|
SETB(Certificate, 0),
|
||||||
SETB(CaretBrowsing, 0),
|
SETB(CaretBrowsing, 0),
|
||||||
SETV(CookiePolicies, "@Aa"),
|
SETV(CookiePolicies, "@Aa"),
|
||||||
|
|
26
surf.c
26
surf.c
|
@ -61,6 +61,8 @@ enum {
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
AcceleratedCanvas,
|
AcceleratedCanvas,
|
||||||
|
AccessMicrophone,
|
||||||
|
AccessWebcam,
|
||||||
CaretBrowsing,
|
CaretBrowsing,
|
||||||
Certificate,
|
Certificate,
|
||||||
CookiePolicies,
|
CookiePolicies,
|
||||||
|
@ -678,6 +680,10 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *a)
|
||||||
case AcceleratedCanvas:
|
case AcceleratedCanvas:
|
||||||
webkit_settings_set_enable_accelerated_2d_canvas(s, a->b);
|
webkit_settings_set_enable_accelerated_2d_canvas(s, a->b);
|
||||||
break;
|
break;
|
||||||
|
case AccessMicrophone:
|
||||||
|
return; /* do nothing */
|
||||||
|
case AccessWebcam:
|
||||||
|
return; /* do nothing */
|
||||||
case CaretBrowsing:
|
case CaretBrowsing:
|
||||||
webkit_settings_set_enable_caret_browsing(s, a->b);
|
webkit_settings_set_enable_caret_browsing(s, a->b);
|
||||||
refresh = 0;
|
refresh = 0;
|
||||||
|
@ -1450,15 +1456,27 @@ mousetargetchanged(WebKitWebView *v, WebKitHitTestResult *h, guint modifiers,
|
||||||
gboolean
|
gboolean
|
||||||
permissionrequested(WebKitWebView *v, WebKitPermissionRequest *r, Client *c)
|
permissionrequested(WebKitWebView *v, WebKitPermissionRequest *r, Client *c)
|
||||||
{
|
{
|
||||||
|
ParamName param = ParameterLast;
|
||||||
|
|
||||||
if (WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(r)) {
|
if (WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(r)) {
|
||||||
if (curconfig[Geolocation].val.b)
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (curconfig[param].val.b)
|
||||||
webkit_permission_request_allow(r);
|
webkit_permission_request_allow(r);
|
||||||
else
|
else
|
||||||
webkit_permission_request_deny(r);
|
webkit_permission_request_deny(r);
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
|
Loading…
Reference in New Issue