-#define SETB(p, s) [p] = { { .b = s }, }
-#define SETI(p, s) [p] = { { .i = s }, }
-#define SETV(p, s) [p] = { { .v = s }, }
-#define SETF(p, s) [p] = { { .f = s }, }
-#define FSETB(p, s) [p] = { { .b = s }, 1 }
-#define FSETI(p, s) [p] = { { .i = s }, 1 }
-#define FSETV(p, s) [p] = { { .v = s }, 1 }
-#define FSETF(p, s) [p] = { { .f = s }, 1 }
-#define CSETB(p, s) [p] = (Parameter){ { .b = s }, 1 }
-#define CSETI(p, s) [p] = (Parameter){ { .i = s }, 1 }
-#define CSETV(p, s) [p] = (Parameter){ { .v = s }, 1 }
-#define CSETF(p, s) [p] = (Parameter){ { .f = s }, 1 }
static void setparameter(Client *c, int refresh, ParamName p, const Arg *a);
static const char *getcert(const char *uri);
static void setcert(Client *c, const char *file);
static void setparameter(Client *c, int refresh, ParamName p, const Arg *a);
static const char *getcert(const char *uri);
static void setcert(Client *c, const char *file);
XChangeProperty(dpy, c->xid,
atoms[a], XA_STRING, 8, PropModeReplace,
(unsigned char *)v, strlen(v) + 1);
XChangeProperty(dpy, c->xid,
atoms[a], XA_STRING, 8, PropModeReplace,
(unsigned char *)v, strlen(v) + 1);
XGetWindowProperty(dpy, c->xid, atoms[a], 0L, BUFSIZ, False, XA_STRING,
&adummy, &idummy, &ldummy, &ldummy, &p);
if (p)
XGetWindowProperty(dpy, c->xid, atoms[a], 0L, BUFSIZ, False, XA_STRING,
&adummy, &idummy, &ldummy, &ldummy, &p);
if (p)
- togglestats[1] = curconfig[CaretBrowsing].val.b ? 'C' : 'c';
- togglestats[2] = curconfig[Geolocation].val.b ? 'G' : 'g';
- togglestats[3] = curconfig[DiskCache].val.b ? 'D' : 'd';
- togglestats[4] = curconfig[LoadImages].val.b ? 'I' : 'i';
- togglestats[5] = curconfig[JavaScript].val.b ? 'S' : 's';
- togglestats[6] = curconfig[Plugins].val.b ? 'V' : 'v';
- togglestats[7] = curconfig[Style].val.b ? 'M' : 'm';
- togglestats[8] = curconfig[FrameFlattening].val.b ? 'F' : 'f';
- togglestats[9] = curconfig[Certificate].val.b ? 'X' : 'x';
- togglestats[10] = curconfig[StrictTLS].val.b ? 'T' : 't';
+ togglestats[1] = curconfig[CaretBrowsing].val.i ? 'C' : 'c';
+ togglestats[2] = curconfig[Geolocation].val.i ? 'G' : 'g';
+ togglestats[3] = curconfig[DiskCache].val.i ? 'D' : 'd';
+ togglestats[4] = curconfig[LoadImages].val.i ? 'I' : 'i';
+ togglestats[5] = curconfig[JavaScript].val.i ? 'S' : 's';
+ togglestats[6] = curconfig[Plugins].val.i ? 'V' : 'v';
+ togglestats[7] = curconfig[Style].val.i ? 'M' : 'm';
+ togglestats[8] = curconfig[FrameFlattening].val.i ? 'F' : 'f';
+ togglestats[9] = curconfig[Certificate].val.i ? 'X' : 'x';
+ togglestats[10] = curconfig[StrictTLS].val.i ? 'T' : 't';
for (i = 0; i < LENGTH(uriparams); ++i) {
if (uriparams[i].uri &&
!regexec(&(uriparams[i].re), uri, 0, NULL, 0)) {
for (i = 0; i < LENGTH(uriparams); ++i) {
if (uriparams[i].uri &&
!regexec(&(uriparams[i].re), uri, 0, NULL, 0)) {
- if (!newconfig)
- newconfig = defconfig;
- if (newconfig == curconfig)
- return;
-
- for (i = 0; i < ParameterLast; ++i) {
- if (defconfig[i].force)
- continue;
- if (newconfig[i].force)
- setparameter(c, 0, i, &newconfig[i].val);
- else if (curconfig[i].force)
- setparameter(c, 0, i, &defconfig[i].val);
+ curconfig = uriconfig ? uriconfig : defconfig;
+
+ for (i = 0; (p = params[i]) != ParameterLast; ++i) {
+ switch(p) {
+ default: /* FALLTHROUGH */
+ if (!(defconfig[p].prio < curconfig[p].prio ||
+ defconfig[p].prio < modparams[p]))
+ continue;
+ case Certificate:
+ case CookiePolicies:
+ case Style:
+ setparameter(c, 0, p, &curconfig[p].val);
+ }
- webkit_settings_set_enable_dns_prefetching(s, a->b);
+ webkit_settings_set_enable_dns_prefetching(s, a->i);
+ return; /* do not update */
+ case FileURLsCrossAccess:
+ webkit_settings_set_allow_file_access_from_file_urls(s, a->i);
+ webkit_settings_set_allow_universal_access_from_file_urls(s, a->i);
return; /* do not update */
case FontSize:
webkit_settings_set_default_font_size(s, a->i);
return; /* do not update */
case FrameFlattening:
return; /* do not update */
case FontSize:
webkit_settings_set_default_font_size(s, a->i);
return; /* do not update */
case FrameFlattening:
- cmd[i++] = curconfig[RunInFullscreen].val.b ? "-F" : "-f" ;
- cmd[i++] = curconfig[Geolocation].val.b ? "-G" : "-g" ;
- cmd[i++] = curconfig[LoadImages].val.b ? "-I" : "-i" ;
- cmd[i++] = curconfig[KioskMode].val.b ? "-K" : "-k" ;
- cmd[i++] = curconfig[Style].val.b ? "-M" : "-m" ;
- cmd[i++] = curconfig[Inspector].val.b ? "-N" : "-n" ;
- cmd[i++] = curconfig[Plugins].val.b ? "-P" : "-p" ;
+ cmd[i++] = curconfig[RunInFullscreen].val.i ? "-F" : "-f" ;
+ cmd[i++] = curconfig[Geolocation].val.i ? "-G" : "-g" ;
+ cmd[i++] = curconfig[LoadImages].val.i ? "-I" : "-i" ;
+ cmd[i++] = curconfig[KioskMode].val.i ? "-K" : "-k" ;
+ cmd[i++] = curconfig[Style].val.i ? "-M" : "-m" ;
+ cmd[i++] = curconfig[Inspector].val.i ? "-N" : "-n" ;
+ cmd[i++] = curconfig[Plugins].val.i ? "-P" : "-p" ;
- "auto-load-images", curconfig[LoadImages].val.b,
+ "allow-file-access-from-file-urls", curconfig[FileURLsCrossAccess].val.i,
+ "allow-universal-access-from-file-urls", curconfig[FileURLsCrossAccess].val.i,
+ "auto-load-images", curconfig[LoadImages].val.i,
"default-charset", curconfig[DefaultCharset].val.v,
"default-font-size", curconfig[FontSize].val.i,
"default-charset", curconfig[DefaultCharset].val.v,
"default-font-size", curconfig[FontSize].val.i,
- "enable-caret-browsing", curconfig[CaretBrowsing].val.b,
- "enable-developer-extras", curconfig[Inspector].val.b,
- "enable-dns-prefetching", curconfig[DNSPrefetch].val.b,
- "enable-frame-flattening", curconfig[FrameFlattening].val.b,
- "enable-html5-database", curconfig[DiskCache].val.b,
- "enable-html5-local-storage", curconfig[DiskCache].val.b,
- "enable-java", curconfig[Java].val.b,
- "enable-javascript", curconfig[JavaScript].val.b,
- "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,
+ "enable-caret-browsing", curconfig[CaretBrowsing].val.i,
+ "enable-developer-extras", curconfig[Inspector].val.i,
+ "enable-dns-prefetching", curconfig[DNSPrefetch].val.i,
+ "enable-frame-flattening", curconfig[FrameFlattening].val.i,
+ "enable-html5-database", curconfig[DiskCache].val.i,
+ "enable-html5-local-storage", curconfig[DiskCache].val.i,
+ "enable-java", curconfig[Java].val.i,
+ "enable-javascript", curconfig[JavaScript].val.i,
+ "enable-plugins", curconfig[Plugins].val.i,
+ "enable-accelerated-2d-canvas", curconfig[AcceleratedCanvas].val.i,
+ "enable-site-specific-quirks", curconfig[SiteQuirks].val.i,
+ "enable-smooth-scrolling", curconfig[SmoothScrolling].val.i,
+ "media-playback-requires-user-gesture", curconfig[MediaManualPlay].val.i,
webkit_web_context_set_spell_checking_languages(context,
curconfig[SpellLanguages].val.v);
webkit_web_context_set_spell_checking_enabled(context,
webkit_web_context_set_spell_checking_languages(context,
curconfig[SpellLanguages].val.v);
webkit_web_context_set_spell_checking_enabled(context,
gdk_window_set_events(gwin, GDK_ALL_EVENTS_MASK);
gdk_window_add_filter(gwin, processx, c);
}
gdk_window_set_events(gwin, GDK_ALL_EVENTS_MASK);
gdk_window_add_filter(gwin, processx, c);
}
- setatom(c, AtomUri, title);
- c->title = title;
- seturiparameters(c, geturi(c));
+ setatom(c, AtomUri, uri);
+ c->title = uri;
+ seturiparameters(c, uri, loadtransient);
/* Disabled until we write some WebKitWebExtension for
* manipulating the DOM directly.
evalscript(c, "document.documentElement.style.overflow = '%s'",
/* Disabled until we write some WebKitWebExtension for
* manipulating the DOM directly.
evalscript(c, "document.documentElement.style.overflow = '%s'",
- 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;