typedef enum {
AcceleratedCanvas,
+ AccessMicrophone,
+ AccessWebcam,
CaretBrowsing,
Certificate,
CookiePolicies,
DiskCache,
DefaultCharset,
DNSPrefetch,
+ FileURLsCrossAccess,
FontSize,
FrameFlattening,
Geolocation,
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;
case DNSPrefetch:
webkit_settings_set_enable_dns_prefetching(s, a->b);
return; /* do not update */
+ case FileURLsCrossAccess:
+ webkit_settings_set_allow_file_access_from_file_urls(s, a->b);
+ webkit_settings_set_allow_universal_access_from_file_urls(s, a->b);
+ return; /* do not update */
case FontSize:
webkit_settings_set_default_font_size(s, a->i);
return; /* do not update */
WEBKIT_TLS_ERRORS_POLICY_IGNORE);
break;
case Style:
+ webkit_user_content_manager_remove_all_style_sheets(
+ webkit_web_view_get_user_content_manager(c->view));
if (a->b)
setstyle(c, getstyle(geturi(c)));
- else
- webkit_user_content_manager_remove_all_style_sheets(
- webkit_web_view_get_user_content_manager(c->view));
refresh = 0;
break;
case ZoomLevel:
webkit_web_view_new_with_related_view(rv));
} else {
settings = webkit_settings_new_with_settings(
+ "allow-file-access-from-file-urls", curconfig[FileURLsCrossAccess].val.b,
+ "allow-universal-access-from-file-urls", curconfig[FileURLsCrossAccess].val.b,
"auto-load-images", curconfig[LoadImages].val.b,
"default-charset", curconfig[DefaultCharset].val.v,
"default-font-size", curconfig[FontSize].val.i,
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