r4482 tlsa - /trunk/netsurf/render/layout.c
by netsurf@semichrome.net
Author: tlsa
Date: Mon Jun 30 10:53:28 2008
New Revision: 4482
URL: http://source.netsurf-browser.org?rev=4482&view=rev
Log:
Fix top margin of boxes with a non-visible overflow type.
Modified:
trunk/netsurf/render/layout.c
Modified: trunk/netsurf/render/layout.c
URL: http://source.netsurf-browser.org/trunk/netsurf/render/layout.c?rev=4482&...
==============================================================================
--- trunk/netsurf/render/layout.c (original)
+++ trunk/netsurf/render/layout.c Mon Jun 30 10:53:28 2008
@@ -342,6 +342,9 @@
* establishes a new block context. */
if (box->type != BOX_INLINE_CONTAINER && box->style &&
box->style->overflow != CSS_OVERFLOW_VISIBLE) {
+ cy += max_pos_margin - max_neg_margin;
+ box->y += max_pos_margin - max_neg_margin;
+
layout_block_context(box, content);
if (box->type == BOX_BLOCK || box->object)
15 years, 3 months
r4481 takkaria - /trunk/hubbub/src/treebuilder/
by netsurf@semichrome.net
Author: takkaria
Date: Mon Jun 30 09:13:12 2008
New Revision: 4481
URL: http://source.netsurf-browser.org?rev=4481&view=rev
Log:
Add my spangly new email address to all the files that didn't have it before.
Modified:
trunk/hubbub/src/treebuilder/after_after_body.c
trunk/hubbub/src/treebuilder/after_after_frameset.c
trunk/hubbub/src/treebuilder/after_body.c
trunk/hubbub/src/treebuilder/after_frameset.c
trunk/hubbub/src/treebuilder/in_caption.c
trunk/hubbub/src/treebuilder/in_cell.c
trunk/hubbub/src/treebuilder/in_column_group.c
trunk/hubbub/src/treebuilder/in_foreign_content.c
trunk/hubbub/src/treebuilder/in_frameset.c
trunk/hubbub/src/treebuilder/in_row.c
trunk/hubbub/src/treebuilder/in_select.c
trunk/hubbub/src/treebuilder/in_select_in_table.c
trunk/hubbub/src/treebuilder/in_table_body.c
Modified: trunk/hubbub/src/treebuilder/after_after_body.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/after_afte...
==============================================================================
--- trunk/hubbub/src/treebuilder/after_after_body.c (original)
+++ trunk/hubbub/src/treebuilder/after_after_body.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
Modified: trunk/hubbub/src/treebuilder/after_after_frameset.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/after_afte...
==============================================================================
--- trunk/hubbub/src/treebuilder/after_after_frameset.c (original)
+++ trunk/hubbub/src/treebuilder/after_after_frameset.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
Modified: trunk/hubbub/src/treebuilder/after_body.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/after_body...
==============================================================================
--- trunk/hubbub/src/treebuilder/after_body.c (original)
+++ trunk/hubbub/src/treebuilder/after_body.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
Modified: trunk/hubbub/src/treebuilder/after_frameset.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/after_fram...
==============================================================================
--- trunk/hubbub/src/treebuilder/after_frameset.c (original)
+++ trunk/hubbub/src/treebuilder/after_frameset.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
Modified: trunk/hubbub/src/treebuilder/in_caption.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/in_caption...
==============================================================================
--- trunk/hubbub/src/treebuilder/in_caption.c (original)
+++ trunk/hubbub/src/treebuilder/in_caption.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
Modified: trunk/hubbub/src/treebuilder/in_cell.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/in_cell.c?...
==============================================================================
--- trunk/hubbub/src/treebuilder/in_cell.c (original)
+++ trunk/hubbub/src/treebuilder/in_cell.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
Modified: trunk/hubbub/src/treebuilder/in_column_group.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/in_column_...
==============================================================================
--- trunk/hubbub/src/treebuilder/in_column_group.c (original)
+++ trunk/hubbub/src/treebuilder/in_column_group.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
Modified: trunk/hubbub/src/treebuilder/in_foreign_content.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/in_foreign...
==============================================================================
--- trunk/hubbub/src/treebuilder/in_foreign_content.c (original)
+++ trunk/hubbub/src/treebuilder/in_foreign_content.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
Modified: trunk/hubbub/src/treebuilder/in_frameset.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/in_framese...
==============================================================================
--- trunk/hubbub/src/treebuilder/in_frameset.c (original)
+++ trunk/hubbub/src/treebuilder/in_frameset.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
Modified: trunk/hubbub/src/treebuilder/in_row.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/in_row.c?r...
==============================================================================
--- trunk/hubbub/src/treebuilder/in_row.c (original)
+++ trunk/hubbub/src/treebuilder/in_row.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
Modified: trunk/hubbub/src/treebuilder/in_select.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/in_select....
==============================================================================
--- trunk/hubbub/src/treebuilder/in_select.c (original)
+++ trunk/hubbub/src/treebuilder/in_select.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
Modified: trunk/hubbub/src/treebuilder/in_select_in_table.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/in_select_...
==============================================================================
--- trunk/hubbub/src/treebuilder/in_select_in_table.c (original)
+++ trunk/hubbub/src/treebuilder/in_select_in_table.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
Modified: trunk/hubbub/src/treebuilder/in_table_body.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/in_table_b...
==============================================================================
--- trunk/hubbub/src/treebuilder/in_table_body.c (original)
+++ trunk/hubbub/src/treebuilder/in_table_body.c Mon Jun 30 09:13:12 2008
@@ -2,7 +2,7 @@
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 Andrew Sidwell
+ * Copyright 2008 Andrew Sidwell <takkaria(a)netsurf-browser.org>
*/
#include <assert.h>
15 years, 3 months
r4480 takkaria - in /trunk/hubbub/src/treebuilder: Makefile after_after_frameset.c
by netsurf@semichrome.net
Author: takkaria
Date: Mon Jun 30 08:13:11 2008
New Revision: 4480
URL: http://source.netsurf-browser.org?rev=4480&view=rev
Log:
Implement the "after after frameset" insertion mode.
Added:
trunk/hubbub/src/treebuilder/after_after_frameset.c (with props)
Modified:
trunk/hubbub/src/treebuilder/Makefile
Modified: trunk/hubbub/src/treebuilder/Makefile
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/Makefile?r...
==============================================================================
--- trunk/hubbub/src/treebuilder/Makefile (original)
+++ trunk/hubbub/src/treebuilder/Makefile Mon Jun 30 08:13:11 2008
@@ -38,7 +38,7 @@
in_caption.c in_column_group.c in_table_body.c in_row.c \
in_cell.c in_select.c in_select_in_table.c \
in_foreign_content.c after_body.c in_frameset.c \
- after_frameset.c after_after_body.c \
+ after_frameset.c after_after_body.c after_after_frameset.c \
generic_rcdata.c script_collect.c
# Append to sources for component
Added: trunk/hubbub/src/treebuilder/after_after_frameset.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/after_afte...
==============================================================================
--- trunk/hubbub/src/treebuilder/after_after_frameset.c (added)
+++ trunk/hubbub/src/treebuilder/after_after_frameset.c Mon Jun 30 08:13:11 2008
@@ -1,0 +1,61 @@
+/*
+ * This file is part of Hubbub.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2008 Andrew Sidwell
+ */
+
+#include <assert.h>
+#include <string.h>
+
+#include "treebuilder/modes.h"
+#include "treebuilder/internal.h"
+#include "treebuilder/treebuilder.h"
+#include "utils/utils.h"
+
+
+/**
+ * Handle token in "after after body" insertion mode
+ *
+ * \param treebuilder The treebuilder instance
+ * \param token The token to handle
+ * \return True to reprocess token, false otherwise
+ */
+bool handle_after_after_body(hubbub_treebuilder *treebuilder,
+ const hubbub_token *token)
+{
+ bool reprocess = false;
+
+ switch (token->type) {
+ case HUBBUB_TOKEN_COMMENT:
+ case HUBBUB_TOKEN_DOCTYPE:
+ case HUBBUB_TOKEN_CHARACTER:
+ process_tag_in_body(treebuilder, token);
+ break;
+ case HUBBUB_TOKEN_START_TAG:
+ {
+ element_type type = element_type_from_name(treebuilder,
+ &token->data.tag.name);
+
+ if (type == HTML) {
+ /* Process as if "in body" */
+ process_tag_in_body(treebuilder, token);
+ } else {
+ /** \todo parse error */
+ treebuilder->context.mode = IN_BODY;
+ reprocess = true;
+ }
+ }
+ break;
+ case HUBBUB_TOKEN_END_TAG:
+ /** \todo parse error */
+ treebuilder->context.mode = IN_FRAMESET;
+ reprocess = true;
+ break;
+ case HUBBUB_TOKEN_EOF:
+ break;
+ }
+
+ return reprocess;
+}
+
Propchange: trunk/hubbub/src/treebuilder/after_after_frameset.c
------------------------------------------------------------------------------
svn:eol-style = native
15 years, 3 months
r4479 takkaria - in /trunk/hubbub/src/treebuilder: Makefile after_frameset.c modes.h
by netsurf@semichrome.net
Author: takkaria
Date: Mon Jun 30 07:43:54 2008
New Revision: 4479
URL: http://source.netsurf-browser.org?rev=4479&view=rev
Log:
Implement "after frameset" mode.
Added:
trunk/hubbub/src/treebuilder/after_frameset.c (with props)
Modified:
trunk/hubbub/src/treebuilder/Makefile
trunk/hubbub/src/treebuilder/modes.h
Modified: trunk/hubbub/src/treebuilder/Makefile
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/Makefile?r...
==============================================================================
--- trunk/hubbub/src/treebuilder/Makefile (original)
+++ trunk/hubbub/src/treebuilder/Makefile Mon Jun 30 07:43:54 2008
@@ -38,7 +38,7 @@
in_caption.c in_column_group.c in_table_body.c in_row.c \
in_cell.c in_select.c in_select_in_table.c \
in_foreign_content.c after_body.c in_frameset.c \
- after_after_body.c \
+ after_frameset.c after_after_body.c \
generic_rcdata.c script_collect.c
# Append to sources for component
Added: trunk/hubbub/src/treebuilder/after_frameset.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/after_fram...
==============================================================================
--- trunk/hubbub/src/treebuilder/after_frameset.c (added)
+++ trunk/hubbub/src/treebuilder/after_frameset.c Mon Jun 30 07:43:54 2008
@@ -1,0 +1,78 @@
+/*
+ * This file is part of Hubbub.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2008 Andrew Sidwell
+ */
+
+#include <assert.h>
+#include <string.h>
+
+#include "treebuilder/modes.h"
+#include "treebuilder/internal.h"
+#include "treebuilder/treebuilder.h"
+#include "utils/utils.h"
+
+
+/**
+ * Handle token in "after frameset" insertion mode
+ *
+ * \param treebuilder The treebuilder instance
+ * \param token The token to handle
+ * \return True to reprocess token, false otherwise
+ */
+bool handle_after_frameset(hubbub_treebuilder *treebuilder,
+ const hubbub_token *token)
+{
+ bool reprocess = false;
+
+ switch (token->type) {
+ case HUBBUB_TOKEN_CHARACTER:
+ if (process_characters_expect_whitespace(treebuilder,
+ token, true)) {
+ /** \todo parse error */
+ }
+ break;
+ case HUBBUB_TOKEN_COMMENT:
+ process_comment_append(treebuilder, token,
+ treebuilder->context.element_stack[
+ treebuilder->context.current_node].node);
+ break;
+ case HUBBUB_TOKEN_DOCTYPE:
+ /** \todo parse error */
+ break;
+ case HUBBUB_TOKEN_START_TAG:
+ {
+ element_type type = element_type_from_name(treebuilder,
+ &token->data.tag.name);
+
+ if (type == HTML) {
+ process_tag_in_body(treebuilder, token);
+ } else if (type == NOFRAMES) {
+ process_in_head(treebuilder, token);
+ } else {
+ /** \todo parse error */
+ }
+ }
+ break;
+ case HUBBUB_TOKEN_END_TAG:
+ {
+ element_type type = element_type_from_name(treebuilder,
+ &token->data.tag.name);
+
+ if (type == HTML) {
+ /** \todo fragment case */
+ /** \todo parse error */
+ treebuilder->context.mode = AFTER_AFTER_FRAMESET;
+ } else {
+ /** \todo parse error */
+ }
+ }
+ break;
+ case HUBBUB_TOKEN_EOF:
+ break;
+ }
+
+ return reprocess;
+}
+
Propchange: trunk/hubbub/src/treebuilder/after_frameset.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/hubbub/src/treebuilder/modes.h
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/modes.h?re...
==============================================================================
--- trunk/hubbub/src/treebuilder/modes.h (original)
+++ trunk/hubbub/src/treebuilder/modes.h Mon Jun 30 07:43:54 2008
@@ -79,6 +79,8 @@
const hubbub_token *token);
bool handle_in_frameset(hubbub_treebuilder *treebuilder,
const hubbub_token *token);
+bool handle_after_frameset(hubbub_treebuilder *treebuilder,
+ const hubbub_token *token);
bool handle_after_after_body(hubbub_treebuilder *treebuilder,
const hubbub_token *token);
15 years, 3 months
r4478 takkaria - in /trunk/hubbub/src/treebuilder: Makefile in_frameset.c modes.h
by netsurf@semichrome.net
Author: takkaria
Date: Mon Jun 30 07:02:44 2008
New Revision: 4478
URL: http://source.netsurf-browser.org?rev=4478&view=rev
Log:
Implement "in frameset" tree construction mode.
Added:
trunk/hubbub/src/treebuilder/in_frameset.c (with props)
Modified:
trunk/hubbub/src/treebuilder/Makefile
trunk/hubbub/src/treebuilder/modes.h
Modified: trunk/hubbub/src/treebuilder/Makefile
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/Makefile?r...
==============================================================================
--- trunk/hubbub/src/treebuilder/Makefile (original)
+++ trunk/hubbub/src/treebuilder/Makefile Mon Jun 30 07:02:44 2008
@@ -37,7 +37,8 @@
in_head_noscript.c after_head.c in_body.c \
in_caption.c in_column_group.c in_table_body.c in_row.c \
in_cell.c in_select.c in_select_in_table.c \
- in_foreign_content.c after_body.c after_after_body.c \
+ in_foreign_content.c after_body.c in_frameset.c \
+ after_after_body.c \
generic_rcdata.c script_collect.c
# Append to sources for component
Added: trunk/hubbub/src/treebuilder/in_frameset.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/in_framese...
==============================================================================
--- trunk/hubbub/src/treebuilder/in_frameset.c (added)
+++ trunk/hubbub/src/treebuilder/in_frameset.c Mon Jun 30 07:02:44 2008
@@ -1,0 +1,92 @@
+/*
+ * This file is part of Hubbub.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2008 Andrew Sidwell
+ */
+
+#include <assert.h>
+#include <string.h>
+
+#include "treebuilder/modes.h"
+#include "treebuilder/internal.h"
+#include "treebuilder/treebuilder.h"
+#include "utils/utils.h"
+
+
+/**
+ * Handle token in "in frameset" insertion mode
+ *
+ * \param treebuilder The treebuilder instance
+ * \param token The token to handle
+ * \return True to reprocess token, false otherwise
+ */
+bool handle_in_frameset(hubbub_treebuilder *treebuilder,
+ const hubbub_token *token)
+{
+ bool reprocess = false;
+
+ switch (token->type) {
+ case HUBBUB_TOKEN_CHARACTER:
+ reprocess = process_characters_expect_whitespace(treebuilder,
+ token, true);
+ break;
+ case HUBBUB_TOKEN_COMMENT:
+ process_comment_append(treebuilder, token,
+ treebuilder->context.element_stack[
+ treebuilder->context.current_node].node);
+ break;
+ case HUBBUB_TOKEN_DOCTYPE:
+ /** \todo parse error */
+ break;
+ case HUBBUB_TOKEN_START_TAG:
+ {
+ element_type type = element_type_from_name(treebuilder,
+ &token->data.tag.name);
+
+ if (type == HTML) {
+ process_tag_in_body(treebuilder, token);
+ } else if (type == FRAMESET) {
+ insert_element(treebuilder, &token->data.tag);
+ } else if (type == FRAME) {
+ insert_element_no_push(treebuilder, &token->data.tag);
+ /** \todo ack sc flag */
+ } else if (type == NOFRAMES) {
+ process_in_head(treebuilder, token);
+ } else {
+ /** \todo parse error */
+ }
+ }
+ break;
+ case HUBBUB_TOKEN_END_TAG:
+ {
+ element_type type = element_type_from_name(treebuilder,
+ &token->data.tag.name);
+
+ if (type == FRAMESET) {
+ hubbub_ns ns;
+ void *node;
+
+ /** \todo fragment case */
+ if (!element_stack_pop(treebuilder, &ns, &type,
+ &node)) {
+ /** \todo errors */
+ }
+
+ if (type != FRAMESET)
+ treebuilder->context.mode = AFTER_FRAMESET;
+ } else {
+ /** \todo parse error */
+ treebuilder->context.mode = IN_BODY;
+ reprocess = true;
+ }
+ }
+ break;
+ case HUBBUB_TOKEN_EOF:
+ /** \todo parse error */
+ break;
+ }
+
+ return reprocess;
+}
+
Propchange: trunk/hubbub/src/treebuilder/in_frameset.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/hubbub/src/treebuilder/modes.h
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/modes.h?re...
==============================================================================
--- trunk/hubbub/src/treebuilder/modes.h (original)
+++ trunk/hubbub/src/treebuilder/modes.h Mon Jun 30 07:02:44 2008
@@ -77,6 +77,8 @@
const hubbub_token *token);
bool handle_after_body(hubbub_treebuilder *treebuilder,
const hubbub_token *token);
+bool handle_in_frameset(hubbub_treebuilder *treebuilder,
+ const hubbub_token *token);
bool handle_after_after_body(hubbub_treebuilder *treebuilder,
const hubbub_token *token);
15 years, 3 months
r4477 takkaria - in /trunk/hubbub/src/treebuilder: Makefile after_after_body.c modes.h
by netsurf@semichrome.net
Author: takkaria
Date: Mon Jun 30 06:09:33 2008
New Revision: 4477
URL: http://source.netsurf-browser.org?rev=4477&view=rev
Log:
Add the "after after body" insertion mode.
Added:
trunk/hubbub/src/treebuilder/after_after_body.c (with props)
Modified:
trunk/hubbub/src/treebuilder/Makefile
trunk/hubbub/src/treebuilder/modes.h
Modified: trunk/hubbub/src/treebuilder/Makefile
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/Makefile?r...
==============================================================================
--- trunk/hubbub/src/treebuilder/Makefile (original)
+++ trunk/hubbub/src/treebuilder/Makefile Mon Jun 30 06:09:33 2008
@@ -37,7 +37,7 @@
in_head_noscript.c after_head.c in_body.c \
in_caption.c in_column_group.c in_table_body.c in_row.c \
in_cell.c in_select.c in_select_in_table.c \
- in_foreign_content.c after_body.c \
+ in_foreign_content.c after_body.c after_after_body.c \
generic_rcdata.c script_collect.c
# Append to sources for component
Added: trunk/hubbub/src/treebuilder/after_after_body.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/after_afte...
==============================================================================
--- trunk/hubbub/src/treebuilder/after_after_body.c (added)
+++ trunk/hubbub/src/treebuilder/after_after_body.c Mon Jun 30 06:09:33 2008
@@ -1,0 +1,61 @@
+/*
+ * This file is part of Hubbub.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2008 Andrew Sidwell
+ */
+
+#include <assert.h>
+#include <string.h>
+
+#include "treebuilder/modes.h"
+#include "treebuilder/internal.h"
+#include "treebuilder/treebuilder.h"
+#include "utils/utils.h"
+
+
+/**
+ * Handle token in "after after body" insertion mode
+ *
+ * \param treebuilder The treebuilder instance
+ * \param token The token to handle
+ * \return True to reprocess token, false otherwise
+ */
+bool handle_after_after_body(hubbub_treebuilder *treebuilder,
+ const hubbub_token *token)
+{
+ bool reprocess = false;
+
+ switch (token->type) {
+ case HUBBUB_TOKEN_COMMENT:
+ case HUBBUB_TOKEN_DOCTYPE:
+ case HUBBUB_TOKEN_CHARACTER:
+ process_tag_in_body(treebuilder, token);
+ break;
+ case HUBBUB_TOKEN_START_TAG:
+ {
+ element_type type = element_type_from_name(treebuilder,
+ &token->data.tag.name);
+
+ if (type == HTML) {
+ /* Process as if "in body" */
+ process_tag_in_body(treebuilder, token);
+ } else {
+ /** \todo parse error */
+ treebuilder->context.mode = IN_BODY;
+ reprocess = true;
+ }
+ }
+ break;
+ case HUBBUB_TOKEN_END_TAG:
+ /** \todo parse error */
+ treebuilder->context.mode = IN_BODY;
+ reprocess = true;
+ break;
+ case HUBBUB_TOKEN_EOF:
+ break;
+ }
+
+ return reprocess;
+}
+
Propchange: trunk/hubbub/src/treebuilder/after_after_body.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/hubbub/src/treebuilder/modes.h
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/modes.h?re...
==============================================================================
--- trunk/hubbub/src/treebuilder/modes.h (original)
+++ trunk/hubbub/src/treebuilder/modes.h Mon Jun 30 06:09:33 2008
@@ -77,6 +77,8 @@
const hubbub_token *token);
bool handle_after_body(hubbub_treebuilder *treebuilder,
const hubbub_token *token);
+bool handle_after_after_body(hubbub_treebuilder *treebuilder,
+ const hubbub_token *token);
bool process_in_head(hubbub_treebuilder *treebuilder,
const hubbub_token *token);
15 years, 3 months
r4476 takkaria - in /trunk/hubbub/src/treebuilder: Makefile after_body.c modes.h
by netsurf@semichrome.net
Author: takkaria
Date: Mon Jun 30 06:02:13 2008
New Revision: 4476
URL: http://source.netsurf-browser.org?rev=4476&view=rev
Log:
Add the "after body" insertion mode.
Added:
trunk/hubbub/src/treebuilder/after_body.c (with props)
Modified:
trunk/hubbub/src/treebuilder/Makefile
trunk/hubbub/src/treebuilder/modes.h
Modified: trunk/hubbub/src/treebuilder/Makefile
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/Makefile?r...
==============================================================================
--- trunk/hubbub/src/treebuilder/Makefile (original)
+++ trunk/hubbub/src/treebuilder/Makefile Mon Jun 30 06:02:13 2008
@@ -37,7 +37,7 @@
in_head_noscript.c after_head.c in_body.c \
in_caption.c in_column_group.c in_table_body.c in_row.c \
in_cell.c in_select.c in_select_in_table.c \
- in_foreign_content.c \
+ in_foreign_content.c after_body.c \
generic_rcdata.c script_collect.c
# Append to sources for component
Added: trunk/hubbub/src/treebuilder/after_body.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/after_body...
==============================================================================
--- trunk/hubbub/src/treebuilder/after_body.c (added)
+++ trunk/hubbub/src/treebuilder/after_body.c Mon Jun 30 06:02:13 2008
@@ -1,0 +1,79 @@
+/*
+ * This file is part of Hubbub.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2008 Andrew Sidwell
+ */
+
+#include <assert.h>
+#include <string.h>
+
+#include "treebuilder/modes.h"
+#include "treebuilder/internal.h"
+#include "treebuilder/treebuilder.h"
+#include "utils/utils.h"
+
+
+/**
+ * Handle token in "after body" insertion mode
+ *
+ * \param treebuilder The treebuilder instance
+ * \param token The token to handle
+ * \return True to reprocess token, false otherwise
+ */
+bool handle_after_body(hubbub_treebuilder *treebuilder,
+ const hubbub_token *token)
+{
+ bool reprocess = false;
+
+ switch (token->type) {
+ case HUBBUB_TOKEN_CHARACTER:
+ reprocess = process_characters_expect_whitespace(treebuilder,
+ token, true);
+ break;
+ case HUBBUB_TOKEN_COMMENT:
+ process_comment_append(treebuilder, token,
+ treebuilder->context.element_stack[
+ treebuilder->context.current_node].node);
+ break;
+ case HUBBUB_TOKEN_DOCTYPE:
+ /** \todo parse error */
+ break;
+ case HUBBUB_TOKEN_START_TAG:
+ {
+ element_type type = element_type_from_name(treebuilder,
+ &token->data.tag.name);
+
+ if (type == HTML) {
+ /* Process as if "in body" */
+ process_tag_in_body(treebuilder, token);
+ } else {
+ /** \todo parse error */
+ treebuilder->context.mode = IN_BODY;
+ reprocess = true;
+ }
+ }
+ break;
+ case HUBBUB_TOKEN_END_TAG:
+ {
+ element_type type = element_type_from_name(treebuilder,
+ &token->data.tag.name);
+
+ if (type == HTML) {
+ /** \todo fragment case */
+ /** \todo parse error */
+ treebuilder->context.mode = AFTER_AFTER_BODY;
+ } else {
+ /** \todo parse error */
+ treebuilder->context.mode = IN_BODY;
+ reprocess = true;
+ }
+ }
+ break;
+ case HUBBUB_TOKEN_EOF:
+ break;
+ }
+
+ return reprocess;
+}
+
Propchange: trunk/hubbub/src/treebuilder/after_body.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/hubbub/src/treebuilder/modes.h
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/modes.h?re...
==============================================================================
--- trunk/hubbub/src/treebuilder/modes.h (original)
+++ trunk/hubbub/src/treebuilder/modes.h Mon Jun 30 06:02:13 2008
@@ -75,6 +75,8 @@
const hubbub_token *token);
bool handle_in_foreign_content(hubbub_treebuilder *treebuilder,
const hubbub_token *token);
+bool handle_after_body(hubbub_treebuilder *treebuilder,
+ const hubbub_token *token);
bool process_in_head(hubbub_treebuilder *treebuilder,
const hubbub_token *token);
15 years, 3 months
r4475 takkaria - in /trunk/hubbub/src/treebuilder: Makefile in_foreign_content.c internal.h modes.h treebuilder.c
by netsurf@semichrome.net
Author: takkaria
Date: Mon Jun 30 05:45:26 2008
New Revision: 4475
URL: http://source.netsurf-browser.org?rev=4475&view=rev
Log:
Add "in foreign content" handling. Not convinced this is the best way.
Added:
trunk/hubbub/src/treebuilder/in_foreign_content.c (with props)
Modified:
trunk/hubbub/src/treebuilder/Makefile
trunk/hubbub/src/treebuilder/internal.h
trunk/hubbub/src/treebuilder/modes.h
trunk/hubbub/src/treebuilder/treebuilder.c
Modified: trunk/hubbub/src/treebuilder/Makefile
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/Makefile?r...
==============================================================================
--- trunk/hubbub/src/treebuilder/Makefile (original)
+++ trunk/hubbub/src/treebuilder/Makefile Mon Jun 30 05:45:26 2008
@@ -37,6 +37,7 @@
in_head_noscript.c after_head.c in_body.c \
in_caption.c in_column_group.c in_table_body.c in_row.c \
in_cell.c in_select.c in_select_in_table.c \
+ in_foreign_content.c \
generic_rcdata.c script_collect.c
# Append to sources for component
Added: trunk/hubbub/src/treebuilder/in_foreign_content.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/in_foreign...
==============================================================================
--- trunk/hubbub/src/treebuilder/in_foreign_content.c (added)
+++ trunk/hubbub/src/treebuilder/in_foreign_content.c Mon Jun 30 05:45:26 2008
@@ -1,0 +1,139 @@
+/*
+ * This file is part of Hubbub.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2008 Andrew Sidwell
+ */
+
+#include <assert.h>
+#include <string.h>
+
+#include "treebuilder/modes.h"
+#include "treebuilder/internal.h"
+#include "treebuilder/treebuilder.h"
+#include "utils/utils.h"
+
+
+
+static bool element_in_scope_in_non_html_ns(hubbub_treebuilder *treebuilder)
+{
+ uint32_t node;
+
+ if (treebuilder->context.element_stack == NULL)
+ return false;
+
+ for (node = treebuilder->context.current_node; node > 0; node--) {
+ element_type node_ns =
+ treebuilder->context.element_stack[node].ns;
+
+ if (node_ns != HTML)
+ return true;
+ }
+
+ return false;
+}
+
+
+
+/**
+ * Handle tokens in "in foreign content" insertion mode
+ *
+ * \param treebuilder The treebuilder instance
+ * \param token The token to process
+ * \return True to reprocess the token, false otherwise
+ */
+bool handle_in_foreign_content(hubbub_treebuilder *treebuilder,
+ const hubbub_token *token)
+{
+ bool reprocess = false;
+
+ switch (token->type) {
+ case HUBBUB_TOKEN_CHARACTER:
+ append_text(treebuilder, &token->data.character);
+ break;
+ case HUBBUB_TOKEN_COMMENT:
+ process_comment_append(treebuilder, token,
+ treebuilder->context.element_stack[
+ treebuilder->context.current_node].node);
+ break;
+ case HUBBUB_TOKEN_DOCTYPE:
+ /** \todo parse error */
+ break;
+ case HUBBUB_TOKEN_START_TAG:
+ {
+ element_type type = element_type_from_name(treebuilder,
+ &token->data.tag.name);
+
+ element_type cur_node = current_node(treebuilder);
+ hubbub_ns cur_node_ns = current_node_ns(treebuilder);
+
+ if (cur_node_ns == HUBBUB_NS_HTML ||
+ (cur_node_ns == HUBBUB_NS_MATHML &&
+ (type != MGLYPH && type != MALIGNMARK) &&
+ (cur_node == MI || cur_node == MO ||
+ cur_node == MN || cur_node == MS ||
+ cur_node == MTEXT))) {
+ treebuilder->context.mode =
+ treebuilder->context.second_mode;
+ hubbub_treebuilder_token_handler(token, treebuilder);
+
+ if (treebuilder->context.mode == IN_FOREIGN_CONTENT &&
+ !element_in_scope_in_non_html_ns(treebuilder)) {
+ treebuilder->context.mode =
+ treebuilder->context.second_mode;
+ }
+ } else if (type == B || type == BIG || type == BLOCKQUOTE ||
+ type == BODY || type == BR || type == CENTER ||
+ type == CODE || type == DD || type == DIV ||
+ type == DL || type == DT || type == EM ||
+ type == EMBED || type == FONT || type == H1 ||
+ type == H2 || type == H3 || type == H4 ||
+ type == H5 || type == H6 || type == HEAD ||
+ type == HR || type == I || type == IMG ||
+ type == LI || type == LISTING ||
+ type == MENU || type == META || type == NOBR ||
+ type == OL || type == P || type == PRE ||
+ type == RUBY || type == S || type == SMALL ||
+ type == SPAN || type == STRONG ||
+ type == STRIKE || type == SUB || type == SUP ||
+ type == TABLE || type == TT || type == U ||
+ type == UL || type == VAR) {
+ /** \todo parse error */
+
+ while (cur_node_ns != HUBBUB_NS_HTML) {
+ void *node;
+ element_stack_pop(treebuilder, &cur_node_ns,
+ &cur_node, &node);
+ cur_node_ns = current_node_ns(treebuilder);
+ }
+
+ treebuilder->context.mode =
+ treebuilder->context.second_mode;
+ } else {
+ hubbub_tag tag = token->data.tag;
+
+ adjust_foreign_attributes(treebuilder, &tag);
+
+ /* Set to the right namespace and insert */
+ tag.ns = cur_node_ns;
+
+ if (token->data.tag.self_closing) {
+ insert_element_no_push(treebuilder, &tag);
+ /** \todo ack sc flag */
+ } else {
+ insert_element(treebuilder, &tag);
+ }
+ }
+ }
+ break;
+ case HUBBUB_TOKEN_END_TAG:
+ /** \parse error */
+ break;
+ case HUBBUB_TOKEN_EOF:
+ reprocess = true;
+ break;
+ }
+
+ return reprocess;
+}
+
Propchange: trunk/hubbub/src/treebuilder/in_foreign_content.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/hubbub/src/treebuilder/internal.h
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/internal.h...
==============================================================================
--- trunk/hubbub/src/treebuilder/internal.h (original)
+++ trunk/hubbub/src/treebuilder/internal.h Mon Jun 30 05:45:26 2008
@@ -27,7 +27,9 @@
A, B, BIG, EM, FONT, I, NOBR, S, SMALL, STRIKE, STRONG, TT, U,
/* Phrasing */
/**< \todo Enumerate phrasing elements */
- LABEL, MATH, RP, RT, XMP,
+ CODE, LABEL, RP, RT, RUBY, SPAN, SUB, SUP, VAR, XMP,
+/* MathML */
+ MATH, MGLYPH, MALIGNMARK, MI, MO, MN, MS, MTEXT,
UNKNOWN,
} element_type;
@@ -104,6 +106,8 @@
void *alloc_pw; /**< Client private data */
};
+void hubbub_treebuilder_token_handler(const hubbub_token *token, void *pw);
+
bool process_characters_expect_whitespace(
hubbub_treebuilder *treebuilder, const hubbub_token *token,
bool insert_into_current_node);
@@ -142,6 +146,7 @@
bool element_stack_pop_until(hubbub_treebuilder *treebuilder,
element_type type);
element_type current_node(hubbub_treebuilder *treebuilder);
+hubbub_ns current_node_ns(hubbub_treebuilder *treebuilder);
element_type prev_node(hubbub_treebuilder *treebuilder);
bool formatting_list_append(hubbub_treebuilder *treebuilder,
Modified: trunk/hubbub/src/treebuilder/modes.h
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/modes.h?re...
==============================================================================
--- trunk/hubbub/src/treebuilder/modes.h (original)
+++ trunk/hubbub/src/treebuilder/modes.h Mon Jun 30 05:45:26 2008
@@ -59,6 +59,8 @@
const hubbub_token *token);
bool handle_in_column_group(hubbub_treebuilder *treebuilder,
const hubbub_token *token);
+bool handle_in_table_body(hubbub_treebuilder *treebuilder,
+ const hubbub_token *token);
bool handle_in_row(hubbub_treebuilder *treebuilder,
const hubbub_token *token);
bool handle_in_cell(hubbub_treebuilder *treebuilder,
@@ -71,6 +73,8 @@
const hubbub_token *token);
bool handle_script_collect_characters(hubbub_treebuilder *treebuilder,
const hubbub_token *token);
+bool handle_in_foreign_content(hubbub_treebuilder *treebuilder,
+ const hubbub_token *token);
bool process_in_head(hubbub_treebuilder *treebuilder,
const hubbub_token *token);
Modified: trunk/hubbub/src/treebuilder/treebuilder.c
URL: http://source.netsurf-browser.org/trunk/hubbub/src/treebuilder/treebuilde...
==============================================================================
--- trunk/hubbub/src/treebuilder/treebuilder.c (original)
+++ trunk/hubbub/src/treebuilder/treebuilder.c Mon Jun 30 05:45:26 2008
@@ -66,12 +66,10 @@
static void hubbub_treebuilder_buffer_handler(const uint8_t *data,
size_t len, void *pw);
-static void hubbub_treebuilder_token_handler(const hubbub_token *token,
- void *pw);
-
-
-/**
- * Create a hubbub treebuilder
+
+
+/**
+ * Create a hubbub treebuilder
*
* \param tokeniser Underlying tokeniser instance
* \param alloc Memory (de)allocation function
@@ -109,7 +107,7 @@
return NULL;
}
tb->context.stack_alloc = ELEMENT_STACK_CHUNK;
- /* We rely on HTML not being equal to zero to determine
+ /* We rely on HTML not being equal to zero to determine
* if the first item in the stack is in use. Assert this here. */
assert(HTML != 0);
tb->context.element_stack[0].type = 0;
15 years, 3 months
r4474 jmb - in /trunk/libparserutils/src/input: filter.c inputstream.c
by netsurf@semichrome.net
Author: jmb
Date: Sat Jun 28 17:03:43 2008
New Revision: 4474
URL: http://source.netsurf-browser.org?rev=4474&view=rev
Log:
Make iconv-based filtering produce correct output when encountering encoding errors.
Fix inputstream_peek_slow to flag OOD when the buffer fill routine produces no new data.
Modified:
trunk/libparserutils/src/input/filter.c
trunk/libparserutils/src/input/inputstream.c
Modified: trunk/libparserutils/src/input/filter.c
URL: http://source.netsurf-browser.org/trunk/libparserutils/src/input/filter.c...
==============================================================================
--- trunk/libparserutils/src/input/filter.c (original)
+++ trunk/libparserutils/src/input/filter.c Sat Jun 28 17:03:43 2008
@@ -204,6 +204,16 @@
if (ret != (size_t) -1 || errno != EILSEQ)
break;
+ if (*outlen < 3)
+ return PARSERUTILS_NOMEM;
+
+ (*output)[0] = 0xef;
+ (*output)[1] = 0xbf;
+ (*output)[2] = 0xbd;
+
+ *output += 3;
+ *outlen -= 3;
+
(*data)++;
(*len)--;
}
Modified: trunk/libparserutils/src/input/inputstream.c
URL: http://source.netsurf-browser.org/trunk/libparserutils/src/input/inputstr...
==============================================================================
--- trunk/libparserutils/src/input/inputstream.c (original)
+++ trunk/libparserutils/src/input/inputstream.c Sat Jun 28 17:03:43 2008
@@ -235,7 +235,8 @@
/* Refill utf8 buffer from raw buffer */
error = parserutils_inputstream_refill_buffer(s);
- if (error != PARSERUTILS_OK)
+ if (error != PARSERUTILS_OK ||
+ s->public.cursor + offset == s->public.utf8->length)
return PARSERUTILS_INPUTSTREAM_OOD;
/* Now try the read */
15 years, 3 months
r4473 jmb - in /trunk/libparserutils/src/charset/codecs: codec_utf16.c codec_utf8.c
by netsurf@semichrome.net
Author: jmb
Date: Sat Jun 28 16:14:42 2008
New Revision: 4473
URL: http://source.netsurf-browser.org?rev=4473&view=rev
Log:
Make comments explicit about the endianness of UCS-4 data
Modified:
trunk/libparserutils/src/charset/codecs/codec_utf16.c
trunk/libparserutils/src/charset/codecs/codec_utf8.c
Modified: trunk/libparserutils/src/charset/codecs/codec_utf16.c
URL: http://source.netsurf-browser.org/trunk/libparserutils/src/charset/codecs...
==============================================================================
--- trunk/libparserutils/src/charset/codecs/codec_utf16.c (original)
+++ trunk/libparserutils/src/charset/codecs/codec_utf16.c Sat Jun 28 16:14:42 2008
@@ -127,7 +127,7 @@
}
/**
- * Encode a chunk of UCS-4 data into UTF-16
+ * Encode a chunk of UCS-4 (big endian) data into UTF-16
*
* \param codec The codec to use
* \param source Pointer to pointer to source data
@@ -246,7 +246,7 @@
}
/**
- * Decode a chunk of UTF-16 data into UCS-4
+ * Decode a chunk of UTF-16 data into UCS-4 (big endian)
*
* \param codec The codec to use
* \param source Pointer to pointer to source data
@@ -509,7 +509,7 @@
}
/**
- * Output a UCS-4 character
+ * Output a UCS-4 character (big endian)
*
* \param c Codec to use
* \param ucs4 UCS-4 character (host endian)
Modified: trunk/libparserutils/src/charset/codecs/codec_utf8.c
URL: http://source.netsurf-browser.org/trunk/libparserutils/src/charset/codecs...
==============================================================================
--- trunk/libparserutils/src/charset/codecs/codec_utf8.c (original)
+++ trunk/libparserutils/src/charset/codecs/codec_utf8.c Sat Jun 28 16:14:42 2008
@@ -128,7 +128,7 @@
}
/**
- * Encode a chunk of UCS-4 data into UTF-8
+ * Encode a chunk of UCS-4 (big endian) data into UTF-8
*
* \param codec The codec to use
* \param source Pointer to pointer to source data
@@ -232,7 +232,7 @@
}
/**
- * Decode a chunk of UTF-8 data into UCS-4
+ * Decode a chunk of UTF-8 data into UCS-4 (big endian)
*
* \param codec The codec to use
* \param source Pointer to pointer to source data
@@ -510,7 +510,7 @@
}
/**
- * Output a UCS-4 character
+ * Output a UCS-4 character (big endian)
*
* \param c Codec to use
* \param ucs4 UCS-4 character (host endian)
15 years, 3 months