typedef enum {
AcceleratedCanvas,
+ AccessMicrophone,
+ AccessWebcam,
CaretBrowsing,
Certificate,
CookiePolicies,
ScrollBars,
ShowIndicators,
SiteQuirks,
+ SmoothScrolling,
SpellChecking,
SpellLanguages,
StrictTLS,
void
setatom(Client *c, int a, const char *v)
{
- XSync(dpy, False);
XChangeProperty(dpy, c->xid,
atoms[a], XA_STRING, 8, PropModeReplace,
(unsigned char *)v, strlen(v) + 1);
+ XSync(dpy, False);
}
const char *
unsigned long ldummy;
unsigned char *p = NULL;
+ XSync(dpy, False);
XGetWindowProperty(dpy, c->xid, atoms[a], 0L, BUFSIZ, False, XA_STRING,
&adummy, &idummy, &ldummy, &ldummy, &p);
if (p)
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;
return; /* do not update */
case ShowIndicators:
break;
+ case SmoothScrolling:
+ webkit_settings_set_enable_smooth_scrolling(s, a->b);
+ return; /* do not update */
case SiteQuirks:
webkit_settings_set_enable_site_specific_quirks(s, a->b);
break;
"enable-plugins", curconfig[Plugins].val.b,
"enable-accelerated-2d-canvas", curconfig[AcceleratedCanvas].val.b,
"enable-site-specific-quirks", curconfig[SiteQuirks].val.b,
+ "enable-smooth-scrolling", curconfig[SmoothScrolling].val.b,
"media-playback-requires-user-gesture", curconfig[MediaManualPlay].val.b,
NULL);
/* For more interesting settings, have a look at
void
loadchanged(WebKitWebView *v, WebKitLoadEvent e, Client *c)
{
- const char *title = geturi(c);
+ const char *uri = geturi(c);
switch (e) {
case WEBKIT_LOAD_STARTED:
- setatom(c, AtomUri, title);
- c->title = title;
+ setatom(c, AtomUri, uri);
+ c->title = uri;
c->https = c->insecure = 0;
- seturiparameters(c, geturi(c));
+ seturiparameters(c, uri);
if (c->errorpage)
c->errorpage = 0;
else
g_clear_object(&c->failedcert);
break;
case WEBKIT_LOAD_REDIRECTED:
- setatom(c, AtomUri, title);
- c->title = title;
- seturiparameters(c, geturi(c));
+ setatom(c, AtomUri, uri);
+ c->title = uri;
+ seturiparameters(c, uri);
break;
case WEBKIT_LOAD_COMMITTED:
c->https = webkit_web_view_get_tls_info(c->view, &c->cert,
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