More use of interns.

This commit is contained in:
Michael Drake 2012-07-26 15:57:33 +01:00
parent 81e079e747
commit 2f408f0ecb
3 changed files with 93 additions and 32 deletions

View File

@ -40,6 +40,7 @@
#include "render/box.h" #include "render/box.h"
#include "render/form.h" #include "render/form.h"
#include "render/html_internal.h" #include "render/html_internal.h"
#include "utils/corestrings.h"
#include "utils/locale.h" #include "utils/locale.h"
#include "utils/log.h" #include "utils/log.h"
#include "utils/messages.h" #include "utils/messages.h"
@ -1647,13 +1648,17 @@ bool box_a(BOX_SPECIAL_PARAMS)
/* target frame [16.3] */ /* target frame [16.3] */
err = dom_element_get_attribute(n, kstr_target, &s); err = dom_element_get_attribute(n, kstr_target, &s);
if (err == DOM_NO_ERR && s != NULL) { if (err == DOM_NO_ERR && s != NULL) {
if (!strcasecmp(dom_string_data(s), "_blank")) if (dom_string_caseless_lwc_isequal(s,
corestring_lwc__blank))
box->target = TARGET_BLANK; box->target = TARGET_BLANK;
else if (!strcasecmp(dom_string_data(s), "_top")) else if (dom_string_caseless_lwc_isequal(s,
corestring_lwc__top))
box->target = TARGET_TOP; box->target = TARGET_TOP;
else if (!strcasecmp(dom_string_data(s), "_parent")) else if (dom_string_caseless_lwc_isequal(s,
corestring_lwc__parent))
box->target = TARGET_PARENT; box->target = TARGET_PARENT;
else if (!strcasecmp(dom_string_data(s), "_self")) else if (dom_string_caseless_lwc_isequal(s,
corestring_lwc__self))
/* the default may have been overridden by a /* the default may have been overridden by a
* <base target=...>, so this is different to 0 */ * <base target=...>, so this is different to 0 */
box->target = TARGET_SELF; box->target = TARGET_SELF;
@ -1941,7 +1946,8 @@ bool box_object(BOX_SPECIAL_PARAMS)
return false; return false;
} }
if (strcasecmp(dom_string_data(name), "param") != 0) { if (!dom_string_caseless_lwc_isequal(name,
corestring_lwc_param)) {
/* The first non-param child is the start of /* The first non-param child is the start of
* the alt html. Therefore, we should break * the alt html. Therefore, we should break
* out of this loop. */ * out of this loop. */
@ -2122,7 +2128,8 @@ bool box_create_frameset(struct content_html_frames *f, dom_node *n,
/* common extension: frameborder="yes|no" to control all children */ /* common extension: frameborder="yes|no" to control all children */
err = dom_element_get_attribute(n, kstr_frameborder, &s); err = dom_element_get_attribute(n, kstr_frameborder, &s);
if (err == DOM_NO_ERR && s != NULL) { if (err == DOM_NO_ERR && s != NULL) {
if (strcasecmp(dom_string_data(s), "no") == 0) if (dom_string_caseless_lwc_isequal(s,
corestring_lwc_no) == 0)
default_border = false; default_border = false;
dom_string_unref(s); dom_string_unref(s);
} }
@ -2194,12 +2201,13 @@ bool box_create_frameset(struct content_html_frames *f, dom_node *n,
} }
if (type != DOM_ELEMENT_NODE || if (type != DOM_ELEMENT_NODE ||
(strcasecmp( (!dom_string_caseless_lwc_isequal(
dom_string_data(name), name,
"frame") != 0 && corestring_lwc_frame) &&
strcasecmp( !dom_string_caseless_lwc_isequal(
dom_string_data(name), name,
"frameset") != 0)) { corestring_lwc_frameset
))) {
err = dom_node_get_next_sibling(c, err = dom_node_get_next_sibling(c,
&next); &next);
if (err != DOM_NO_ERR) { if (err != DOM_NO_ERR) {
@ -2229,7 +2237,8 @@ bool box_create_frameset(struct content_html_frames *f, dom_node *n,
return false; return false;
} }
if (strcasecmp(dom_string_data(s), "frameset") == 0) { if (dom_string_caseless_lwc_isequal(s,
corestring_lwc_frameset)) {
dom_string_unref(s); dom_string_unref(s);
frame->border = 0; frame->border = 0;
if (box_create_frameset(frame, c, if (box_create_frameset(frame, c,
@ -2290,10 +2299,11 @@ bool box_create_frameset(struct content_html_frames *f, dom_node *n,
err = dom_element_get_attribute(c, kstr_scrolling, &s); err = dom_element_get_attribute(c, kstr_scrolling, &s);
if (err == DOM_NO_ERR && s != NULL) { if (err == DOM_NO_ERR && s != NULL) {
if (strcasecmp(dom_string_data(s), "yes") == 0) if (dom_string_caseless_lwc_isequal(s,
corestring_lwc_yes))
frame->scrolling = SCROLLING_YES; frame->scrolling = SCROLLING_YES;
else if (strcasecmp(dom_string_data(s), else if (dom_string_caseless_lwc_isequal(s,
"no") == 0) corestring_lwc_no))
frame->scrolling = SCROLLING_NO; frame->scrolling = SCROLLING_NO;
dom_string_unref(s); dom_string_unref(s);
} }
@ -2447,9 +2457,11 @@ bool box_iframe(BOX_SPECIAL_PARAMS)
err = dom_element_get_attribute(n, kstr_scrolling, &s); err = dom_element_get_attribute(n, kstr_scrolling, &s);
if (err == DOM_NO_ERR && s != NULL) { if (err == DOM_NO_ERR && s != NULL) {
if (strcasecmp(dom_string_data(s), "yes") == 0) if (dom_string_caseless_lwc_isequal(s,
corestring_lwc_yes))
iframe->scrolling = SCROLLING_YES; iframe->scrolling = SCROLLING_YES;
else if (strcasecmp(dom_string_data(s), "no") == 0) else if (dom_string_caseless_lwc_isequal(s,
corestring_lwc_no))
iframe->scrolling = SCROLLING_NO; iframe->scrolling = SCROLLING_NO;
dom_string_unref(s); dom_string_unref(s);
} }
@ -2497,21 +2509,33 @@ bool box_input(BOX_SPECIAL_PARAMS)
box->gadget = gadget; box->gadget = gadget;
gadget->box = box; gadget->box = box;
if (type && strcasecmp(dom_string_data(type), "password") == 0) { if (type && dom_string_caseless_lwc_isequal(type,
corestring_lwc_password)) {
if (box_input_text(n, content, box, 0, true) == false) if (box_input_text(n, content, box, 0, true) == false)
goto no_memory; goto no_memory;
} else if (type && strcasecmp(dom_string_data(type), "file") == 0) {
} else if (type && dom_string_caseless_lwc_isequal(type,
corestring_lwc_file)) {
box->type = BOX_INLINE_BLOCK; box->type = BOX_INLINE_BLOCK;
} else if (type && strcasecmp(dom_string_data(type), "hidden") == 0) {
} else if (type && dom_string_caseless_lwc_isequal(type,
corestring_lwc_hidden)) {
/* no box for hidden inputs */ /* no box for hidden inputs */
box->type = BOX_NONE; box->type = BOX_NONE;
} else if (type && } else if (type &&
(strcasecmp(dom_string_data(type), "checkbox") == 0 || (dom_string_caseless_lwc_isequal(type,
strcasecmp(dom_string_data(type), "radio") == 0)) { corestring_lwc_checkbox) ||
dom_string_caseless_lwc_isequal(type,
corestring_lwc_radio))) {
} else if (type && } else if (type &&
(strcasecmp(dom_string_data(type), "submit") == 0 || (dom_string_caseless_lwc_isequal(type,
strcasecmp(dom_string_data(type), "reset") == 0 || corestring_lwc_submit) ||
strcasecmp(dom_string_data(type), "button") == 0)) { dom_string_caseless_lwc_isequal(type,
corestring_lwc_reset) ||
dom_string_caseless_lwc_isequal(type,
corestring_lwc_button))) {
struct box *inline_container, *inline_box; struct box *inline_container, *inline_box;
if (box_button(n, content, box, 0) == false) if (box_button(n, content, box, 0) == false)
@ -2551,7 +2575,9 @@ bool box_input(BOX_SPECIAL_PARAMS)
box_add_child(inline_container, inline_box); box_add_child(inline_container, inline_box);
box_add_child(box, inline_container); box_add_child(box, inline_container);
} else if (type && strcasecmp(dom_string_data(type), "image") == 0) {
} else if (type && dom_string_caseless_lwc_isequal(type,
corestring_lwc_image)) {
gadget->type = GADGET_IMAGE; gadget->type = GADGET_IMAGE;
if (box->style && css_computed_display(box->style, if (box->style && css_computed_display(box->style,
@ -2703,14 +2729,16 @@ bool box_select(BOX_SPECIAL_PARAMS)
return false; return false;
} }
if (strcasecmp(dom_string_data(name), "option") == 0) { if (dom_string_caseless_lwc_isequal(name,
corestring_lwc_option)) {
dom_string_unref(name); dom_string_unref(name);
if (box_select_add_option(gadget, c) == false) { if (box_select_add_option(gadget, c) == false) {
dom_node_unref(c); dom_node_unref(c);
goto no_memory; goto no_memory;
} }
} else if (strcasecmp(dom_string_data(name), "optgroup") == 0) { } else if (dom_string_caseless_lwc_isequal(name,
corestring_lwc_optgroup)) {
dom_string_unref(name); dom_string_unref(name);
err = dom_node_get_first_child(c, &c2); err = dom_node_get_first_child(c, &c2);
@ -2729,8 +2757,8 @@ bool box_select(BOX_SPECIAL_PARAMS)
return false; return false;
} }
if (strcasecmp(dom_string_data(c2_name), if (dom_string_caseless_lwc_isequal(c2_name,
"option") == 0) { corestring_lwc_option)) {
dom_string_unref(c2_name); dom_string_unref(c2_name);
if (box_select_add_option(gadget, if (box_select_add_option(gadget,
@ -3051,7 +3079,7 @@ bool box_embed(BOX_SPECIAL_PARAMS)
return false; return false;
} }
if (strcasecmp(dom_string_data(name), "src") == 0) { if (dom_string_caseless_lwc_isequal(name, corestring_lwc_src)) {
dom_string_unref(name); dom_string_unref(name);
continue; continue;
} }

View File

@ -46,6 +46,8 @@ lwc_string *corestring_lwc_div;
lwc_string *corestring_lwc_embed; lwc_string *corestring_lwc_embed;
lwc_string *corestring_lwc_file; lwc_string *corestring_lwc_file;
lwc_string *corestring_lwc_font; lwc_string *corestring_lwc_font;
lwc_string *corestring_lwc_frame;
lwc_string *corestring_lwc_frameset;
lwc_string *corestring_lwc_h1; lwc_string *corestring_lwc_h1;
lwc_string *corestring_lwc_h2; lwc_string *corestring_lwc_h2;
lwc_string *corestring_lwc_h3; lwc_string *corestring_lwc_h3;
@ -66,9 +68,13 @@ lwc_string *corestring_lwc_link;
lwc_string *corestring_lwc_meta; lwc_string *corestring_lwc_meta;
lwc_string *corestring_lwc_middle; lwc_string *corestring_lwc_middle;
lwc_string *corestring_lwc_multipart_form_data; lwc_string *corestring_lwc_multipart_form_data;
lwc_string *corestring_lwc_no;
lwc_string *corestring_lwc_noscript; lwc_string *corestring_lwc_noscript;
lwc_string *corestring_lwc_object; lwc_string *corestring_lwc_object;
lwc_string *corestring_lwc_optgroup;
lwc_string *corestring_lwc_option;
lwc_string *corestring_lwc_p; lwc_string *corestring_lwc_p;
lwc_string *corestring_lwc_param;
lwc_string *corestring_lwc_password; lwc_string *corestring_lwc_password;
lwc_string *corestring_lwc_poly; lwc_string *corestring_lwc_poly;
lwc_string *corestring_lwc_polygon; lwc_string *corestring_lwc_polygon;
@ -79,6 +85,7 @@ lwc_string *corestring_lwc_rectangle;
lwc_string *corestring_lwc_refresh; lwc_string *corestring_lwc_refresh;
lwc_string *corestring_lwc_reset; lwc_string *corestring_lwc_reset;
lwc_string *corestring_lwc_right; lwc_string *corestring_lwc_right;
lwc_string *corestring_lwc_src;
lwc_string *corestring_lwc_style; lwc_string *corestring_lwc_style;
lwc_string *corestring_lwc_submit; lwc_string *corestring_lwc_submit;
lwc_string *corestring_lwc_table; lwc_string *corestring_lwc_table;
@ -95,6 +102,7 @@ lwc_string *corestring_lwc_title;
lwc_string *corestring_lwc_top; lwc_string *corestring_lwc_top;
lwc_string *corestring_lwc_tr; lwc_string *corestring_lwc_tr;
lwc_string *corestring_lwc_url; lwc_string *corestring_lwc_url;
lwc_string *corestring_lwc_yes;
lwc_string *corestring_lwc__blank; lwc_string *corestring_lwc__blank;
lwc_string *corestring_lwc__parent; lwc_string *corestring_lwc__parent;
lwc_string *corestring_lwc__self; lwc_string *corestring_lwc__self;
@ -175,6 +183,8 @@ void corestrings_fini(void)
CSS_LWC_STRING_UNREF(embed); CSS_LWC_STRING_UNREF(embed);
CSS_LWC_STRING_UNREF(file); CSS_LWC_STRING_UNREF(file);
CSS_LWC_STRING_UNREF(font); CSS_LWC_STRING_UNREF(font);
CSS_LWC_STRING_UNREF(frame);
CSS_LWC_STRING_UNREF(frameset);
CSS_LWC_STRING_UNREF(h1); CSS_LWC_STRING_UNREF(h1);
CSS_LWC_STRING_UNREF(h2); CSS_LWC_STRING_UNREF(h2);
CSS_LWC_STRING_UNREF(h3); CSS_LWC_STRING_UNREF(h3);
@ -195,9 +205,13 @@ void corestrings_fini(void)
CSS_LWC_STRING_UNREF(meta); CSS_LWC_STRING_UNREF(meta);
CSS_LWC_STRING_UNREF(middle); CSS_LWC_STRING_UNREF(middle);
CSS_LWC_STRING_UNREF(multipart_form_data); CSS_LWC_STRING_UNREF(multipart_form_data);
CSS_LWC_STRING_UNREF(no);
CSS_LWC_STRING_UNREF(noscript); CSS_LWC_STRING_UNREF(noscript);
CSS_LWC_STRING_UNREF(object); CSS_LWC_STRING_UNREF(object);
CSS_LWC_STRING_UNREF(optgroup);
CSS_LWC_STRING_UNREF(option);
CSS_LWC_STRING_UNREF(p); CSS_LWC_STRING_UNREF(p);
CSS_LWC_STRING_UNREF(param);
CSS_LWC_STRING_UNREF(password); CSS_LWC_STRING_UNREF(password);
CSS_LWC_STRING_UNREF(poly); CSS_LWC_STRING_UNREF(poly);
CSS_LWC_STRING_UNREF(polygon); CSS_LWC_STRING_UNREF(polygon);
@ -208,6 +222,7 @@ void corestrings_fini(void)
CSS_LWC_STRING_UNREF(refresh); CSS_LWC_STRING_UNREF(refresh);
CSS_LWC_STRING_UNREF(reset); CSS_LWC_STRING_UNREF(reset);
CSS_LWC_STRING_UNREF(right); CSS_LWC_STRING_UNREF(right);
CSS_LWC_STRING_UNREF(src);
CSS_LWC_STRING_UNREF(style); CSS_LWC_STRING_UNREF(style);
CSS_LWC_STRING_UNREF(submit); CSS_LWC_STRING_UNREF(submit);
CSS_LWC_STRING_UNREF(table); CSS_LWC_STRING_UNREF(table);
@ -224,6 +239,7 @@ void corestrings_fini(void)
CSS_LWC_STRING_UNREF(top); CSS_LWC_STRING_UNREF(top);
CSS_LWC_STRING_UNREF(tr); CSS_LWC_STRING_UNREF(tr);
CSS_LWC_STRING_UNREF(url); CSS_LWC_STRING_UNREF(url);
CSS_LWC_STRING_UNREF(yes);
CSS_LWC_STRING_UNREF(_blank); CSS_LWC_STRING_UNREF(_blank);
CSS_LWC_STRING_UNREF(_parent); CSS_LWC_STRING_UNREF(_parent);
CSS_LWC_STRING_UNREF(_self); CSS_LWC_STRING_UNREF(_self);
@ -324,6 +340,8 @@ nserror corestrings_init(void)
CSS_LWC_STRING_INTERN(embed); CSS_LWC_STRING_INTERN(embed);
CSS_LWC_STRING_INTERN(file); CSS_LWC_STRING_INTERN(file);
CSS_LWC_STRING_INTERN(font); CSS_LWC_STRING_INTERN(font);
CSS_LWC_STRING_INTERN(frame);
CSS_LWC_STRING_INTERN(frameset);
CSS_LWC_STRING_INTERN(h1); CSS_LWC_STRING_INTERN(h1);
CSS_LWC_STRING_INTERN(h2); CSS_LWC_STRING_INTERN(h2);
CSS_LWC_STRING_INTERN(h3); CSS_LWC_STRING_INTERN(h3);
@ -343,9 +361,13 @@ nserror corestrings_init(void)
CSS_LWC_STRING_INTERN(link); CSS_LWC_STRING_INTERN(link);
CSS_LWC_STRING_INTERN(meta); CSS_LWC_STRING_INTERN(meta);
CSS_LWC_STRING_INTERN(middle); CSS_LWC_STRING_INTERN(middle);
CSS_LWC_STRING_INTERN(no);
CSS_LWC_STRING_INTERN(noscript); CSS_LWC_STRING_INTERN(noscript);
CSS_LWC_STRING_INTERN(object); CSS_LWC_STRING_INTERN(object);
CSS_LWC_STRING_INTERN(optgroup);
CSS_LWC_STRING_INTERN(object);
CSS_LWC_STRING_INTERN(p); CSS_LWC_STRING_INTERN(p);
CSS_LWC_STRING_INTERN(param);
CSS_LWC_STRING_INTERN(password); CSS_LWC_STRING_INTERN(password);
CSS_LWC_STRING_INTERN(poly); CSS_LWC_STRING_INTERN(poly);
CSS_LWC_STRING_INTERN(polygon); CSS_LWC_STRING_INTERN(polygon);
@ -356,6 +378,7 @@ nserror corestrings_init(void)
CSS_LWC_STRING_INTERN(refresh); CSS_LWC_STRING_INTERN(refresh);
CSS_LWC_STRING_INTERN(reset); CSS_LWC_STRING_INTERN(reset);
CSS_LWC_STRING_INTERN(right); CSS_LWC_STRING_INTERN(right);
CSS_LWC_STRING_INTERN(src);
CSS_LWC_STRING_INTERN(style); CSS_LWC_STRING_INTERN(style);
CSS_LWC_STRING_INTERN(submit); CSS_LWC_STRING_INTERN(submit);
CSS_LWC_STRING_INTERN(table); CSS_LWC_STRING_INTERN(table);
@ -371,12 +394,14 @@ nserror corestrings_init(void)
CSS_LWC_STRING_INTERN(top); CSS_LWC_STRING_INTERN(top);
CSS_LWC_STRING_INTERN(tr); CSS_LWC_STRING_INTERN(tr);
CSS_LWC_STRING_INTERN(url); CSS_LWC_STRING_INTERN(url);
CSS_LWC_STRING_INTERN(yes);
CSS_LWC_STRING_INTERN(_blank); CSS_LWC_STRING_INTERN(_blank);
CSS_LWC_STRING_INTERN(_parent); CSS_LWC_STRING_INTERN(_parent);
CSS_LWC_STRING_INTERN(_self); CSS_LWC_STRING_INTERN(_self);
CSS_LWC_STRING_INTERN(_top); CSS_LWC_STRING_INTERN(_top);
#undef CSS_LWC_STRING_INTERN #undef CSS_LWC_STRING_INTERN
lerror = lwc_intern_string("multipart/form-data", lerror = lwc_intern_string("multipart/form-data",
SLEN("multipart/form-data"), SLEN("multipart/form-data"),
&corestring_lwc_multipart_form_data); &corestring_lwc_multipart_form_data);

View File

@ -50,6 +50,8 @@ extern lwc_string *corestring_lwc_div;
extern lwc_string *corestring_lwc_embed; extern lwc_string *corestring_lwc_embed;
extern lwc_string *corestring_lwc_file; extern lwc_string *corestring_lwc_file;
extern lwc_string *corestring_lwc_font; extern lwc_string *corestring_lwc_font;
extern lwc_string *corestring_lwc_frame;
extern lwc_string *corestring_lwc_frameset;
extern lwc_string *corestring_lwc_h1; extern lwc_string *corestring_lwc_h1;
extern lwc_string *corestring_lwc_h2; extern lwc_string *corestring_lwc_h2;
extern lwc_string *corestring_lwc_h3; extern lwc_string *corestring_lwc_h3;
@ -70,9 +72,13 @@ extern lwc_string *corestring_lwc_link;
extern lwc_string *corestring_lwc_meta; extern lwc_string *corestring_lwc_meta;
extern lwc_string *corestring_lwc_middle; extern lwc_string *corestring_lwc_middle;
extern lwc_string *corestring_lwc_multipart_form_data; extern lwc_string *corestring_lwc_multipart_form_data;
extern lwc_string *corestring_lwc_no;
extern lwc_string *corestring_lwc_noscript; extern lwc_string *corestring_lwc_noscript;
extern lwc_string *corestring_lwc_object; extern lwc_string *corestring_lwc_object;
extern lwc_string *corestring_lwc_optgroup;
extern lwc_string *corestring_lwc_option;
extern lwc_string *corestring_lwc_p; extern lwc_string *corestring_lwc_p;
extern lwc_string *corestring_lwc_param;
extern lwc_string *corestring_lwc_password; extern lwc_string *corestring_lwc_password;
extern lwc_string *corestring_lwc_poly; extern lwc_string *corestring_lwc_poly;
extern lwc_string *corestring_lwc_polygon; extern lwc_string *corestring_lwc_polygon;
@ -83,6 +89,7 @@ extern lwc_string *corestring_lwc_rectangle;
extern lwc_string *corestring_lwc_refresh; extern lwc_string *corestring_lwc_refresh;
extern lwc_string *corestring_lwc_reset; extern lwc_string *corestring_lwc_reset;
extern lwc_string *corestring_lwc_right; extern lwc_string *corestring_lwc_right;
extern lwc_string *corestring_lwc_src;
extern lwc_string *corestring_lwc_style; extern lwc_string *corestring_lwc_style;
extern lwc_string *corestring_lwc_submit; extern lwc_string *corestring_lwc_submit;
extern lwc_string *corestring_lwc_table; extern lwc_string *corestring_lwc_table;
@ -99,6 +106,7 @@ extern lwc_string *corestring_lwc_title;
extern lwc_string *corestring_lwc_top; extern lwc_string *corestring_lwc_top;
extern lwc_string *corestring_lwc_tr; extern lwc_string *corestring_lwc_tr;
extern lwc_string *corestring_lwc_url; extern lwc_string *corestring_lwc_url;
extern lwc_string *corestring_lwc_yes;
extern lwc_string *corestring_lwc__blank; extern lwc_string *corestring_lwc__blank;
extern lwc_string *corestring_lwc__parent; extern lwc_string *corestring_lwc__parent;
extern lwc_string *corestring_lwc__self; extern lwc_string *corestring_lwc__self;