Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Table Caption infinite recursion. #3998

Closed
wants to merge 2 commits into from

Conversation

@Hoverbear
Copy link
Member

Hoverbear commented Nov 15, 2014

Fixed #3997.

@Hoverbear
Copy link
Member Author

Hoverbear commented Nov 15, 2014

Don't merge yet, please. Would like to add a test.

<~jdm> hoverbear: for this, I would create a content test that has a <caption> and calls getBoundingClientRect on it

Link to examples
Can probably sneak the test in here

@jdm
Copy link
Member

jdm commented Nov 15, 2014

@Hoverbear
Copy link
Member Author

Hoverbear commented Nov 15, 2014

Added test, pre-patch:

➜  servo git:(fix_table_caption) ✗ ./mach test-content

running 74 tests
test /Users/hoverbear/git/servo/tests/content/test_body_listener.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_DOMParser.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_MouseEvent.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_Event.html ... ok

task 'LayoutTask' has overflowed its stack
test /Users/hoverbear/git/servo/tests/content/test_click_prevent.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_createElement_script.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_create_element.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_documentElement.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_collections.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_body.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_characterSet.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_characterSet_default.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_characterSet_invalid.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_compatMode_loose.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_compatMode_strict.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_contenttype.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_datalist_options.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_getElementById.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_getElementsByName.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_head.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_images_cache.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_implementation.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_links_cache.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_readystate.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_set_node_value.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_title_nontextchildren.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_url.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_domtokenlist.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_element_attribute.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_element_attributes.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_element_classList.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_element_className.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_element_matches.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_caption.html ... FAILED
test /Users/hoverbear/git/servo/tests/content/test_empty_clientrect.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_enabled_disabled_selectors.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_event_dispatch.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_event_dispatch_dynamic.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_event_dispatch_order.html ... ok
ERROR:js::rust: Error at file:///Users/hoverbear/git/servo/tests/content/test_event_handler_syntax_error.html:0: SyntaxError: missing } in compound statement

ERROR:js::rust: Error at file:///Users/hoverbear/git/servo/tests/content/test_event_handler_syntax_error.html:0: SyntaxError: missing } in compound statement

ERROR:js::rust: Error at file:///Users/hoverbear/git/servo/tests/content/test_event_handler_syntax_error.html:0: SyntaxError: missing } in compound statement

ERROR:js::rust: Error at file:///Users/hoverbear/git/servo/tests/content/test_event_handler_syntax_error.html:0: SyntaxError: syntax error

ERROR:js::rust: Error at file:///Users/hoverbear/git/servo/tests/content/test_event_handler_syntax_error.html:0: SyntaxError: syntax error

test /Users/hoverbear/git/servo/tests/content/test_event_handler_syntax_error.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_event_listener.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_global.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_getBoundingClientRect.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_htmlcollection.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_htmlspacechars.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_htmlfieldsetelement_elements.html ... ok
task 'LayoutTask' panicked at 'sending on a closed channel', /Users/jack/src/rust/src/libsync/comm/mod.rs:571
task 'LayoutTaskWatcher' panicked at 'sending on a closed channel', /Users/jack/src/rust/src/libsync/comm/mod.rs:571
test /Users/hoverbear/git/servo/tests/content/test_iframe_contentDocument.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_inline_event_handler.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_innerHTML.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_img_width_height.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_load_event.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_lenient_this.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_navigator.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_interfaces.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_compareDocumentPosition.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_cloneNode.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_insertBefore.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_contains.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_isEqualNode.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_normalize.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_replaceChild.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_parentNode_querySelector.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_parentNode_querySelectorAll.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_parentnodes.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_prototypes.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_proxy_setter.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_textcontent.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_script_type.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_title.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_trace_null.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_window.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_union.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_window_performance.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_window_setInterval.html ... ok

failures:

---- /Users/hoverbear/git/servo/tests/content/test_caption.html stdout ----
    ALERT: TEST-PASS | [object HTMLTableCaptionElement] === [object HTMLTableCaptionElement]:
    ALERT: TEST-PASS | old caption === old caption:
    ALERT: TEST-PASS | [object HTMLTableElement] === [object HTMLTableElement]:
    ALERT: TEST-PASS | [object HTMLTableCaptionElement] === [object HTMLTableCaptionElement]:
    task '/Users/hoverbear/git/servo/tests/content/test_caption.html' panicked at 'Servo exited with non-zero status Ok(signal: 4)', tests/contenttest.rs:134



failures:
    /Users/hoverbear/git/servo/tests/content/test_caption.html

test result: FAILED. 73 passed; 1 failed; 0 ignored; 0 measured

After patch:

➜  servo git:(fix_table_caption) ✗ ./mach test-content
   Compiling layout v0.0.1 (file:///Users/hoverbear/git/servo)
   Compiling servo v0.0.1 (file:///Users/hoverbear/git/servo)

running 74 tests
test /Users/hoverbear/git/servo/tests/content/test_Event.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_DOMParser.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_MouseEvent.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_body_listener.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_createElement_script.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_click_prevent.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_caption.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_body.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_create_element.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_documentElement.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_characterSet_invalid.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_characterSet.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_collections.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_characterSet_default.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_contenttype.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_compatMode_strict.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_compatMode_loose.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_datalist_options.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_getElementById.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_getElementsByName.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_head.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_links_cache.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_images_cache.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_readystate.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_implementation.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_domtokenlist.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_set_node_value.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_title_nontextchildren.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_document_url.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_element_classList.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_element_attributes.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_element_attribute.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_element_className.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_element_matches.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_empty_clientrect.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_enabled_disabled_selectors.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_event_dispatch.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_event_dispatch_dynamic.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_event_dispatch_order.html ... ok
ERROR:js::rust: Error at file:///Users/hoverbear/git/servo/tests/content/test_event_handler_syntax_error.html:0: SyntaxError: missing } in compound statement

ERROR:js::rust: Error at file:///Users/hoverbear/git/servo/tests/content/test_event_handler_syntax_error.html:0: SyntaxError: missing } in compound statement

ERROR:js::rust: Error at file:///Users/hoverbear/git/servo/tests/content/test_event_handler_syntax_error.html:0: SyntaxError: missing } in compound statement

ERROR:js::rust: Error at file:///Users/hoverbear/git/servo/tests/content/test_event_handler_syntax_error.html:0: SyntaxError: syntax error

ERROR:js::rust: Error at file:///Users/hoverbear/git/servo/tests/content/test_event_handler_syntax_error.html:0: SyntaxError: syntax error

test /Users/hoverbear/git/servo/tests/content/test_event_listener.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_event_handler_syntax_error.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_getBoundingClientRect.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_global.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_htmlcollection.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_htmlfieldsetelement_elements.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_htmlspacechars.html ... ok
task 'ScriptTask' panicked at 'ScriptTask: received a load message for a layout channel that is not associated with this script task. This is a bug.', /Users/jack/src/rust/src/libcore/option.rs:315
task 'LayoutTask' panicked at 'receiving on a closed channel', /Users/jack/src/rust/src/libsync/comm/mod.rs:835
task 'RenderTask' panicked at 'receiving on a closed channel', /Users/jack/src/rust/src/libsync/comm/mod.rs:835
task '<unnamed>' panicked at 'receiving on a closed channeltask '', <unnamed>/Users/jack/src/rust/src/libsync/comm/mod.rs' panicked at ':receiving on a closed channel835',
/Users/jack/src/rust/src/libsync/comm/mod.rs:835
task '<unnamed>' panicked at 'receiving on a closed channel', /Users/jack/src/rust/src/libsync/comm/mod.rs:835
task 'RenderTaskWatcher' panicked at 'sending on a closed channel', /Users/jack/src/rust/src/libsync/comm/mod.rs:571
task 'LayoutWorker worker 1/3' panicked at 'receiving on a closed channel', /Users/jack/src/rust/src/libsync/comm/mod.rs:835
task 'LayoutWorker worker 2/3' panicked at 'receiving on a closed channel', /Users/jack/src/rust/src/libsync/comm/mod.rs:835
task 'LayoutWorker worker 3/3' panicked at 'receiving on a closed channel', /Users/jack/src/rust/src/libsync/comm/mod.rs:835
task 'LayoutTaskWatcher' panicked at 'sending on a closed channel', /Users/jack/src/rust/src/libsync/comm/mod.rs:571
test /Users/hoverbear/git/servo/tests/content/test_iframe_contentDocument.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_inline_event_handler.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_innerHTML.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_img_width_height.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_lenient_this.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_interfaces.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_load_event.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_navigator.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_cloneNode.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_compareDocumentPosition.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_contains.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_insertBefore.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_isEqualNode.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_normalize.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_node_replaceChild.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_parentNode_querySelector.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_parentNode_querySelectorAll.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_prototypes.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_parentnodes.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_proxy_setter.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_script_type.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_textcontent.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_title.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_trace_null.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_window.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_union.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_window_performance.html ... ok
test /Users/hoverbear/git/servo/tests/content/test_window_setInterval.html ... ok

test result: ok. 74 passed; 0 failed; 0 ignored; 0 measured

Content tests completed in 4.37s
@jdm

This comment has been minimized.

Copy link

jdm commented on d4f4018 Nov 15, 2014

r+

@mrobinson
Copy link
Member

mrobinson commented Nov 15, 2014

Thanks for fixing this!

@bors-servo

This comment has been minimized.

Copy link
Contributor

bors-servo commented on d4f4018 Nov 15, 2014

saw approval from jdm
at Hoverbear@d4f4018

This comment has been minimized.

Copy link
Contributor

bors-servo replied Nov 15, 2014

merging Hoverbear/servo/fix_table_caption = d4f4018 into auto

This comment has been minimized.

Copy link
Contributor

bors-servo replied Nov 15, 2014

Hoverbear/servo/fix_table_caption = d4f4018 merged ok, testing candidate = 561fab5

This comment has been minimized.

This comment has been minimized.

Copy link
Contributor

bors-servo replied Nov 15, 2014

fast-forwarding master to auto = 561fab5

bors-servo pushed a commit that referenced this pull request Nov 15, 2014
@bors-servo bors-servo closed this Nov 15, 2014
@Hoverbear Hoverbear deleted the Hoverbear:fix_table_caption branch Nov 16, 2014
@Hoverbear Hoverbear restored the Hoverbear:fix_table_caption branch Nov 16, 2014
@Hoverbear Hoverbear deleted the Hoverbear:fix_table_caption branch Nov 16, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

4 participants
You can’t perform that action at this time.