[webkit-reviews] review denied: [Bug 42365] HTML5 Parser: document.write in a asynchronous script which is specified to load before page finish blows away document : [Attachment 62338] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Jul 22 16:05:48 PDT 2010
Eric Seidel <eric at webkit.org> has denied Adam Barth <abarth at webkit.org>'s
request for review:
Bug 42365: HTML5 Parser: document.write in a asynchronous script which is
specified to load before page finish blows away document
https://bugs.webkit.org/show_bug.cgi?id=42365
Attachment 62338: Patch
https://bugs.webkit.org/attachment.cgi?id=62338&action=review
------- Additional Comments from Eric Seidel <eric at webkit.org>
I'm having trouble understanding this patch.
LayoutTests/http/tests/misc/write-from-dom-script.html:9
+ script.src =
"data:text/javascript,document.write('FAIL');document.close();";
It's sad that this script would "PASS" if your script had an error. Would be
better if the script set some global that was also checked and could cause
FAIL.
LayoutTests/http/tests/misc/write-while-waiting.html:8
+ setTimeout("document.write('PASS');document.close();", 100);
Would be nice if you could explain in the ChangeLog why this is right? Maybe
you did and I didn't understand.
WebCore/dom/Document.cpp:366
+ , m_isWriteNeutralised(false)
It's sad that this is on Document and not DocumentWriter or something else.
Document is such a dumping ground.
WebCore/dom/Document.cpp:2020
+ bool insertionPointIsUndefined = !m_parser ||
!m_parser->hasInsertionPoint();
This would have been more clear (to me) as:
bool hasInsertionPoint = m_parser && m_parser->hasInsertionPoint();
WebCore/dom/Document.cpp:2023
+ if (insertionPointIsUndefined && isWriteNeutralised())
Then this becomes !hasInsertionPoint
WebCore/dom/Document.h:1005
+ bool isWriteNeutralised() const { return m_isWriteNeutralised; }
I wish the spec called this "writeDisabled", Neutralized is a poor name IMO.
Hard to spell, hard to type, hard for our numerous non-english speakers to
understand.
WebCore/dom/DocumentParser.h:44
+ virtual bool hasInsertionPoint() { return true; }
So what does this mean when true? Who should override it? If it's true,
you'll always get an insert call?
WebCore/dom/ScriptElement.cpp:59
+ // If the element's Document has an active parser, and the parser's
script
This comment makes it seem like this should not go inside ScriptElement.
WebCore/dom/ScriptElement.cpp:61
+ // "parser-inserted" flag set, the user agent must set the element's
Or maybe that the Document should be notified that the script was inserted and
it should make a decision to nueter itself or not.
WebCore/dom/ScriptElement.cpp:
+ static inline bool useHTML5Parser(Document* document)
This was previous dead code?
WebCore/dom/ScriptElement.cpp:203
+ // flag was set as being itself "write-neutralised". Let
neutralised doc
God this is an awful name. I need to complain to Hixie.
Done: http://www.w3.org/Bugs/Public/show_bug.cgi?id=10228
Btw, my spelling corrector seems to think it's "neutralized" not "neutralised".
Yet another reason why that name needs to go.
WebCore/html/HTMLDocumentParser.cpp:218
+ if (m_scriptRunner && m_scriptRunner->inScriptExecution())
This needs a comment to explain why. It's not clear why "inScirptExecution"
means there is an insertion point. Why would that even be needed? Can't we
check m_input?
WebCore/html/HTMLDocumentParser.cpp:220
+ // FIXME: Checking whether we've seen end of file isn't quite right
when
I don't undersand this FIXME. Can you explain better?
More information about the webkit-reviews
mailing list