Gitweb links:

...log 
http://git.netsurf-browser.org/libcss.git/shortlog/e62d7925a625355c30bc56a91f473edb231d91a9
...commit 
http://git.netsurf-browser.org/libcss.git/commit/e62d7925a625355c30bc56a91f473edb231d91a9
...tree 
http://git.netsurf-browser.org/libcss.git/tree/e62d7925a625355c30bc56a91f473edb231d91a9

The branch, tlsa/shared-styles has been updated
       via  e62d7925a625355c30bc56a91f473edb231d91a9 (commit)
      from  fae7af21b6ed7c56e994d51039169289aa5c6e73 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commitdiff 
http://git.netsurf-browser.org/libcss.git/commit/?id=e62d7925a625355c30bc56a91f473edb231d91a9
commit e62d7925a625355c30bc56a91f473edb231d91a9
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>

    Selection: Abstract common node flags setting code into helper.

diff --git a/src/select/select.c b/src/select/select.c
index 068257f..4b9497c 100644
--- a/src/select/select.c
+++ b/src/select/select.c
@@ -2361,6 +2361,18 @@ css_error match_named_combinator(css_select_ctx *ctx, 
css_combinator type,
        return CSS_OK;
 }
 
+static inline void add_node_flags(const void *node,
+               const css_select_state *state, css_node_flags flags)
+{
+       /* If the node in question is the node we're selecting for then its
+        * style has been tainted by particular rules that affect whether the
+        * node's style can be shared.  We don't care whether the rule matched
+        * or not, just that such a rule has been considered. */
+       if (node == state->node) {
+               state->node_data->flags |= flags;
+       }
+}
+
 css_error match_universal_combinator(css_select_ctx *ctx, css_combinator type,
                const css_selector *selector, css_select_state *state,
                void *node, bool may_optimise, bool *rejected_by_cache,
@@ -2420,10 +2432,8 @@ css_error match_universal_combinator(css_select_ctx 
*ctx, css_combinator type,
                        error = state->handler->sibling_node(state->pw, n, &n);
                        if (error != CSS_OK)
                                return error;
-                       if (node == state->node) {
-                               state->node_data->flags |=
-                                               CSS_NODE_FLAGS_TAINT_SIBLING;
-                       }
+                       add_node_flags(node, state,
+                                       CSS_NODE_FLAGS_TAINT_SIBLING);
                        break;
                case CSS_COMBINATOR_NONE:
                        break;
@@ -2694,14 +2704,7 @@ css_error match_detail(css_select_ctx *ctx, void *node,
                } else {
                        *match = false;
                }
-               /* If the node in question is the node we're selecting for
-                * then its style has been tainted by pseudo class specific
-                * rules.  We don't care whether the rule matched or not,
-                * just that such rule has been considered. */
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_PSEUDO_CLASS;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_PSEUDO_CLASS);
                break;
        case CSS_SELECTOR_PSEUDO_ELEMENT:
                *match = true;
@@ -2720,68 +2723,43 @@ css_error match_detail(css_select_ctx *ctx, void *node,
        case CSS_SELECTOR_ATTRIBUTE:
                error = state->handler->node_has_attribute(state->pw, node,
                                &detail->qname, match);
-               /* If the node in question is the node we're selecting for
-                * then its style has been tainted by attribute specific
-                * rules.  We don't care whether the rule matched or not,
-                * just that such rule has been considered. */
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        case CSS_SELECTOR_ATTRIBUTE_EQUAL:
                error = state->handler->node_has_attribute_equal(state->pw, 
                                node, &detail->qname, detail->value.string, 
                                match);
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        case CSS_SELECTOR_ATTRIBUTE_DASHMATCH:
                error = state->handler->node_has_attribute_dashmatch(state->pw,
                                node, &detail->qname, detail->value.string,
                                match);
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        case CSS_SELECTOR_ATTRIBUTE_INCLUDES:
                error = state->handler->node_has_attribute_includes(state->pw, 
                                node, &detail->qname, detail->value.string,
                                match);
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        case CSS_SELECTOR_ATTRIBUTE_PREFIX:
                error = state->handler->node_has_attribute_prefix(state->pw,
                                node, &detail->qname, detail->value.string,
                                match);
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        case CSS_SELECTOR_ATTRIBUTE_SUFFIX:
                error = state->handler->node_has_attribute_suffix(state->pw,
                                node, &detail->qname, detail->value.string,
                                match);
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        case CSS_SELECTOR_ATTRIBUTE_SUBSTRING:
                error = state->handler->node_has_attribute_substring(state->pw,
                                node, &detail->qname, detail->value.string,
                                match);
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        }
 


-----------------------------------------------------------------------

Summary of changes:
 src/select/select.c |   66 +++++++++++++++++----------------------------------
 1 file changed, 22 insertions(+), 44 deletions(-)

diff --git a/src/select/select.c b/src/select/select.c
index 068257f..4b9497c 100644
--- a/src/select/select.c
+++ b/src/select/select.c
@@ -2361,6 +2361,18 @@ css_error match_named_combinator(css_select_ctx *ctx, 
css_combinator type,
        return CSS_OK;
 }
 
+static inline void add_node_flags(const void *node,
+               const css_select_state *state, css_node_flags flags)
+{
+       /* If the node in question is the node we're selecting for then its
+        * style has been tainted by particular rules that affect whether the
+        * node's style can be shared.  We don't care whether the rule matched
+        * or not, just that such a rule has been considered. */
+       if (node == state->node) {
+               state->node_data->flags |= flags;
+       }
+}
+
 css_error match_universal_combinator(css_select_ctx *ctx, css_combinator type,
                const css_selector *selector, css_select_state *state,
                void *node, bool may_optimise, bool *rejected_by_cache,
@@ -2420,10 +2432,8 @@ css_error match_universal_combinator(css_select_ctx 
*ctx, css_combinator type,
                        error = state->handler->sibling_node(state->pw, n, &n);
                        if (error != CSS_OK)
                                return error;
-                       if (node == state->node) {
-                               state->node_data->flags |=
-                                               CSS_NODE_FLAGS_TAINT_SIBLING;
-                       }
+                       add_node_flags(node, state,
+                                       CSS_NODE_FLAGS_TAINT_SIBLING);
                        break;
                case CSS_COMBINATOR_NONE:
                        break;
@@ -2694,14 +2704,7 @@ css_error match_detail(css_select_ctx *ctx, void *node,
                } else {
                        *match = false;
                }
-               /* If the node in question is the node we're selecting for
-                * then its style has been tainted by pseudo class specific
-                * rules.  We don't care whether the rule matched or not,
-                * just that such rule has been considered. */
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_PSEUDO_CLASS;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_PSEUDO_CLASS);
                break;
        case CSS_SELECTOR_PSEUDO_ELEMENT:
                *match = true;
@@ -2720,68 +2723,43 @@ css_error match_detail(css_select_ctx *ctx, void *node,
        case CSS_SELECTOR_ATTRIBUTE:
                error = state->handler->node_has_attribute(state->pw, node,
                                &detail->qname, match);
-               /* If the node in question is the node we're selecting for
-                * then its style has been tainted by attribute specific
-                * rules.  We don't care whether the rule matched or not,
-                * just that such rule has been considered. */
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        case CSS_SELECTOR_ATTRIBUTE_EQUAL:
                error = state->handler->node_has_attribute_equal(state->pw, 
                                node, &detail->qname, detail->value.string, 
                                match);
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        case CSS_SELECTOR_ATTRIBUTE_DASHMATCH:
                error = state->handler->node_has_attribute_dashmatch(state->pw,
                                node, &detail->qname, detail->value.string,
                                match);
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        case CSS_SELECTOR_ATTRIBUTE_INCLUDES:
                error = state->handler->node_has_attribute_includes(state->pw, 
                                node, &detail->qname, detail->value.string,
                                match);
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        case CSS_SELECTOR_ATTRIBUTE_PREFIX:
                error = state->handler->node_has_attribute_prefix(state->pw,
                                node, &detail->qname, detail->value.string,
                                match);
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        case CSS_SELECTOR_ATTRIBUTE_SUFFIX:
                error = state->handler->node_has_attribute_suffix(state->pw,
                                node, &detail->qname, detail->value.string,
                                match);
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        case CSS_SELECTOR_ATTRIBUTE_SUBSTRING:
                error = state->handler->node_has_attribute_substring(state->pw,
                                node, &detail->qname, detail->value.string,
                                match);
-               if (node == state->node) {
-                       state->node_data->flags |=
-                                       CSS_NODE_FLAGS_TAINT_ATTRIBUTE;
-               }
+               add_node_flags(node, state, CSS_NODE_FLAGS_TAINT_ATTRIBUTE);
                break;
        }
 


-- 
Cascading Style Sheets library

_______________________________________________
netsurf-commits mailing list
[email protected]
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org

Reply via email to