-
Notifications
You must be signed in to change notification settings - Fork 3.2k
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
HTML: document.open() and quirks mode #10679
Merged
Merged
Changes from 5 commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
4e19c68
HTML: document.open() and quirks mode
annevk 3dba595
things are a little weird
annevk 928ef30
Rename
TimothyGu 638a164
new doctype
TimothyGu 069aa1a
No doctype + limited-quirks test
TimothyGu dd17dc9
Address comments
TimothyGu File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
69 changes: 69 additions & 0 deletions
69
html/webappapis/dynamic-markup-insertion/opening-the-input-stream/quirks.window.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
test(t => { | ||
const frame = document.body.appendChild(document.createElement("iframe")); | ||
t.add_cleanup(() => frame.contentDocument.close()); | ||
assert_equals(frame.contentDocument.compatMode, "BackCompat"); | ||
frame.contentDocument.open(); | ||
assert_equals(frame.contentDocument.compatMode, "CSS1Compat"); | ||
frame.contentDocument.close(); | ||
assert_equals(frame.contentDocument.compatMode, "BackCompat"); | ||
}, "document.open() and quirks mode (iframe, no doctype)"); | ||
|
||
test(t => { | ||
const frame = document.body.appendChild(document.createElement("iframe")); | ||
t.add_cleanup(() => frame.contentDocument.close()); | ||
assert_equals(frame.contentDocument.compatMode, "BackCompat"); | ||
frame.contentDocument.open(); | ||
assert_equals(frame.contentDocument.compatMode, "CSS1Compat"); | ||
frame.contentDocument.write("<!doctype html public"); | ||
assert_equals(frame.contentDocument.compatMode, "CSS1Compat"); | ||
frame.contentDocument.write(" \"-//IETF//DTD HTML 3//\""); | ||
assert_equals(frame.contentDocument.compatMode, "CSS1Compat"); | ||
frame.contentDocument.write(">"); | ||
assert_equals(frame.contentDocument.compatMode, "BackCompat"); | ||
frame.contentDocument.close(); | ||
assert_equals(frame.contentDocument.compatMode, "BackCompat"); | ||
}, "document.open() and quirks mode (iframe, old doctype)"); | ||
|
||
test(t => { | ||
const frame = document.body.appendChild(document.createElement("iframe")); | ||
t.add_cleanup(() => frame.contentDocument.close()); | ||
assert_equals(frame.contentDocument.compatMode, "BackCompat"); | ||
frame.contentDocument.open(); | ||
assert_equals(frame.contentDocument.compatMode, "CSS1Compat"); | ||
frame.contentDocument.write("<!doctype html"); | ||
assert_equals(frame.contentDocument.compatMode, "CSS1Compat"); | ||
frame.contentDocument.write(">"); | ||
assert_equals(frame.contentDocument.compatMode, "CSS1Compat"); | ||
frame.contentDocument.close(); | ||
assert_equals(frame.contentDocument.compatMode, "CSS1Compat"); | ||
}, "document.open() and quirks mode (iframe, new doctype)"); | ||
|
||
// Test derived from quirks/blocks-ignore-line-height.html. | ||
test(t => { | ||
const frame = document.body.appendChild(document.createElement("iframe")); | ||
t.add_cleanup(() => frame.contentDocument.close()); | ||
assert_equals(frame.contentDocument.compatMode, "BackCompat"); | ||
frame.contentDocument.open(); | ||
assert_equals(frame.contentDocument.compatMode, "CSS1Compat"); | ||
|
||
// Create the DOM tree manually rather than going through document.write() to | ||
// bypass the parser, which resets the document mode. | ||
const html = frame.contentDocument.appendChild(frame.contentDocument.createElement("html")); | ||
const body = html.appendChild(frame.contentDocument.createElement("body")); | ||
assert_equals(frame.contentDocument.body, body); | ||
body.innerHTML = ` | ||
<style>#ref { display:block }</style> | ||
<div id=test><font size=1>x</font></div> | ||
<font id=ref size=1>x</font> | ||
<div id=s_ref>x</div> | ||
`; | ||
assert_equals(frame.contentDocument.compatMode, "CSS1Compat"); | ||
|
||
const idTest = frame.contentDocument.getElementById("test"); | ||
const idRef = frame.contentDocument.getElementById("ref"); | ||
const idSRef = frame.contentDocument.getElementById("s_ref"); | ||
assert_equals(frame.contentWindow.getComputedStyle(idTest).height, | ||
frame.contentWindow.getComputedStyle(idSRef).height); | ||
assert_not_equals(frame.contentWindow.getComputedStyle(idTest).height, | ||
frame.contentWindow.getComputedStyle(idRef).height); | ||
}, "document.open() and quirks mode (iframe, not limited-quirks)"); |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's enough here to figure out that the test isn't really about the layout size of those divs, but can you spell out that this is all because there's no way to directly test if one is in limited quirks mode, and that this test is only valid on the assumption that the one linked here passes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.