WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
16496
XMLSerializer doesn't include namespaces on nodes in HTML documents
https://bugs.webkit.org/show_bug.cgi?id=16496
Summary
XMLSerializer doesn't include namespaces on nodes in HTML documents
Christopher Schmidt
Reported
2007-12-17 20:07:17 PST
The XMLSerializer serializeToString method does not include namespaces on bare nodes. as a workaround, it is possible to wrap the node in a document, and then serialize the document instead, but this behavior does not match the behavior of Firefox 2.0 or 3.0, nor Opera.
Attachments
Patch
(4.58 KB, patch)
2012-04-06 09:39 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ec2-cr-linux-03
(6.61 MB, application/zip)
2012-04-06 11:36 PDT
,
WebKit Review Bot
no flags
Details
Patch
(13.30 KB, patch)
2012-04-08 18:49 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ec2-cr-linux-01
(6.23 MB, application/zip)
2012-04-09 07:27 PDT
,
WebKit Review Bot
no flags
Details
Patch
(13.85 KB, patch)
2012-04-13 05:38 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ec2-cr-linux-04
(6.19 MB, application/zip)
2012-04-13 06:30 PDT
,
WebKit Review Bot
no flags
Details
Patch
(13.89 KB, patch)
2012-04-24 09:34 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ec2-cr-linux-03
(6.10 MB, application/zip)
2012-04-24 19:07 PDT
,
WebKit Review Bot
no flags
Details
Patch
(16.11 KB, patch)
2013-06-22 19:37 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from webkit-ews-07 for mac-mountainlion
(538.78 KB, application/zip)
2013-06-23 04:46 PDT
,
Build Bot
no flags
Details
Patch
(17.67 KB, patch)
2013-06-23 08:04 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Patch
(17.95 KB, patch)
2013-06-24 09:21 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from webkit-ews-11 for mac-mountainlion-wk2
(545.51 KB, application/zip)
2013-06-24 10:45 PDT
,
Build Bot
no flags
Details
Archive of layout-test-results from webkit-ews-05 for mac-mountainlion
(589.71 KB, application/zip)
2013-06-24 11:03 PDT
,
Build Bot
no flags
Details
Patch
(19.75 KB, patch)
2013-06-24 19:14 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from webkit-ews-10 for mac-mountainlion-wk2
(499.35 KB, application/zip)
2013-06-24 21:01 PDT
,
Build Bot
no flags
Details
Archive of layout-test-results from webkit-ews-08 for mac-mountainlion
(514.89 KB, application/zip)
2013-06-24 21:18 PDT
,
Build Bot
no flags
Details
Patch
(19.94 KB, patch)
2013-06-25 07:16 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Patch
(20.19 KB, patch)
2013-06-25 14:16 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Patch
(20.19 KB, patch)
2013-06-26 07:06 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Patch
(20.44 KB, patch)
2013-06-27 15:23 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from webkit-ews-06 for mac-mountainlion
(647.24 KB, application/zip)
2013-06-27 16:27 PDT
,
Build Bot
no flags
Details
Archive of layout-test-results from webkit-ews-11 for mac-mountainlion-wk2
(632.89 KB, application/zip)
2013-06-28 00:06 PDT
,
Build Bot
no flags
Details
Patch
(21.15 KB, patch)
2013-06-28 12:21 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from webkit-ews-15 for mac-mountainlion-wk2
(483.64 KB, application/zip)
2013-06-28 14:05 PDT
,
Build Bot
no flags
Details
Archive of layout-test-results from webkit-ews-06 for mac-mountainlion
(646.40 KB, application/zip)
2013-06-28 14:27 PDT
,
Build Bot
no flags
Details
Patch
(28.34 KB, patch)
2013-06-28 14:36 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Patch
(26.96 KB, patch)
2013-07-15 14:08 PDT
,
Rob Buis
rniwa
: review+
Details
Formatted Diff
Diff
Show Obsolete
(14)
View All
Add attachment
proposed patch, testcase, etc.
David Kilzer (:ddkilzer)
Comment 1
2007-12-18 05:39:12 PST
Confirmed with a local debug build of WebKit
r28774
with Safari 3.0.4 (523.12) on Mac OS X 10.4.11 (8S165).
Alexey Proskuryakov
Comment 2
2007-12-25 07:44:08 PST
The issue here is that the node in question belongs to an HTML document, so we serialize it accordingly. Firefox and Opera use XML serialization for XMLSerializer, and HTML one for innerHTML. WebKit uses the same code for both, but checks document type.
Alexey Proskuryakov
Comment 3
2010-10-16 17:17:25 PDT
See also:
bug 47768
.
Ryosuke Niwa
Comment 4
2012-04-03 12:02:44 PDT
This is a bug in markup.cpp.
Rob Buis
Comment 5
2012-04-06 09:39:32 PDT
Created
attachment 136035
[details]
Patch
WebKit Review Bot
Comment 6
2012-04-06 11:36:36 PDT
Comment on
attachment 136035
[details]
Patch
Attachment 136035
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/12264985
New failing tests: fast/innerHTML/innerHTML-custom-tag.html editing/pasteboard/paste-noscript-svg.html
WebKit Review Bot
Comment 7
2012-04-06 11:36:42 PDT
Created
attachment 136045
[details]
Archive of layout-test-results from ec2-cr-linux-03 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: ec2-cr-linux-03 Port: <class 'webkitpy.common.config.ports.ChromiumXVFBPort'> Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick
Rob Buis
Comment 8
2012-04-08 18:49:37 PDT
Created
attachment 136169
[details]
Patch
WebKit Review Bot
Comment 9
2012-04-09 07:27:07 PDT
Comment on
attachment 136169
[details]
Patch
Attachment 136169
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/12372189
New failing tests: fast/xsl/xslt-processor.html
WebKit Review Bot
Comment 10
2012-04-09 07:27:13 PDT
Created
attachment 136220
[details]
Archive of layout-test-results from ec2-cr-linux-01 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: ec2-cr-linux-01 Port: <class 'webkitpy.common.config.ports.ChromiumXVFBPort'> Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick
Ryosuke Niwa
Comment 11
2012-04-11 13:20:33 PDT
Comment on
attachment 136169
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=136169&action=review
> Source/WebCore/editing/markup.cpp:762 > +String createMarkup(const Node* node, EChildrenOnly childrenOnly, Vector<Node*>* nodes, EAbsoluteURLs shouldResolveURLs, bool xmlFragmentSerialization)
Please use enum instead of bool. r- because of this.
> Source/WebCore/xml/XMLSerializer.cpp:44 > + return createMarkup(node, IncludeNode, 0, DoNotResolveURLs, true);
With enum, the semantics of this code will be much clearer.
Rob Buis
Comment 12
2012-04-13 05:38:33 PDT
Created
attachment 137071
[details]
Patch
WebKit Review Bot
Comment 13
2012-04-13 06:30:38 PDT
Comment on
attachment 137071
[details]
Patch
Attachment 137071
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/12392908
New failing tests: fast/xsl/xslt-processor.html
WebKit Review Bot
Comment 14
2012-04-13 06:30:53 PDT
Created
attachment 137078
[details]
Archive of layout-test-results from ec2-cr-linux-04 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: ec2-cr-linux-04 Port: <class 'webkitpy.common.config.ports.ChromiumXVFBPort'> Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick
Rob Buis
Comment 15
2012-04-13 07:05:40 PDT
(In reply to
comment #11
)
> (From update of
attachment 136169
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=136169&action=review
> > > Source/WebCore/editing/markup.cpp:762 > > +String createMarkup(const Node* node, EChildrenOnly childrenOnly, Vector<Node*>* nodes, EAbsoluteURLs shouldResolveURLs, bool xmlFragmentSerialization) > > Please use enum instead of bool. r- because of this. > > > Source/WebCore/xml/XMLSerializer.cpp:44 > > + return createMarkup(node, IncludeNode, 0, DoNotResolveURLs, true); > > With enum, the semantics of this code will be much clearer.
Again a good suggestion with the enum, I tried to implement this in my latest patch. About the failing testcase, I know the <br /> part is an improvement. We serialize now in xml mode so we end up with <br /> to feed to xslt, same as in FF. The ns addition on <head> is something which I am not sure libxslt or my patch is doing, will check later. Cheers, Rob.
Ryosuke Niwa
Comment 16
2012-04-22 23:02:56 PDT
Comment on
attachment 137071
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=137071&action=review
> Source/WebCore/editing/MarkupAccumulator.cpp:491 > + if (!m_fragmentSerialization == XMLFragmentSerialization && node->document()->isHTMLDocument())
You mean m_fragmentSerialization != XMLFragmentSerialization?
Rob Buis
Comment 17
2012-04-24 09:34:00 PDT
Created
attachment 138579
[details]
Patch
Ryosuke Niwa
Comment 18
2012-04-24 10:34:08 PDT
Comment on
attachment 138579
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=138579&action=review
> LayoutTests/fast/dom/dom-serialize-namespace.html:1 > +<html>
You might want DOCTYPE here.
Rob Buis
Comment 19
2012-04-24 13:08:14 PDT
Hi Ryosuke, (In reply to
comment #18
)
> (From update of
attachment 138579
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=138579&action=review
> > > LayoutTests/fast/dom/dom-serialize-namespace.html:1 > > +<html> > > You might want DOCTYPE here.
Thanks! However, should I rebaseline fast/xsl/xslt-processor.html? I am not sure how the end result should look, also in FF and Opera the test does not seem to work so I can't compare. Should I look into the test result differences more or do you know how it should look? Cheers, Rob.
WebKit Review Bot
Comment 20
2012-04-24 19:07:15 PDT
Comment on
attachment 138579
[details]
Patch
Attachment 138579
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/12518413
New failing tests: fast/xsl/xslt-processor.html
WebKit Review Bot
Comment 21
2012-04-24 19:07:21 PDT
Created
attachment 138718
[details]
Archive of layout-test-results from ec2-cr-linux-03 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: ec2-cr-linux-03 Port: <class 'webkitpy.common.config.ports.ChromiumXVFBPort'> Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick
Ryosuke Niwa
Comment 22
2012-07-19 15:42:21 PDT
Has this patch been landed?
Eric Seidel (no email)
Comment 23
2013-01-04 00:49:22 PST
I do not believe this was ever landed.
Rob Buis
Comment 24
2013-06-19 12:52:46 PDT
(In reply to
comment #23
)
> I do not believe this was ever landed.
Sorry guys, I can't remember exactly what happened but maybe there were still DRT tests failing with the final patch. I can have another look this weekend.
Rob Buis
Comment 25
2013-06-22 19:37:20 PDT
Created
attachment 205259
[details]
Patch
Build Bot
Comment 26
2013-06-23 04:46:54 PDT
Comment on
attachment 205259
[details]
Patch
Attachment 205259
[details]
did not pass mac-ews (mac): Output:
http://webkit-queues.appspot.com/results/971324
New failing tests: fast/xsl/xslt-processor.html svg/custom/xlink-prefix-in-attributes.html
Build Bot
Comment 27
2013-06-23 04:46:56 PDT
Created
attachment 205267
[details]
Archive of layout-test-results from webkit-ews-07 for mac-mountainlion The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: webkit-ews-07 Port: mac-mountainlion Platform: Mac OS X 10.8.3
Rob Buis
Comment 28
2013-06-23 08:04:19 PDT
Created
attachment 205270
[details]
Patch
Rob Buis
Comment 29
2013-06-24 09:21:09 PDT
Created
attachment 205301
[details]
Patch
Build Bot
Comment 30
2013-06-24 10:45:34 PDT
Comment on
attachment 205301
[details]
Patch
Attachment 205301
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
http://webkit-queues.appspot.com/results/961768
New failing tests: fast/xsl/xslt-processor.html
Build Bot
Comment 31
2013-06-24 10:45:36 PDT
Created
attachment 205308
[details]
Archive of layout-test-results from webkit-ews-11 for mac-mountainlion-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: webkit-ews-11 Port: mac-mountainlion-wk2 Platform: Mac OS X 10.8.3
Build Bot
Comment 32
2013-06-24 11:03:41 PDT
Comment on
attachment 205301
[details]
Patch
Attachment 205301
[details]
did not pass mac-ews (mac): Output:
http://webkit-queues.appspot.com/results/981235
New failing tests: fast/xsl/xslt-processor.html
Build Bot
Comment 33
2013-06-24 11:03:45 PDT
Created
attachment 205311
[details]
Archive of layout-test-results from webkit-ews-05 for mac-mountainlion The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: webkit-ews-05 Port: mac-mountainlion Platform: Mac OS X 10.8.3
Rob Buis
Comment 34
2013-06-24 19:14:10 PDT
Created
attachment 205354
[details]
Patch
Build Bot
Comment 35
2013-06-24 21:01:02 PDT
Comment on
attachment 205354
[details]
Patch
Attachment 205354
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
http://webkit-queues.appspot.com/results/977329
New failing tests: inspector/elements/set-outer-html-for-xhtml.xhtml
Build Bot
Comment 36
2013-06-24 21:01:05 PDT
Created
attachment 205361
[details]
Archive of layout-test-results from webkit-ews-10 for mac-mountainlion-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: webkit-ews-10 Port: mac-mountainlion-wk2 Platform: Mac OS X 10.8.3
Build Bot
Comment 37
2013-06-24 21:18:27 PDT
Comment on
attachment 205354
[details]
Patch
Attachment 205354
[details]
did not pass mac-ews (mac): Output:
http://webkit-queues.appspot.com/results/926539
New failing tests: inspector/elements/set-outer-html-for-xhtml.xhtml
Build Bot
Comment 38
2013-06-24 21:18:30 PDT
Created
attachment 205362
[details]
Archive of layout-test-results from webkit-ews-08 for mac-mountainlion The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: webkit-ews-08 Port: mac-mountainlion Platform: Mac OS X 10.8.3
Rob Buis
Comment 39
2013-06-25 07:16:29 PDT
Created
attachment 205402
[details]
Patch
Ryosuke Niwa
Comment 40
2013-06-25 10:25:52 PDT
Comment on
attachment 205402
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=205402&action=review
> Source/WebCore/editing/MarkupAccumulator.cpp:107 > + , m_fragmentSerialization(fragmentSerialization)
This implicit conversion to bool is bogus.
> Source/WebCore/editing/MarkupAccumulator.cpp:436 > + if (element->namespaceURI() == XMLNames::xmlNamespaceURI) > + prefix = xmlAtom; > + if (!prefix.isEmpty()) { > + result.append(prefix); > + result.append(':'); > + }
prefix is always empty unless we execute the assignment above: prefix = xmlAtom.
> Source/WebCore/editing/MarkupAccumulator.cpp:551 > - if (node->document()->isHTMLDocument()) > + if (m_fragmentSerialization != XMLFragmentSerialization && node->document()->isHTMLDocument())
It seems like we want to extract this condition as a helper function. In fact, we might even want to add a boolean indicating this as a member variable to speed things up.
> Source/WebCore/editing/MarkupAccumulator.h:117 > + bool m_fragmentSerialization;
Why is this a boolean?
Rob Buis
Comment 41
2013-06-25 13:02:18 PDT
(In reply to
comment #40
)
> (From update of
attachment 205402
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=205402&action=review
> > > Source/WebCore/editing/MarkupAccumulator.cpp:107 > > + , m_fragmentSerialization(fragmentSerialization) > > This implicit conversion to bool is bogus.
Right, see below.
> > Source/WebCore/editing/MarkupAccumulator.cpp:436 > > + if (element->namespaceURI() == XMLNames::xmlNamespaceURI) > > + prefix = xmlAtom; > > + if (!prefix.isEmpty()) { > > + result.append(prefix); > > + result.append(':'); > > + } > > prefix is always empty unless we execute the assignment above: prefix = xmlAtom.
Right, I was thinking of adding more cases where we assign prefix for certain namespaces like we do for attributes. To fix this bug this seems to be actually the only one I need. I guess I'll eliminate prefix temp var for now.
> > Source/WebCore/editing/MarkupAccumulator.cpp:551 > > - if (node->document()->isHTMLDocument()) > > + if (m_fragmentSerialization != XMLFragmentSerialization && node->document()->isHTMLDocument()) > > It seems like we want to extract this condition as a helper function. > In fact, we might even want to add a boolean indicating this as a member variable to speed things up.
A helper is a good idea, will do that.
> > Source/WebCore/editing/MarkupAccumulator.h:117 > > + bool m_fragmentSerialization; > > Why is this a boolean?
Seems like a mistake on my behalf, fixing. Will have a new patch up soon.
Rob Buis
Comment 42
2013-06-25 14:16:28 PDT
Created
attachment 205423
[details]
Patch
Rob Buis
Comment 43
2013-06-26 07:06:28 PDT
Created
attachment 205487
[details]
Patch
Rob Buis
Comment 44
2013-06-26 07:10:13 PDT
Uploaded one more time to see if it goes green.
Ryosuke Niwa
Comment 45
2013-06-26 14:00:15 PDT
Comment on
attachment 205487
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=205487&action=review
> Source/WebCore/ChangeLog:9 > +
http://html5.org/specs/dom-parsing.html#xmlserializer
. In this mode
Could you refer to a specific revision of
http://domparsing.spec.whatwg.org
instead? Since it's a live standard, the content at the given URL is going to change, and I'd like to be able to identify which version of the specification is implemented in this patch in the future.
> Source/WebCore/editing/MarkupAccumulator.cpp:276 > - if (attribute.name() == XMLNSNames::xmlnsAttr) { > + if (attribute.name() == XMLNSNames::xmlnsAttr || (inXMLFragmentSerialization() && attribute.localName() == XMLNSNames::xmlnsAttr.localName() && attribute.namespaceURI().isEmpty())) {
It seems like this is part of the DOM4 spec here:
http://dom.spec.whatwg.org/#locate-a-namespace
instead of it being specified in the serialization spec. If that were the case, then we should probably add a new member function to Attribute that implements this locate-a-namespace algorithm.
> Source/WebCore/editing/MarkupAccumulator.cpp:304 > + // Suppress xmlns: for xml namespace, it is implied > + if (inXMLFragmentSerialization() && namespaceURI == XMLNames::xmlNamespaceURI) > + return;
Where is this specified? The current specification is extremely vague about this.
> Source/WebCore/editing/MarkupAccumulator.cpp:434 > + if (inXMLFragmentSerialization() && element->prefix().isEmpty()) { > + if (element->namespaceURI() == XMLNames::xmlNamespaceURI) { > + result.append(xmlAtom); > + result.append(':'); > + } > + }
Ditto.
> Source/WebCore/editing/MarkupAccumulator.cpp:436 > + if ((inXMLFragmentSerialization() || !element->document()->isHTMLDocument()) && namespaces && shouldAddNamespaceElement(element))
Ditto.
> Source/WebCore/editing/MarkupAccumulator.cpp:491 > + if ((inXMLFragmentSerialization() || !documentIsHTML) && namespaces && shouldAddNamespaceAttribute(attribute, *namespaces)) > + appendNamespace(result, prefixedName.prefix(), prefixedName.namespaceURI(), *namespaces);
Ditto.
Rob Buis
Comment 46
2013-06-27 15:23:33 PDT
Created
attachment 205641
[details]
Patch
Build Bot
Comment 47
2013-06-27 16:27:12 PDT
Comment on
attachment 205641
[details]
Patch
Attachment 205641
[details]
did not pass mac-ews (mac): Output:
http://webkit-queues.appspot.com/results/974242
New failing tests: fast/xsl/xslt-processor.html
Build Bot
Comment 48
2013-06-27 16:27:15 PDT
Created
attachment 205645
[details]
Archive of layout-test-results from webkit-ews-06 for mac-mountainlion The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: webkit-ews-06 Port: mac-mountainlion Platform: Mac OS X 10.8.3
Build Bot
Comment 49
2013-06-28 00:06:44 PDT
Comment on
attachment 205641
[details]
Patch
Attachment 205641
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
http://webkit-queues.appspot.com/results/995333
New failing tests: fast/xsl/xslt-processor.html
Build Bot
Comment 50
2013-06-28 00:06:49 PDT
Created
attachment 205673
[details]
Archive of layout-test-results from webkit-ews-11 for mac-mountainlion-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: webkit-ews-11 Port: mac-mountainlion-wk2 Platform: Mac OS X 10.8.3
Rob Buis
Comment 51
2013-06-28 12:21:15 PDT
Created
attachment 205732
[details]
Patch
Build Bot
Comment 52
2013-06-28 14:05:32 PDT
Comment on
attachment 205732
[details]
Patch
Attachment 205732
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
http://webkit-queues.appspot.com/results/981812
New failing tests: inspector/elements/set-outer-html-for-xhtml.xhtml
Build Bot
Comment 53
2013-06-28 14:05:36 PDT
Created
attachment 205742
[details]
Archive of layout-test-results from webkit-ews-15 for mac-mountainlion-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: webkit-ews-15 Port: mac-mountainlion-wk2 Platform: Mac OS X 10.8.3
Build Bot
Comment 54
2013-06-28 14:26:58 PDT
Comment on
attachment 205732
[details]
Patch
Attachment 205732
[details]
did not pass mac-ews (mac): Output:
http://webkit-queues.appspot.com/results/866608
New failing tests: svg/batik/filters/feTile.svg inspector/elements/set-outer-html-for-xhtml.xhtml
Build Bot
Comment 55
2013-06-28 14:27:02 PDT
Created
attachment 205743
[details]
Archive of layout-test-results from webkit-ews-06 for mac-mountainlion The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: webkit-ews-06 Port: mac-mountainlion Platform: Mac OS X 10.8.3
Rob Buis
Comment 56
2013-06-28 14:36:05 PDT
Created
attachment 205744
[details]
Patch
Rob Buis
Comment 57
2013-06-28 18:45:18 PDT
Hi Ryosuke, (In reply to
comment #45
)
> (From update of
attachment 205487
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=205487&action=review
> > > Source/WebCore/ChangeLog:9 > > +
http://html5.org/specs/dom-parsing.html#xmlserializer
. In this mode > > Could you refer to a specific revision of
http://domparsing.spec.whatwg.org
instead? > Since it's a live standard, the content at the given URL is going to change, and > I'd like to be able to identify which version of the specification is implemented in this patch in the future.
I tried to do that in my latest patch.
> > Source/WebCore/editing/MarkupAccumulator.cpp:276 > > - if (attribute.name() == XMLNSNames::xmlnsAttr) { > > + if (attribute.name() == XMLNSNames::xmlnsAttr || (inXMLFragmentSerialization() && attribute.localName() == XMLNSNames::xmlnsAttr.localName() && attribute.namespaceURI().isEmpty())) { > > It seems like this is part of the DOM4 spec here: >
http://dom.spec.whatwg.org/#locate-a-namespace
> instead of it being specified in the serialization spec.
It is a bit different, this one does not look at ancestors. I changed this code a bit in my latest patch.
> If that were the case, then we should probably add a new member function to Attribute that implements this locate-a-namespace algorithm. > > > Source/WebCore/editing/MarkupAccumulator.cpp:304 > > + // Suppress xmlns: for xml namespace, it is implied > > + if (inXMLFragmentSerialization() && namespaceURI == XMLNames::xmlNamespaceURI) > > + return; > > Where is this specified? The current specification is extremely vague about this.
I removed this in my latest patch, but it is covered under Namespace constraint: Reserved Prefixes and Namespace Names in
http://www.w3.org/TR/REC-xml-names/
.
> > Source/WebCore/editing/MarkupAccumulator.cpp:434 > > + if (inXMLFragmentSerialization() && element->prefix().isEmpty()) { > > + if (element->namespaceURI() == XMLNames::xmlNamespaceURI) { > > + result.append(xmlAtom); > > + result.append(':'); > > + } > > + } > > Ditto.
This is done in order not to loose the namespace associated with the element, I put a comment for that in my latest patch.
> > Source/WebCore/editing/MarkupAccumulator.cpp:436 > > + if ((inXMLFragmentSerialization() || !element->document()->isHTMLDocument()) && namespaces && shouldAddNamespaceElement(element)) > > Ditto.
I think this actually needs no explanation, for xml serializing we simply may want to add a namespace depending on the element.
> > Source/WebCore/editing/MarkupAccumulator.cpp:491 > > + if ((inXMLFragmentSerialization() || !documentIsHTML) && namespaces && shouldAddNamespaceAttribute(attribute, *namespaces)) > > + appendNamespace(result, prefixedName.prefix(), prefixedName.namespaceURI(), *namespaces); > > Ditto.
For xml serializing we simply may want to add a namespace depending on the attribute. Note that the latest patch finally shows up all green!
Rob Buis
Comment 58
2013-07-15 14:08:16 PDT
Created
attachment 206684
[details]
Patch
Ryosuke Niwa
Comment 59
2013-07-15 14:28:01 PDT
Comment on
attachment 206684
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=206684&action=review
> Source/WebCore/ChangeLog:9 > +
http://html5.org/specs/dom-parsing.html#xmlserializer
(23 May 2013). In this mode
Could you refer to a specific hash instead?
> Source/WebCore/ChangeLog:27 > + (WebCore::MarkupAccumulator::serializeNodesWithNamespaces): makes sure xml namespace/prefix is known so it is never used in namespace declarations. > + (WebCore::MarkupAccumulator::appendNamespace): Avoid adding namespace declarations that do not differ from current default namespace. > + (WebCore::MarkupAccumulator::appendOpenTag): Print xml prefix if the element's namespace is XML to avoid conflicts. > + (WebCore::MarkupAccumulator::appendAttribute): Force any calculated prefix/namespace pair into the generated namespace. > + (WebCore::MarkupAccumulator::shouldAddNamespaceAttribute): Also take into account xmlns attributes with no namespace. > + (WebCore::MarkupAccumulator::shouldSelfClose): Force self-closing to create well-formed XML elements. > + * editing/MarkupAccumulator.h: Use EFragmentSerialization.
It's still unclear to me which parts are referring to the spec mentioned about and which parts are matching Firefox/IE. It's helpful have that information in the change log, not in the code.
> Source/WebCore/editing/MarkupAccumulator.cpp:144 > + // Make sure xml prefix and namespace are always known to ensure these Namespace constraints: > + // The prefix xml MUST NOT be declared as the default namespace. > + // The prefix xml MAY, but need not, be declared (XMLNames specification, Namespace constraint: Reserved Prefixes and Namespace Names)
Instead of copying & pasting the spec. text, can we refer to a specific section from which this text is copied?
> Source/WebCore/editing/MarkupAccumulator.cpp:436 > + // According to DOM3 appendix B Namespace Normalization we now should create a default namespace declaration to make this namespace well-formed. > + // However, XMLNames specification, Namespace constraint: Reserved Prefixes and Namespace Names says: > + // "The prefix xml MUST NOT be declared as the default namespace.", so use the xml prefix explicitly.
Ditto about referring to sections of the specifications.
Rob Buis
Comment 60
2013-07-15 17:44:28 PDT
Thanks for the review! (In reply to
comment #59
)
> (From update of
attachment 206684
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=206684&action=review
> > > Source/WebCore/ChangeLog:9 > > +
http://html5.org/specs/dom-parsing.html#xmlserializer
(23 May 2013). In this mode > > Could you refer to a specific hash instead?
I added a commit hash before landing.
> > Source/WebCore/ChangeLog:27 > > + (WebCore::MarkupAccumulator::serializeNodesWithNamespaces): makes sure xml namespace/prefix is known so it is never used in namespace declarations. > > + (WebCore::MarkupAccumulator::appendNamespace): Avoid adding namespace declarations that do not differ from current default namespace. > > + (WebCore::MarkupAccumulator::appendOpenTag): Print xml prefix if the element's namespace is XML to avoid conflicts. > > + (WebCore::MarkupAccumulator::appendAttribute): Force any calculated prefix/namespace pair into the generated namespace. > > + (WebCore::MarkupAccumulator::shouldAddNamespaceAttribute): Also take into account xmlns attributes with no namespace. > > + (WebCore::MarkupAccumulator::shouldSelfClose): Force self-closing to create well-formed XML elements. > > + * editing/MarkupAccumulator.h: Use EFragmentSerialization. > > It's still unclear to me which parts are referring to the spec mentioned about > and which parts are matching Firefox/IE. It's helpful have that information in the change log, not in the code.
I reworded the commit log, I still thing the per method explanations are useful as well.
> > Source/WebCore/editing/MarkupAccumulator.cpp:144 > > + // Make sure xml prefix and namespace are always known to ensure these Namespace constraints: > > + // The prefix xml MUST NOT be declared as the default namespace. > > + // The prefix xml MAY, but need not, be declared (XMLNames specification, Namespace constraint: Reserved Prefixes and Namespace Names) > > Instead of copying & pasting the spec. text, can we refer to a specific section from which this text is copied?
Done.
> > Source/WebCore/editing/MarkupAccumulator.cpp:436 > > + // According to DOM3 appendix B Namespace Normalization we now should create a default namespace declaration to make this namespace well-formed. > > + // However, XMLNames specification, Namespace constraint: Reserved Prefixes and Namespace Names says: > > + // "The prefix xml MUST NOT be declared as the default namespace.", so use the xml prefix explicitly. > > Ditto about referring to sections of the specifications.
Done. I discovered before landing that one change in appendAttribute is not needed to fix this bug, I left it out for now but think I'll include it in a patch for
bug 22958
.
Rob Buis
Comment 61
2013-07-16 15:44:18 PDT
Committed
r152685
: <
http://trac.webkit.org/changeset/152685
>
Lucas Forschler
Comment 62
2019-02-06 09:03:59 PST
Mass moving XML DOM bugs to the "DOM" Component.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug