From 1f36e4837259ecb83f91568ff809ca02142d0e62 Mon Sep 17 00:00:00 2001
From: John-Mark Bell
Date: Sun, 15 Jul 2012 01:02:33 +0100
Subject: Squash warnings
---
render/html.c | 3 ++-
render/html_forms.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/render/html.c b/render/html.c
index 8c11f35b9..80e467c58 100644
--- a/render/html.c
+++ b/render/html.c
@@ -2050,7 +2050,8 @@ static bool html_convert(struct content *c)
}
/* Retrieve forms from parser */
- htmlc->forms = html_forms_get_forms(htmlc->encoding, htmlc->document);
+ htmlc->forms = html_forms_get_forms(htmlc->encoding,
+ (dom_html_document *) htmlc->document);
for (f = htmlc->forms; f != NULL; f = f->prev) {
char *action;
url_func_result res;
diff --git a/render/html_forms.c b/render/html_forms.c
index 626fe4c0e..c8b3c7fe6 100644
--- a/render/html_forms.c
+++ b/render/html_forms.c
@@ -258,7 +258,7 @@ out:
static struct form_control *
parse_input_element(struct form *forms, dom_html_input_element *input)
{
- struct form_control *control;
+ struct form_control *control = NULL;
dom_html_form_element *form = NULL;
dom_string *ds_type = NULL;
dom_string *ds_name = NULL;
--
cgit v1.2.3
From 64f098dfc7000fe8a0b9e228a3527434e8dce094 Mon Sep 17 00:00:00 2001
From: John-Mark Bell
Date: Sun, 15 Jul 2012 01:17:04 +0100
Subject: Do not render noscript when script is enabled.
---
render/box_construct.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/render/box_construct.c b/render/box_construct.c
index 5f8b092c5..0044f6e21 100644
--- a/render/box_construct.c
+++ b/render/box_construct.c
@@ -114,6 +114,7 @@ static bool box_frameset(BOX_SPECIAL_PARAMS);
static bool box_create_frameset(struct content_html_frames *f, dom_node *n,
html_content *content);
static bool box_select_add_option(struct form_control *control, dom_node *n);
+static bool box_noscript(BOX_SPECIAL_PARAMS);
static bool box_object(BOX_SPECIAL_PARAMS);
static bool box_embed(BOX_SPECIAL_PARAMS);
static bool box_pre(BOX_SPECIAL_PARAMS);
@@ -139,6 +140,7 @@ static const struct element_entry element_table[] = {
{"image", box_image},
{"img", box_image},
{"input", box_input},
+ {"noscript", box_noscript},
{"object", box_object},
{"pre", box_pre},
{"select", box_select},
@@ -1749,6 +1751,20 @@ bool box_image(BOX_SPECIAL_PARAMS)
}
+/**
+ * Noscript element
+ */
+
+bool box_noscript(BOX_SPECIAL_PARAMS)
+{
+ /* If scripting is enabled, do not display the contents of noscript */
+ if (nsoption_bool(enable_javascript))
+ *convert_children = false;
+
+ return true;
+}
+
+
/**
* Destructor for object_params, for elements
*
--
cgit v1.2.3
From fa3da41a941a149cff8e507d4882c84abc88f6e9 Mon Sep 17 00:00:00 2001
From: Vincent Sanders
Date: Sat, 14 Jul 2012 18:24:09 -0600
Subject: fix stylesheet render
---
render/html.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/render/html.c b/render/html.c
index 80e467c58..946555f6e 100644
--- a/render/html.c
+++ b/render/html.c
@@ -1690,7 +1690,7 @@ html_process_stylesheet(dom_node *node, dom_string *name, void *vctx)
}
/* if it is not a link node skip it */
- if (strcmp(dom_string_data(name), "link") != 0) {
+ if (strcmp(dom_string_data(name), "LINK") != 0) {
return true;
}
--
cgit v1.2.3
From 1ecc94b187a94859fb347cd5f585d721e7d6e8be Mon Sep 17 00:00:00 2001
From: John-Mark Bell
Date: Sun, 15 Jul 2012 01:39:25 +0100
Subject: Use case insensitive string comparisions for nodes
---
desktop/save_complete.c | 22 +++++++++++-----------
desktop/tree_url_node.c | 13 +++++++------
render/box_construct.c | 16 +++++++++-------
render/html.c | 14 ++++++++------
4 files changed, 35 insertions(+), 30 deletions(-)
diff --git a/desktop/save_complete.c b/desktop/save_complete.c
index 33234ce2c..0ac64b515 100644
--- a/desktop/save_complete.c
+++ b/desktop/save_complete.c
@@ -589,28 +589,28 @@ bool rewrite_urls(xmlNode *n, const char *base,
/* ignore */
}
/* 1 */
- else if (strcmp((const char *) n->name, "object") == 0) {
+ else if (strcasecmp((const char *) n->name, "object") == 0) {
if (!rewrite_url(n, "data", base, list))
return false;
}
/* 2 */
- else if (strcmp((const char *) n->name, "a") == 0 ||
- strcmp((const char *) n->name, "area") == 0 ||
- strcmp((const char *) n->name, "link") == 0) {
+ else if (strcasecmp((const char *) n->name, "a") == 0 ||
+ strcasecmp((const char *) n->name, "area") == 0 ||
+ strcasecmp((const char *) n->name, "link") == 0) {
if (!rewrite_url(n, "href", base, list))
return false;
}
/* 3 */
- else if (strcmp((const char *) n->name, "frame") == 0 ||
- strcmp((const char *) n->name, "iframe") == 0 ||
- strcmp((const char *) n->name, "input") == 0 ||
- strcmp((const char *) n->name, "img") == 0 ||
- strcmp((const char *) n->name, "script") == 0) {
+ else if (strcasecmp((const char *) n->name, "frame") == 0 ||
+ strcasecmp((const char *) n->name, "iframe") == 0 ||
+ strcasecmp((const char *) n->name, "input") == 0 ||
+ strcasecmp((const char *) n->name, "img") == 0 ||
+ strcasecmp((const char *) n->name, "script") == 0) {
if (!rewrite_url(n, "src", base, list))
return false;
}
/* 4 */
- else if (strcmp((const char *) n->name, "style") == 0) {
+ else if (strcasecmp((const char *) n->name, "style") == 0) {
unsigned int len;
xmlChar *content;
@@ -642,7 +642,7 @@ bool rewrite_urls(xmlNode *n, const char *base,
return true;
}
/* 5 */
- else if (strcmp((const char *) n->name, "base") == 0) {
+ else if (strcasecmp((const char *) n->name, "base") == 0) {
/* simply remove any tags from the document */
xmlUnlinkNode(n);
xmlFreeNode(n);
diff --git a/desktop/tree_url_node.c b/desktop/tree_url_node.c
index 380ba43b9..d477249c9 100644
--- a/desktop/tree_url_node.c
+++ b/desktop/tree_url_node.c
@@ -470,7 +470,7 @@ static xmlNode *tree_url_find_xml_element(xmlNode *node, const char *name)
for (xmlnode = node->children;
xmlnode && !(xmlnode->type == XML_ELEMENT_NODE &&
- strcmp((const char *) xmlnode->name, name) == 0);
+ strcasecmp((const char *) xmlnode->name, name) == 0);
xmlnode = xmlnode->next)
;
@@ -498,7 +498,7 @@ static void tree_url_load_entry(xmlNode *li, struct tree *tree,
for (xmlnode = li->children; xmlnode; xmlnode = xmlnode->next) {
/* The li must contain an "a" element */
if (xmlnode->type == XML_ELEMENT_NODE &&
- strcmp((const char *)xmlnode->name, "a") == 0) {
+ strcasecmp((const char *)xmlnode->name, "a") == 0) {
url1 = (char *)xmlGetProp(xmlnode,
(const xmlChar *) "href");
title = (char *)xmlNodeGetContent(xmlnode);
@@ -590,12 +590,12 @@ static void tree_url_load_directory(xmlNode *ul, struct tree *tree,
if (xmlnode->type != XML_ELEMENT_NODE)
continue;
- if (strcmp((const char *)xmlnode->name, "li") == 0) {
+ if (strcasecmp((const char *)xmlnode->name, "li") == 0) {
/* entry */
tree_url_load_entry(xmlnode, tree, directory, callback,
callback_data);
- } else if (strcmp((const char *)xmlnode->name, "h4") == 0) {
+ } else if (strcasecmp((const char *)xmlnode->name, "h4") == 0) {
/* directory */
bool dir_is_default = false;
title = (char *) xmlNodeGetContent(xmlnode );
@@ -610,7 +610,7 @@ static void tree_url_load_directory(xmlNode *ul, struct tree *tree,
xmlnode = xmlnode->next)
;
if ((xmlnode == NULL) ||
- strcmp((const char *)xmlnode->name, "ul") != 0) {
+ strcasecmp((const char *)xmlnode->name, "ul") != 0) {
/* next element isn't expected ul */
free(title);
warn_user("TreeLoadError", "(Expected "
@@ -620,7 +620,8 @@ static void tree_url_load_directory(xmlNode *ul, struct tree *tree,
id = xmlGetProp(xmlnode,
(const xmlChar *) "id");
if (id != NULL) {
- if(strcmp((const char *)id, "default") == 0)
+ if (strcasecmp((const char *)id,
+ "default") == 0)
dir_is_default = true;
xmlFree(id);
}
diff --git a/render/box_construct.c b/render/box_construct.c
index 0044f6e21..b968e0e4f 100644
--- a/render/box_construct.c
+++ b/render/box_construct.c
@@ -1939,7 +1939,7 @@ bool box_object(BOX_SPECIAL_PARAMS)
return false;
}
- if (strcmp(dom_string_data(name), "param") != 0) {
+ if (strcasecmp(dom_string_data(name), "param") != 0) {
/* The first non-param child is the start of
* the alt html. Therefore, we should break
* out of this loop. */
@@ -2192,9 +2192,11 @@ bool box_create_frameset(struct content_html_frames *f, dom_node *n,
}
if (type != DOM_ELEMENT_NODE ||
- (strcmp(dom_string_data(name),
+ (strcasecmp(
+ dom_string_data(name),
"frame") != 0 &&
- strcmp(dom_string_data(name),
+ strcasecmp(
+ dom_string_data(name),
"frameset") != 0)) {
err = dom_node_get_next_sibling(c,
&next);
@@ -2225,7 +2227,7 @@ bool box_create_frameset(struct content_html_frames *f, dom_node *n,
return false;
}
- if (strcmp(dom_string_data(s), "frameset") == 0) {
+ if (strcasecmp(dom_string_data(s), "frameset") == 0) {
dom_string_unref(s);
frame->border = 0;
if (box_create_frameset(frame, c,
@@ -2699,14 +2701,14 @@ bool box_select(BOX_SPECIAL_PARAMS)
return false;
}
- if (strcmp(dom_string_data(name), "option") == 0) {
+ if (strcasecmp(dom_string_data(name), "option") == 0) {
dom_string_unref(name);
if (box_select_add_option(gadget, c) == false) {
dom_node_unref(c);
goto no_memory;
}
- } else if (strcmp(dom_string_data(name), "optgroup") == 0) {
+ } else if (strcasecmp(dom_string_data(name), "optgroup") == 0) {
dom_string_unref(name);
err = dom_node_get_first_child(c, &c2);
@@ -2725,7 +2727,7 @@ bool box_select(BOX_SPECIAL_PARAMS)
return false;
}
- if (strcmp(dom_string_data(c2_name),
+ if (strcasecmp(dom_string_data(c2_name),
"option") == 0) {
dom_string_unref(c2_name);
diff --git a/render/html.c b/render/html.c
index 946555f6e..8c5c76b8e 100644
--- a/render/html.c
+++ b/render/html.c
@@ -997,7 +997,8 @@ static bool html_meta_refresh(html_content *c, dom_node *head)
}
/* Recurse into noscript elements */
- if (strcmp(dom_string_data(name), "noscript") == 0) {
+ if (strcasecmp(dom_string_data(name),
+ "noscript") == 0) {
if (html_meta_refresh(c, n) == false) {
/* Some error occurred */
dom_node_unref(n);
@@ -1007,7 +1008,8 @@ static bool html_meta_refresh(html_content *c, dom_node *head)
dom_node_unref(n);
return true;
}
- } else if (strcmp(dom_string_data(name), "meta") == 0) {
+ } else if (strcasecmp(dom_string_data(name),
+ "meta") == 0) {
if (html_meta_refresh_process_element(c,
n) == false) {
/* Some error occurred */
@@ -1436,7 +1438,7 @@ html_process_style_element(html_content *c,
/* type='text/css', or not present (invalid but common) */
exc = dom_element_get_attribute(style, html_dom_string_type, &val);
if (exc == DOM_NO_ERR && val != NULL) {
- if (strcmp(dom_string_data(val), "text/css") != 0) {
+ if (strcasecmp(dom_string_data(val), "text/css") != 0) {
dom_string_unref(val);
return true;
}
@@ -1683,14 +1685,14 @@ html_process_stylesheet(dom_node *node, dom_string *name, void *vctx)
hlcache_child_context child;
/* deal with style nodes */
- if (strcmp(dom_string_data(name), "style") == 0) {
+ if (strcasecmp(dom_string_data(name), "style") == 0) {
if (!html_process_style_element(ctx->c, &ctx->count, node))
return false;
return true;
}
/* if it is not a link node skip it */
- if (strcmp(dom_string_data(name), "LINK") != 0) {
+ if (strcasecmp(dom_string_data(name), "link") != 0) {
return true;
}
@@ -1713,7 +1715,7 @@ html_process_stylesheet(dom_node *node, dom_string *name, void *vctx)
/* type='text/css' or not present */
exc = dom_element_get_attribute(node, html_dom_string_type, &type_attr);
if (exc == DOM_NO_ERR && type_attr != NULL) {
- if (strcmp(dom_string_data(type_attr), "text/css") != 0) {
+ if (strcasecmp(dom_string_data(type_attr), "text/css") != 0) {
dom_string_unref(type_attr);
return true;
}
--
cgit v1.2.3
From 98e2b3f4df0475987c271e66b84862dcc410b95f Mon Sep 17 00:00:00 2001
From: Daniel Silverstone
Date: Sun, 15 Jul 2012 13:56:33 +0100
Subject: git-testament: Cope with detached HEAD better
---
utils/git-testament.pl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/utils/git-testament.pl b/utils/git-testament.pl
index dc6301b50..89c41ab5e 100644
--- a/utils/git-testament.pl
+++ b/utils/git-testament.pl
@@ -68,7 +68,7 @@ if ( $git_present ) {
chomp $gitinfo{url};
$gitinfo{revision} = `git rev-parse HEAD`;
chomp $gitinfo{revision};
- $gitinfo{branch} = `git for-each-ref --format="\%(refname:short)" \$(git symbolic-ref HEAD)`;
+ $gitinfo{branch} = `git for-each-ref --format="\%(refname:short)" \$(git symbolic-ref HEAD 2>/dev/null || git show-ref -s HEAD)`;
chomp $gitinfo{branch};
@bits = split /\s+/, `git describe --tags --exact-match HEAD 2>/dev/null`;
$bits[0] = "" unless exists $bits[0];
--
cgit v1.2.3
From f266e0569e954e68429c9ee4646275e904463d9a Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 15 Jul 2012 14:06:37 +0100
Subject: Fix input type test to compare correct variable.
---
css/select.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/css/select.c b/css/select.c
index 1ea818f0e..174b73e35 100644
--- a/css/select.c
+++ b/css/select.c
@@ -2494,15 +2494,15 @@ node_presentational_hint_width(nscss_select_ctx *ctx,
}
if (input) {
- err = dom_element_get_attribute(node,
- nscss_dom_string_type,
- &width);
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_type, &width);
if ((err != DOM_NO_ERR) || (width == NULL)) {
return CSS_PROPERTY_NOT_SET;
}
- if (dom_string_isequal(name, nscss_dom_string_text) ||
- dom_string_isequal(name, nscss_dom_string_password)) {
+ if (dom_string_isequal(width, nscss_dom_string_text) ||
+ dom_string_isequal(width,
+ nscss_dom_string_password)) {
hint->data.length.unit = CSS_UNIT_EX;
}
--
cgit v1.2.3
From ae07dfbc3d6e53fd3ff14b6207cf06296f77e5d1 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 15 Jul 2012 17:30:48 +0100
Subject: Update some project urls.
---
!NetSurf/Resources/en/licence.html,faf | 6 +++---
!NetSurf/Resources/it/licence.html,faf | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/!NetSurf/Resources/en/licence.html,faf b/!NetSurf/Resources/en/licence.html,faf
index f841f5b63..2f78da4ec 100644
--- a/!NetSurf/Resources/en/licence.html,faf
+++ b/!NetSurf/Resources/en/licence.html,faf
@@ -106,19 +106,19 @@ version.
MIT
-Libnsbmp
+Libnsbmp
© 2006 Richard Wilson © 2008 Sean Fox
MIT
-Libnsfb
+Libnsfb
© 2009–2011 Vincent Sanders © 2009–2011 Michael Drake
MIT
-Libnsgif
+Libnsgif
© 2004 Richard Wilson© 2008 Sean Fox
MIT
diff --git a/!NetSurf/Resources/it/licence.html,faf b/!NetSurf/Resources/it/licence.html,faf
index c54c589a1..06ab13925 100644
--- a/!NetSurf/Resources/it/licence.html,faf
+++ b/!NetSurf/Resources/it/licence.html,faf
@@ -98,19 +98,19 @@ dl.components > dd > span + span {
MIT
-Libnsbmp
+Libnsbmp
© 2006 Richard Wilson © 2008 Sean Fox
MIT
-Libnsfb
+Libnsfb
© 2009–2012 Vincent Sanders © 2009–2012 Michael Drake
MIT
-Libnsgif
+Libnsgif
© 2004 Richard Wilson © 2008 Sean Fox
MIT
--
cgit v1.2.3
From f7683fd0195059b89b90f4eb9f7e6628c55492a5 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 15 Jul 2012 17:41:37 +0100
Subject: Update URLs for glyph data.
---
framebuffer/nsfont_bold.c | 2 +-
framebuffer/nsfont_italic.c | 2 +-
framebuffer/nsfont_italic_bold.c | 2 +-
framebuffer/nsfont_regular.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/framebuffer/nsfont_bold.c b/framebuffer/nsfont_bold.c
index 824b76197..6ea4d71cd 100644
--- a/framebuffer/nsfont_bold.c
+++ b/framebuffer/nsfont_bold.c
@@ -10,7 +10,7 @@
* format and many glyphs added for use in the NetSurf project.
*
* Plain text font data:
- * http://source.netsurf-browser.org/trunk/art/fonts/netsurf/glyph_data
+ * http://source.netsurf-browser.org/?p=art.git;a=blob_plain;f=fonts/netsurf/glyph_data;hb=HEAD
*
* Zap: http://zap.tartarus.org/
* NetSurf: http://www.netsurf-browser.org/
diff --git a/framebuffer/nsfont_italic.c b/framebuffer/nsfont_italic.c
index 29444b2be..9dc29553a 100644
--- a/framebuffer/nsfont_italic.c
+++ b/framebuffer/nsfont_italic.c
@@ -10,7 +10,7 @@
* format and many glyphs added for use in the NetSurf project.
*
* Plain text font data:
- * http://source.netsurf-browser.org/trunk/art/fonts/netsurf/glyph_data
+ * http://source.netsurf-browser.org/?p=art.git;a=blob_plain;f=fonts/netsurf/glyph_data;hb=HEAD
*
* Zap: http://zap.tartarus.org/
* NetSurf: http://www.netsurf-browser.org/
diff --git a/framebuffer/nsfont_italic_bold.c b/framebuffer/nsfont_italic_bold.c
index feb4284c4..d70794668 100644
--- a/framebuffer/nsfont_italic_bold.c
+++ b/framebuffer/nsfont_italic_bold.c
@@ -10,7 +10,7 @@
* format and many glyphs added for use in the NetSurf project.
*
* Plain text font data:
- * http://source.netsurf-browser.org/trunk/art/fonts/netsurf/glyph_data
+ * http://source.netsurf-browser.org/?p=art.git;a=blob_plain;f=fonts/netsurf/glyph_data;hb=HEAD
*
* Zap: http://zap.tartarus.org/
* NetSurf: http://www.netsurf-browser.org/
diff --git a/framebuffer/nsfont_regular.c b/framebuffer/nsfont_regular.c
index eb9259d8c..829e3876b 100644
--- a/framebuffer/nsfont_regular.c
+++ b/framebuffer/nsfont_regular.c
@@ -10,7 +10,7 @@
* format and many glyphs added for use in the NetSurf project.
*
* Plain text font data:
- * http://source.netsurf-browser.org/trunk/art/fonts/netsurf/glyph_data
+ * http://source.netsurf-browser.org/?p=art.git;a=blob_plain;f=fonts/netsurf/glyph_data;hb=HEAD
*
* Zap: http://zap.tartarus.org/
* NetSurf: http://www.netsurf-browser.org/
--
cgit v1.2.3
From 3bb15c459f86d85c653fd6369b3fd621c10c3515 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 15 Jul 2012 18:04:15 +0100
Subject: Update docs for Git.
---
Docs/BUILDING-Cocoa | 2 +-
Docs/BUILDING-Framebuffer | 2 +-
Docs/BUILDING-GTK | 2 +-
Docs/BUILDING-Monkey | 2 +-
Docs/BUILDING-Windows | 2 +-
Docs/LIBRARIES | 2 +-
6 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/Docs/BUILDING-Cocoa b/Docs/BUILDING-Cocoa
index 7bfac2937..31a58ee81 100644
--- a/Docs/BUILDING-Cocoa
+++ b/Docs/BUILDING-Cocoa
@@ -27,7 +27,7 @@
The remainder must be installed manually. Currently, some of the libraries
developed as part of the NetSurf project have not had official releases.
Hopefully they will soon be released with downloadable tarballs and packaged
- in common distros. For now, you'll have to make do with svn checkouts.
+ in common distros. For now, you'll have to make do with Git checkouts.
Package installation
----------------------
diff --git a/Docs/BUILDING-Framebuffer b/Docs/BUILDING-Framebuffer
index 7cddc7e74..4eb993f13 100644
--- a/Docs/BUILDING-Framebuffer
+++ b/Docs/BUILDING-Framebuffer
@@ -211,7 +211,7 @@ Index: framebuffer/font_freetype.c
The remainder must be installed manually. Currently, some of the libraries
developed as part of the NetSurf project have not had official releases.
Hopefully they will soon be released with downloadable tarballs and packaged
- in common distros. For now, you'll have to make do with svn checkouts.
+ in common distros. For now, you'll have to make do with Git checkouts.
Package installation
----------------------
diff --git a/Docs/BUILDING-GTK b/Docs/BUILDING-GTK
index b01dbf021..2749bf4ec 100644
--- a/Docs/BUILDING-GTK
+++ b/Docs/BUILDING-GTK
@@ -51,7 +51,7 @@
The remainder must be installed manually. Currently, some of the libraries
developed as part of the NetSurf project have not had official releases.
Hopefully they will soon be released with downloadable tarballs and packaged
- in common distros. For now, you'll have to make do with svn checkouts.
+ in common distros. For now, you'll have to make do with Git checkouts.
Some of NetSurf's own libraries will be installed in /usr/local/ by default.
Fedora, and perhaps some other distributions of Linux, do not ship a
diff --git a/Docs/BUILDING-Monkey b/Docs/BUILDING-Monkey
index aa77f99ec..b467c7c15 100644
--- a/Docs/BUILDING-Monkey
+++ b/Docs/BUILDING-Monkey
@@ -47,7 +47,7 @@
The remainder must be installed manually. Currently, some of the libraries
developed as part of the NetSurf project have not had official releases.
Hopefully they will soon be released with downloadable tarballs and packaged
- in common distros. For now, you'll have to make do with svn checkouts.
+ in common distros. For now, you'll have to make do with Git checkouts.
Some of NetSurf's own libraries will be installed in /usr/local/ by default.
Fedora, and perhaps some other distributions of Linux, do not ship a
diff --git a/Docs/BUILDING-Windows b/Docs/BUILDING-Windows
index 55dfcfdfd..10454b9b2 100644
--- a/Docs/BUILDING-Windows
+++ b/Docs/BUILDING-Windows
@@ -204,7 +204,7 @@ EOF
-----------
The windows resources may be rebuilt. Currently there is 1 object
- file included in the svn distribution of NetSurf that could be
+ file included in the Git distribution of NetSurf that could be
manually compiled
$ cd windows/res
diff --git a/Docs/LIBRARIES b/Docs/LIBRARIES
index f6292809d..dc5a98048 100644
--- a/Docs/LIBRARIES
+++ b/Docs/LIBRARIES
@@ -30,7 +30,7 @@
Required:
- $ git clone git://git.netsurf-browser.org/pencil
+ $ git clone git://git.netsurf-browser.org/libpencil
$ git clone git://git.netsurf-browser.org/rufl
--
cgit v1.2.3
From 82fe8989aefa072215d223cf92a1a1e7e7e7228a Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Mon, 16 Jul 2012 14:28:08 +0100
Subject: Remove reference to robuild web page.
---
Docs/BUILDING-RISC_OS | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/Docs/BUILDING-RISC_OS b/Docs/BUILDING-RISC_OS
index 5c4c3d531..7e61bd22f 100644
--- a/Docs/BUILDING-RISC_OS
+++ b/Docs/BUILDING-RISC_OS
@@ -1,5 +1,5 @@
--------------------------------------------------------------------------------
- Build Instructions for RISC OS NetSurf 16 January 2010
+ Build Instructions for RISC OS NetSurf 16 July 2012
--------------------------------------------------------------------------------
This document provides instructions for building the RISC OS NetSurf
@@ -16,11 +16,6 @@
| + Perl 5.8.8 or later
| + GCC 3.4.6 release 3 or later
| + The latest NSTools
- |
- | For instructions on how to do all of the above, consult the following
- | document:
- |
- | http://www.netsurf-browser.org/documentation/robuild
If you want to cross-compile NetSurf for RISC OS, use the BUILDING-ROCross
document.
--
cgit v1.2.3
From ae7d1141012c438c1ec101747038f83c9db33d7a Mon Sep 17 00:00:00 2001
From: John-Mark Bell
Date: Fri, 20 Jul 2012 16:30:12 +0100
Subject: Plumbing for Atari cross-compilation
---
Makefile | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 22212a4d2..d51936fbb 100644
--- a/Makefile
+++ b/Makefile
@@ -241,8 +241,25 @@ else
ifeq ($(TARGET),cocoa)
PKG_CONFIG := PKG_CONFIG_PATH="$(PKG_CONFIG_PATH):/usr/local/lib/pkgconfig" pkg-config
else
- # Building for GTK, Framebuffer, Atari
- PKG_CONFIG := pkg-config
+ ifeq ($(TARGET),atari)
+ ifeq ($(HOST),atari)
+ PKG_CONFIG := pkg-config
+ else
+ ifeq ($(HOST),mint)
+ PKG_CONFIG := pkg-config
+ else
+ GCCSDK_INSTALL_ENV ?= /opt/netsurf/m68k-atari-mint/env
+ GCCSDK_INSTALL_CROSSBIN ?= /opt/netsurf/m68k-atari-mint/cross/bin
+
+ CC := $(wildcard $(GCCSDK_INSTALL_CROSSBIN)/*gcc)
+
+ PKG_CONFIG := PKG_CONFIG_LIBDIR="$(GCCSDK_INSTALL_ENV)/lib/pkgconfig" pkg-config
+ endif
+ endif
+ else
+ # Building for GTK, Framebuffer
+ PKG_CONFIG := pkg-config
+ endif
endif
endif
endif
--
cgit v1.2.3
From 717dfae6f80beeaa8937510fb2f6e8113c2b3426 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sat, 21 Jul 2012 11:48:16 +0100
Subject: Fix ignore of files in !NetSurf dir.
---
.gitignore | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/.gitignore b/.gitignore
index f27ca08ca..053a22050 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,12 +1,12 @@
*~
gtk/res/toolbarIndices
windows/res/preferences
-!NetSurf/!Run,feb
-!NetSurf/!RunImage,ff8
-!NetSurf/Resources/en/Templates,fec
-!NetSurf/Resources/fr/Templates,fec
-!NetSurf/Resources/de/Templates,fec
-!NetSurf/Resources/nl/Templates,fec
+\!NetSurf/!Run,feb
+\!NetSurf/!RunImage,ff8
+\!NetSurf/Resources/en/Templates,fec
+\!NetSurf/Resources/fr/Templates,fec
+\!NetSurf/Resources/de/Templates,fec
+\!NetSurf/Resources/nl/Templates,fec
test/nsurl
test/urldbtest
test/llcache
--
cgit v1.2.3
From 02561162a9f4b3ded49cea72cd23b4b102092db8 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sat, 21 Jul 2012 13:09:14 +0100
Subject: Add welcome page resources. Add symlinks to English welcome page to
gtk and framebuffer.
---
!NetSurf/Resources/de/welcome.html,faf | 66 ++++++++++++++++++++++++++++++++++
!NetSurf/Resources/en/welcome.html,faf | 65 +++++++++++++++++++++++++++++++++
!NetSurf/Resources/it/welcome.html,faf | 65 +++++++++++++++++++++++++++++++++
!NetSurf/Resources/ja/welcome.html,faf | 66 ++++++++++++++++++++++++++++++++++
framebuffer/res/welcome.html | 1 +
gtk/res/en/welcome.html | 1 +
6 files changed, 264 insertions(+)
create mode 100644 !NetSurf/Resources/de/welcome.html,faf
create mode 100644 !NetSurf/Resources/en/welcome.html,faf
create mode 100644 !NetSurf/Resources/it/welcome.html,faf
create mode 100644 !NetSurf/Resources/ja/welcome.html,faf
create mode 120000 framebuffer/res/welcome.html
create mode 120000 gtk/res/en/welcome.html
diff --git a/!NetSurf/Resources/de/welcome.html,faf b/!NetSurf/Resources/de/welcome.html,faf
new file mode 100644
index 000000000..975a67b0a
--- /dev/null
+++ b/!NetSurf/Resources/de/welcome.html,faf
@@ -0,0 +1,66 @@
+
+
+
+Welcome to NetSurf
+
+
+
+
+
+
+
+
+
+
+
Willkommen zu NetSurf
+
+
NetSurf ist ein kleiner, schneller Opensource Webbrowser. Wir sind ständig daran interessiert, unseren Browser zu verbessern. Bitte kontaktieren Sie uns, wenn Sie irgend welche Probleme bemerken.
+Danke, dass Sie sich für NetSurf entschieden haben!
+
+
+
+
+
+
+
+
+
+
diff --git a/!NetSurf/Resources/en/welcome.html,faf b/!NetSurf/Resources/en/welcome.html,faf
new file mode 100644
index 000000000..dba8d37ee
--- /dev/null
+++ b/!NetSurf/Resources/en/welcome.html,faf
@@ -0,0 +1,65 @@
+
+
+
+Welcome to NetSurf
+
+
+
+
+
+
+
+
+
+
+
Welcome to NetSurf
+
+
NetSurf is a small, fast open source web browser. We are always keen to improve our browser, so get in touch if you run into any problems. Thanks for choosing NetSurf!
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/!NetSurf/Resources/it/welcome.html,faf b/!NetSurf/Resources/it/welcome.html,faf
new file mode 100644
index 000000000..76fb9ba36
--- /dev/null
+++ b/!NetSurf/Resources/it/welcome.html,faf
@@ -0,0 +1,65 @@
+
+
+
+Benvenuti su NetSurf
+
+
+
+
+
+
+
+
+
+
+
Benvenuti su NetSurf
+
+
NetSurf la nostra idea di browser, per questo abbiamo scelto di renderlo piccolo e veloce e stiamo lavorando per renderlo sempre migliore, se hai qualche suggerimento o semplicemente hai bisogno di aiuto contattaci! Grazie per aver scelto NetSurf!
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/!NetSurf/Resources/ja/welcome.html,faf b/!NetSurf/Resources/ja/welcome.html,faf
new file mode 100644
index 000000000..e3eba1ad9
--- /dev/null
+++ b/!NetSurf/Resources/ja/welcome.html,faf
@@ -0,0 +1,66 @@
+
+
+
+
+NetSurfへようこそ
+
+
+
+
+
+
+
+
+
+
+
NetSurfへようこそ
+
+
NetSurfは小さくて速いオープンソースのウェブブラウザです。私たちはいつもこのブラウザを改良する気満々ですから、どんな問題でも声をかけてください。NetSurfを選んでくれてありがとう!
+
+
+
+
+
+
+
+
+
+
diff --git a/framebuffer/res/welcome.html b/framebuffer/res/welcome.html
new file mode 120000
index 000000000..5b394445b
--- /dev/null
+++ b/framebuffer/res/welcome.html
@@ -0,0 +1 @@
+../../!NetSurf/Resources/en/welcome.html,faf
\ No newline at end of file
diff --git a/gtk/res/en/welcome.html b/gtk/res/en/welcome.html
new file mode 120000
index 000000000..28362130a
--- /dev/null
+++ b/gtk/res/en/welcome.html
@@ -0,0 +1 @@
+../../../!NetSurf/Resources/en/welcome.html,faf
\ No newline at end of file
--
cgit v1.2.3
From a2dadbbe1261ec89fc6b05f356baef06efdc6df7 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sat, 21 Jul 2012 13:12:51 +0100
Subject: Add about:welcome handler and enable resource:welcome.html.
---
content/fetchers/about.c | 22 ++++++++++++++++++++--
content/fetchers/resource.c | 1 +
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/content/fetchers/about.c b/content/fetchers/about.c
index eddd77ef0..1330217f9 100644
--- a/content/fetchers/about.c
+++ b/content/fetchers/about.c
@@ -548,6 +548,21 @@ static bool fetch_about_logo_handler(struct fetch_about_context *ctx)
return true;
}
+static bool fetch_about_welcome_handler(struct fetch_about_context *ctx)
+{
+ fetch_msg msg;
+
+ /* content is going to return redirect */
+ fetch_set_http_code(ctx->fetchh, 302);
+
+ msg.type = FETCH_REDIRECT;
+ msg.data.redirect = "resource:welcome.html";
+
+ fetch_about_send_callback(&msg, ctx);
+
+ return true;
+}
+
/* Forward declaration because this handler requires the handler table. */
static bool fetch_about_about_handler(struct fetch_about_context *ctx);
@@ -560,13 +575,15 @@ struct about_handlers {
};
/** List of about paths and their handlers */
-struct about_handlers about_handler_list[] = {
+struct about_handlers about_handler_list[] = {
{ "credits", SLEN("credits"), NULL,
fetch_about_credits_handler, false },
{ "licence", SLEN("licence"), NULL,
fetch_about_licence_handler, false },
{ "license", SLEN("license"), NULL,
fetch_about_licence_handler, true },
+ { "welcome", SLEN("welcome"), NULL,
+ fetch_about_welcome_handler, false },
{ "config", SLEN("config"), NULL,
fetch_about_config_handler, false },
{ "Choices", SLEN("Choices"), NULL,
@@ -585,7 +602,8 @@ struct about_handlers about_handler_list[] = {
fetch_about_blank_handler, true }
};
-#define about_handler_list_len (sizeof(about_handler_list) / sizeof(struct about_handlers))
+#define about_handler_list_len (sizeof(about_handler_list) / \
+ sizeof(struct about_handlers))
/**
* List all the valid about: paths available
diff --git a/content/fetchers/resource.c b/content/fetchers/resource.c
index 1cd04f2dd..86d5498d5 100644
--- a/content/fetchers/resource.c
+++ b/content/fetchers/resource.c
@@ -79,6 +79,7 @@ static const char *fetch_resource_paths[] = {
"user.css",
"credits.html",
"licence.html",
+ "welcome.html",
"favicon.ico",
"netsurf.png"
};
--
cgit v1.2.3
From 5fc781d715cab48f03fb4d72558d35f65c6528c3 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sat, 21 Jul 2012 13:13:57 +0100
Subject: Update default homepage URL to about:welcome. Make RISC OS front end
use NETSURF_HOMEPAGE too.
Currently only the English welcome page will be fetched.
Need to add language negotiation to choose best language option.
---
Docs/PACKAGING-GTK | 4 ++--
Makefile.defaults | 2 +-
riscos/gui.c | 13 ++++---------
riscos/iconbar.c | 9 +++------
riscos/window.c | 7 +------
5 files changed, 11 insertions(+), 24 deletions(-)
diff --git a/Docs/PACKAGING-GTK b/Docs/PACKAGING-GTK
index 5453dff3f..67e63b231 100644
--- a/Docs/PACKAGING-GTK
+++ b/Docs/PACKAGING-GTK
@@ -74,8 +74,8 @@
===============
If the user hasn't specified a home page URL in their Preferences, NetSurf
- defaults to a "portal" welcome page on http://www.netsurf-browser.org/ - if
- you wish to change this, you can do so by editing NETSURF_HOMEPAGE in
+ defaults to a "portal" welcome page at about:netsurf - if you wish to
+ change this, you can do so by overriding the NETSURF_HOMEPAGE URL in
Makefile.config.
diff --git a/Makefile.defaults b/Makefile.defaults
index 8995a7271..1fdb42552 100644
--- a/Makefile.defaults
+++ b/Makefile.defaults
@@ -86,7 +86,7 @@ NETSURF_UA_FORMAT_STRING := "NetSurf/%d.%d (%s; %s)"
# option does not apply to the RISC OS version, as it has its own local
# home page, and it can be changed by editing the end of gui_init2() in
# riscos/gui.c
-NETSURF_HOMEPAGE := "http://www.netsurf-browser.org/welcome/"
+NETSURF_HOMEPAGE := "about:welcome"
# Force using glibc internal iconv implementation instead of external libiconv
# Valid options: YES, NO
diff --git a/riscos/gui.c b/riscos/gui.c
index 11f4e1df7..945f93770 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -761,13 +761,11 @@ static void gui_init2(int argc, char** argv)
}
/* default homepage */
else {
- url = calloc(80, sizeof(char));
+ url = strdup(NETSURF_HOMEPAGE);
if (!url) {
LOG(("malloc failed"));
die("Insufficient memory for URL");
}
- snprintf(url, 80, "file:////Docs/welcome/index_%s",
- nsoption_charp(language));
}
if (open_window)
@@ -1825,14 +1823,11 @@ void ro_msg_dataopen(wimp_message *message)
if (len < 9 || strcmp(".!NetSurf",
message->data.data_xfer.file_name + len - 9))
return;
- if (nsoption_charp(homepage_url) && nsoption_charp(homepage_url)[0]) {
+ if (nsoption_charp(homepage_url) &&
+ nsoption_charp(homepage_url)[0]) {
url = strdup(nsoption_charp(homepage_url));
} else {
- url = malloc(80);
- if (url)
- snprintf(url, 80,
- "file:////Docs/welcome/index_%s",
- nsoption_charp(language));
+ url = strdup(NETSURF_HOMEPAGE);
}
if (!url)
warn_user("NoMemory", 0);
diff --git a/riscos/iconbar.c b/riscos/iconbar.c
index 9e3a050e1..0aa591a45 100644
--- a/riscos/iconbar.c
+++ b/riscos/iconbar.c
@@ -117,19 +117,16 @@ void ro_gui_iconbar_initialise(void)
bool ro_gui_iconbar_click(wimp_pointer *pointer)
{
- char url[80];
int key_down = 0;
switch (pointer->buttons) {
case wimp_CLICK_SELECT:
if (nsoption_charp(homepage_url) != NULL) {
browser_window_create(nsoption_charp(homepage_url),
- NULL, 0, true, false);
+ NULL, 0, true, false);
} else {
- snprintf(url, sizeof url,
- "file:////Docs/welcome/index_%s",
- nsoption_charp(language));
- browser_window_create(url, NULL, 0, true, false);
+ browser_window_create(NETSURF_HOMEPAGE,
+ NULL, 0, true, false);
}
break;
diff --git a/riscos/window.c b/riscos/window.c
index 78410ac6a..8287878fe 100644
--- a/riscos/window.c
+++ b/riscos/window.c
@@ -3882,18 +3882,13 @@ bool ro_gui_window_navigate_up(struct gui_window *g, const char *url) {
void ro_gui_window_action_home(struct gui_window *g)
{
- char url[80];
-
if (g == NULL || g->bw == NULL)
return;
if ((nsoption_charp(homepage_url)) && (nsoption_charp(homepage_url)[0])) {
browser_window_go(g->bw, nsoption_charp(homepage_url), 0, true);
} else {
- snprintf(url, sizeof url,
- "file:////Docs/welcome/index_%s",
- nsoption_charp(language));
- browser_window_go(g->bw, url, 0, true);
+ browser_window_go(g->bw, NETSURF_HOMEPAGE, 0, true);
}
}
--
cgit v1.2.3
From b412b93701b3e4327d1eed88ecc27b093c571f61 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sat, 21 Jul 2012 14:55:51 +0100
Subject: Use online docs.
---
riscos/gui.c | 18 ------------------
riscos/gui.h | 1 -
riscos/iconbar.c | 4 +++-
riscos/window.c | 16 ++++++++++++----
4 files changed, 15 insertions(+), 24 deletions(-)
diff --git a/riscos/gui.c b/riscos/gui.c
index 945f93770..e11679b82 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -2113,24 +2113,6 @@ void ro_gui_screen_size(int *width, int *height)
}
-/**
- * Opens a language sensitive help page
- *
- * \param page the page to open
- */
-void ro_gui_open_help_page(const char *page)
-{
- char url[80];
- int length;
-
- if ((length = snprintf(url, sizeof url,
- "file:////Docs/%s_%s",
- page, nsoption_charp(language))) >= 0 &&
- length < (int)sizeof(url))
- browser_window_create(url, NULL, 0, true, false);
-}
-
-
/**
* Send the source of a content to a text editor.
*/
diff --git a/riscos/gui.h b/riscos/gui.h
index 14835274b..cd70a39a0 100644
--- a/riscos/gui.h
+++ b/riscos/gui.h
@@ -114,7 +114,6 @@ extern struct gui_window *ro_gui_current_redraw_gui;
/* in gui.c */
void ro_gui_open_window_request(wimp_open *open);
-void ro_gui_open_help_page(const char *page);
void ro_gui_screen_size(int *width, int *height);
void ro_gui_view_source(struct hlcache_handle *c);
void ro_gui_dump_content(struct hlcache_handle *c);
diff --git a/riscos/iconbar.c b/riscos/iconbar.c
index 0aa591a45..24d8661cc 100644
--- a/riscos/iconbar.c
+++ b/riscos/iconbar.c
@@ -183,7 +183,9 @@ bool ro_gui_iconbar_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
switch (action) {
case HELP_OPEN_CONTENTS:
- ro_gui_open_help_page("documentation/index");
+ browser_window_create(
+ "http://www.netsurf-browser.org/documentation/",
+ NULL, 0, true, false);
return true;
case BROWSER_NAVIGATE_URL:
ro_gui_dialog_prepare_open_url();
diff --git a/riscos/window.c b/riscos/window.c
index 8287878fe..deae43c25 100644
--- a/riscos/window.c
+++ b/riscos/window.c
@@ -1917,7 +1917,9 @@ bool ro_gui_window_handle_local_keypress(struct gui_window *g, wimp_key *key,
switch (c) {
case IS_WIMP_KEY + wimp_KEY_F1: /* Help. */
- ro_gui_open_help_page("documentation/index");
+ browser_window_create(
+ "http://www.netsurf-browser.org/documentation/",
+ NULL, 0, true, false);
return true;
case IS_WIMP_KEY + wimp_KEY_CONTROL + wimp_KEY_F1:
@@ -2642,13 +2644,19 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
/* help actions */
case HELP_OPEN_CONTENTS:
- ro_gui_open_help_page("documentation/index");
+ browser_window_create(
+ "http://www.netsurf-browser.org/documentation/",
+ NULL, 0, true, false);
break;
case HELP_OPEN_GUIDE:
- ro_gui_open_help_page("documentation/guide");
+ browser_window_create(
+ "http://www.netsurf-browser.org/documentation/guide",
+ NULL, 0, true, false);
break;
case HELP_OPEN_INFORMATION:
- ro_gui_open_help_page("documentation/info");
+ browser_window_create(
+ "http://www.netsurf-browser.org/documentation/info",
+ NULL, 0, true, false);
break;
case HELP_OPEN_CREDITS:
browser_window_create("about:credits", NULL, 0, true, false);
--
cgit v1.2.3
From 9d3986e768b761e63f28c657de67c408ba0b9486 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sat, 21 Jul 2012 17:41:17 +0100
Subject: Avoid strcasecmp in form control creation node name handler.
---
render/html.c | 9 +++++++++
render/html_forms.c | 26 ++++++++++++--------------
render/html_internal.h | 3 +++
3 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/render/html.c b/render/html.c
index 8c5c76b8e..8dcd7a84c 100644
--- a/render/html.c
+++ b/render/html.c
@@ -113,6 +113,9 @@ dom_string *html_dom_string_coords;
dom_string *html_dom_string_circle;
dom_string *html_dom_string_poly;
dom_string *html_dom_string_polygon;
+dom_string *html_dom_string_button;
+dom_string *html_dom_string_input;
+dom_string *html_dom_string_textarea;
static void html_destroy_objects(html_content *html)
@@ -3140,6 +3143,9 @@ static void html_fini(void)
HTML_DOM_STRING_UNREF(circle);
HTML_DOM_STRING_UNREF(poly);
HTML_DOM_STRING_UNREF(polygon);
+ HTML_DOM_STRING_UNREF(button);
+ HTML_DOM_STRING_UNREF(input);
+ HTML_DOM_STRING_UNREF(textarea);
#undef HTML_DOM_STRING_UNREF
@@ -3269,6 +3275,9 @@ nserror html_init(void)
HTML_DOM_STRING_INTERN(circle);
HTML_DOM_STRING_INTERN(poly);
HTML_DOM_STRING_INTERN(polygon);
+ HTML_DOM_STRING_INTERN(button);
+ HTML_DOM_STRING_INTERN(input);
+ HTML_DOM_STRING_INTERN(textarea);
#undef HTML_DOM_STRING_INTERN
diff --git a/render/html_forms.c b/render/html_forms.c
index c8b3c7fe6..5212b3ab8 100644
--- a/render/html_forms.c
+++ b/render/html_forms.c
@@ -416,7 +416,6 @@ struct form_control *html_forms_get_control_for_node(struct form *forms, dom_nod
struct form_control *ctl = NULL;
dom_exception err;
dom_string *ds_name = NULL;
- char *node_name = NULL;
if (forms == NULL)
return NULL;
@@ -432,18 +431,18 @@ struct form_control *html_forms_get_control_for_node(struct form *forms, dom_nod
/* Step two, extract the node's name so we can construct a gadget. */
err = dom_element_get_tag_name(node, &ds_name);
if (err == DOM_NO_ERR && ds_name != NULL) {
- node_name = strndup(dom_string_data(ds_name),
- dom_string_byte_length(ds_name));
- }
-
- /* Step three, attempt to work out what gadget to make */
- if (node_name && strcasecmp(node_name, "button") == 0)
- ctl = parse_button_element(forms,
- (dom_html_button_element *) node);
- else if (node_name && strcasecmp(node_name, "input") == 0)
- ctl = parse_input_element(forms,
- (dom_html_input_element *) node);
+ /* Step three, attempt to work out what gadget to make */
+ if (dom_string_caseless_isequal(ds_name,
+ html_dom_string_button)) {
+ ctl = parse_button_element(forms,
+ (dom_html_button_element *) node);
+ } else if (dom_string_caseless_isequal(ds_name,
+ html_dom_string_input)) {
+ ctl = parse_input_element(forms,
+ (dom_html_input_element *) node);
+ }
+ }
/* If all else fails, fake gadget time */
if (ctl == NULL)
@@ -451,8 +450,7 @@ struct form_control *html_forms_get_control_for_node(struct form *forms, dom_nod
if (ds_name != NULL)
dom_string_unref(ds_name);
- if (node_name != NULL)
- free(node_name);
+
return ctl;
}
diff --git a/render/html_internal.h b/render/html_internal.h
index ad032f720..a82d7c5c0 100644
--- a/render/html_internal.h
+++ b/render/html_internal.h
@@ -173,6 +173,9 @@ extern struct dom_string *html_dom_string_coords;
extern struct dom_string *html_dom_string_circle;
extern struct dom_string *html_dom_string_poly;
extern struct dom_string *html_dom_string_polygon;
+extern struct dom_string *html_dom_string_button;
+extern struct dom_string *html_dom_string_input;
+extern struct dom_string *html_dom_string_textarea;
extern struct dom_string *html_dom_string_text_javascript;
extern struct dom_string *html_dom_string_type;
extern struct dom_string *html_dom_string_src;
--
cgit v1.2.3
From 792dbe6e44cc1d3a78dfb62f99c001bc46131de7 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sat, 21 Jul 2012 18:16:04 +0100
Subject: Add textarea support back in.
---
render/html_forms.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/render/html_forms.c b/render/html_forms.c
index 5212b3ab8..5b917cde8 100644
--- a/render/html_forms.c
+++ b/render/html_forms.c
@@ -391,6 +391,52 @@ out:
return control;
}
+static struct form_control *
+parse_textarea_element(struct form *forms, dom_html_text_area_element *ta)
+{
+ struct form_control *control = NULL;
+ dom_html_form_element *form = NULL;
+ dom_string *ds_name = NULL;
+
+ char *name = NULL;
+
+ if (dom_html_text_area_element_get_form(ta, &form) != DOM_NO_ERR)
+ goto out;
+
+ if (dom_html_text_area_element_get_name(ta, &ds_name) != DOM_NO_ERR)
+ goto out;
+
+ if (ds_name != NULL)
+ name = strndup(dom_string_data(ds_name),
+ dom_string_byte_length(ds_name));
+
+ control = form_new_control(ta, GADGET_TEXTAREA);
+
+ if (control == NULL)
+ goto out;
+
+ if (name != NULL) {
+ /* Hand the name string over */
+ control->name = name;
+ name = NULL;
+ }
+
+ if (form != NULL && control != NULL)
+ form_add_control(find_form(forms, form), control);
+
+out:
+ if (form != NULL)
+ dom_node_unref(form);
+ if (ds_name != NULL)
+ dom_string_unref(ds_name);
+
+ if (name != NULL)
+ free(name);
+
+
+ return control;
+}
+
static struct form_control *
invent_fake_gadget(dom_node *node)
{
@@ -441,6 +487,10 @@ struct form_control *html_forms_get_control_for_node(struct form *forms, dom_nod
html_dom_string_input)) {
ctl = parse_input_element(forms,
(dom_html_input_element *) node);
+ } else if (dom_string_caseless_isequal(ds_name,
+ html_dom_string_textarea)) {
+ ctl = parse_textarea_element(forms,
+ (dom_html_text_area_element *) node);
}
}
--
cgit v1.2.3
From 699e2e65e64af30b73d44aa5aa107de5a4a10d74 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sat, 21 Jul 2012 18:50:04 +0100
Subject: Remove favicon and fix logo URL in non-en welcome pages.
---
!NetSurf/Resources/de/welcome.html,faf | 3 +--
!NetSurf/Resources/en/welcome.html,faf | 1 -
!NetSurf/Resources/it/welcome.html,faf | 3 +--
!NetSurf/Resources/ja/welcome.html,faf | 3 +--
4 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/!NetSurf/Resources/de/welcome.html,faf b/!NetSurf/Resources/de/welcome.html,faf
index 975a67b0a..fbbed0399 100644
--- a/!NetSurf/Resources/de/welcome.html,faf
+++ b/!NetSurf/Resources/de/welcome.html,faf
@@ -3,11 +3,10 @@
Welcome to NetSurf
-
-
+
NetSurf Website
diff --git a/!NetSurf/Resources/en/welcome.html,faf b/!NetSurf/Resources/en/welcome.html,faf
index dba8d37ee..14884f074 100644
--- a/!NetSurf/Resources/en/welcome.html,faf
+++ b/!NetSurf/Resources/en/welcome.html,faf
@@ -3,7 +3,6 @@
Welcome to NetSurf
-
diff --git a/!NetSurf/Resources/it/welcome.html,faf b/!NetSurf/Resources/it/welcome.html,faf
index 76fb9ba36..2d44436de 100644
--- a/!NetSurf/Resources/it/welcome.html,faf
+++ b/!NetSurf/Resources/it/welcome.html,faf
@@ -3,11 +3,10 @@
Benvenuti su NetSurf
-
-
+
Pagina principale
diff --git a/!NetSurf/Resources/ja/welcome.html,faf b/!NetSurf/Resources/ja/welcome.html,faf
index e3eba1ad9..152847443 100644
--- a/!NetSurf/Resources/ja/welcome.html,faf
+++ b/!NetSurf/Resources/ja/welcome.html,faf
@@ -4,11 +4,10 @@
NetSurfへようこそ
-
-
+
NetSurfウェブサイト
--
cgit v1.2.3
From 25bcfa93da5642317b822f11d4b7a0631f3c6948 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sat, 21 Jul 2012 19:07:29 +0100
Subject: Fix node name comparisons to be case insensitive.
---
css/select.c | 148 +++++++++++++++++++++++++++++------------------------------
1 file changed, 74 insertions(+), 74 deletions(-)
diff --git a/css/select.c b/css/select.c
index 174b73e35..5f8f537f5 100644
--- a/css/select.c
+++ b/css/select.c
@@ -1515,7 +1515,7 @@ css_error node_is_link(void *pw, void *n, bool *match)
return CSS_NOMEM;
}
- if (dom_string_isequal(node_name, nscss_dom_string_a)) {
+ if (dom_string_caseless_isequal(node_name, nscss_dom_string_a)) {
bool has_href;
exc = dom_element_has_attribute(node, nscss_dom_string_href, &has_href);
if ((exc == DOM_NO_ERR) && (has_href)) {
@@ -1751,13 +1751,13 @@ node_presentational_hint_vertical_align(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_isequal(name, nscss_dom_string_col) ||
- dom_string_isequal(name, nscss_dom_string_thead) ||
- dom_string_isequal(name, nscss_dom_string_tbody) ||
- dom_string_isequal(name, nscss_dom_string_tfoot) ||
- dom_string_isequal(name, nscss_dom_string_tr) ||
- dom_string_isequal(name, nscss_dom_string_td) ||
- dom_string_isequal(name, nscss_dom_string_th)) {
+ if (dom_string_caseless_isequal(name, nscss_dom_string_col) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_thead) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_tbody) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_tfoot) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_tr) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_td) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_th)) {
err = dom_element_get_attribute(node,
nscss_dom_string_valign, &valign);
if (err != DOM_NO_ERR || valign == NULL) {
@@ -1786,11 +1786,11 @@ node_presentational_hint_vertical_align(nscss_select_ctx *ctx,
dom_string_unref(name);
return CSS_OK;
- } else if (dom_string_isequal(name, nscss_dom_string_applet) ||
- dom_string_isequal(name, nscss_dom_string_embed) ||
- dom_string_isequal(name, nscss_dom_string_iframe) ||
- dom_string_isequal(name, nscss_dom_string_img) ||
- dom_string_isequal(name, nscss_dom_string_object)) {
+ } else if (dom_string_caseless_isequal(name, nscss_dom_string_applet) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_embed) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_iframe) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_img) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_object)) {
/** \todo input[type=image][align=*] - $11.3.3 */
err = dom_element_get_attribute(node,
nscss_dom_string_align, &valign);
@@ -1843,13 +1843,13 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_isequal(name, nscss_dom_string_p) ||
- dom_string_isequal(name, nscss_dom_string_h1) ||
- dom_string_isequal(name, nscss_dom_string_h2) ||
- dom_string_isequal(name, nscss_dom_string_h3) ||
- dom_string_isequal(name, nscss_dom_string_h4) ||
- dom_string_isequal(name, nscss_dom_string_h5) ||
- dom_string_isequal(name, nscss_dom_string_h6)) {
+ if (dom_string_caseless_isequal(name, nscss_dom_string_p) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_h1) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_h2) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_h3) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_h4) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_h5) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_h6)) {
err = dom_element_get_attribute(node,
nscss_dom_string_align, &align);
if (err != DOM_NO_ERR || align == NULL) {
@@ -1878,13 +1878,13 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
dom_string_unref(name);
return CSS_OK;
- } else if (dom_string_isequal(name, nscss_dom_string_center)) {
+ } else if (dom_string_caseless_isequal(name, nscss_dom_string_center)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER;
dom_string_unref(name);
return CSS_OK;
- } else if (dom_string_isequal(name, nscss_dom_string_caption)) {
+ } else if (dom_string_caseless_isequal(name, nscss_dom_string_caption)) {
err = dom_element_get_attribute(node,
nscss_dom_string_align, &align);
if (err != DOM_NO_ERR) {
@@ -1915,13 +1915,13 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
dom_string_unref(name);
return CSS_OK;
- } else if (dom_string_isequal(name, nscss_dom_string_div) ||
- dom_string_isequal(name, nscss_dom_string_thead) ||
- dom_string_isequal(name, nscss_dom_string_tbody) ||
- dom_string_isequal(name, nscss_dom_string_tfoot) ||
- dom_string_isequal(name, nscss_dom_string_tr) ||
- dom_string_isequal(name, nscss_dom_string_td) ||
- dom_string_isequal(name, nscss_dom_string_th)) {
+ } else if (dom_string_caseless_isequal(name, nscss_dom_string_div) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_thead) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_tbody) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_tfoot) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_tr) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_td) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_th)) {
err = dom_element_get_attribute(node,
nscss_dom_string_align, &align);
if (err != DOM_NO_ERR || align == NULL) {
@@ -1951,7 +1951,7 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
dom_string_unref(name);
return CSS_OK;
- } else if (dom_string_isequal(name, nscss_dom_string_table)) {
+ } else if (dom_string_caseless_isequal(name, nscss_dom_string_table)) {
/* Tables usually reset alignment */
hint->status = CSS_TEXT_ALIGN_INHERIT_IF_NON_MAGIC;
@@ -1979,8 +1979,8 @@ node_presentational_hint_padding_trbl(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_isequal(name, nscss_dom_string_td) ||
- dom_string_isequal(name, nscss_dom_string_th)) {
+ if (dom_string_caseless_isequal(name, nscss_dom_string_td) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_th)) {
css_qname qs;
dom_node *tablenode = NULL;
qs.ns = NULL;
@@ -2043,8 +2043,8 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_isequal(n, nscss_dom_string_img) ||
- dom_string_isequal(n, nscss_dom_string_applet)) {
+ if (dom_string_caseless_isequal(n, nscss_dom_string_img) ||
+ dom_string_caseless_isequal(n, nscss_dom_string_applet)) {
dom_string_unref(n);
exc = dom_element_get_attribute(node,
nscss_dom_string_hspace, &n);
@@ -2065,8 +2065,8 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
}
dom_string_unref(n);
return CSS_OK;
- } else if (dom_string_isequal(n, nscss_dom_string_table) ||
- dom_string_isequal(n, nscss_dom_string_align)) {
+ } else if (dom_string_caseless_isequal(n, nscss_dom_string_table) ||
+ dom_string_caseless_isequal(n, nscss_dom_string_align)) {
dom_string_unref(n);
exc = dom_element_get_attribute(node,
nscss_dom_string_align, &n);
@@ -2089,7 +2089,7 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
dom_string_unref(n);
return CSS_OK;
- } else if (dom_string_isequal(n, nscss_dom_string_hr)) {
+ } else if (dom_string_caseless_isequal(n, nscss_dom_string_hr)) {
dom_string_unref(n);
exc = dom_element_get_attribute(node,
nscss_dom_string_align, &n);
@@ -2143,8 +2143,8 @@ node_presentational_hint_margin_tb(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_isequal(name, nscss_dom_string_img) ||
- dom_string_isequal(name, nscss_dom_string_applet)) {
+ if (dom_string_caseless_isequal(name, nscss_dom_string_img) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_applet)) {
exc = dom_element_get_attribute(node, nscss_dom_string_vspace,
&vspace);
if (exc != DOM_NO_ERR) {
@@ -2186,8 +2186,8 @@ node_presentational_hint_border_trbl_width(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_isequal(name, nscss_dom_string_td) ||
- dom_string_isequal(name, nscss_dom_string_th)) {
+ if (dom_string_caseless_isequal(name, nscss_dom_string_td) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_th)) {
css_qname qs;
dom_node *tablenode = NULL;
qs.ns = NULL;
@@ -2217,7 +2217,7 @@ node_presentational_hint_border_trbl_width(nscss_select_ctx *ctx,
* return a reffed node to the CSS
*/
is_table_cell = true;
- } else if (dom_string_isequal(name, nscss_dom_string_table)) {
+ } else if (dom_string_caseless_isequal(name, nscss_dom_string_table)) {
exc = dom_element_get_attribute(node, nscss_dom_string_border,
&width);
if (exc != DOM_NO_ERR) {
@@ -2263,8 +2263,8 @@ node_presentational_hint_border_trbl_style(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_isequal(name, nscss_dom_string_td) ||
- dom_string_isequal(name, nscss_dom_string_th)) {
+ if (dom_string_caseless_isequal(name, nscss_dom_string_td) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_th)) {
css_qname qs;
dom_node *tablenode = NULL;
qs.ns = NULL;
@@ -2305,7 +2305,7 @@ node_presentational_hint_border_trbl_style(nscss_select_ctx *ctx,
/* No need to unref tablenode, named_ancestor_node does not
* return a reffed node to the CSS
*/
- } else if (dom_string_isequal(name, nscss_dom_string_table)) {
+ } else if (dom_string_caseless_isequal(name, nscss_dom_string_table)) {
bool has_border = false;
exc = dom_element_has_attribute(node,
@@ -2341,8 +2341,8 @@ node_presentational_hint_border_trbl_color(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_isequal(name, nscss_dom_string_td) ||
- dom_string_isequal(name, nscss_dom_string_th)) {
+ if (dom_string_caseless_isequal(name, nscss_dom_string_td) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_th)) {
css_qname qs;
dom_node *tablenode = NULL;
qs.ns = NULL;
@@ -2372,7 +2372,7 @@ node_presentational_hint_border_trbl_color(nscss_select_ctx *ctx,
* return a reffed node to the CSS
*/
- } else if (dom_string_isequal(name, nscss_dom_string_table)) {
+ } else if (dom_string_caseless_isequal(name, nscss_dom_string_table)) {
err = dom_element_get_attribute(node,
nscss_dom_string_bordercolor,
&bordercolor);
@@ -2453,23 +2453,23 @@ node_presentational_hint_width(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_isequal(name, nscss_dom_string_hr) ||
- dom_string_isequal(name, nscss_dom_string_iframe) ||
- dom_string_isequal(name, nscss_dom_string_img) ||
- dom_string_isequal(name, nscss_dom_string_object) ||
- dom_string_isequal(name, nscss_dom_string_table) ||
- dom_string_isequal(name, nscss_dom_string_td) ||
- dom_string_isequal(name, nscss_dom_string_th) ||
- dom_string_isequal(name, nscss_dom_string_applet)) {
+ if (dom_string_caseless_isequal(name, nscss_dom_string_hr) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_iframe) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_img) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_object) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_table) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_td) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_th) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_applet)) {
err = dom_element_get_attribute(node,
nscss_dom_string_width,
&width);
- } else if (dom_string_isequal(name, nscss_dom_string_textarea)) {
+ } else if (dom_string_caseless_isequal(name, nscss_dom_string_textarea)) {
textarea = true;
err = dom_element_get_attribute(node,
nscss_dom_string_cols,
&width);
- } else if (dom_string_isequal(name, nscss_dom_string_input)) {
+ } else if (dom_string_caseless_isequal(name, nscss_dom_string_input)) {
input = true;
err = dom_element_get_attribute(node,
nscss_dom_string_size,
@@ -2533,17 +2533,17 @@ node_presentational_hint_height(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_isequal(name, nscss_dom_string_iframe) ||
- dom_string_isequal(name, nscss_dom_string_td) ||
- dom_string_isequal(name, nscss_dom_string_th) ||
- dom_string_isequal(name, nscss_dom_string_tr) ||
- dom_string_isequal(name, nscss_dom_string_img) ||
- dom_string_isequal(name, nscss_dom_string_object) ||
- dom_string_isequal(name, nscss_dom_string_applet)) {
+ if (dom_string_caseless_isequal(name, nscss_dom_string_iframe) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_td) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_th) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_tr) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_img) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_object) ||
+ dom_string_caseless_isequal(name, nscss_dom_string_applet)) {
err = dom_element_get_attribute(node,
nscss_dom_string_height,
&height);
- } else if (dom_string_isequal(name, nscss_dom_string_textarea)) {
+ } else if (dom_string_caseless_isequal(name, nscss_dom_string_textarea)) {
textarea = true;
err = dom_element_get_attribute(node,
nscss_dom_string_rows,
@@ -2588,7 +2588,7 @@ node_presentational_hint_font_size(nscss_select_ctx *ctx,
return CSS_NOMEM;
}
- if (!dom_string_isequal(node_name, nscss_dom_string_font)) {
+ if (!dom_string_caseless_isequal(node_name, nscss_dom_string_font)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
@@ -2627,11 +2627,11 @@ node_presentational_hint_float(nscss_select_ctx *ctx,
}
/** \todo input[type=image][align=*] - $11.3.3 */
- if (!dom_string_isequal(node_name, nscss_dom_string_applet) &&
- !dom_string_isequal(node_name, nscss_dom_string_embed) &&
- !dom_string_isequal(node_name, nscss_dom_string_iframe) &&
- !dom_string_isequal(node_name, nscss_dom_string_img) &&
- !dom_string_isequal(node_name, nscss_dom_string_object)) {
+ if (!dom_string_caseless_isequal(node_name, nscss_dom_string_applet) &&
+ !dom_string_caseless_isequal(node_name, nscss_dom_string_embed) &&
+ !dom_string_caseless_isequal(node_name, nscss_dom_string_iframe) &&
+ !dom_string_caseless_isequal(node_name, nscss_dom_string_img) &&
+ !dom_string_caseless_isequal(node_name, nscss_dom_string_object)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
@@ -2673,7 +2673,7 @@ node_presentational_hint_color(nscss_select_ctx *ctx,
return CSS_NOMEM;
}
- if (dom_string_isequal(node_name, nscss_dom_string_a)) {
+ if (dom_string_caseless_isequal(node_name, nscss_dom_string_a)) {
/* find body node */
css_qname qs;
dom_node *bodynode = NULL;
@@ -2718,7 +2718,7 @@ node_presentational_hint_color(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
}
}
- } else if (dom_string_isequal(node_name, nscss_dom_string_body)) {
+ } else if (dom_string_caseless_isequal(node_name, nscss_dom_string_body)) {
err = dom_element_get_attribute(node, nscss_dom_string_text, &color);
if ((err != DOM_NO_ERR) || (color == NULL)) {
dom_string_unref(node_name);
--
cgit v1.2.3
From 88207c0b17a44e2cd1567919aa1efd499ae79d87 Mon Sep 17 00:00:00 2001
From: Daniel Silverstone
Date: Sat, 21 Jul 2012 20:10:44 +0100
Subject: Unref the node where appropriate, so we don't have it left
behind
---
render/html.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/render/html.c b/render/html.c
index 8dcd7a84c..97d1750cf 100644
--- a/render/html.c
+++ b/render/html.c
@@ -187,6 +187,7 @@ static void html_box_convert_done(html_content *c, bool success)
msg_data.error = messages_get("NoMemory");
content_broadcast(&c->base, CONTENT_MSG_ERROR, msg_data);
content_set_error(&c->base);
+ dom_node_unref(html);
return;
}
/*imagemap_dump(c);*/
@@ -201,6 +202,7 @@ static void html_box_convert_done(html_content *c, bool success)
content_set_done(&c->base);
html_set_status(c, "");
+ dom_node_unref(html);
}
/**
@@ -296,6 +298,7 @@ void html_finish_conversion(html_content *c)
content_set_error(&c->base);
return;
}
+ dom_node_unref(html);
}
@@ -1998,6 +2001,7 @@ static bool html_convert(struct content *c)
LOG(("root element not html"));
msg_data.error = messages_get("ParsingFail");
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
+ dom_node_unref(html);
return false;
}
dom_string_unref(node_name);
@@ -2046,12 +2050,17 @@ static bool html_convert(struct content *c)
if (html_head(htmlc, head) == false) {
msg_data.error = messages_get("NoMemory");
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
+ dom_node_unref(html);
+ dom_node_unref(head);
return false;
}
/* handle meta refresh */
- if (html_meta_refresh(htmlc, head) == false)
+ if (html_meta_refresh(htmlc, head) == false) {
+ dom_node_unref(html);
+ dom_node_unref(head);
return false;
+ }
}
/* Retrieve forms from parser */
@@ -2074,6 +2083,8 @@ static bool html_convert(struct content *c)
if (res != URL_FUNC_OK) {
msg_data.error = messages_get("NoMemory");
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
+ dom_node_unref(html);
+ dom_node_unref(head);
return false;
}
@@ -2087,15 +2098,21 @@ static bool html_convert(struct content *c)
msg_data.error = messages_get("NoMemory");
content_broadcast(c, CONTENT_MSG_ERROR,
msg_data);
+ dom_node_unref(html);
+ dom_node_unref(head);
return false;
}
}
}
+ dom_node_unref(head);
/* get stylesheets */
- if (html_find_stylesheets(htmlc, html) == false)
+ if (html_find_stylesheets(htmlc, html) == false) {
+ dom_node_unref(html);
return false;
+ }
+ dom_node_unref(html);
return true;
}
--
cgit v1.2.3
From 41abc08cbb616b4c8408969ad491f78c753e40b7 Mon Sep 17 00:00:00 2001
From: John-Mark Bell
Date: Sun, 22 Jul 2012 13:49:10 +0100
Subject: Fix ref leak in error case
---
render/html.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/render/html.c b/render/html.c
index 97d1750cf..ba9c9e79a 100644
--- a/render/html.c
+++ b/render/html.c
@@ -292,12 +292,14 @@ void html_finish_conversion(html_content *c)
}
if (xml_to_box(html, c, html_box_convert_done) == false) {
+ dom_node_unref(html);
html_destroy_objects(c);
msg_data.error = messages_get("NoMemory");
content_broadcast(&c->base, CONTENT_MSG_ERROR, msg_data);
content_set_error(&c->base);
return;
}
+
dom_node_unref(html);
}
--
cgit v1.2.3
From 1e65737c8cad643ed9591b306364a1844458fd13 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 22 Jul 2012 14:06:45 +0100
Subject: Interned string cleanup, phase 1: Use lwc_string where possible in
CSS handler.
---
css/css.c | 286 +++++++++++++++++++++++------------------
css/internal.h | 85 +++++++------
css/select.c | 396 ++++++++++++++++++++++++++++++---------------------------
3 files changed, 414 insertions(+), 353 deletions(-)
diff --git a/css/css.c b/css/css.c
index 98760f560..549e79fae 100644
--- a/css/css.c
+++ b/css/css.c
@@ -83,68 +83,72 @@ static css_error nscss_register_import(struct content_css_data *c,
static lwc_string *css_charset;
static css_stylesheet *blank_import;
-dom_string *nscss_dom_string_a;
-dom_string *nscss_dom_string_abscenter;
-dom_string *nscss_dom_string_absmiddle;
+lwc_string *nscss_lwc_string_a;
+lwc_string *nscss_lwc_string_abscenter;
+lwc_string *nscss_lwc_string_absmiddle;
+lwc_string *nscss_lwc_string_align;
+lwc_string *nscss_lwc_string_applet;
+lwc_string *nscss_lwc_string_baseline;
+lwc_string *nscss_lwc_string_body;
+lwc_string *nscss_lwc_string_bottom;
+lwc_string *nscss_lwc_string_caption;
+lwc_string *nscss_lwc_string_center;
+lwc_string *nscss_lwc_string_col;
+lwc_string *nscss_lwc_string_div;
+lwc_string *nscss_lwc_string_embed;
+lwc_string *nscss_lwc_string_font;
+lwc_string *nscss_lwc_string_h1;
+lwc_string *nscss_lwc_string_h2;
+lwc_string *nscss_lwc_string_h3;
+lwc_string *nscss_lwc_string_h4;
+lwc_string *nscss_lwc_string_h5;
+lwc_string *nscss_lwc_string_h6;
+lwc_string *nscss_lwc_string_hr;
+lwc_string *nscss_lwc_string_iframe;
+lwc_string *nscss_lwc_string_img;
+lwc_string *nscss_lwc_string_input;
+lwc_string *nscss_lwc_string_justify;
+lwc_string *nscss_lwc_string_left;
+lwc_string *nscss_lwc_string_middle;
+lwc_string *nscss_lwc_string_object;
+lwc_string *nscss_lwc_string_p;
+lwc_string *nscss_lwc_string_password;
+lwc_string *nscss_lwc_string_right;
+lwc_string *nscss_lwc_string_table;
+lwc_string *nscss_lwc_string_tbody;
+lwc_string *nscss_lwc_string_td;
+lwc_string *nscss_lwc_string_text;
+lwc_string *nscss_lwc_string_textarea;
+lwc_string *nscss_lwc_string_texttop;
+lwc_string *nscss_lwc_string_tfoot;
+lwc_string *nscss_lwc_string_th;
+lwc_string *nscss_lwc_string_thead;
+lwc_string *nscss_lwc_string_top;
+lwc_string *nscss_lwc_string_tr;
+
dom_string *nscss_dom_string_align;
-dom_string *nscss_dom_string_applet;
dom_string *nscss_dom_string_background;
-dom_string *nscss_dom_string_baseline;
dom_string *nscss_dom_string_bgcolor;
-dom_string *nscss_dom_string_body;
dom_string *nscss_dom_string_border;
dom_string *nscss_dom_string_bordercolor;
-dom_string *nscss_dom_string_bottom;
-dom_string *nscss_dom_string_caption;
dom_string *nscss_dom_string_cellpadding;
dom_string *nscss_dom_string_cellspacing;
-dom_string *nscss_dom_string_center;
-dom_string *nscss_dom_string_col;
dom_string *nscss_dom_string_color;
dom_string *nscss_dom_string_cols;
-dom_string *nscss_dom_string_div;
-dom_string *nscss_dom_string_embed;
-dom_string *nscss_dom_string_font;
-dom_string *nscss_dom_string_h1;
-dom_string *nscss_dom_string_h2;
-dom_string *nscss_dom_string_h3;
-dom_string *nscss_dom_string_h4;
-dom_string *nscss_dom_string_h5;
-dom_string *nscss_dom_string_h6;
dom_string *nscss_dom_string_height;
-dom_string *nscss_dom_string_hr;
dom_string *nscss_dom_string_href;
dom_string *nscss_dom_string_hspace;
-dom_string *nscss_dom_string_iframe;
-dom_string *nscss_dom_string_img;
-dom_string *nscss_dom_string_input;
-dom_string *nscss_dom_string_justify;
-dom_string *nscss_dom_string_left;
dom_string *nscss_dom_string_link;
-dom_string *nscss_dom_string_middle;
-dom_string *nscss_dom_string_object;
-dom_string *nscss_dom_string_p;
-dom_string *nscss_dom_string_password;
-dom_string *nscss_dom_string_right;
dom_string *nscss_dom_string_rows;
dom_string *nscss_dom_string_size;
-dom_string *nscss_dom_string_table;
-dom_string *nscss_dom_string_tbody;
-dom_string *nscss_dom_string_td;
dom_string *nscss_dom_string_text;
-dom_string *nscss_dom_string_textarea;
-dom_string *nscss_dom_string_texttop;
-dom_string *nscss_dom_string_tfoot;
-dom_string *nscss_dom_string_th;
-dom_string *nscss_dom_string_thead;
-dom_string *nscss_dom_string_top;
-dom_string *nscss_dom_string_tr;
dom_string *nscss_dom_string_type;
dom_string *nscss_dom_string_valign;
dom_string *nscss_dom_string_vlink;
dom_string *nscss_dom_string_vspace;
dom_string *nscss_dom_string_width;
+
/**
* Initialise a CSS content
*
@@ -830,76 +834,88 @@ css_error nscss_register_import(struct content_css_data *c,
*/
static void nscss_fini(void)
{
+#define CSS_LWC_STRING_UNREF(NAME) \
+ do { \
+ if (nscss_lwc_string_##NAME != NULL) { \
+ lwc_string_unref(nscss_lwc_string_##NAME); \
+ nscss_lwc_string_##NAME = NULL; \
+ } \
+ } while (0)
+
+ CSS_LWC_STRING_UNREF(a);
+ CSS_LWC_STRING_UNREF(abscenter);
+ CSS_LWC_STRING_UNREF(absmiddle);
+ CSS_LWC_STRING_UNREF(align);
+ CSS_LWC_STRING_UNREF(applet);
+ CSS_LWC_STRING_UNREF(baseline);
+ CSS_LWC_STRING_UNREF(body);
+ CSS_LWC_STRING_UNREF(bottom);
+ CSS_LWC_STRING_UNREF(caption);
+ CSS_LWC_STRING_UNREF(center);
+ CSS_LWC_STRING_UNREF(col);
+ CSS_LWC_STRING_UNREF(div);
+ CSS_LWC_STRING_UNREF(embed);
+ CSS_LWC_STRING_UNREF(font);
+ CSS_LWC_STRING_UNREF(h1);
+ CSS_LWC_STRING_UNREF(h2);
+ CSS_LWC_STRING_UNREF(h3);
+ CSS_LWC_STRING_UNREF(h4);
+ CSS_LWC_STRING_UNREF(h5);
+ CSS_LWC_STRING_UNREF(h6);
+ CSS_LWC_STRING_UNREF(hr);
+ CSS_LWC_STRING_UNREF(iframe);
+ CSS_LWC_STRING_UNREF(img);
+ CSS_LWC_STRING_UNREF(input);
+ CSS_LWC_STRING_UNREF(justify);
+ CSS_LWC_STRING_UNREF(left);
+ CSS_LWC_STRING_UNREF(middle);
+ CSS_LWC_STRING_UNREF(object);
+ CSS_LWC_STRING_UNREF(p);
+ CSS_LWC_STRING_UNREF(password);
+ CSS_LWC_STRING_UNREF(right);
+ CSS_LWC_STRING_UNREF(table);
+ CSS_LWC_STRING_UNREF(tbody);
+ CSS_LWC_STRING_UNREF(td);
+ CSS_LWC_STRING_UNREF(text);
+ CSS_LWC_STRING_UNREF(textarea);
+ CSS_LWC_STRING_UNREF(texttop);
+ CSS_LWC_STRING_UNREF(tfoot);
+ CSS_LWC_STRING_UNREF(th);
+ CSS_LWC_STRING_UNREF(thead);
+ CSS_LWC_STRING_UNREF(top);
+ CSS_LWC_STRING_UNREF(tr);
+#undef CSS_LWC_STRING_UNREF
+
+
#define CSS_DOM_STRING_UNREF(NAME) \
do { \
if (nscss_dom_string_##NAME != NULL) { \
dom_string_unref(nscss_dom_string_##NAME); \
nscss_dom_string_##NAME = NULL; \
} \
- } while (0) \
+ } while (0)
- CSS_DOM_STRING_UNREF(a);
- CSS_DOM_STRING_UNREF(abscenter);
- CSS_DOM_STRING_UNREF(absmiddle);
CSS_DOM_STRING_UNREF(align);
- CSS_DOM_STRING_UNREF(applet);
CSS_DOM_STRING_UNREF(background);
- CSS_DOM_STRING_UNREF(baseline);
CSS_DOM_STRING_UNREF(bgcolor);
- CSS_DOM_STRING_UNREF(body);
CSS_DOM_STRING_UNREF(border);
CSS_DOM_STRING_UNREF(bordercolor);
- CSS_DOM_STRING_UNREF(bottom);
- CSS_DOM_STRING_UNREF(caption);
CSS_DOM_STRING_UNREF(cellpadding);
CSS_DOM_STRING_UNREF(cellspacing);
- CSS_DOM_STRING_UNREF(center);
- CSS_DOM_STRING_UNREF(col);
CSS_DOM_STRING_UNREF(color);
CSS_DOM_STRING_UNREF(cols);
- CSS_DOM_STRING_UNREF(div);
- CSS_DOM_STRING_UNREF(embed);
- CSS_DOM_STRING_UNREF(font);
- CSS_DOM_STRING_UNREF(h1);
- CSS_DOM_STRING_UNREF(h2);
- CSS_DOM_STRING_UNREF(h3);
- CSS_DOM_STRING_UNREF(h4);
- CSS_DOM_STRING_UNREF(h5);
- CSS_DOM_STRING_UNREF(h6);
CSS_DOM_STRING_UNREF(height);
- CSS_DOM_STRING_UNREF(hr);
CSS_DOM_STRING_UNREF(href);
CSS_DOM_STRING_UNREF(hspace);
- CSS_DOM_STRING_UNREF(iframe);
- CSS_DOM_STRING_UNREF(img);
- CSS_DOM_STRING_UNREF(input);
- CSS_DOM_STRING_UNREF(justify);
- CSS_DOM_STRING_UNREF(left);
CSS_DOM_STRING_UNREF(link);
- CSS_DOM_STRING_UNREF(middle);
- CSS_DOM_STRING_UNREF(object);
- CSS_DOM_STRING_UNREF(p);
- CSS_DOM_STRING_UNREF(password);
- CSS_DOM_STRING_UNREF(right);
CSS_DOM_STRING_UNREF(rows);
CSS_DOM_STRING_UNREF(size);
- CSS_DOM_STRING_UNREF(table);
- CSS_DOM_STRING_UNREF(tbody);
- CSS_DOM_STRING_UNREF(td);
CSS_DOM_STRING_UNREF(text);
- CSS_DOM_STRING_UNREF(textarea);
- CSS_DOM_STRING_UNREF(texttop);
- CSS_DOM_STRING_UNREF(tfoot);
- CSS_DOM_STRING_UNREF(th);
- CSS_DOM_STRING_UNREF(thead);
- CSS_DOM_STRING_UNREF(top);
- CSS_DOM_STRING_UNREF(tr);
CSS_DOM_STRING_UNREF(type);
CSS_DOM_STRING_UNREF(valign);
CSS_DOM_STRING_UNREF(vlink);
CSS_DOM_STRING_UNREF(vspace);
CSS_DOM_STRING_UNREF(width);
-
#undef CSS_DOM_STRING_UNREF
@@ -942,11 +958,70 @@ nserror nscss_init(void)
}
+#define CSS_LWC_STRING_INTERN(NAME) \
+ do { \
+ lerror = lwc_intern_string( \
+ (const char *)#NAME, \
+ sizeof(#NAME) - 1, \
+ &nscss_lwc_string_##NAME ); \
+ if ((lerror != lwc_error_ok) || \
+ (nscss_lwc_string_##NAME == NULL)) { \
+ error = NSERROR_NOMEM; \
+ goto error; \
+ } \
+ } while(0)
+
+ CSS_LWC_STRING_INTERN(a);
+ CSS_LWC_STRING_INTERN(abscenter);
+ CSS_LWC_STRING_INTERN(absmiddle);
+ CSS_LWC_STRING_INTERN(align);
+ CSS_LWC_STRING_INTERN(applet);
+ CSS_LWC_STRING_INTERN(baseline);
+ CSS_LWC_STRING_INTERN(body);
+ CSS_LWC_STRING_INTERN(bottom);
+ CSS_LWC_STRING_INTERN(caption);
+ CSS_LWC_STRING_INTERN(center);
+ CSS_LWC_STRING_INTERN(col);
+ CSS_LWC_STRING_INTERN(div);
+ CSS_LWC_STRING_INTERN(embed);
+ CSS_LWC_STRING_INTERN(font);
+ CSS_LWC_STRING_INTERN(h1);
+ CSS_LWC_STRING_INTERN(h2);
+ CSS_LWC_STRING_INTERN(h3);
+ CSS_LWC_STRING_INTERN(h4);
+ CSS_LWC_STRING_INTERN(h5);
+ CSS_LWC_STRING_INTERN(h6);
+ CSS_LWC_STRING_INTERN(hr);
+ CSS_LWC_STRING_INTERN(iframe);
+ CSS_LWC_STRING_INTERN(img);
+ CSS_LWC_STRING_INTERN(input);
+ CSS_LWC_STRING_INTERN(justify);
+ CSS_LWC_STRING_INTERN(left);
+ CSS_LWC_STRING_INTERN(middle);
+ CSS_LWC_STRING_INTERN(object);
+ CSS_LWC_STRING_INTERN(p);
+ CSS_LWC_STRING_INTERN(password);
+ CSS_LWC_STRING_INTERN(right);
+ CSS_LWC_STRING_INTERN(table);
+ CSS_LWC_STRING_INTERN(tbody);
+ CSS_LWC_STRING_INTERN(td);
+ CSS_LWC_STRING_INTERN(text);
+ CSS_LWC_STRING_INTERN(textarea);
+ CSS_LWC_STRING_INTERN(texttop);
+ CSS_LWC_STRING_INTERN(tfoot);
+ CSS_LWC_STRING_INTERN(th);
+ CSS_LWC_STRING_INTERN(thead);
+ CSS_LWC_STRING_INTERN(top);
+ CSS_LWC_STRING_INTERN(tr);
+#undef CSS_LWC_STRING_INTERN
+
+
#define CSS_DOM_STRING_INTERN(NAME) \
do { \
- exc = dom_string_create_interned((const uint8_t *)#NAME,\
- sizeof(#NAME) - 1, \
- &nscss_dom_string_##NAME ); \
+ exc = dom_string_create_interned( \
+ (const uint8_t *)#NAME, \
+ sizeof(#NAME) - 1, \
+ &nscss_dom_string_##NAME ); \
if ((exc != DOM_NO_ERR) || \
(nscss_dom_string_##NAME == NULL)) { \
error = NSERROR_NOMEM; \
@@ -954,68 +1029,27 @@ nserror nscss_init(void)
} \
} while(0)
- CSS_DOM_STRING_INTERN(a);
- CSS_DOM_STRING_INTERN(abscenter);
- CSS_DOM_STRING_INTERN(absmiddle);
CSS_DOM_STRING_INTERN(align);
- CSS_DOM_STRING_INTERN(applet);
CSS_DOM_STRING_INTERN(background);
- CSS_DOM_STRING_INTERN(baseline);
CSS_DOM_STRING_INTERN(bgcolor);
- CSS_DOM_STRING_INTERN(body);
CSS_DOM_STRING_INTERN(border);
CSS_DOM_STRING_INTERN(bordercolor);
- CSS_DOM_STRING_INTERN(bottom);
- CSS_DOM_STRING_INTERN(caption);
CSS_DOM_STRING_INTERN(cellpadding);
CSS_DOM_STRING_INTERN(cellspacing);
- CSS_DOM_STRING_INTERN(center);
- CSS_DOM_STRING_INTERN(col);
CSS_DOM_STRING_INTERN(color);
CSS_DOM_STRING_INTERN(cols);
- CSS_DOM_STRING_INTERN(div);
- CSS_DOM_STRING_INTERN(embed);
- CSS_DOM_STRING_INTERN(font);
- CSS_DOM_STRING_INTERN(h1);
- CSS_DOM_STRING_INTERN(h2);
- CSS_DOM_STRING_INTERN(h3);
- CSS_DOM_STRING_INTERN(h4);
- CSS_DOM_STRING_INTERN(h5);
- CSS_DOM_STRING_INTERN(h6);
CSS_DOM_STRING_INTERN(height);
- CSS_DOM_STRING_INTERN(hr);
CSS_DOM_STRING_INTERN(href);
CSS_DOM_STRING_INTERN(hspace);
- CSS_DOM_STRING_INTERN(iframe);
- CSS_DOM_STRING_INTERN(img);
- CSS_DOM_STRING_INTERN(input);
- CSS_DOM_STRING_INTERN(justify);
- CSS_DOM_STRING_INTERN(left);
CSS_DOM_STRING_INTERN(link);
- CSS_DOM_STRING_INTERN(middle);
- CSS_DOM_STRING_INTERN(object);
- CSS_DOM_STRING_INTERN(p);
- CSS_DOM_STRING_INTERN(password);
- CSS_DOM_STRING_INTERN(right);
CSS_DOM_STRING_INTERN(rows);
CSS_DOM_STRING_INTERN(size);
- CSS_DOM_STRING_INTERN(table);
- CSS_DOM_STRING_INTERN(tbody);
- CSS_DOM_STRING_INTERN(td);
CSS_DOM_STRING_INTERN(text);
- CSS_DOM_STRING_INTERN(textarea);
- CSS_DOM_STRING_INTERN(texttop);
- CSS_DOM_STRING_INTERN(tfoot);
- CSS_DOM_STRING_INTERN(th);
- CSS_DOM_STRING_INTERN(thead);
- CSS_DOM_STRING_INTERN(top);
- CSS_DOM_STRING_INTERN(tr);
CSS_DOM_STRING_INTERN(type);
CSS_DOM_STRING_INTERN(valign);
CSS_DOM_STRING_INTERN(vlink);
CSS_DOM_STRING_INTERN(vspace);
CSS_DOM_STRING_INTERN(width);
-
#undef CSS_DOM_STRING_INTERN
error = content_factory_register_handler("text/css",
diff --git a/css/internal.h b/css/internal.h
index 9f6907d15..a5a3e3210 100644
--- a/css/internal.h
+++ b/css/internal.h
@@ -24,62 +24,67 @@
css_error nscss_resolve_url(void *pw, const char *base,
lwc_string *rel, lwc_string **abs);
-extern struct dom_string *nscss_dom_string_a;
-extern struct dom_string *nscss_dom_string_abscenter;
-extern struct dom_string *nscss_dom_string_absmiddle;
+/* lwc_string strings */
+extern lwc_string *nscss_lwc_string_a;
+extern lwc_string *nscss_lwc_string_abscenter;
+extern lwc_string *nscss_lwc_string_absmiddle;
+extern lwc_string *nscss_lwc_string_align;
+extern lwc_string *nscss_lwc_string_applet;
+extern lwc_string *nscss_lwc_string_baseline;
+extern lwc_string *nscss_lwc_string_body;
+extern lwc_string *nscss_lwc_string_bottom;
+extern lwc_string *nscss_lwc_string_caption;
+extern lwc_string *nscss_lwc_string_center;
+extern lwc_string *nscss_lwc_string_col;
+extern lwc_string *nscss_lwc_string_div;
+extern lwc_string *nscss_lwc_string_embed;
+extern lwc_string *nscss_lwc_string_font;
+extern lwc_string *nscss_lwc_string_h1;
+extern lwc_string *nscss_lwc_string_h2;
+extern lwc_string *nscss_lwc_string_h3;
+extern lwc_string *nscss_lwc_string_h4;
+extern lwc_string *nscss_lwc_string_h5;
+extern lwc_string *nscss_lwc_string_h6;
+extern lwc_string *nscss_lwc_string_hr;
+extern lwc_string *nscss_lwc_string_iframe;
+extern lwc_string *nscss_lwc_string_img;
+extern lwc_string *nscss_lwc_string_input;
+extern lwc_string *nscss_lwc_string_justify;
+extern lwc_string *nscss_lwc_string_left;
+extern lwc_string *nscss_lwc_string_middle;
+extern lwc_string *nscss_lwc_string_object;
+extern lwc_string *nscss_lwc_string_p;
+extern lwc_string *nscss_lwc_string_password;
+extern lwc_string *nscss_lwc_string_right;
+extern lwc_string *nscss_lwc_string_table;
+extern lwc_string *nscss_lwc_string_tbody;
+extern lwc_string *nscss_lwc_string_td;
+extern lwc_string *nscss_lwc_string_text;
+extern lwc_string *nscss_lwc_string_textarea;
+extern lwc_string *nscss_lwc_string_texttop;
+extern lwc_string *nscss_lwc_string_tfoot;
+extern lwc_string *nscss_lwc_string_th;
+extern lwc_string *nscss_lwc_string_thead;
+extern lwc_string *nscss_lwc_string_top;
+extern lwc_string *nscss_lwc_string_tr;
+
+/* dom_string strings */
extern struct dom_string *nscss_dom_string_align;
-extern struct dom_string *nscss_dom_string_applet;
extern struct dom_string *nscss_dom_string_background;
-extern struct dom_string *nscss_dom_string_baseline;
extern struct dom_string *nscss_dom_string_bgcolor;
-extern struct dom_string *nscss_dom_string_body;
extern struct dom_string *nscss_dom_string_border;
extern struct dom_string *nscss_dom_string_bordercolor;
-extern struct dom_string *nscss_dom_string_bottom;
-extern struct dom_string *nscss_dom_string_caption;
extern struct dom_string *nscss_dom_string_cellpadding;
extern struct dom_string *nscss_dom_string_cellspacing;
-extern struct dom_string *nscss_dom_string_center;
-extern struct dom_string *nscss_dom_string_col;
extern struct dom_string *nscss_dom_string_color;
extern struct dom_string *nscss_dom_string_cols;
-extern struct dom_string *nscss_dom_string_div;
-extern struct dom_string *nscss_dom_string_embed;
-extern struct dom_string *nscss_dom_string_font;
-extern struct dom_string *nscss_dom_string_h1;
-extern struct dom_string *nscss_dom_string_h2;
-extern struct dom_string *nscss_dom_string_h3;
-extern struct dom_string *nscss_dom_string_h4;
-extern struct dom_string *nscss_dom_string_h5;
-extern struct dom_string *nscss_dom_string_h6;
extern struct dom_string *nscss_dom_string_height;
-extern struct dom_string *nscss_dom_string_hr;
extern struct dom_string *nscss_dom_string_href;
extern struct dom_string *nscss_dom_string_hspace;
-extern struct dom_string *nscss_dom_string_iframe;
-extern struct dom_string *nscss_dom_string_img;
-extern struct dom_string *nscss_dom_string_input;
-extern struct dom_string *nscss_dom_string_justify;
-extern struct dom_string *nscss_dom_string_left;
extern struct dom_string *nscss_dom_string_link;
-extern struct dom_string *nscss_dom_string_middle;
-extern struct dom_string *nscss_dom_string_object;
-extern struct dom_string *nscss_dom_string_p;
-extern struct dom_string *nscss_dom_string_password;
-extern struct dom_string *nscss_dom_string_right;
extern struct dom_string *nscss_dom_string_rows;
extern struct dom_string *nscss_dom_string_size;
-extern struct dom_string *nscss_dom_string_table;
-extern struct dom_string *nscss_dom_string_tbody;
-extern struct dom_string *nscss_dom_string_td;
extern struct dom_string *nscss_dom_string_text;
-extern struct dom_string *nscss_dom_string_textarea;
-extern struct dom_string *nscss_dom_string_texttop;
-extern struct dom_string *nscss_dom_string_tfoot;
-extern struct dom_string *nscss_dom_string_th;
-extern struct dom_string *nscss_dom_string_thead;
-extern struct dom_string *nscss_dom_string_top;
-extern struct dom_string *nscss_dom_string_tr;
extern struct dom_string *nscss_dom_string_type;
extern struct dom_string *nscss_dom_string_valign;
extern struct dom_string *nscss_dom_string_vlink;
diff --git a/css/select.c b/css/select.c
index 5f8f537f5..a92c47601 100644
--- a/css/select.c
+++ b/css/select.c
@@ -1515,7 +1515,7 @@ css_error node_is_link(void *pw, void *n, bool *match)
return CSS_NOMEM;
}
- if (dom_string_caseless_isequal(node_name, nscss_dom_string_a)) {
+ if (dom_string_caseless_lwc_isequal(node_name, nscss_lwc_string_a)) {
bool has_href;
exc = dom_element_has_attribute(node, nscss_dom_string_href, &has_href);
if ((exc == DOM_NO_ERR) && (has_href)) {
@@ -1751,13 +1751,13 @@ node_presentational_hint_vertical_align(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_caseless_isequal(name, nscss_dom_string_col) ||
- dom_string_caseless_isequal(name, nscss_dom_string_thead) ||
- dom_string_caseless_isequal(name, nscss_dom_string_tbody) ||
- dom_string_caseless_isequal(name, nscss_dom_string_tfoot) ||
- dom_string_caseless_isequal(name, nscss_dom_string_tr) ||
- dom_string_caseless_isequal(name, nscss_dom_string_td) ||
- dom_string_caseless_isequal(name, nscss_dom_string_th)) {
+ if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_col) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_thead) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_tbody) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_tfoot) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_tr) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) {
err = dom_element_get_attribute(node,
nscss_dom_string_valign, &valign);
if (err != DOM_NO_ERR || valign == NULL) {
@@ -1765,16 +1765,17 @@ node_presentational_hint_vertical_align(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
}
- if (dom_string_caseless_isequal(valign, nscss_dom_string_top)) {
+ if (dom_string_caseless_lwc_isequal(valign,
+ nscss_lwc_string_top)) {
hint->status = CSS_VERTICAL_ALIGN_TOP;
- } else if (dom_string_caseless_isequal(valign,
- nscss_dom_string_middle)) {
+ } else if (dom_string_caseless_lwc_isequal(valign,
+ nscss_lwc_string_middle)) {
hint->status = CSS_VERTICAL_ALIGN_MIDDLE;
- } else if (dom_string_caseless_isequal(valign,
- nscss_dom_string_bottom)) {
+ } else if (dom_string_caseless_lwc_isequal(valign,
+ nscss_lwc_string_bottom)) {
hint->status = CSS_VERTICAL_ALIGN_BOTTOM;
- } else if (dom_string_caseless_isequal(valign,
- nscss_dom_string_baseline)) {
+ } else if (dom_string_caseless_lwc_isequal(valign,
+ nscss_lwc_string_baseline)) {
hint->status = CSS_VERTICAL_ALIGN_BASELINE;
} else {
dom_string_unref(valign);
@@ -1786,11 +1787,16 @@ node_presentational_hint_vertical_align(nscss_select_ctx *ctx,
dom_string_unref(name);
return CSS_OK;
- } else if (dom_string_caseless_isequal(name, nscss_dom_string_applet) ||
- dom_string_caseless_isequal(name, nscss_dom_string_embed) ||
- dom_string_caseless_isequal(name, nscss_dom_string_iframe) ||
- dom_string_caseless_isequal(name, nscss_dom_string_img) ||
- dom_string_caseless_isequal(name, nscss_dom_string_object)) {
+ } else if (dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_applet) ||
+ dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_embed) ||
+ dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_iframe) ||
+ dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_img) ||
+ dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_object)) {
/** \todo input[type=image][align=*] - $11.3.3 */
err = dom_element_get_attribute(node,
nscss_dom_string_align, &valign);
@@ -1799,20 +1805,21 @@ node_presentational_hint_vertical_align(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
}
- if (dom_string_caseless_isequal(valign, nscss_dom_string_top)) {
+ if (dom_string_caseless_lwc_isequal(valign,
+ nscss_lwc_string_top)) {
hint->status = CSS_VERTICAL_ALIGN_TOP;
- } else if (dom_string_caseless_isequal(valign,
- nscss_dom_string_bottom) ||
- dom_string_caseless_isequal(valign,
- nscss_dom_string_baseline)) {
+ } else if (dom_string_caseless_lwc_isequal(valign,
+ nscss_lwc_string_bottom) ||
+ dom_string_caseless_lwc_isequal(valign,
+ nscss_lwc_string_baseline)) {
hint->status = CSS_VERTICAL_ALIGN_BASELINE;
- } else if (dom_string_caseless_isequal(valign,
- nscss_dom_string_texttop)) {
+ } else if (dom_string_caseless_lwc_isequal(valign,
+ nscss_lwc_string_texttop)) {
hint->status = CSS_VERTICAL_ALIGN_TEXT_TOP;
- } else if (dom_string_caseless_isequal(valign,
- nscss_dom_string_absmiddle) ||
- dom_string_caseless_isequal(valign,
- nscss_dom_string_abscenter)) {
+ } else if (dom_string_caseless_lwc_isequal(valign,
+ nscss_lwc_string_absmiddle) ||
+ dom_string_caseless_lwc_isequal(valign,
+ nscss_lwc_string_abscenter)) {
hint->status = CSS_VERTICAL_ALIGN_MIDDLE;
} else {
dom_string_unref(valign);
@@ -1843,13 +1850,13 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_caseless_isequal(name, nscss_dom_string_p) ||
- dom_string_caseless_isequal(name, nscss_dom_string_h1) ||
- dom_string_caseless_isequal(name, nscss_dom_string_h2) ||
- dom_string_caseless_isequal(name, nscss_dom_string_h3) ||
- dom_string_caseless_isequal(name, nscss_dom_string_h4) ||
- dom_string_caseless_isequal(name, nscss_dom_string_h5) ||
- dom_string_caseless_isequal(name, nscss_dom_string_h6)) {
+ if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_p) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h1) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h2) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h3) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h4) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h5) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h6)) {
err = dom_element_get_attribute(node,
nscss_dom_string_align, &align);
if (err != DOM_NO_ERR || align == NULL) {
@@ -1857,16 +1864,17 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
}
- if (dom_string_caseless_isequal(align, nscss_dom_string_left)) {
+ if (dom_string_caseless_lwc_isequal(align,
+ nscss_lwc_string_left)) {
hint->status = CSS_TEXT_ALIGN_LEFT;
- } else if (dom_string_caseless_isequal(align,
- nscss_dom_string_center)) {
+ } else if (dom_string_caseless_lwc_isequal(align,
+ nscss_lwc_string_center)) {
hint->status = CSS_TEXT_ALIGN_CENTER;
- } else if (dom_string_caseless_isequal(align,
- nscss_dom_string_right)) {
+ } else if (dom_string_caseless_lwc_isequal(align,
+ nscss_lwc_string_right)) {
hint->status = CSS_TEXT_ALIGN_RIGHT;
- } else if (dom_string_caseless_isequal(align,
- nscss_dom_string_justify)) {
+ } else if (dom_string_caseless_lwc_isequal(align,
+ nscss_lwc_string_justify)) {
hint->status = CSS_TEXT_ALIGN_JUSTIFY;
} else {
dom_string_unref(align);
@@ -1878,13 +1886,15 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
dom_string_unref(name);
return CSS_OK;
- } else if (dom_string_caseless_isequal(name, nscss_dom_string_center)) {
+ } else if (dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_center)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER;
dom_string_unref(name);
return CSS_OK;
- } else if (dom_string_caseless_isequal(name, nscss_dom_string_caption)) {
+ } else if (dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_caption)) {
err = dom_element_get_attribute(node,
nscss_dom_string_align, &align);
if (err != DOM_NO_ERR) {
@@ -1892,17 +1902,17 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
}
- if (align == NULL || dom_string_caseless_isequal(align,
- nscss_dom_string_center)) {
+ if (align == NULL || dom_string_caseless_lwc_isequal(align,
+ nscss_lwc_string_center)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER;
- } else if (dom_string_caseless_isequal(align,
- nscss_dom_string_left)) {
+ } else if (dom_string_caseless_lwc_isequal(align,
+ nscss_lwc_string_left)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_LEFT;
- } else if (dom_string_caseless_isequal(align,
- nscss_dom_string_right)) {
+ } else if (dom_string_caseless_lwc_isequal(align,
+ nscss_lwc_string_right)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_RIGHT;
- } else if (dom_string_caseless_isequal(align,
- nscss_dom_string_justify)) {
+ } else if (dom_string_caseless_lwc_isequal(align,
+ nscss_lwc_string_justify)) {
hint->status = CSS_TEXT_ALIGN_JUSTIFY;
} else {
dom_string_unref(align);
@@ -1915,13 +1925,20 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
dom_string_unref(name);
return CSS_OK;
- } else if (dom_string_caseless_isequal(name, nscss_dom_string_div) ||
- dom_string_caseless_isequal(name, nscss_dom_string_thead) ||
- dom_string_caseless_isequal(name, nscss_dom_string_tbody) ||
- dom_string_caseless_isequal(name, nscss_dom_string_tfoot) ||
- dom_string_caseless_isequal(name, nscss_dom_string_tr) ||
- dom_string_caseless_isequal(name, nscss_dom_string_td) ||
- dom_string_caseless_isequal(name, nscss_dom_string_th)) {
+ } else if (dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_div) ||
+ dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_thead) ||
+ dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_tbody) ||
+ dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_tfoot) ||
+ dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_tr) ||
+ dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_td) ||
+ dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_th)) {
err = dom_element_get_attribute(node,
nscss_dom_string_align, &align);
if (err != DOM_NO_ERR || align == NULL) {
@@ -1929,17 +1946,17 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
}
- if (dom_string_caseless_isequal(align,
- nscss_dom_string_center)) {
+ if (dom_string_caseless_lwc_isequal(align,
+ nscss_lwc_string_center)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER;
- } else if (dom_string_caseless_isequal(align,
- nscss_dom_string_left)) {
+ } else if (dom_string_caseless_lwc_isequal(align,
+ nscss_lwc_string_left)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_LEFT;
- } else if (dom_string_caseless_isequal(align,
- nscss_dom_string_right)) {
+ } else if (dom_string_caseless_lwc_isequal(align,
+ nscss_lwc_string_right)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_RIGHT;
- } else if (dom_string_caseless_isequal(align,
- nscss_dom_string_justify)) {
+ } else if (dom_string_caseless_lwc_isequal(align,
+ nscss_lwc_string_justify)) {
hint->status = CSS_TEXT_ALIGN_JUSTIFY;
} else {
dom_string_unref(align);
@@ -1951,7 +1968,8 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
dom_string_unref(name);
return CSS_OK;
- } else if (dom_string_caseless_isequal(name, nscss_dom_string_table)) {
+ } else if (dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_table)) {
/* Tables usually reset alignment */
hint->status = CSS_TEXT_ALIGN_INHERIT_IF_NON_MAGIC;
@@ -1979,20 +1997,15 @@ node_presentational_hint_padding_trbl(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_caseless_isequal(name, nscss_dom_string_td) ||
- dom_string_caseless_isequal(name, nscss_dom_string_th)) {
+ if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) {
css_qname qs;
dom_node *tablenode = NULL;
qs.ns = NULL;
- exc = dom_string_intern(nscss_dom_string_table, &qs.name);
- if (exc != DOM_NO_ERR) {
- dom_string_unref(name);
- return CSS_BADPARM;
- }
+ qs.name = lwc_string_ref(nscss_lwc_string_table);
if (named_ancestor_node(ctx, node, &qs,
(void *)&tablenode) != CSS_OK) {
/* Didn't find, or had error */
- lwc_string_unref(qs.name);
dom_string_unref(name);
return CSS_PROPERTY_NOT_SET;
}
@@ -2001,8 +2014,8 @@ node_presentational_hint_padding_trbl(nscss_select_ctx *ctx,
if (tablenode != NULL) {
exc = dom_element_get_attribute(tablenode,
- nscss_dom_string_cellpadding,
- &cellpadding);
+ nscss_dom_string_cellpadding,
+ &cellpadding);
if (exc != DOM_NO_ERR) {
dom_string_unref(name);
return CSS_BADPARM;
@@ -2043,11 +2056,11 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_caseless_isequal(n, nscss_dom_string_img) ||
- dom_string_caseless_isequal(n, nscss_dom_string_applet)) {
+ if (dom_string_caseless_lwc_isequal(n, nscss_lwc_string_img) ||
+ dom_string_caseless_lwc_isequal(n, nscss_lwc_string_applet)) {
dom_string_unref(n);
exc = dom_element_get_attribute(node,
- nscss_dom_string_hspace, &n);
+ nscss_dom_string_hspace, &n);
if (exc != DOM_NO_ERR) {
return CSS_BADPARM;
}
@@ -2065,11 +2078,11 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
}
dom_string_unref(n);
return CSS_OK;
- } else if (dom_string_caseless_isequal(n, nscss_dom_string_table) ||
- dom_string_caseless_isequal(n, nscss_dom_string_align)) {
+ } else if (dom_string_caseless_lwc_isequal(n, nscss_lwc_string_table) ||
+ dom_string_caseless_lwc_isequal(n, nscss_lwc_string_align)) {
dom_string_unref(n);
exc = dom_element_get_attribute(node,
- nscss_dom_string_align, &n);
+ nscss_dom_string_align, &n);
if (exc != DOM_NO_ERR) {
return CSS_BADPARM;
}
@@ -2077,10 +2090,14 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
if (n == NULL)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_caseless_isequal(n, nscss_dom_string_center) ||
- dom_string_caseless_isequal(n, nscss_dom_string_abscenter) ||
- dom_string_caseless_isequal(n, nscss_dom_string_middle) ||
- dom_string_caseless_isequal(n, nscss_dom_string_absmiddle)) {
+ if (dom_string_caseless_lwc_isequal(n,
+ nscss_lwc_string_center) ||
+ dom_string_caseless_lwc_isequal(n,
+ nscss_lwc_string_abscenter) ||
+ dom_string_caseless_lwc_isequal(n,
+ nscss_lwc_string_middle) ||
+ dom_string_caseless_lwc_isequal(n,
+ nscss_lwc_string_absmiddle)) {
hint->status = CSS_MARGIN_AUTO;
} else {
dom_string_unref(n);
@@ -2089,17 +2106,18 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
dom_string_unref(n);
return CSS_OK;
- } else if (dom_string_caseless_isequal(n, nscss_dom_string_hr)) {
+ } else if (dom_string_caseless_lwc_isequal(n, nscss_lwc_string_hr)) {
dom_string_unref(n);
exc = dom_element_get_attribute(node,
- nscss_dom_string_align, &n);
+ nscss_dom_string_align, &n);
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
if (n == NULL)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_caseless_isequal(n, nscss_dom_string_left)) {
+ if (dom_string_caseless_lwc_isequal(n,
+ nscss_lwc_string_left)) {
if (property == CSS_PROP_MARGIN_LEFT) {
hint->data.length.value = 0;
hint->data.length.unit = CSS_UNIT_PX;
@@ -2107,9 +2125,11 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
} else {
hint->status = CSS_MARGIN_AUTO;
}
- } else if (dom_string_caseless_isequal(n, nscss_dom_string_center)) {
+ } else if (dom_string_caseless_lwc_isequal(n,
+ nscss_lwc_string_center)) {
hint->status = CSS_MARGIN_AUTO;
- } else if (dom_string_caseless_isequal(n, nscss_dom_string_right)) {
+ } else if (dom_string_caseless_lwc_isequal(n,
+ nscss_lwc_string_right)) {
if (property == CSS_PROP_MARGIN_RIGHT) {
hint->data.length.value = 0;
hint->data.length.unit = CSS_UNIT_PX;
@@ -2143,10 +2163,10 @@ node_presentational_hint_margin_tb(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_caseless_isequal(name, nscss_dom_string_img) ||
- dom_string_caseless_isequal(name, nscss_dom_string_applet)) {
+ if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_img) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_applet)) {
exc = dom_element_get_attribute(node, nscss_dom_string_vspace,
- &vspace);
+ &vspace);
if (exc != DOM_NO_ERR) {
dom_string_unref(name);
return CSS_BADPARM;
@@ -2186,16 +2206,12 @@ node_presentational_hint_border_trbl_width(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_caseless_isequal(name, nscss_dom_string_td) ||
- dom_string_caseless_isequal(name, nscss_dom_string_th)) {
+ if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) {
css_qname qs;
dom_node *tablenode = NULL;
qs.ns = NULL;
- exc = dom_string_intern(nscss_dom_string_table, &qs.name);
- if (exc != DOM_NO_ERR) {
- dom_string_unref(name);
- return CSS_BADPARM;
- }
+ qs.name = lwc_string_ref(nscss_lwc_string_table);
if (named_ancestor_node(ctx, node, &qs,
(void *)&tablenode) != CSS_OK) {
/* Didn't find, or had error */
@@ -2217,7 +2233,8 @@ node_presentational_hint_border_trbl_width(nscss_select_ctx *ctx,
* return a reffed node to the CSS
*/
is_table_cell = true;
- } else if (dom_string_caseless_isequal(name, nscss_dom_string_table)) {
+ } else if (dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_table)) {
exc = dom_element_get_attribute(node, nscss_dom_string_border,
&width);
if (exc != DOM_NO_ERR) {
@@ -2263,17 +2280,12 @@ node_presentational_hint_border_trbl_style(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_caseless_isequal(name, nscss_dom_string_td) ||
- dom_string_caseless_isequal(name, nscss_dom_string_th)) {
+ if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) {
css_qname qs;
dom_node *tablenode = NULL;
qs.ns = NULL;
-
- exc = dom_string_intern(nscss_dom_string_table, &qs.name);
- if (exc != DOM_NO_ERR) {
- dom_string_unref(name);
- return CSS_BADPARM;
- }
+ qs.name = lwc_string_ref(nscss_lwc_string_table);
if (named_ancestor_node(ctx, node, &qs,
(void *)&tablenode) != CSS_OK) {
@@ -2305,7 +2317,8 @@ node_presentational_hint_border_trbl_style(nscss_select_ctx *ctx,
/* No need to unref tablenode, named_ancestor_node does not
* return a reffed node to the CSS
*/
- } else if (dom_string_caseless_isequal(name, nscss_dom_string_table)) {
+ } else if (dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_table)) {
bool has_border = false;
exc = dom_element_has_attribute(node,
@@ -2341,17 +2354,12 @@ node_presentational_hint_border_trbl_color(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_caseless_isequal(name, nscss_dom_string_td) ||
- dom_string_caseless_isequal(name, nscss_dom_string_th)) {
+ if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) {
css_qname qs;
dom_node *tablenode = NULL;
qs.ns = NULL;
-
- err = dom_string_intern(nscss_dom_string_table, &qs.name);
- if (err != DOM_NO_ERR) {
- dom_string_unref(name);
- return CSS_BADPARM;
- }
+ qs.name = lwc_string_ref(nscss_lwc_string_table);
if (named_ancestor_node(ctx, node, &qs,
(void *)&tablenode) != CSS_OK) {
@@ -2365,17 +2373,18 @@ node_presentational_hint_border_trbl_color(nscss_select_ctx *ctx,
if (tablenode != NULL) {
err = dom_element_get_attribute(node,
- nscss_dom_string_bordercolor,
- &bordercolor);
+ nscss_dom_string_bordercolor,
+ &bordercolor);
}
/* No need to unref tablenode, named_ancestor_node does not
* return a reffed node to the CSS
*/
- } else if (dom_string_caseless_isequal(name, nscss_dom_string_table)) {
+ } else if (dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_table)) {
err = dom_element_get_attribute(node,
- nscss_dom_string_bordercolor,
- &bordercolor);
+ nscss_dom_string_bordercolor,
+ &bordercolor);
}
dom_string_unref(name);
@@ -2409,14 +2418,16 @@ node_presentational_hint_border_spacing(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
}
- if (!dom_string_caseless_isequal(node_name, nscss_dom_string_table)) {
+ if (!dom_string_caseless_lwc_isequal(node_name,
+ nscss_lwc_string_table)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
dom_string_unref(node_name);
- err = dom_element_get_attribute(node, nscss_dom_string_cellspacing, &cellspacing);
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_cellspacing, &cellspacing);
if ((err != DOM_NO_ERR) || (cellspacing == NULL)) {
return CSS_PROPERTY_NOT_SET;
}
@@ -2453,27 +2464,26 @@ node_presentational_hint_width(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_caseless_isequal(name, nscss_dom_string_hr) ||
- dom_string_caseless_isequal(name, nscss_dom_string_iframe) ||
- dom_string_caseless_isequal(name, nscss_dom_string_img) ||
- dom_string_caseless_isequal(name, nscss_dom_string_object) ||
- dom_string_caseless_isequal(name, nscss_dom_string_table) ||
- dom_string_caseless_isequal(name, nscss_dom_string_td) ||
- dom_string_caseless_isequal(name, nscss_dom_string_th) ||
- dom_string_caseless_isequal(name, nscss_dom_string_applet)) {
+ if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_hr) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_iframe) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_img) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_object) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_table) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_applet)) {
err = dom_element_get_attribute(node,
- nscss_dom_string_width,
- &width);
- } else if (dom_string_caseless_isequal(name, nscss_dom_string_textarea)) {
+ nscss_dom_string_width, &width);
+ } else if (dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_textarea)) {
textarea = true;
err = dom_element_get_attribute(node,
- nscss_dom_string_cols,
- &width);
- } else if (dom_string_caseless_isequal(name, nscss_dom_string_input)) {
+ nscss_dom_string_cols, &width);
+ } else if (dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_input)) {
input = true;
err = dom_element_get_attribute(node,
- nscss_dom_string_size,
- &width);
+ nscss_dom_string_size, &width);
}
dom_string_unref(name);
@@ -2500,9 +2510,10 @@ node_presentational_hint_width(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
}
- if (dom_string_isequal(width, nscss_dom_string_text) ||
- dom_string_isequal(width,
- nscss_dom_string_password)) {
+ if (dom_string_lwc_isequal(width,
+ nscss_lwc_string_text) ||
+ dom_string_lwc_isequal(width,
+ nscss_lwc_string_password)) {
hint->data.length.unit = CSS_UNIT_EX;
}
@@ -2533,21 +2544,20 @@ node_presentational_hint_height(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_caseless_isequal(name, nscss_dom_string_iframe) ||
- dom_string_caseless_isequal(name, nscss_dom_string_td) ||
- dom_string_caseless_isequal(name, nscss_dom_string_th) ||
- dom_string_caseless_isequal(name, nscss_dom_string_tr) ||
- dom_string_caseless_isequal(name, nscss_dom_string_img) ||
- dom_string_caseless_isequal(name, nscss_dom_string_object) ||
- dom_string_caseless_isequal(name, nscss_dom_string_applet)) {
+ if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_iframe) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_tr) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_img) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_object) ||
+ dom_string_caseless_lwc_isequal(name, nscss_lwc_string_applet)) {
err = dom_element_get_attribute(node,
- nscss_dom_string_height,
- &height);
- } else if (dom_string_caseless_isequal(name, nscss_dom_string_textarea)) {
+ nscss_dom_string_height, &height);
+ } else if (dom_string_caseless_lwc_isequal(name,
+ nscss_lwc_string_textarea)) {
textarea = true;
err = dom_element_get_attribute(node,
- nscss_dom_string_rows,
- &height);
+ nscss_dom_string_rows, &height);
}
dom_string_unref(name);
@@ -2588,7 +2598,8 @@ node_presentational_hint_font_size(nscss_select_ctx *ctx,
return CSS_NOMEM;
}
- if (!dom_string_caseless_isequal(node_name, nscss_dom_string_font)) {
+ if (!dom_string_caseless_lwc_isequal(node_name,
+ nscss_lwc_string_font)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
@@ -2627,11 +2638,16 @@ node_presentational_hint_float(nscss_select_ctx *ctx,
}
/** \todo input[type=image][align=*] - $11.3.3 */
- if (!dom_string_caseless_isequal(node_name, nscss_dom_string_applet) &&
- !dom_string_caseless_isequal(node_name, nscss_dom_string_embed) &&
- !dom_string_caseless_isequal(node_name, nscss_dom_string_iframe) &&
- !dom_string_caseless_isequal(node_name, nscss_dom_string_img) &&
- !dom_string_caseless_isequal(node_name, nscss_dom_string_object)) {
+ if (!dom_string_caseless_lwc_isequal(node_name,
+ nscss_lwc_string_applet) &&
+ !dom_string_caseless_lwc_isequal(node_name,
+ nscss_lwc_string_embed) &&
+ !dom_string_caseless_lwc_isequal(node_name,
+ nscss_lwc_string_iframe) &&
+ !dom_string_caseless_lwc_isequal(node_name,
+ nscss_lwc_string_img) &&
+ !dom_string_caseless_lwc_isequal(node_name,
+ nscss_lwc_string_object)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
@@ -2643,11 +2659,11 @@ node_presentational_hint_float(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
}
- if (dom_string_isequal(align, nscss_dom_string_left)) {
+ if (dom_string_lwc_isequal(align, nscss_lwc_string_left)) {
hint->status = CSS_FLOAT_LEFT;
dom_string_unref(align);
return CSS_OK;
- } else if (dom_string_isequal(align, nscss_dom_string_right)) {
+ } else if (dom_string_lwc_isequal(align, nscss_lwc_string_right)) {
hint->status = CSS_FLOAT_RIGHT;
dom_string_unref(align);
return CSS_OK;
@@ -2673,18 +2689,14 @@ node_presentational_hint_color(nscss_select_ctx *ctx,
return CSS_NOMEM;
}
- if (dom_string_caseless_isequal(node_name, nscss_dom_string_a)) {
+ if (dom_string_caseless_lwc_isequal(node_name, nscss_lwc_string_a)) {
/* find body node */
css_qname qs;
dom_node *bodynode = NULL;
bool is_visited;
qs.ns = NULL;
- err = dom_string_intern(nscss_dom_string_body, &qs.name);
- if (err != DOM_NO_ERR) {
- dom_string_unref(node_name);
- return CSS_BADPARM;
- }
+ qs.name = lwc_string_ref(nscss_lwc_string_body);
if (named_ancestor_node(ctx, node, &qs,
(void *)&bodynode) != CSS_OK) {
/* Didn't find, or had error */
@@ -2706,26 +2718,31 @@ node_presentational_hint_color(nscss_select_ctx *ctx,
return error;
if (is_visited) {
- err = dom_element_get_attribute(node, nscss_dom_string_vlink, &color);
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_vlink, &color);
if ((err != DOM_NO_ERR) || (color == NULL)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
} else {
- err = dom_element_get_attribute(node, nscss_dom_string_link, &color);
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_link, &color);
if ((err != DOM_NO_ERR) || (color == NULL)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
}
- } else if (dom_string_caseless_isequal(node_name, nscss_dom_string_body)) {
- err = dom_element_get_attribute(node, nscss_dom_string_text, &color);
+ } else if (dom_string_caseless_lwc_isequal(node_name,
+ nscss_lwc_string_body)) {
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_text, &color);
if ((err != DOM_NO_ERR) || (color == NULL)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
} else {
- err = dom_element_get_attribute(node, nscss_dom_string_color, &color);
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_color, &color);
if ((err != DOM_NO_ERR) || (color == NULL)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
@@ -2759,7 +2776,8 @@ node_presentational_hint_caption_side(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
}
- if (!dom_string_caseless_isequal(node_name, nscss_dom_string_caption)) {
+ if (!dom_string_caseless_lwc_isequal(node_name,
+ nscss_lwc_string_caption)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
@@ -2771,7 +2789,7 @@ node_presentational_hint_caption_side(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
}
- if (dom_string_caseless_isequal(align, nscss_dom_string_bottom)) {
+ if (dom_string_caseless_lwc_isequal(align, nscss_lwc_string_bottom)) {
hint->status = CSS_CAPTION_SIDE_BOTTOM;
dom_string_unref(align);
return CSS_OK;
@@ -2790,7 +2808,8 @@ node_presentational_hint_background_color(nscss_select_ctx *ctx,
dom_exception err;
dom_string *bgcolor;
- err = dom_element_get_attribute(node, nscss_dom_string_bgcolor, &bgcolor);
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_bgcolor, &bgcolor);
if ((err != DOM_NO_ERR) || (bgcolor == NULL)) {
return CSS_PROPERTY_NOT_SET;
}
@@ -2819,12 +2838,14 @@ node_presentational_hint_background_image(nscss_select_ctx *ctx,
lwc_string *iurl;
lwc_error lerror;
- err = dom_element_get_attribute(node, nscss_dom_string_background, &atr_val);
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_background, &atr_val);
if ((err != DOM_NO_ERR) || (atr_val == NULL)) {
return CSS_PROPERTY_NOT_SET;
}
- error = nsurl_join(ctx->base_url, (const char *)dom_string_data(atr_val), &url);
+ error = nsurl_join(ctx->base_url,
+ (const char *)dom_string_data(atr_val), &url);
dom_string_unref(atr_val);
@@ -2832,7 +2853,8 @@ node_presentational_hint_background_image(nscss_select_ctx *ctx,
return CSS_NOMEM;
}
- lerror = lwc_intern_string(nsurl_access(url), nsurl_length(url), &iurl);
+ lerror = lwc_intern_string(nsurl_access(url),
+ nsurl_length(url), &iurl);
nsurl_unref(url);
--
cgit v1.2.3
From 2ad24f39da6a314a1e3839c355103a6af131bc09 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 22 Jul 2012 15:48:55 +0100
Subject: Interned string cleanup, phase 2: Create utils/corestrings and use it
in css handler.
---
Makefile.sources | 9 +-
css/css.c | 246 -------------------------------------------
css/internal.h | 67 ------------
css/select.c | 298 ++++++++++++++++++++++++++--------------------------
desktop/netsurf.c | 7 ++
utils/corestrings.c | 293 +++++++++++++++++++++++++++++++++++++++++++++++++++
utils/corestrings.h | 101 ++++++++++++++++++
7 files changed, 556 insertions(+), 465 deletions(-)
create mode 100644 utils/corestrings.c
create mode 100644 utils/corestrings.h
diff --git a/Makefile.sources b/Makefile.sources
index 608381934..95695f786 100644
--- a/Makefile.sources
+++ b/Makefile.sources
@@ -13,12 +13,13 @@ S_CSS := css.c dump.c internal.c select.c utils.c
S_RENDER := box.c box_construct.c box_normalise.c \
font.c form.c \
- html.c html_script.c html_interaction.c html_redraw.c html_forms.c \
- imagemap.c layout.c list.c search.c table.c \
+ html.c html_script.c html_interaction.c html_redraw.c \
+ html_forms.c imagemap.c layout.c list.c search.c table.c \
textinput.c textplain.c
-S_UTILS := base64.c filename.c hashtable.c locale.c messages.c nsurl.c \
- talloc.c url.c utf8.c utils.c useragent.c filepath.c log.c
+S_UTILS := base64.c corestrings.c filename.c hashtable.c locale.c \
+ messages.c nsurl.c talloc.c url.c utf8.c utils.c useragent.c \
+ filepath.c log.c
S_HTTP := challenge.c generics.c primitives.c parameter.c \
content-disposition.c content-type.c www-authenticate.c
diff --git a/css/css.c b/css/css.c
index 549e79fae..3f660097f 100644
--- a/css/css.c
+++ b/css/css.c
@@ -83,71 +83,6 @@ static css_error nscss_register_import(struct content_css_data *c,
static lwc_string *css_charset;
static css_stylesheet *blank_import;
-lwc_string *nscss_lwc_string_a;
-lwc_string *nscss_lwc_string_abscenter;
-lwc_string *nscss_lwc_string_absmiddle;
-lwc_string *nscss_lwc_string_align;
-lwc_string *nscss_lwc_string_applet;
-lwc_string *nscss_lwc_string_baseline;
-lwc_string *nscss_lwc_string_body;
-lwc_string *nscss_lwc_string_bottom;
-lwc_string *nscss_lwc_string_caption;
-lwc_string *nscss_lwc_string_center;
-lwc_string *nscss_lwc_string_col;
-lwc_string *nscss_lwc_string_div;
-lwc_string *nscss_lwc_string_embed;
-lwc_string *nscss_lwc_string_font;
-lwc_string *nscss_lwc_string_h1;
-lwc_string *nscss_lwc_string_h2;
-lwc_string *nscss_lwc_string_h3;
-lwc_string *nscss_lwc_string_h4;
-lwc_string *nscss_lwc_string_h5;
-lwc_string *nscss_lwc_string_h6;
-lwc_string *nscss_lwc_string_hr;
-lwc_string *nscss_lwc_string_iframe;
-lwc_string *nscss_lwc_string_img;
-lwc_string *nscss_lwc_string_input;
-lwc_string *nscss_lwc_string_justify;
-lwc_string *nscss_lwc_string_left;
-lwc_string *nscss_lwc_string_middle;
-lwc_string *nscss_lwc_string_object;
-lwc_string *nscss_lwc_string_p;
-lwc_string *nscss_lwc_string_password;
-lwc_string *nscss_lwc_string_right;
-lwc_string *nscss_lwc_string_table;
-lwc_string *nscss_lwc_string_tbody;
-lwc_string *nscss_lwc_string_td;
-lwc_string *nscss_lwc_string_text;
-lwc_string *nscss_lwc_string_textarea;
-lwc_string *nscss_lwc_string_texttop;
-lwc_string *nscss_lwc_string_tfoot;
-lwc_string *nscss_lwc_string_th;
-lwc_string *nscss_lwc_string_thead;
-lwc_string *nscss_lwc_string_top;
-lwc_string *nscss_lwc_string_tr;
-
-dom_string *nscss_dom_string_align;
-dom_string *nscss_dom_string_background;
-dom_string *nscss_dom_string_bgcolor;
-dom_string *nscss_dom_string_border;
-dom_string *nscss_dom_string_bordercolor;
-dom_string *nscss_dom_string_cellpadding;
-dom_string *nscss_dom_string_cellspacing;
-dom_string *nscss_dom_string_color;
-dom_string *nscss_dom_string_cols;
-dom_string *nscss_dom_string_height;
-dom_string *nscss_dom_string_href;
-dom_string *nscss_dom_string_hspace;
-dom_string *nscss_dom_string_link;
-dom_string *nscss_dom_string_rows;
-dom_string *nscss_dom_string_size;
-dom_string *nscss_dom_string_text;
-dom_string *nscss_dom_string_type;
-dom_string *nscss_dom_string_valign;
-dom_string *nscss_dom_string_vlink;
-dom_string *nscss_dom_string_vspace;
-dom_string *nscss_dom_string_width;
-
/**
* Initialise a CSS content
@@ -834,91 +769,6 @@ css_error nscss_register_import(struct content_css_data *c,
*/
static void nscss_fini(void)
{
-#define CSS_LWC_STRING_UNREF(NAME) \
- do { \
- if (nscss_lwc_string_##NAME != NULL) { \
- lwc_string_unref(nscss_lwc_string_##NAME); \
- nscss_lwc_string_##NAME = NULL; \
- } \
- } while (0)
-
- CSS_LWC_STRING_UNREF(a);
- CSS_LWC_STRING_UNREF(abscenter);
- CSS_LWC_STRING_UNREF(absmiddle);
- CSS_LWC_STRING_UNREF(align);
- CSS_LWC_STRING_UNREF(applet);
- CSS_LWC_STRING_UNREF(baseline);
- CSS_LWC_STRING_UNREF(body);
- CSS_LWC_STRING_UNREF(bottom);
- CSS_LWC_STRING_UNREF(caption);
- CSS_LWC_STRING_UNREF(center);
- CSS_LWC_STRING_UNREF(col);
- CSS_LWC_STRING_UNREF(div);
- CSS_LWC_STRING_UNREF(embed);
- CSS_LWC_STRING_UNREF(font);
- CSS_LWC_STRING_UNREF(h1);
- CSS_LWC_STRING_UNREF(h2);
- CSS_LWC_STRING_UNREF(h3);
- CSS_LWC_STRING_UNREF(h4);
- CSS_LWC_STRING_UNREF(h5);
- CSS_LWC_STRING_UNREF(h6);
- CSS_LWC_STRING_UNREF(hr);
- CSS_LWC_STRING_UNREF(iframe);
- CSS_LWC_STRING_UNREF(img);
- CSS_LWC_STRING_UNREF(input);
- CSS_LWC_STRING_UNREF(justify);
- CSS_LWC_STRING_UNREF(left);
- CSS_LWC_STRING_UNREF(middle);
- CSS_LWC_STRING_UNREF(object);
- CSS_LWC_STRING_UNREF(p);
- CSS_LWC_STRING_UNREF(password);
- CSS_LWC_STRING_UNREF(right);
- CSS_LWC_STRING_UNREF(table);
- CSS_LWC_STRING_UNREF(tbody);
- CSS_LWC_STRING_UNREF(td);
- CSS_LWC_STRING_UNREF(text);
- CSS_LWC_STRING_UNREF(textarea);
- CSS_LWC_STRING_UNREF(texttop);
- CSS_LWC_STRING_UNREF(tfoot);
- CSS_LWC_STRING_UNREF(th);
- CSS_LWC_STRING_UNREF(thead);
- CSS_LWC_STRING_UNREF(top);
- CSS_LWC_STRING_UNREF(tr);
-#undef CSS_LWC_STRING_UNREF
-
-
-#define CSS_DOM_STRING_UNREF(NAME) \
- do { \
- if (nscss_dom_string_##NAME != NULL) { \
- dom_string_unref(nscss_dom_string_##NAME); \
- nscss_dom_string_##NAME = NULL; \
- } \
- } while (0)
-
- CSS_DOM_STRING_UNREF(align);
- CSS_DOM_STRING_UNREF(background);
- CSS_DOM_STRING_UNREF(bgcolor);
- CSS_DOM_STRING_UNREF(border);
- CSS_DOM_STRING_UNREF(bordercolor);
- CSS_DOM_STRING_UNREF(cellpadding);
- CSS_DOM_STRING_UNREF(cellspacing);
- CSS_DOM_STRING_UNREF(color);
- CSS_DOM_STRING_UNREF(cols);
- CSS_DOM_STRING_UNREF(height);
- CSS_DOM_STRING_UNREF(href);
- CSS_DOM_STRING_UNREF(hspace);
- CSS_DOM_STRING_UNREF(link);
- CSS_DOM_STRING_UNREF(rows);
- CSS_DOM_STRING_UNREF(size);
- CSS_DOM_STRING_UNREF(text);
- CSS_DOM_STRING_UNREF(type);
- CSS_DOM_STRING_UNREF(valign);
- CSS_DOM_STRING_UNREF(vlink);
- CSS_DOM_STRING_UNREF(vspace);
- CSS_DOM_STRING_UNREF(width);
-#undef CSS_DOM_STRING_UNREF
-
-
if (css_charset != NULL) {
lwc_string_unref(css_charset);
css_charset = NULL;
@@ -949,7 +799,6 @@ nserror nscss_init(void)
{
lwc_error lerror;
nserror error;
- dom_exception exc;
lerror = lwc_intern_string("charset", SLEN("charset"), &css_charset);
if (lerror != lwc_error_ok) {
@@ -957,101 +806,6 @@ nserror nscss_init(void)
goto error;
}
-
-#define CSS_LWC_STRING_INTERN(NAME) \
- do { \
- lerror = lwc_intern_string( \
- (const char *)#NAME, \
- sizeof(#NAME) - 1, \
- &nscss_lwc_string_##NAME ); \
- if ((lerror != lwc_error_ok) || \
- (nscss_lwc_string_##NAME == NULL)) { \
- error = NSERROR_NOMEM; \
- goto error; \
- } \
- } while(0)
-
- CSS_LWC_STRING_INTERN(a);
- CSS_LWC_STRING_INTERN(abscenter);
- CSS_LWC_STRING_INTERN(absmiddle);
- CSS_LWC_STRING_INTERN(align);
- CSS_LWC_STRING_INTERN(applet);
- CSS_LWC_STRING_INTERN(baseline);
- CSS_LWC_STRING_INTERN(body);
- CSS_LWC_STRING_INTERN(bottom);
- CSS_LWC_STRING_INTERN(caption);
- CSS_LWC_STRING_INTERN(center);
- CSS_LWC_STRING_INTERN(col);
- CSS_LWC_STRING_INTERN(div);
- CSS_LWC_STRING_INTERN(embed);
- CSS_LWC_STRING_INTERN(font);
- CSS_LWC_STRING_INTERN(h1);
- CSS_LWC_STRING_INTERN(h2);
- CSS_LWC_STRING_INTERN(h3);
- CSS_LWC_STRING_INTERN(h4);
- CSS_LWC_STRING_INTERN(h5);
- CSS_LWC_STRING_INTERN(h6);
- CSS_LWC_STRING_INTERN(hr);
- CSS_LWC_STRING_INTERN(iframe);
- CSS_LWC_STRING_INTERN(img);
- CSS_LWC_STRING_INTERN(input);
- CSS_LWC_STRING_INTERN(justify);
- CSS_LWC_STRING_INTERN(left);
- CSS_LWC_STRING_INTERN(middle);
- CSS_LWC_STRING_INTERN(object);
- CSS_LWC_STRING_INTERN(p);
- CSS_LWC_STRING_INTERN(password);
- CSS_LWC_STRING_INTERN(right);
- CSS_LWC_STRING_INTERN(table);
- CSS_LWC_STRING_INTERN(tbody);
- CSS_LWC_STRING_INTERN(td);
- CSS_LWC_STRING_INTERN(text);
- CSS_LWC_STRING_INTERN(textarea);
- CSS_LWC_STRING_INTERN(texttop);
- CSS_LWC_STRING_INTERN(tfoot);
- CSS_LWC_STRING_INTERN(th);
- CSS_LWC_STRING_INTERN(thead);
- CSS_LWC_STRING_INTERN(top);
- CSS_LWC_STRING_INTERN(tr);
-#undef CSS_LWC_STRING_INTERN
-
-
-#define CSS_DOM_STRING_INTERN(NAME) \
- do { \
- exc = dom_string_create_interned( \
- (const uint8_t *)#NAME, \
- sizeof(#NAME) - 1, \
- &nscss_dom_string_##NAME ); \
- if ((exc != DOM_NO_ERR) || \
- (nscss_dom_string_##NAME == NULL)) { \
- error = NSERROR_NOMEM; \
- goto error; \
- } \
- } while(0)
-
- CSS_DOM_STRING_INTERN(align);
- CSS_DOM_STRING_INTERN(background);
- CSS_DOM_STRING_INTERN(bgcolor);
- CSS_DOM_STRING_INTERN(border);
- CSS_DOM_STRING_INTERN(bordercolor);
- CSS_DOM_STRING_INTERN(cellpadding);
- CSS_DOM_STRING_INTERN(cellspacing);
- CSS_DOM_STRING_INTERN(color);
- CSS_DOM_STRING_INTERN(cols);
- CSS_DOM_STRING_INTERN(height);
- CSS_DOM_STRING_INTERN(href);
- CSS_DOM_STRING_INTERN(hspace);
- CSS_DOM_STRING_INTERN(link);
- CSS_DOM_STRING_INTERN(rows);
- CSS_DOM_STRING_INTERN(size);
- CSS_DOM_STRING_INTERN(text);
- CSS_DOM_STRING_INTERN(type);
- CSS_DOM_STRING_INTERN(valign);
- CSS_DOM_STRING_INTERN(vlink);
- CSS_DOM_STRING_INTERN(vspace);
- CSS_DOM_STRING_INTERN(width);
-#undef CSS_DOM_STRING_INTERN
-
error = content_factory_register_handler("text/css",
&css_content_handler);
if (error != NSERROR_OK)
diff --git a/css/internal.h b/css/internal.h
index a5a3e3210..0344d6b32 100644
--- a/css/internal.h
+++ b/css/internal.h
@@ -24,71 +24,4 @@
css_error nscss_resolve_url(void *pw, const char *base,
lwc_string *rel, lwc_string **abs);
-/* lwc_string strings */
-extern lwc_string *nscss_lwc_string_a;
-extern lwc_string *nscss_lwc_string_abscenter;
-extern lwc_string *nscss_lwc_string_absmiddle;
-extern lwc_string *nscss_lwc_string_align;
-extern lwc_string *nscss_lwc_string_applet;
-extern lwc_string *nscss_lwc_string_baseline;
-extern lwc_string *nscss_lwc_string_body;
-extern lwc_string *nscss_lwc_string_bottom;
-extern lwc_string *nscss_lwc_string_caption;
-extern lwc_string *nscss_lwc_string_center;
-extern lwc_string *nscss_lwc_string_col;
-extern lwc_string *nscss_lwc_string_div;
-extern lwc_string *nscss_lwc_string_embed;
-extern lwc_string *nscss_lwc_string_font;
-extern lwc_string *nscss_lwc_string_h1;
-extern lwc_string *nscss_lwc_string_h2;
-extern lwc_string *nscss_lwc_string_h3;
-extern lwc_string *nscss_lwc_string_h4;
-extern lwc_string *nscss_lwc_string_h5;
-extern lwc_string *nscss_lwc_string_h6;
-extern lwc_string *nscss_lwc_string_hr;
-extern lwc_string *nscss_lwc_string_iframe;
-extern lwc_string *nscss_lwc_string_img;
-extern lwc_string *nscss_lwc_string_input;
-extern lwc_string *nscss_lwc_string_justify;
-extern lwc_string *nscss_lwc_string_left;
-extern lwc_string *nscss_lwc_string_middle;
-extern lwc_string *nscss_lwc_string_object;
-extern lwc_string *nscss_lwc_string_p;
-extern lwc_string *nscss_lwc_string_password;
-extern lwc_string *nscss_lwc_string_right;
-extern lwc_string *nscss_lwc_string_table;
-extern lwc_string *nscss_lwc_string_tbody;
-extern lwc_string *nscss_lwc_string_td;
-extern lwc_string *nscss_lwc_string_text;
-extern lwc_string *nscss_lwc_string_textarea;
-extern lwc_string *nscss_lwc_string_texttop;
-extern lwc_string *nscss_lwc_string_tfoot;
-extern lwc_string *nscss_lwc_string_th;
-extern lwc_string *nscss_lwc_string_thead;
-extern lwc_string *nscss_lwc_string_top;
-extern lwc_string *nscss_lwc_string_tr;
-
-/* dom_string strings */
-extern struct dom_string *nscss_dom_string_align;
-extern struct dom_string *nscss_dom_string_background;
-extern struct dom_string *nscss_dom_string_bgcolor;
-extern struct dom_string *nscss_dom_string_border;
-extern struct dom_string *nscss_dom_string_bordercolor;
-extern struct dom_string *nscss_dom_string_cellpadding;
-extern struct dom_string *nscss_dom_string_cellspacing;
-extern struct dom_string *nscss_dom_string_color;
-extern struct dom_string *nscss_dom_string_cols;
-extern struct dom_string *nscss_dom_string_height;
-extern struct dom_string *nscss_dom_string_href;
-extern struct dom_string *nscss_dom_string_hspace;
-extern struct dom_string *nscss_dom_string_link;
-extern struct dom_string *nscss_dom_string_rows;
-extern struct dom_string *nscss_dom_string_size;
-extern struct dom_string *nscss_dom_string_text;
-extern struct dom_string *nscss_dom_string_type;
-extern struct dom_string *nscss_dom_string_valign;
-extern struct dom_string *nscss_dom_string_vlink;
-extern struct dom_string *nscss_dom_string_vspace;
-extern struct dom_string *nscss_dom_string_width;
-
#endif
diff --git a/css/select.c b/css/select.c
index a92c47601..5c620b1ed 100644
--- a/css/select.c
+++ b/css/select.c
@@ -28,6 +28,7 @@
#include "css/utils.h"
#include "desktop/gui.h"
#include "desktop/options.h"
+#include "utils/corestrings.h"
#include "utils/log.h"
#include "utils/url.h"
#include "utils/utils.h"
@@ -1515,9 +1516,10 @@ css_error node_is_link(void *pw, void *n, bool *match)
return CSS_NOMEM;
}
- if (dom_string_caseless_lwc_isequal(node_name, nscss_lwc_string_a)) {
+ if (dom_string_caseless_lwc_isequal(node_name, corestring_lwc_a)) {
bool has_href;
- exc = dom_element_has_attribute(node, nscss_dom_string_href, &has_href);
+ exc = dom_element_has_attribute(node, corestring_dom_href,
+ &has_href);
if ((exc == DOM_NO_ERR) && (has_href)) {
*match = true;
} else {
@@ -1751,31 +1753,31 @@ node_presentational_hint_vertical_align(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_col) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_thead) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_tbody) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_tfoot) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_tr) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) {
+ if (dom_string_caseless_lwc_isequal(name, corestring_lwc_col) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_thead) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_tbody) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_tfoot) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_tr) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_td) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_th)) {
err = dom_element_get_attribute(node,
- nscss_dom_string_valign, &valign);
+ corestring_dom_valign, &valign);
if (err != DOM_NO_ERR || valign == NULL) {
dom_string_unref(name);
return CSS_PROPERTY_NOT_SET;
}
if (dom_string_caseless_lwc_isequal(valign,
- nscss_lwc_string_top)) {
+ corestring_lwc_top)) {
hint->status = CSS_VERTICAL_ALIGN_TOP;
} else if (dom_string_caseless_lwc_isequal(valign,
- nscss_lwc_string_middle)) {
+ corestring_lwc_middle)) {
hint->status = CSS_VERTICAL_ALIGN_MIDDLE;
} else if (dom_string_caseless_lwc_isequal(valign,
- nscss_lwc_string_bottom)) {
+ corestring_lwc_bottom)) {
hint->status = CSS_VERTICAL_ALIGN_BOTTOM;
} else if (dom_string_caseless_lwc_isequal(valign,
- nscss_lwc_string_baseline)) {
+ corestring_lwc_baseline)) {
hint->status = CSS_VERTICAL_ALIGN_BASELINE;
} else {
dom_string_unref(valign);
@@ -1788,38 +1790,38 @@ node_presentational_hint_vertical_align(nscss_select_ctx *ctx,
return CSS_OK;
} else if (dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_applet) ||
+ corestring_lwc_applet) ||
dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_embed) ||
+ corestring_lwc_embed) ||
dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_iframe) ||
+ corestring_lwc_iframe) ||
dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_img) ||
+ corestring_lwc_img) ||
dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_object)) {
+ corestring_lwc_object)) {
/** \todo input[type=image][align=*] - $11.3.3 */
err = dom_element_get_attribute(node,
- nscss_dom_string_align, &valign);
+ corestring_dom_align, &valign);
if (err != DOM_NO_ERR || valign == NULL) {
dom_string_unref(name);
return CSS_PROPERTY_NOT_SET;
}
if (dom_string_caseless_lwc_isequal(valign,
- nscss_lwc_string_top)) {
+ corestring_lwc_top)) {
hint->status = CSS_VERTICAL_ALIGN_TOP;
} else if (dom_string_caseless_lwc_isequal(valign,
- nscss_lwc_string_bottom) ||
+ corestring_lwc_bottom) ||
dom_string_caseless_lwc_isequal(valign,
- nscss_lwc_string_baseline)) {
+ corestring_lwc_baseline)) {
hint->status = CSS_VERTICAL_ALIGN_BASELINE;
} else if (dom_string_caseless_lwc_isequal(valign,
- nscss_lwc_string_texttop)) {
+ corestring_lwc_texttop)) {
hint->status = CSS_VERTICAL_ALIGN_TEXT_TOP;
} else if (dom_string_caseless_lwc_isequal(valign,
- nscss_lwc_string_absmiddle) ||
+ corestring_lwc_absmiddle) ||
dom_string_caseless_lwc_isequal(valign,
- nscss_lwc_string_abscenter)) {
+ corestring_lwc_abscenter)) {
hint->status = CSS_VERTICAL_ALIGN_MIDDLE;
} else {
dom_string_unref(valign);
@@ -1850,31 +1852,31 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_p) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h1) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h2) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h3) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h4) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h5) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h6)) {
+ if (dom_string_caseless_lwc_isequal(name, corestring_lwc_p) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_h1) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_h2) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_h3) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_h4) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_h5) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_h6)) {
err = dom_element_get_attribute(node,
- nscss_dom_string_align, &align);
+ corestring_dom_align, &align);
if (err != DOM_NO_ERR || align == NULL) {
dom_string_unref(name);
return CSS_PROPERTY_NOT_SET;
}
if (dom_string_caseless_lwc_isequal(align,
- nscss_lwc_string_left)) {
+ corestring_lwc_left)) {
hint->status = CSS_TEXT_ALIGN_LEFT;
} else if (dom_string_caseless_lwc_isequal(align,
- nscss_lwc_string_center)) {
+ corestring_lwc_center)) {
hint->status = CSS_TEXT_ALIGN_CENTER;
} else if (dom_string_caseless_lwc_isequal(align,
- nscss_lwc_string_right)) {
+ corestring_lwc_right)) {
hint->status = CSS_TEXT_ALIGN_RIGHT;
} else if (dom_string_caseless_lwc_isequal(align,
- nscss_lwc_string_justify)) {
+ corestring_lwc_justify)) {
hint->status = CSS_TEXT_ALIGN_JUSTIFY;
} else {
dom_string_unref(align);
@@ -1887,32 +1889,32 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
return CSS_OK;
} else if (dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_center)) {
+ corestring_lwc_center)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER;
dom_string_unref(name);
return CSS_OK;
} else if (dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_caption)) {
+ corestring_lwc_caption)) {
err = dom_element_get_attribute(node,
- nscss_dom_string_align, &align);
+ corestring_dom_align, &align);
if (err != DOM_NO_ERR) {
dom_string_unref(name);
return CSS_PROPERTY_NOT_SET;
}
if (align == NULL || dom_string_caseless_lwc_isequal(align,
- nscss_lwc_string_center)) {
+ corestring_lwc_center)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER;
} else if (dom_string_caseless_lwc_isequal(align,
- nscss_lwc_string_left)) {
+ corestring_lwc_left)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_LEFT;
} else if (dom_string_caseless_lwc_isequal(align,
- nscss_lwc_string_right)) {
+ corestring_lwc_right)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_RIGHT;
} else if (dom_string_caseless_lwc_isequal(align,
- nscss_lwc_string_justify)) {
+ corestring_lwc_justify)) {
hint->status = CSS_TEXT_ALIGN_JUSTIFY;
} else {
dom_string_unref(align);
@@ -1926,37 +1928,37 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
return CSS_OK;
} else if (dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_div) ||
+ corestring_lwc_div) ||
dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_thead) ||
+ corestring_lwc_thead) ||
dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_tbody) ||
+ corestring_lwc_tbody) ||
dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_tfoot) ||
+ corestring_lwc_tfoot) ||
dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_tr) ||
+ corestring_lwc_tr) ||
dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_td) ||
+ corestring_lwc_td) ||
dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_th)) {
+ corestring_lwc_th)) {
err = dom_element_get_attribute(node,
- nscss_dom_string_align, &align);
+ corestring_dom_align, &align);
if (err != DOM_NO_ERR || align == NULL) {
dom_string_unref(name);
return CSS_PROPERTY_NOT_SET;
}
if (dom_string_caseless_lwc_isequal(align,
- nscss_lwc_string_center)) {
+ corestring_lwc_center)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER;
} else if (dom_string_caseless_lwc_isequal(align,
- nscss_lwc_string_left)) {
+ corestring_lwc_left)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_LEFT;
} else if (dom_string_caseless_lwc_isequal(align,
- nscss_lwc_string_right)) {
+ corestring_lwc_right)) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_RIGHT;
} else if (dom_string_caseless_lwc_isequal(align,
- nscss_lwc_string_justify)) {
+ corestring_lwc_justify)) {
hint->status = CSS_TEXT_ALIGN_JUSTIFY;
} else {
dom_string_unref(align);
@@ -1969,7 +1971,7 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
return CSS_OK;
} else if (dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_table)) {
+ corestring_lwc_table)) {
/* Tables usually reset alignment */
hint->status = CSS_TEXT_ALIGN_INHERIT_IF_NON_MAGIC;
@@ -1997,12 +1999,12 @@ node_presentational_hint_padding_trbl(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) {
+ if (dom_string_caseless_lwc_isequal(name, corestring_lwc_td) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_th)) {
css_qname qs;
dom_node *tablenode = NULL;
qs.ns = NULL;
- qs.name = lwc_string_ref(nscss_lwc_string_table);
+ qs.name = lwc_string_ref(corestring_lwc_table);
if (named_ancestor_node(ctx, node, &qs,
(void *)&tablenode) != CSS_OK) {
/* Didn't find, or had error */
@@ -2014,7 +2016,7 @@ node_presentational_hint_padding_trbl(nscss_select_ctx *ctx,
if (tablenode != NULL) {
exc = dom_element_get_attribute(tablenode,
- nscss_dom_string_cellpadding,
+ corestring_dom_cellpadding,
&cellpadding);
if (exc != DOM_NO_ERR) {
dom_string_unref(name);
@@ -2056,11 +2058,11 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_caseless_lwc_isequal(n, nscss_lwc_string_img) ||
- dom_string_caseless_lwc_isequal(n, nscss_lwc_string_applet)) {
+ if (dom_string_caseless_lwc_isequal(n, corestring_lwc_img) ||
+ dom_string_caseless_lwc_isequal(n, corestring_lwc_applet)) {
dom_string_unref(n);
exc = dom_element_get_attribute(node,
- nscss_dom_string_hspace, &n);
+ corestring_dom_hspace, &n);
if (exc != DOM_NO_ERR) {
return CSS_BADPARM;
}
@@ -2078,11 +2080,11 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
}
dom_string_unref(n);
return CSS_OK;
- } else if (dom_string_caseless_lwc_isequal(n, nscss_lwc_string_table) ||
- dom_string_caseless_lwc_isequal(n, nscss_lwc_string_align)) {
+ } else if (dom_string_caseless_lwc_isequal(n, corestring_lwc_table) ||
+ dom_string_caseless_lwc_isequal(n, corestring_lwc_align)) {
dom_string_unref(n);
exc = dom_element_get_attribute(node,
- nscss_dom_string_align, &n);
+ corestring_dom_align, &n);
if (exc != DOM_NO_ERR) {
return CSS_BADPARM;
}
@@ -2091,13 +2093,13 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
if (dom_string_caseless_lwc_isequal(n,
- nscss_lwc_string_center) ||
+ corestring_lwc_center) ||
dom_string_caseless_lwc_isequal(n,
- nscss_lwc_string_abscenter) ||
+ corestring_lwc_abscenter) ||
dom_string_caseless_lwc_isequal(n,
- nscss_lwc_string_middle) ||
+ corestring_lwc_middle) ||
dom_string_caseless_lwc_isequal(n,
- nscss_lwc_string_absmiddle)) {
+ corestring_lwc_absmiddle)) {
hint->status = CSS_MARGIN_AUTO;
} else {
dom_string_unref(n);
@@ -2106,10 +2108,10 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
dom_string_unref(n);
return CSS_OK;
- } else if (dom_string_caseless_lwc_isequal(n, nscss_lwc_string_hr)) {
+ } else if (dom_string_caseless_lwc_isequal(n, corestring_lwc_hr)) {
dom_string_unref(n);
exc = dom_element_get_attribute(node,
- nscss_dom_string_align, &n);
+ corestring_dom_align, &n);
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
@@ -2117,7 +2119,7 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
return CSS_PROPERTY_NOT_SET;
if (dom_string_caseless_lwc_isequal(n,
- nscss_lwc_string_left)) {
+ corestring_lwc_left)) {
if (property == CSS_PROP_MARGIN_LEFT) {
hint->data.length.value = 0;
hint->data.length.unit = CSS_UNIT_PX;
@@ -2126,10 +2128,10 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx,
hint->status = CSS_MARGIN_AUTO;
}
} else if (dom_string_caseless_lwc_isequal(n,
- nscss_lwc_string_center)) {
+ corestring_lwc_center)) {
hint->status = CSS_MARGIN_AUTO;
} else if (dom_string_caseless_lwc_isequal(n,
- nscss_lwc_string_right)) {
+ corestring_lwc_right)) {
if (property == CSS_PROP_MARGIN_RIGHT) {
hint->data.length.value = 0;
hint->data.length.unit = CSS_UNIT_PX;
@@ -2163,9 +2165,9 @@ node_presentational_hint_margin_tb(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_img) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_applet)) {
- exc = dom_element_get_attribute(node, nscss_dom_string_vspace,
+ if (dom_string_caseless_lwc_isequal(name, corestring_lwc_img) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_applet)) {
+ exc = dom_element_get_attribute(node, corestring_dom_vspace,
&vspace);
if (exc != DOM_NO_ERR) {
dom_string_unref(name);
@@ -2206,12 +2208,12 @@ node_presentational_hint_border_trbl_width(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) {
+ if (dom_string_caseless_lwc_isequal(name, corestring_lwc_td) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_th)) {
css_qname qs;
dom_node *tablenode = NULL;
qs.ns = NULL;
- qs.name = lwc_string_ref(nscss_lwc_string_table);
+ qs.name = lwc_string_ref(corestring_lwc_table);
if (named_ancestor_node(ctx, node, &qs,
(void *)&tablenode) != CSS_OK) {
/* Didn't find, or had error */
@@ -2223,7 +2225,7 @@ node_presentational_hint_border_trbl_width(nscss_select_ctx *ctx,
lwc_string_unref(qs.name);
if (tablenode != NULL) {
exc = dom_element_get_attribute(tablenode,
- nscss_dom_string_border, &width);
+ corestring_dom_border, &width);
if (exc != DOM_NO_ERR) {
dom_string_unref(name);
return CSS_BADPARM;
@@ -2234,8 +2236,8 @@ node_presentational_hint_border_trbl_width(nscss_select_ctx *ctx,
*/
is_table_cell = true;
} else if (dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_table)) {
- exc = dom_element_get_attribute(node, nscss_dom_string_border,
+ corestring_lwc_table)) {
+ exc = dom_element_get_attribute(node, corestring_dom_border,
&width);
if (exc != DOM_NO_ERR) {
dom_string_unref(name);
@@ -2280,12 +2282,12 @@ node_presentational_hint_border_trbl_style(nscss_select_ctx *ctx,
if (exc != DOM_NO_ERR)
return CSS_BADPARM;
- if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) {
+ if (dom_string_caseless_lwc_isequal(name, corestring_lwc_td) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_th)) {
css_qname qs;
dom_node *tablenode = NULL;
qs.ns = NULL;
- qs.name = lwc_string_ref(nscss_lwc_string_table);
+ qs.name = lwc_string_ref(corestring_lwc_table);
if (named_ancestor_node(ctx, node, &qs,
(void *)&tablenode) != CSS_OK) {
@@ -2301,7 +2303,7 @@ node_presentational_hint_border_trbl_style(nscss_select_ctx *ctx,
bool has_border = false;
exc = dom_element_has_attribute(tablenode,
- nscss_dom_string_border,
+ corestring_dom_border,
&has_border);
if (exc != DOM_NO_ERR) {
dom_string_unref(name);
@@ -2318,11 +2320,11 @@ node_presentational_hint_border_trbl_style(nscss_select_ctx *ctx,
* return a reffed node to the CSS
*/
} else if (dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_table)) {
+ corestring_lwc_table)) {
bool has_border = false;
exc = dom_element_has_attribute(node,
- nscss_dom_string_border,
+ corestring_dom_border,
&has_border);
if (exc != DOM_NO_ERR) {
dom_string_unref(name);
@@ -2354,12 +2356,12 @@ node_presentational_hint_border_trbl_color(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) {
+ if (dom_string_caseless_lwc_isequal(name, corestring_lwc_td) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_th)) {
css_qname qs;
dom_node *tablenode = NULL;
qs.ns = NULL;
- qs.name = lwc_string_ref(nscss_lwc_string_table);
+ qs.name = lwc_string_ref(corestring_lwc_table);
if (named_ancestor_node(ctx, node, &qs,
(void *)&tablenode) != CSS_OK) {
@@ -2373,7 +2375,7 @@ node_presentational_hint_border_trbl_color(nscss_select_ctx *ctx,
if (tablenode != NULL) {
err = dom_element_get_attribute(node,
- nscss_dom_string_bordercolor,
+ corestring_dom_bordercolor,
&bordercolor);
}
/* No need to unref tablenode, named_ancestor_node does not
@@ -2381,9 +2383,9 @@ node_presentational_hint_border_trbl_color(nscss_select_ctx *ctx,
*/
} else if (dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_table)) {
+ corestring_lwc_table)) {
err = dom_element_get_attribute(node,
- nscss_dom_string_bordercolor,
+ corestring_dom_bordercolor,
&bordercolor);
}
@@ -2419,7 +2421,7 @@ node_presentational_hint_border_spacing(nscss_select_ctx *ctx,
}
if (!dom_string_caseless_lwc_isequal(node_name,
- nscss_lwc_string_table)) {
+ corestring_lwc_table)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
@@ -2427,7 +2429,7 @@ node_presentational_hint_border_spacing(nscss_select_ctx *ctx,
dom_string_unref(node_name);
err = dom_element_get_attribute(node,
- nscss_dom_string_cellspacing, &cellspacing);
+ corestring_dom_cellspacing, &cellspacing);
if ((err != DOM_NO_ERR) || (cellspacing == NULL)) {
return CSS_PROPERTY_NOT_SET;
}
@@ -2464,26 +2466,26 @@ node_presentational_hint_width(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_hr) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_iframe) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_img) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_object) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_table) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_applet)) {
+ if (dom_string_caseless_lwc_isequal(name, corestring_lwc_hr) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_iframe) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_img) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_object) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_table) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_td) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_th) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_applet)) {
err = dom_element_get_attribute(node,
- nscss_dom_string_width, &width);
+ corestring_dom_width, &width);
} else if (dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_textarea)) {
+ corestring_lwc_textarea)) {
textarea = true;
err = dom_element_get_attribute(node,
- nscss_dom_string_cols, &width);
+ corestring_dom_cols, &width);
} else if (dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_input)) {
+ corestring_lwc_input)) {
input = true;
err = dom_element_get_attribute(node,
- nscss_dom_string_size, &width);
+ corestring_dom_size, &width);
}
dom_string_unref(name);
@@ -2505,15 +2507,15 @@ node_presentational_hint_width(nscss_select_ctx *ctx,
if (input) {
err = dom_element_get_attribute(node,
- nscss_dom_string_type, &width);
+ corestring_dom_type, &width);
if ((err != DOM_NO_ERR) || (width == NULL)) {
return CSS_PROPERTY_NOT_SET;
}
if (dom_string_lwc_isequal(width,
- nscss_lwc_string_text) ||
+ corestring_lwc_text) ||
dom_string_lwc_isequal(width,
- nscss_lwc_string_password)) {
+ corestring_lwc_password)) {
hint->data.length.unit = CSS_UNIT_EX;
}
@@ -2544,20 +2546,20 @@ node_presentational_hint_height(nscss_select_ctx *ctx,
if (err != DOM_NO_ERR)
return CSS_PROPERTY_NOT_SET;
- if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_iframe) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_tr) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_img) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_object) ||
- dom_string_caseless_lwc_isequal(name, nscss_lwc_string_applet)) {
+ if (dom_string_caseless_lwc_isequal(name, corestring_lwc_iframe) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_td) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_th) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_tr) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_img) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_object) ||
+ dom_string_caseless_lwc_isequal(name, corestring_lwc_applet)) {
err = dom_element_get_attribute(node,
- nscss_dom_string_height, &height);
+ corestring_dom_height, &height);
} else if (dom_string_caseless_lwc_isequal(name,
- nscss_lwc_string_textarea)) {
+ corestring_lwc_textarea)) {
textarea = true;
err = dom_element_get_attribute(node,
- nscss_dom_string_rows, &height);
+ corestring_dom_rows, &height);
}
dom_string_unref(name);
@@ -2599,14 +2601,14 @@ node_presentational_hint_font_size(nscss_select_ctx *ctx,
}
if (!dom_string_caseless_lwc_isequal(node_name,
- nscss_lwc_string_font)) {
+ corestring_lwc_font)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
dom_string_unref(node_name);
- err = dom_element_get_attribute(node, nscss_dom_string_align, &size);
+ err = dom_element_get_attribute(node, corestring_dom_align, &size);
if ((err != DOM_NO_ERR) || (size == NULL)) {
return CSS_PROPERTY_NOT_SET;
}
@@ -2639,31 +2641,31 @@ node_presentational_hint_float(nscss_select_ctx *ctx,
/** \todo input[type=image][align=*] - $11.3.3 */
if (!dom_string_caseless_lwc_isequal(node_name,
- nscss_lwc_string_applet) &&
+ corestring_lwc_applet) &&
!dom_string_caseless_lwc_isequal(node_name,
- nscss_lwc_string_embed) &&
+ corestring_lwc_embed) &&
!dom_string_caseless_lwc_isequal(node_name,
- nscss_lwc_string_iframe) &&
+ corestring_lwc_iframe) &&
!dom_string_caseless_lwc_isequal(node_name,
- nscss_lwc_string_img) &&
+ corestring_lwc_img) &&
!dom_string_caseless_lwc_isequal(node_name,
- nscss_lwc_string_object)) {
+ corestring_lwc_object)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
dom_string_unref(node_name);
- err = dom_element_get_attribute(node, nscss_dom_string_align, &align);
+ err = dom_element_get_attribute(node, corestring_dom_align, &align);
if ((err != DOM_NO_ERR) || (align == NULL)) {
return CSS_PROPERTY_NOT_SET;
}
- if (dom_string_lwc_isequal(align, nscss_lwc_string_left)) {
+ if (dom_string_lwc_isequal(align, corestring_lwc_left)) {
hint->status = CSS_FLOAT_LEFT;
dom_string_unref(align);
return CSS_OK;
- } else if (dom_string_lwc_isequal(align, nscss_lwc_string_right)) {
+ } else if (dom_string_lwc_isequal(align, corestring_lwc_right)) {
hint->status = CSS_FLOAT_RIGHT;
dom_string_unref(align);
return CSS_OK;
@@ -2689,14 +2691,14 @@ node_presentational_hint_color(nscss_select_ctx *ctx,
return CSS_NOMEM;
}
- if (dom_string_caseless_lwc_isequal(node_name, nscss_lwc_string_a)) {
+ if (dom_string_caseless_lwc_isequal(node_name, corestring_lwc_a)) {
/* find body node */
css_qname qs;
dom_node *bodynode = NULL;
bool is_visited;
qs.ns = NULL;
- qs.name = lwc_string_ref(nscss_lwc_string_body);
+ qs.name = lwc_string_ref(corestring_lwc_body);
if (named_ancestor_node(ctx, node, &qs,
(void *)&bodynode) != CSS_OK) {
/* Didn't find, or had error */
@@ -2719,30 +2721,30 @@ node_presentational_hint_color(nscss_select_ctx *ctx,
if (is_visited) {
err = dom_element_get_attribute(node,
- nscss_dom_string_vlink, &color);
+ corestring_dom_vlink, &color);
if ((err != DOM_NO_ERR) || (color == NULL)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
} else {
err = dom_element_get_attribute(node,
- nscss_dom_string_link, &color);
+ corestring_dom_link, &color);
if ((err != DOM_NO_ERR) || (color == NULL)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
}
} else if (dom_string_caseless_lwc_isequal(node_name,
- nscss_lwc_string_body)) {
+ corestring_lwc_body)) {
err = dom_element_get_attribute(node,
- nscss_dom_string_text, &color);
+ corestring_dom_text, &color);
if ((err != DOM_NO_ERR) || (color == NULL)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
} else {
err = dom_element_get_attribute(node,
- nscss_dom_string_color, &color);
+ corestring_dom_color, &color);
if ((err != DOM_NO_ERR) || (color == NULL)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
@@ -2777,19 +2779,19 @@ node_presentational_hint_caption_side(nscss_select_ctx *ctx,
}
if (!dom_string_caseless_lwc_isequal(node_name,
- nscss_lwc_string_caption)) {
+ corestring_lwc_caption)) {
dom_string_unref(node_name);
return CSS_PROPERTY_NOT_SET;
}
dom_string_unref(node_name);
- err = dom_element_get_attribute(node, nscss_dom_string_align, &align);
+ err = dom_element_get_attribute(node, corestring_dom_align, &align);
if ((err != DOM_NO_ERR) || (align == NULL)) {
return CSS_PROPERTY_NOT_SET;
}
- if (dom_string_caseless_lwc_isequal(align, nscss_lwc_string_bottom)) {
+ if (dom_string_caseless_lwc_isequal(align, corestring_lwc_bottom)) {
hint->status = CSS_CAPTION_SIDE_BOTTOM;
dom_string_unref(align);
return CSS_OK;
@@ -2809,7 +2811,7 @@ node_presentational_hint_background_color(nscss_select_ctx *ctx,
dom_string *bgcolor;
err = dom_element_get_attribute(node,
- nscss_dom_string_bgcolor, &bgcolor);
+ corestring_dom_bgcolor, &bgcolor);
if ((err != DOM_NO_ERR) || (bgcolor == NULL)) {
return CSS_PROPERTY_NOT_SET;
}
@@ -2839,7 +2841,7 @@ node_presentational_hint_background_image(nscss_select_ctx *ctx,
lwc_error lerror;
err = dom_element_get_attribute(node,
- nscss_dom_string_background, &atr_val);
+ corestring_dom_background, &atr_val);
if ((err != DOM_NO_ERR) || (atr_val == NULL)) {
return CSS_PROPERTY_NOT_SET;
}
diff --git a/desktop/netsurf.c b/desktop/netsurf.c
index 4fa7134c0..433acde57 100644
--- a/desktop/netsurf.c
+++ b/desktop/netsurf.c
@@ -47,6 +47,7 @@
#include "render/html.h"
#include "render/textplain.h"
+#include "utils/corestrings.h"
#include "utils/log.h"
#include "utils/url.h"
#include "utils/utf8.h"
@@ -169,6 +170,11 @@ nserror netsurf_init(int *pargc,
messages_load(messages);
+ /* corestrings init */
+ error = corestrings_init();
+ if (error != NSERROR_OK)
+ return error;
+
/* set up cache limits based on the memory cache size option */
hlcache_parameters.limit = nsoption_int(memory_cache_size);
@@ -287,6 +293,7 @@ void netsurf_exit(void)
LOG(("Destroying System colours"));
gui_system_colour_finalize();
+ corestrings_fini();
LOG(("Remaining lwc strings:"));
lwc_iterate_strings(netsurf_lwc_iterator, NULL);
diff --git a/utils/corestrings.c b/utils/corestrings.c
new file mode 100644
index 000000000..d266d17c6
--- /dev/null
+++ b/utils/corestrings.c
@@ -0,0 +1,293 @@
+/*
+ * Copyright 2012 Michael Drake
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/** \file
+ * Useful interned string pointers (implementation).
+ */
+
+#include
+
+#include "utils/corestrings.h"
+
+/* lwc_string strings */
+lwc_string *corestring_lwc_a;
+lwc_string *corestring_lwc_abscenter;
+lwc_string *corestring_lwc_absmiddle;
+lwc_string *corestring_lwc_align;
+lwc_string *corestring_lwc_applet;
+lwc_string *corestring_lwc_baseline;
+lwc_string *corestring_lwc_body;
+lwc_string *corestring_lwc_bottom;
+lwc_string *corestring_lwc_caption;
+lwc_string *corestring_lwc_center;
+lwc_string *corestring_lwc_col;
+lwc_string *corestring_lwc_div;
+lwc_string *corestring_lwc_embed;
+lwc_string *corestring_lwc_font;
+lwc_string *corestring_lwc_h1;
+lwc_string *corestring_lwc_h2;
+lwc_string *corestring_lwc_h3;
+lwc_string *corestring_lwc_h4;
+lwc_string *corestring_lwc_h5;
+lwc_string *corestring_lwc_h6;
+lwc_string *corestring_lwc_hr;
+lwc_string *corestring_lwc_iframe;
+lwc_string *corestring_lwc_img;
+lwc_string *corestring_lwc_input;
+lwc_string *corestring_lwc_justify;
+lwc_string *corestring_lwc_left;
+lwc_string *corestring_lwc_middle;
+lwc_string *corestring_lwc_object;
+lwc_string *corestring_lwc_p;
+lwc_string *corestring_lwc_password;
+lwc_string *corestring_lwc_right;
+lwc_string *corestring_lwc_table;
+lwc_string *corestring_lwc_tbody;
+lwc_string *corestring_lwc_td;
+lwc_string *corestring_lwc_text;
+lwc_string *corestring_lwc_textarea;
+lwc_string *corestring_lwc_texttop;
+lwc_string *corestring_lwc_tfoot;
+lwc_string *corestring_lwc_th;
+lwc_string *corestring_lwc_thead;
+lwc_string *corestring_lwc_top;
+lwc_string *corestring_lwc_tr;
+
+/* dom_string strings */
+dom_string *corestring_dom_align;
+dom_string *corestring_dom_background;
+dom_string *corestring_dom_bgcolor;
+dom_string *corestring_dom_border;
+dom_string *corestring_dom_bordercolor;
+dom_string *corestring_dom_cellpadding;
+dom_string *corestring_dom_cellspacing;
+dom_string *corestring_dom_color;
+dom_string *corestring_dom_cols;
+dom_string *corestring_dom_height;
+dom_string *corestring_dom_href;
+dom_string *corestring_dom_hspace;
+dom_string *corestring_dom_link;
+dom_string *corestring_dom_rows;
+dom_string *corestring_dom_size;
+dom_string *corestring_dom_text;
+dom_string *corestring_dom_type;
+dom_string *corestring_dom_valign;
+dom_string *corestring_dom_vlink;
+dom_string *corestring_dom_vspace;
+dom_string *corestring_dom_width;
+
+
+/*
+ * Free the core strings
+ */
+void corestrings_fini(void)
+{
+#define CSS_LWC_STRING_UNREF(NAME) \
+ do { \
+ if (corestring_lwc_##NAME != NULL) { \
+ lwc_string_unref(corestring_lwc_##NAME); \
+ corestring_lwc_##NAME = NULL; \
+ } \
+ } while (0)
+
+ CSS_LWC_STRING_UNREF(a);
+ CSS_LWC_STRING_UNREF(abscenter);
+ CSS_LWC_STRING_UNREF(absmiddle);
+ CSS_LWC_STRING_UNREF(align);
+ CSS_LWC_STRING_UNREF(applet);
+ CSS_LWC_STRING_UNREF(baseline);
+ CSS_LWC_STRING_UNREF(body);
+ CSS_LWC_STRING_UNREF(bottom);
+ CSS_LWC_STRING_UNREF(caption);
+ CSS_LWC_STRING_UNREF(center);
+ CSS_LWC_STRING_UNREF(col);
+ CSS_LWC_STRING_UNREF(div);
+ CSS_LWC_STRING_UNREF(embed);
+ CSS_LWC_STRING_UNREF(font);
+ CSS_LWC_STRING_UNREF(h1);
+ CSS_LWC_STRING_UNREF(h2);
+ CSS_LWC_STRING_UNREF(h3);
+ CSS_LWC_STRING_UNREF(h4);
+ CSS_LWC_STRING_UNREF(h5);
+ CSS_LWC_STRING_UNREF(h6);
+ CSS_LWC_STRING_UNREF(hr);
+ CSS_LWC_STRING_UNREF(iframe);
+ CSS_LWC_STRING_UNREF(img);
+ CSS_LWC_STRING_UNREF(input);
+ CSS_LWC_STRING_UNREF(justify);
+ CSS_LWC_STRING_UNREF(left);
+ CSS_LWC_STRING_UNREF(middle);
+ CSS_LWC_STRING_UNREF(object);
+ CSS_LWC_STRING_UNREF(p);
+ CSS_LWC_STRING_UNREF(password);
+ CSS_LWC_STRING_UNREF(right);
+ CSS_LWC_STRING_UNREF(table);
+ CSS_LWC_STRING_UNREF(tbody);
+ CSS_LWC_STRING_UNREF(td);
+ CSS_LWC_STRING_UNREF(text);
+ CSS_LWC_STRING_UNREF(textarea);
+ CSS_LWC_STRING_UNREF(texttop);
+ CSS_LWC_STRING_UNREF(tfoot);
+ CSS_LWC_STRING_UNREF(th);
+ CSS_LWC_STRING_UNREF(thead);
+ CSS_LWC_STRING_UNREF(top);
+ CSS_LWC_STRING_UNREF(tr);
+#undef CSS_LWC_STRING_UNREF
+
+#define CSS_DOM_STRING_UNREF(NAME) \
+ do { \
+ if (corestring_dom_##NAME != NULL) { \
+ dom_string_unref(corestring_dom_##NAME); \
+ corestring_dom_##NAME = NULL; \
+ } \
+ } while (0)
+
+ CSS_DOM_STRING_UNREF(align);
+ CSS_DOM_STRING_UNREF(background);
+ CSS_DOM_STRING_UNREF(bgcolor);
+ CSS_DOM_STRING_UNREF(border);
+ CSS_DOM_STRING_UNREF(bordercolor);
+ CSS_DOM_STRING_UNREF(cellpadding);
+ CSS_DOM_STRING_UNREF(cellspacing);
+ CSS_DOM_STRING_UNREF(color);
+ CSS_DOM_STRING_UNREF(cols);
+ CSS_DOM_STRING_UNREF(height);
+ CSS_DOM_STRING_UNREF(href);
+ CSS_DOM_STRING_UNREF(hspace);
+ CSS_DOM_STRING_UNREF(link);
+ CSS_DOM_STRING_UNREF(rows);
+ CSS_DOM_STRING_UNREF(size);
+ CSS_DOM_STRING_UNREF(text);
+ CSS_DOM_STRING_UNREF(type);
+ CSS_DOM_STRING_UNREF(valign);
+ CSS_DOM_STRING_UNREF(vlink);
+ CSS_DOM_STRING_UNREF(vspace);
+ CSS_DOM_STRING_UNREF(width);
+#undef CSS_DOM_STRING_UNREF
+}
+
+
+/*
+ * Create the core strings
+ */
+nserror corestrings_init(void)
+{
+ lwc_error lerror;
+ nserror error;
+ dom_exception exc;
+
+#define CSS_LWC_STRING_INTERN(NAME) \
+ do { \
+ lerror = lwc_intern_string( \
+ (const char *)#NAME, \
+ sizeof(#NAME) - 1, \
+ &corestring_lwc_##NAME ); \
+ if ((lerror != lwc_error_ok) || \
+ (corestring_lwc_##NAME == NULL)) { \
+ error = NSERROR_NOMEM; \
+ goto error; \
+ } \
+ } while(0)
+
+ CSS_LWC_STRING_INTERN(a);
+ CSS_LWC_STRING_INTERN(abscenter);
+ CSS_LWC_STRING_INTERN(absmiddle);
+ CSS_LWC_STRING_INTERN(align);
+ CSS_LWC_STRING_INTERN(applet);
+ CSS_LWC_STRING_INTERN(baseline);
+ CSS_LWC_STRING_INTERN(body);
+ CSS_LWC_STRING_INTERN(bottom);
+ CSS_LWC_STRING_INTERN(caption);
+ CSS_LWC_STRING_INTERN(center);
+ CSS_LWC_STRING_INTERN(col);
+ CSS_LWC_STRING_INTERN(div);
+ CSS_LWC_STRING_INTERN(embed);
+ CSS_LWC_STRING_INTERN(font);
+ CSS_LWC_STRING_INTERN(h1);
+ CSS_LWC_STRING_INTERN(h2);
+ CSS_LWC_STRING_INTERN(h3);
+ CSS_LWC_STRING_INTERN(h4);
+ CSS_LWC_STRING_INTERN(h5);
+ CSS_LWC_STRING_INTERN(h6);
+ CSS_LWC_STRING_INTERN(hr);
+ CSS_LWC_STRING_INTERN(iframe);
+ CSS_LWC_STRING_INTERN(img);
+ CSS_LWC_STRING_INTERN(input);
+ CSS_LWC_STRING_INTERN(justify);
+ CSS_LWC_STRING_INTERN(left);
+ CSS_LWC_STRING_INTERN(middle);
+ CSS_LWC_STRING_INTERN(object);
+ CSS_LWC_STRING_INTERN(p);
+ CSS_LWC_STRING_INTERN(password);
+ CSS_LWC_STRING_INTERN(right);
+ CSS_LWC_STRING_INTERN(table);
+ CSS_LWC_STRING_INTERN(tbody);
+ CSS_LWC_STRING_INTERN(td);
+ CSS_LWC_STRING_INTERN(text);
+ CSS_LWC_STRING_INTERN(textarea);
+ CSS_LWC_STRING_INTERN(texttop);
+ CSS_LWC_STRING_INTERN(tfoot);
+ CSS_LWC_STRING_INTERN(th);
+ CSS_LWC_STRING_INTERN(thead);
+ CSS_LWC_STRING_INTERN(top);
+ CSS_LWC_STRING_INTERN(tr);
+#undef CSS_LWC_STRING_INTERN
+
+#define CSS_DOM_STRING_INTERN(NAME) \
+ do { \
+ exc = dom_string_create_interned( \
+ (const uint8_t *)#NAME, \
+ sizeof(#NAME) - 1, \
+ &corestring_dom_##NAME ); \
+ if ((exc != DOM_NO_ERR) || \
+ (corestring_dom_##NAME == NULL)) { \
+ error = NSERROR_NOMEM; \
+ goto error; \
+ } \
+ } while(0)
+
+ CSS_DOM_STRING_INTERN(align);
+ CSS_DOM_STRING_INTERN(background);
+ CSS_DOM_STRING_INTERN(bgcolor);
+ CSS_DOM_STRING_INTERN(border);
+ CSS_DOM_STRING_INTERN(bordercolor);
+ CSS_DOM_STRING_INTERN(cellpadding);
+ CSS_DOM_STRING_INTERN(cellspacing);
+ CSS_DOM_STRING_INTERN(color);
+ CSS_DOM_STRING_INTERN(cols);
+ CSS_DOM_STRING_INTERN(height);
+ CSS_DOM_STRING_INTERN(href);
+ CSS_DOM_STRING_INTERN(hspace);
+ CSS_DOM_STRING_INTERN(link);
+ CSS_DOM_STRING_INTERN(rows);
+ CSS_DOM_STRING_INTERN(size);
+ CSS_DOM_STRING_INTERN(text);
+ CSS_DOM_STRING_INTERN(type);
+ CSS_DOM_STRING_INTERN(valign);
+ CSS_DOM_STRING_INTERN(vlink);
+ CSS_DOM_STRING_INTERN(vspace);
+ CSS_DOM_STRING_INTERN(width);
+#undef CSS_DOM_STRING_INTERN
+
+ return NSERROR_OK;
+
+error:
+ corestrings_fini();
+
+ return error;
+}
diff --git a/utils/corestrings.h b/utils/corestrings.h
new file mode 100644
index 000000000..236c108bf
--- /dev/null
+++ b/utils/corestrings.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2012 Michael Drake
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/** \file
+ * Useful interned string pointers (interface).
+ */
+
+#ifndef NETSURF_UTILS_CORESTRINGS_H_
+#define NETSURF_UTILS_CORESTRINGS_H_
+
+#include
+#include "utils/errors.h"
+
+nserror corestrings_init(void);
+void corestrings_fini(void);
+
+/* lwc_string strings */
+extern lwc_string *corestring_lwc_a;
+extern lwc_string *corestring_lwc_abscenter;
+extern lwc_string *corestring_lwc_absmiddle;
+extern lwc_string *corestring_lwc_align;
+extern lwc_string *corestring_lwc_applet;
+extern lwc_string *corestring_lwc_baseline;
+extern lwc_string *corestring_lwc_body;
+extern lwc_string *corestring_lwc_bottom;
+extern lwc_string *corestring_lwc_caption;
+extern lwc_string *corestring_lwc_center;
+extern lwc_string *corestring_lwc_col;
+extern lwc_string *corestring_lwc_div;
+extern lwc_string *corestring_lwc_embed;
+extern lwc_string *corestring_lwc_font;
+extern lwc_string *corestring_lwc_h1;
+extern lwc_string *corestring_lwc_h2;
+extern lwc_string *corestring_lwc_h3;
+extern lwc_string *corestring_lwc_h4;
+extern lwc_string *corestring_lwc_h5;
+extern lwc_string *corestring_lwc_h6;
+extern lwc_string *corestring_lwc_hr;
+extern lwc_string *corestring_lwc_iframe;
+extern lwc_string *corestring_lwc_img;
+extern lwc_string *corestring_lwc_input;
+extern lwc_string *corestring_lwc_justify;
+extern lwc_string *corestring_lwc_left;
+extern lwc_string *corestring_lwc_middle;
+extern lwc_string *corestring_lwc_object;
+extern lwc_string *corestring_lwc_p;
+extern lwc_string *corestring_lwc_password;
+extern lwc_string *corestring_lwc_right;
+extern lwc_string *corestring_lwc_table;
+extern lwc_string *corestring_lwc_tbody;
+extern lwc_string *corestring_lwc_td;
+extern lwc_string *corestring_lwc_text;
+extern lwc_string *corestring_lwc_textarea;
+extern lwc_string *corestring_lwc_texttop;
+extern lwc_string *corestring_lwc_tfoot;
+extern lwc_string *corestring_lwc_th;
+extern lwc_string *corestring_lwc_thead;
+extern lwc_string *corestring_lwc_top;
+extern lwc_string *corestring_lwc_tr;
+
+struct dom_string;
+
+/* dom_string strings */
+extern struct dom_string *corestring_dom_align;
+extern struct dom_string *corestring_dom_background;
+extern struct dom_string *corestring_dom_bgcolor;
+extern struct dom_string *corestring_dom_border;
+extern struct dom_string *corestring_dom_bordercolor;
+extern struct dom_string *corestring_dom_cellpadding;
+extern struct dom_string *corestring_dom_cellspacing;
+extern struct dom_string *corestring_dom_color;
+extern struct dom_string *corestring_dom_cols;
+extern struct dom_string *corestring_dom_height;
+extern struct dom_string *corestring_dom_href;
+extern struct dom_string *corestring_dom_hspace;
+extern struct dom_string *corestring_dom_link;
+extern struct dom_string *corestring_dom_rows;
+extern struct dom_string *corestring_dom_size;
+extern struct dom_string *corestring_dom_text;
+extern struct dom_string *corestring_dom_type;
+extern struct dom_string *corestring_dom_valign;
+extern struct dom_string *corestring_dom_vlink;
+extern struct dom_string *corestring_dom_vspace;
+extern struct dom_string *corestring_dom_width;
+
+#endif
--
cgit v1.2.3
From 5d8959b30cad998e666af15af1aa9eb58827e644 Mon Sep 17 00:00:00 2001
From: John-Mark Bell
Date: Sun, 22 Jul 2012 17:52:30 +0100
Subject: Fix reference handling when computing next node.
---
render/box_construct.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/render/box_construct.c b/render/box_construct.c
index b968e0e4f..fbaa9db5e 100644
--- a/render/box_construct.c
+++ b/render/box_construct.c
@@ -166,7 +166,7 @@ bool xml_to_box(dom_node *n, html_content *c, box_construct_complete_cb cb)
return false;
ctx->content = c;
- ctx->n = n;
+ ctx->n = dom_node_ref(n);
ctx->root_box = NULL;
ctx->cb = cb;
@@ -386,6 +386,7 @@ static dom_node *next_node(dom_node *n, html_content *content,
dom_node_unref(n);
return NULL;
}
+ dom_node_unref(n);
} else {
err = dom_node_get_next_sibling(n, &next);
if (err != DOM_NO_ERR) {
@@ -423,6 +424,7 @@ static dom_node *next_node(dom_node *n, html_content *content,
if (parent_next != NULL) {
dom_node_unref(parent_next);
+ dom_node_unref(parent);
break;
}
--
cgit v1.2.3
From 9de20d9a1a9281ddf3b1d42f99f8e85c5c990af0 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 22 Jul 2012 18:01:10 +0100
Subject: Interned string cleanup, phase 3: Move html_forms.c to corestring.
---
render/html_forms.c | 13 +++++++------
render/html_internal.h | 3 ---
utils/corestrings.c | 3 +++
utils/corestrings.h | 1 +
4 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/render/html_forms.c b/render/html_forms.c
index 5b917cde8..284850dc5 100644
--- a/render/html_forms.c
+++ b/render/html_forms.c
@@ -19,6 +19,7 @@
#include "render/form.h"
#include "render/html_internal.h"
+#include "utils/corestrings.h"
#include "utils/log.h"
@@ -479,16 +480,16 @@ struct form_control *html_forms_get_control_for_node(struct form *forms, dom_nod
if (err == DOM_NO_ERR && ds_name != NULL) {
/* Step three, attempt to work out what gadget to make */
- if (dom_string_caseless_isequal(ds_name,
- html_dom_string_button)) {
+ if (dom_string_caseless_lwc_isequal(ds_name,
+ corestring_lwc_button)) {
ctl = parse_button_element(forms,
(dom_html_button_element *) node);
- } else if (dom_string_caseless_isequal(ds_name,
- html_dom_string_input)) {
+ } else if (dom_string_caseless_lwc_isequal(ds_name,
+ corestring_lwc_input)) {
ctl = parse_input_element(forms,
(dom_html_input_element *) node);
- } else if (dom_string_caseless_isequal(ds_name,
- html_dom_string_textarea)) {
+ } else if (dom_string_caseless_lwc_isequal(ds_name,
+ corestring_lwc_textarea)) {
ctl = parse_textarea_element(forms,
(dom_html_text_area_element *) node);
}
diff --git a/render/html_internal.h b/render/html_internal.h
index a82d7c5c0..ad032f720 100644
--- a/render/html_internal.h
+++ b/render/html_internal.h
@@ -173,9 +173,6 @@ extern struct dom_string *html_dom_string_coords;
extern struct dom_string *html_dom_string_circle;
extern struct dom_string *html_dom_string_poly;
extern struct dom_string *html_dom_string_polygon;
-extern struct dom_string *html_dom_string_button;
-extern struct dom_string *html_dom_string_input;
-extern struct dom_string *html_dom_string_textarea;
extern struct dom_string *html_dom_string_text_javascript;
extern struct dom_string *html_dom_string_type;
extern struct dom_string *html_dom_string_src;
diff --git a/utils/corestrings.c b/utils/corestrings.c
index d266d17c6..9cfe1eaf2 100644
--- a/utils/corestrings.c
+++ b/utils/corestrings.c
@@ -33,6 +33,7 @@ lwc_string *corestring_lwc_applet;
lwc_string *corestring_lwc_baseline;
lwc_string *corestring_lwc_body;
lwc_string *corestring_lwc_bottom;
+lwc_string *corestring_lwc_button;
lwc_string *corestring_lwc_caption;
lwc_string *corestring_lwc_center;
lwc_string *corestring_lwc_col;
@@ -113,6 +114,7 @@ void corestrings_fini(void)
CSS_LWC_STRING_UNREF(baseline);
CSS_LWC_STRING_UNREF(body);
CSS_LWC_STRING_UNREF(bottom);
+ CSS_LWC_STRING_UNREF(button);
CSS_LWC_STRING_UNREF(caption);
CSS_LWC_STRING_UNREF(center);
CSS_LWC_STRING_UNREF(col);
@@ -212,6 +214,7 @@ nserror corestrings_init(void)
CSS_LWC_STRING_INTERN(baseline);
CSS_LWC_STRING_INTERN(body);
CSS_LWC_STRING_INTERN(bottom);
+ CSS_LWC_STRING_INTERN(button);
CSS_LWC_STRING_INTERN(caption);
CSS_LWC_STRING_INTERN(center);
CSS_LWC_STRING_INTERN(col);
diff --git a/utils/corestrings.h b/utils/corestrings.h
index 236c108bf..52acf1da1 100644
--- a/utils/corestrings.h
+++ b/utils/corestrings.h
@@ -38,6 +38,7 @@ extern lwc_string *corestring_lwc_applet;
extern lwc_string *corestring_lwc_baseline;
extern lwc_string *corestring_lwc_body;
extern lwc_string *corestring_lwc_bottom;
+extern lwc_string *corestring_lwc_button;
extern lwc_string *corestring_lwc_caption;
extern lwc_string *corestring_lwc_center;
extern lwc_string *corestring_lwc_col;
--
cgit v1.2.3
From 1947019095d77c01d0b0f6ca381bb936d6258524 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 22 Jul 2012 18:58:22 +0100
Subject: Interned string cleanup, phase 4: Move html_script.c to corestring.
---
render/html_script.c | 19 ++++++++++++-------
utils/corestrings.c | 6 ++++++
utils/corestrings.h | 2 ++
3 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/render/html_script.c b/render/html_script.c
index 631dcca1e..5fd8c8acc 100644
--- a/render/html_script.c
+++ b/render/html_script.c
@@ -29,6 +29,7 @@
#include
#include "utils/config.h"
+#include "utils/corestrings.h"
#include "utils/log.h"
#include "utils/messages.h"
#include "javascript/js.h"
@@ -77,19 +78,23 @@ static bool html_scripts_exec(html_content *c)
continue;
/* ensure script content fetch status is not an error */
- if (content_get_status(s->data.external) == CONTENT_STATUS_ERROR)
+ if (content_get_status(s->data.external) ==
+ CONTENT_STATUS_ERROR)
continue;
/* ensure script handler for content type */
- script_handler = select_script_handler(content_get_type(s->data.external));
+ script_handler = select_script_handler(
+ content_get_type(s->data.external));
if (script_handler == NULL)
continue; /* unsupported type */
- if (content_get_status(s->data.external) == CONTENT_STATUS_DONE) {
+ if (content_get_status(s->data.external) ==
+ CONTENT_STATUS_DONE) {
/* external script is now available */
const char *data;
unsigned long size;
- data = content_get_source_data(s->data.external, &size );
+ data = content_get_source_data(
+ s->data.external, &size );
script_handler(c->jscontext, data, size);
s->already_started = true;
@@ -236,12 +241,12 @@ html_process_script(void *ctx, dom_node *node)
LOG(("content %p parser %p node %p",c,c->parser, node));
- exc = dom_element_get_attribute(node, html_dom_string_type, &mimetype);
+ exc = dom_element_get_attribute(node, corestring_dom_type, &mimetype);
if (exc != DOM_NO_ERR || mimetype == NULL) {
- mimetype = dom_string_ref(html_dom_string_text_javascript);
+ mimetype = dom_string_ref(corestring_dom_text_javascript);
}
- exc = dom_element_get_attribute(node, html_dom_string_src, &src);
+ exc = dom_element_get_attribute(node, corestring_dom_src, &src);
if (exc != DOM_NO_ERR || src == NULL) {
struct lwc_string_s *lwcmimetype;
script_handler_t *script_handler;
diff --git a/utils/corestrings.c b/utils/corestrings.c
index 9cfe1eaf2..d56d9a1f7 100644
--- a/utils/corestrings.c
+++ b/utils/corestrings.c
@@ -85,7 +85,9 @@ dom_string *corestring_dom_hspace;
dom_string *corestring_dom_link;
dom_string *corestring_dom_rows;
dom_string *corestring_dom_size;
+dom_string *corestring_dom_src;
dom_string *corestring_dom_text;
+dom_string *corestring_dom_text_javascript;
dom_string *corestring_dom_type;
dom_string *corestring_dom_valign;
dom_string *corestring_dom_vlink;
@@ -174,7 +176,9 @@ void corestrings_fini(void)
CSS_DOM_STRING_UNREF(link);
CSS_DOM_STRING_UNREF(rows);
CSS_DOM_STRING_UNREF(size);
+ CSS_DOM_STRING_UNREF(src);
CSS_DOM_STRING_UNREF(text);
+ CSS_DOM_STRING_UNREF(text_javascript);
CSS_DOM_STRING_UNREF(type);
CSS_DOM_STRING_UNREF(valign);
CSS_DOM_STRING_UNREF(vlink);
@@ -279,7 +283,9 @@ nserror corestrings_init(void)
CSS_DOM_STRING_INTERN(link);
CSS_DOM_STRING_INTERN(rows);
CSS_DOM_STRING_INTERN(size);
+ CSS_DOM_STRING_INTERN(src);
CSS_DOM_STRING_INTERN(text);
+ CSS_DOM_STRING_INTERN(text_javascript);
CSS_DOM_STRING_INTERN(type);
CSS_DOM_STRING_INTERN(valign);
CSS_DOM_STRING_INTERN(vlink);
diff --git a/utils/corestrings.h b/utils/corestrings.h
index 52acf1da1..008b6a042 100644
--- a/utils/corestrings.h
+++ b/utils/corestrings.h
@@ -92,7 +92,9 @@ extern struct dom_string *corestring_dom_hspace;
extern struct dom_string *corestring_dom_link;
extern struct dom_string *corestring_dom_rows;
extern struct dom_string *corestring_dom_size;
+extern struct dom_string *corestring_dom_src;
extern struct dom_string *corestring_dom_text;
+extern struct dom_string *corestring_dom_text_javascript;
extern struct dom_string *corestring_dom_type;
extern struct dom_string *corestring_dom_valign;
extern struct dom_string *corestring_dom_vlink;
--
cgit v1.2.3
From 2363301c94e1126baa92258240d5678bf2ba2999 Mon Sep 17 00:00:00 2001
From: Daniel Silverstone
Date: Sun, 22 Jul 2012 20:24:33 +0100
Subject: Show refcnt in lwc iterator at netsurf exit.
---
desktop/netsurf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/desktop/netsurf.c b/desktop/netsurf.c
index 433acde57..d2010d80b 100644
--- a/desktop/netsurf.c
+++ b/desktop/netsurf.c
@@ -77,7 +77,7 @@ bool verbose_log = false;
static void netsurf_lwc_iterator(lwc_string *str, void *pw)
{
- LOG(("%.*s", (int) lwc_string_length(str), lwc_string_data(str)));
+ LOG(("[%3u] %.*s", str->refcnt, (int) lwc_string_length(str), lwc_string_data(str)));
}
/**
--
cgit v1.2.3
From 5dadb1a0ec25d0bddb59b75969c551166c7dad86 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 22 Jul 2012 20:52:34 +0100
Subject: Interned string cleanup, phase 5: Move imagemap.c to corestring.
---
render/imagemap.c | 40 +++++++++++++++++++-------------------
utils/corestrings.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
utils/corestrings.h | 16 +++++++++++++++
3 files changed, 91 insertions(+), 21 deletions(-)
diff --git a/render/imagemap.c b/render/imagemap.c
index 7b612979e..fb1b8cd3f 100644
--- a/render/imagemap.c
+++ b/render/imagemap.c
@@ -32,6 +32,7 @@
#include "render/box.h"
#include "render/html_internal.h"
#include "render/imagemap.h"
+#include "utils/corestrings.h"
#include "utils/log.h"
#include "utils/utils.h"
@@ -258,7 +259,7 @@ imagemap_extract(html_content *c)
unsigned long maybe_maps, mapnr;
exc = dom_document_get_elements_by_tag_name(c->document,
- html_dom_string_map,
+ corestring_dom_map,
&nlist);
if (exc != DOM_NO_ERR) {
return false;
@@ -277,7 +278,7 @@ imagemap_extract(html_content *c)
goto out_nlist;
}
- exc = dom_element_get_attribute(node, html_dom_string_id,
+ exc = dom_element_get_attribute(node, corestring_dom_id,
&name);
if (exc != DOM_NO_ERR) {
dom_node_unref(node);
@@ -286,7 +287,7 @@ imagemap_extract(html_content *c)
if (name == NULL) {
exc = dom_element_get_attribute(node,
- html_dom_string_name,
+ corestring_dom_name,
&name);
if (exc != DOM_NO_ERR) {
dom_node_unref(node);
@@ -391,10 +392,10 @@ bool imagemap_extract_map(dom_node *node, html_content *c,
struct mapentry **entry)
{
if (imagemap_extract_map_entries(node, c, entry,
- html_dom_string_area) == false)
+ corestring_dom_area) == false)
return false;
return imagemap_extract_map_entries(node, c, entry,
- html_dom_string_a);
+ corestring_dom_a);
}
/**
* Adds an imagemap entry to the list
@@ -414,39 +415,38 @@ imagemap_addtolist(dom_node *n, nsurl *base_url,
struct mapentry *new_map, *temp;
bool ret = true;
- if (tagtype == html_dom_string_area) {
+ if (dom_string_caseless_isequal(tagtype, corestring_dom_area)) {
bool nohref = false;
exc = dom_element_has_attribute(n,
- html_dom_string_nohref,
- &nohref);
+ corestring_dom_nohref, &nohref);
if ((exc != DOM_NO_ERR) || nohref)
/* Skip */
goto ok_out;
}
- exc = dom_element_get_attribute(n, html_dom_string_href, &href);
+ exc = dom_element_get_attribute(n, corestring_dom_href, &href);
if (exc != DOM_NO_ERR) {
/* No href="" attribute, skip this element */
goto ok_out;
}
- exc = dom_element_get_attribute(n, html_dom_string_target, &target);
+ exc = dom_element_get_attribute(n, corestring_dom_target, &target);
if (exc != DOM_NO_ERR) {
goto ok_out;
}
- exc = dom_element_get_attribute(n, html_dom_string_shape, &shape);
+ exc = dom_element_get_attribute(n, corestring_dom_shape, &shape);
if (exc != DOM_NO_ERR) {
goto ok_out;
}
/* If there's no shape, we default to rectangles */
if (shape == NULL)
- shape = dom_string_ref(html_dom_string_rect);
+ shape = dom_string_ref(corestring_dom_rect);
- if (!dom_string_caseless_isequal(shape, html_dom_string_default)) {
+ if (!dom_string_caseless_lwc_isequal(shape, corestring_lwc_default)) {
/* If not 'default' and there's no 'coords' give up */
- exc = dom_element_get_attribute(n, html_dom_string_coords,
+ exc = dom_element_get_attribute(n, corestring_dom_coords,
&coords);
if (exc != DOM_NO_ERR) {
goto ok_out;
@@ -458,15 +458,15 @@ imagemap_addtolist(dom_node *n, nsurl *base_url,
goto bad_out;
}
- if (dom_string_caseless_isequal(shape, html_dom_string_rect) ||
- dom_string_caseless_isequal(shape, html_dom_string_rectangle))
+ if (dom_string_caseless_lwc_isequal(shape, corestring_lwc_rect) ||
+ dom_string_caseless_lwc_isequal(shape, corestring_lwc_rectangle))
new_map->type = IMAGEMAP_RECT;
- else if (dom_string_caseless_isequal(shape, html_dom_string_circle))
+ else if (dom_string_caseless_lwc_isequal(shape, corestring_lwc_circle))
new_map->type = IMAGEMAP_CIRCLE;
- else if (dom_string_caseless_isequal(shape, html_dom_string_poly) ||
- dom_string_caseless_isequal(shape, html_dom_string_polygon))
+ else if (dom_string_caseless_lwc_isequal(shape, corestring_lwc_poly) ||
+ dom_string_caseless_lwc_isequal(shape, corestring_lwc_polygon))
new_map->type = IMAGEMAP_POLY;
- else if (dom_string_caseless_isequal(shape, html_dom_string_default))
+ else if (dom_string_caseless_lwc_isequal(shape, corestring_lwc_default))
new_map->type = IMAGEMAP_DEFAULT;
else
goto bad_out;
diff --git a/utils/corestrings.c b/utils/corestrings.c
index d56d9a1f7..02b0b53e1 100644
--- a/utils/corestrings.c
+++ b/utils/corestrings.c
@@ -23,6 +23,7 @@
#include
#include "utils/corestrings.h"
+#include "utils/utils.h"
/* lwc_string strings */
lwc_string *corestring_lwc_a;
@@ -36,7 +37,9 @@ lwc_string *corestring_lwc_bottom;
lwc_string *corestring_lwc_button;
lwc_string *corestring_lwc_caption;
lwc_string *corestring_lwc_center;
+lwc_string *corestring_lwc_circle;
lwc_string *corestring_lwc_col;
+lwc_string *corestring_lwc_default;
lwc_string *corestring_lwc_div;
lwc_string *corestring_lwc_embed;
lwc_string *corestring_lwc_font;
@@ -56,6 +59,10 @@ lwc_string *corestring_lwc_middle;
lwc_string *corestring_lwc_object;
lwc_string *corestring_lwc_p;
lwc_string *corestring_lwc_password;
+lwc_string *corestring_lwc_poly;
+lwc_string *corestring_lwc_polygon;
+lwc_string *corestring_lwc_rect;
+lwc_string *corestring_lwc_rectangle;
lwc_string *corestring_lwc_right;
lwc_string *corestring_lwc_table;
lwc_string *corestring_lwc_tbody;
@@ -70,7 +77,9 @@ lwc_string *corestring_lwc_top;
lwc_string *corestring_lwc_tr;
/* dom_string strings */
+dom_string *corestring_dom_a;
dom_string *corestring_dom_align;
+dom_string *corestring_dom_area;
dom_string *corestring_dom_background;
dom_string *corestring_dom_bgcolor;
dom_string *corestring_dom_border;
@@ -79,13 +88,21 @@ dom_string *corestring_dom_cellpadding;
dom_string *corestring_dom_cellspacing;
dom_string *corestring_dom_color;
dom_string *corestring_dom_cols;
+dom_string *corestring_dom_coords;
dom_string *corestring_dom_height;
dom_string *corestring_dom_href;
dom_string *corestring_dom_hspace;
+dom_string *corestring_dom_id;
dom_string *corestring_dom_link;
+dom_string *corestring_dom_map;
+dom_string *corestring_dom_name;
+dom_string *corestring_dom_nohref;
+dom_string *corestring_dom_rect;
dom_string *corestring_dom_rows;
dom_string *corestring_dom_size;
+dom_string *corestring_dom_shape;
dom_string *corestring_dom_src;
+dom_string *corestring_dom_target;
dom_string *corestring_dom_text;
dom_string *corestring_dom_text_javascript;
dom_string *corestring_dom_type;
@@ -119,7 +136,9 @@ void corestrings_fini(void)
CSS_LWC_STRING_UNREF(button);
CSS_LWC_STRING_UNREF(caption);
CSS_LWC_STRING_UNREF(center);
+ CSS_LWC_STRING_UNREF(circle);
CSS_LWC_STRING_UNREF(col);
+ CSS_LWC_STRING_UNREF(default);
CSS_LWC_STRING_UNREF(div);
CSS_LWC_STRING_UNREF(embed);
CSS_LWC_STRING_UNREF(font);
@@ -139,6 +158,10 @@ void corestrings_fini(void)
CSS_LWC_STRING_UNREF(object);
CSS_LWC_STRING_UNREF(p);
CSS_LWC_STRING_UNREF(password);
+ CSS_LWC_STRING_UNREF(poly);
+ CSS_LWC_STRING_UNREF(polygon);
+ CSS_LWC_STRING_UNREF(rect);
+ CSS_LWC_STRING_UNREF(rectangle);
CSS_LWC_STRING_UNREF(right);
CSS_LWC_STRING_UNREF(table);
CSS_LWC_STRING_UNREF(tbody);
@@ -161,7 +184,9 @@ void corestrings_fini(void)
} \
} while (0)
+ CSS_DOM_STRING_UNREF(a);
CSS_DOM_STRING_UNREF(align);
+ CSS_DOM_STRING_UNREF(area);
CSS_DOM_STRING_UNREF(background);
CSS_DOM_STRING_UNREF(bgcolor);
CSS_DOM_STRING_UNREF(border);
@@ -170,13 +195,21 @@ void corestrings_fini(void)
CSS_DOM_STRING_UNREF(cellspacing);
CSS_DOM_STRING_UNREF(color);
CSS_DOM_STRING_UNREF(cols);
+ CSS_DOM_STRING_UNREF(coords);
CSS_DOM_STRING_UNREF(height);
CSS_DOM_STRING_UNREF(href);
CSS_DOM_STRING_UNREF(hspace);
+ CSS_DOM_STRING_UNREF(id);
CSS_DOM_STRING_UNREF(link);
+ CSS_DOM_STRING_UNREF(map);
+ CSS_DOM_STRING_UNREF(name);
+ CSS_DOM_STRING_UNREF(nohref);
+ CSS_DOM_STRING_UNREF(rect);
CSS_DOM_STRING_UNREF(rows);
CSS_DOM_STRING_UNREF(size);
+ CSS_DOM_STRING_UNREF(shape);
CSS_DOM_STRING_UNREF(src);
+ CSS_DOM_STRING_UNREF(target);
CSS_DOM_STRING_UNREF(text);
CSS_DOM_STRING_UNREF(text_javascript);
CSS_DOM_STRING_UNREF(type);
@@ -221,7 +254,9 @@ nserror corestrings_init(void)
CSS_LWC_STRING_INTERN(button);
CSS_LWC_STRING_INTERN(caption);
CSS_LWC_STRING_INTERN(center);
+ CSS_LWC_STRING_INTERN(circle);
CSS_LWC_STRING_INTERN(col);
+ CSS_LWC_STRING_INTERN(default);
CSS_LWC_STRING_INTERN(div);
CSS_LWC_STRING_INTERN(embed);
CSS_LWC_STRING_INTERN(font);
@@ -241,6 +276,10 @@ nserror corestrings_init(void)
CSS_LWC_STRING_INTERN(object);
CSS_LWC_STRING_INTERN(p);
CSS_LWC_STRING_INTERN(password);
+ CSS_LWC_STRING_INTERN(poly);
+ CSS_LWC_STRING_INTERN(polygon);
+ CSS_LWC_STRING_INTERN(rect);
+ CSS_LWC_STRING_INTERN(rectangle);
CSS_LWC_STRING_INTERN(right);
CSS_LWC_STRING_INTERN(table);
CSS_LWC_STRING_INTERN(tbody);
@@ -268,7 +307,9 @@ nserror corestrings_init(void)
} \
} while(0)
+ CSS_DOM_STRING_INTERN(a);
CSS_DOM_STRING_INTERN(align);
+ CSS_DOM_STRING_INTERN(area);
CSS_DOM_STRING_INTERN(background);
CSS_DOM_STRING_INTERN(bgcolor);
CSS_DOM_STRING_INTERN(border);
@@ -277,15 +318,22 @@ nserror corestrings_init(void)
CSS_DOM_STRING_INTERN(cellspacing);
CSS_DOM_STRING_INTERN(color);
CSS_DOM_STRING_INTERN(cols);
+ CSS_DOM_STRING_INTERN(coords);
CSS_DOM_STRING_INTERN(height);
CSS_DOM_STRING_INTERN(href);
CSS_DOM_STRING_INTERN(hspace);
+ CSS_DOM_STRING_INTERN(id);
CSS_DOM_STRING_INTERN(link);
+ CSS_DOM_STRING_INTERN(map);
+ CSS_DOM_STRING_INTERN(name);
+ CSS_DOM_STRING_INTERN(nohref);
+ CSS_DOM_STRING_INTERN(rect);
CSS_DOM_STRING_INTERN(rows);
CSS_DOM_STRING_INTERN(size);
+ CSS_DOM_STRING_INTERN(shape);
CSS_DOM_STRING_INTERN(src);
+ CSS_DOM_STRING_INTERN(target);
CSS_DOM_STRING_INTERN(text);
- CSS_DOM_STRING_INTERN(text_javascript);
CSS_DOM_STRING_INTERN(type);
CSS_DOM_STRING_INTERN(valign);
CSS_DOM_STRING_INTERN(vlink);
@@ -293,6 +341,12 @@ nserror corestrings_init(void)
CSS_DOM_STRING_INTERN(width);
#undef CSS_DOM_STRING_INTERN
+ exc = dom_string_create_interned((const uint8_t *) "text/javascript",
+ SLEN("text/javascript"),
+ &corestring_dom_text_javascript);
+ if ((exc != DOM_NO_ERR) || (corestring_dom_text_javascript == NULL))
+ goto error;
+
return NSERROR_OK;
error:
diff --git a/utils/corestrings.h b/utils/corestrings.h
index 008b6a042..2986eb140 100644
--- a/utils/corestrings.h
+++ b/utils/corestrings.h
@@ -41,7 +41,9 @@ extern lwc_string *corestring_lwc_bottom;
extern lwc_string *corestring_lwc_button;
extern lwc_string *corestring_lwc_caption;
extern lwc_string *corestring_lwc_center;
+extern lwc_string *corestring_lwc_circle;
extern lwc_string *corestring_lwc_col;
+extern lwc_string *corestring_lwc_default;
extern lwc_string *corestring_lwc_div;
extern lwc_string *corestring_lwc_embed;
extern lwc_string *corestring_lwc_font;
@@ -61,6 +63,10 @@ extern lwc_string *corestring_lwc_middle;
extern lwc_string *corestring_lwc_object;
extern lwc_string *corestring_lwc_p;
extern lwc_string *corestring_lwc_password;
+extern lwc_string *corestring_lwc_poly;
+extern lwc_string *corestring_lwc_polygon;
+extern lwc_string *corestring_lwc_rect;
+extern lwc_string *corestring_lwc_rectangle;
extern lwc_string *corestring_lwc_right;
extern lwc_string *corestring_lwc_table;
extern lwc_string *corestring_lwc_tbody;
@@ -77,7 +83,9 @@ extern lwc_string *corestring_lwc_tr;
struct dom_string;
/* dom_string strings */
+extern struct dom_string *corestring_dom_a;
extern struct dom_string *corestring_dom_align;
+extern struct dom_string *corestring_dom_area;
extern struct dom_string *corestring_dom_background;
extern struct dom_string *corestring_dom_bgcolor;
extern struct dom_string *corestring_dom_border;
@@ -86,13 +94,21 @@ extern struct dom_string *corestring_dom_cellpadding;
extern struct dom_string *corestring_dom_cellspacing;
extern struct dom_string *corestring_dom_color;
extern struct dom_string *corestring_dom_cols;
+extern struct dom_string *corestring_dom_coords;
extern struct dom_string *corestring_dom_height;
extern struct dom_string *corestring_dom_href;
extern struct dom_string *corestring_dom_hspace;
+extern struct dom_string *corestring_dom_id;
extern struct dom_string *corestring_dom_link;
+extern struct dom_string *corestring_dom_map;
+extern struct dom_string *corestring_dom_name;
+extern struct dom_string *corestring_dom_nohref;
+extern struct dom_string *corestring_dom_rect;
extern struct dom_string *corestring_dom_rows;
extern struct dom_string *corestring_dom_size;
+extern struct dom_string *corestring_dom_shape;
extern struct dom_string *corestring_dom_src;
+extern struct dom_string *corestring_dom_target;
extern struct dom_string *corestring_dom_text;
extern struct dom_string *corestring_dom_text_javascript;
extern struct dom_string *corestring_dom_type;
--
cgit v1.2.3
From 209d3a5ccfdaa93402a557bdf335b8ea8d325cb6 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 22 Jul 2012 21:22:05 +0100
Subject: Fix ref counting issue in named sibling selection callback.
---
css/select.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/css/select.c b/css/select.c
index 5c620b1ed..ee00412a9 100644
--- a/css/select.c
+++ b/css/select.c
@@ -638,9 +638,10 @@ css_error named_sibling_node(void *pw, void *node,
dom_node_unref(n);
if (dom_string_caseless_lwc_isequal(name, qname->name)) {
- /** \todo Sort out reference counting */
*sibling = n;
}
+
+ dom_string_unref(name);
}
return CSS_OK;
--
cgit v1.2.3
From d70bf9ac43c14809d4777af13fd82709c9548697 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 22 Jul 2012 21:31:30 +0100
Subject: Fix ref counting issue in HEAD handler. Fix logic error too.
---
render/html.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/render/html.c b/render/html.c
index ba9c9e79a..ce3e0184e 100644
--- a/render/html.c
+++ b/render/html.c
@@ -744,18 +744,22 @@ static bool html_head(html_content *c, dom_node *head)
if ((exc == DOM_NO_ERR) && (node_type == DOM_ELEMENT_NODE)) {
exc = dom_node_get_node_name(node, &node_name);
- if ((exc == DOM_NO_ERR) || (node_name != NULL)) {
+ if ((exc == DOM_NO_ERR) && (node_name != NULL)) {
if (dom_string_caseless_isequal(node_name,
- html_dom_string_title)) {
+ html_dom_string_title)) {
html_process_title(c, node);
- } else if (dom_string_caseless_isequal(node_name,
- html_dom_string_base)) {
+ } else if (dom_string_caseless_isequal(
+ node_name,
+ html_dom_string_base)) {
html_process_base(c, node);
- } else if (dom_string_caseless_isequal(node_name,
- html_dom_string_link)) {
+ } else if (dom_string_caseless_isequal(
+ node_name,
+ html_dom_string_link)) {
html_process_link(c, node);
}
}
+ if (node_name != NULL)
+ dom_string_unref(node_name);
}
/* move to next node */
--
cgit v1.2.3
From e54e2fd0facafc1b0dec41dd8a8630ba79b17453 Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 22 Jul 2012 21:50:58 +0100
Subject: Fix ref counting issue in node_id selection callback.
---
css/select.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/css/select.c b/css/select.c
index ee00412a9..3fd6e292f 100644
--- a/css/select.c
+++ b/css/select.c
@@ -534,6 +534,7 @@ css_error node_id(void *pw, void *node, lwc_string **id)
dom_string_unref(attr);
return CSS_NOMEM;
}
+ dom_string_unref(attr);
}
return CSS_OK;
--
cgit v1.2.3
From 3c790bf12dc6def3ede8d4fd4d7739a5dfadf01f Mon Sep 17 00:00:00 2001
From: Michael Drake
Date: Sun, 22 Jul 2012 21:58:47 +0100
Subject: Fix ref counting issue in meta tag finder.
---
render/html.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/render/html.c b/render/html.c
index ce3e0184e..31c64edd4 100644
--- a/render/html.c
+++ b/render/html.c
@@ -1013,10 +1013,12 @@ static bool html_meta_refresh(html_content *c, dom_node *head)
"noscript") == 0) {
if (html_meta_refresh(c, n) == false) {
/* Some error occurred */
+ dom_string_unref(name);
dom_node_unref(n);
return false;
} else if (c->base.refresh) {
/* Meta refresh found - stop */
+ dom_string_unref(name);
dom_node_unref(n);
return true;
}
@@ -1025,14 +1027,17 @@ static bool html_meta_refresh(html_content *c, dom_node *head)
if (html_meta_refresh_process_element(c,
n) == false) {
/* Some error occurred */
+ dom_string_unref(name);
dom_node_unref(n);
return false;
} else if (c->base.refresh != NULL) {
/* Meta refresh found - stop */
+ dom_string_unref(name);
dom_node_unref(n);
return true;
}
}
+ dom_string_unref(name);
}
exc = dom_node_get_next_sibling(n, &next);
--
cgit v1.2.3