Introduction
Introduction Statistics Contact Development Disclaimer Help
Add config option for microphone and webcam access - surf - surf browser, a Web…
git clone git://git.suckless.org/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
@@ -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
@@ -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 Ar…
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, WebKitHitTestResul…
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
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.