Changeset 206462 in webkit
- Timestamp:
- Sep 27, 2016 1:55:20 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/imported/w3c/ChangeLog
r206453 r206462 1 2016-09-27 Chris Dumez <cdumez@apple.com> 2 3 It should be possible to dispatch events on documents that do not have a browsing context 4 https://bugs.webkit.org/show_bug.cgi?id=162620 5 6 Reviewed by Ryosuke Niwa. 7 8 * web-platform-tests/dom/events/Event-dispatch-bubbles-false-expected.txt: 9 * web-platform-tests/dom/events/Event-dispatch-bubbles-true-expected.txt: 10 Rebaseline several W3C tests now that more checks are passing. 11 12 * web-platform-tests/dom/events/Event-dispatch-other-document-expected.txt: Added. 13 * web-platform-tests/dom/events/Event-dispatch-other-document.html: Added. 14 * web-platform-tests/dom/events/w3c-import.log: 15 Import more test coverage from W3C. 16 1 17 2016-09-27 Chris Dumez <cdumez@apple.com> 2 18 -
trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-bubbles-false-expected.txt
r200309 r206462 2 2 PASS In window.document with click event 3 3 PASS In window.document with load event 4 FAIL In window.document.cloneNode(true) assert_array_equals: targets lengths differ, expected 8 got 0 5 FAIL In new Document() assert_array_equals: targets lengths differ, expected 8 got 0 6 FAIL In DOMImplementation.createHTMLDocument() assert_array_equals: targets lengths differ, expected 8 got 0 4 PASS In window.document.cloneNode(true) 5 PASS In new Document() 6 PASS In DOMImplementation.createHTMLDocument() 7 7 -
trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-bubbles-true-expected.txt
r203164 r206462 2 2 PASS In window.document with click event 3 3 PASS In window.document with load event 4 FAIL In window.document.cloneNode(true) assert_array_equals: targets lengths differ, expected 14 got 0 5 FAIL In new Document() assert_array_equals: targets lengths differ, expected 14 got 0 6 FAIL In DOMImplementation.createHTMLDocument() assert_array_equals: targets lengths differ, expected 14 got 0 4 PASS In window.document.cloneNode(true) 5 PASS In new Document() 6 PASS In DOMImplementation.createHTMLDocument() 7 7 -
trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/w3c-import.log
r204079 r206462 30 30 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-omitted-capture.html 31 31 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-order.html 32 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-other-document.html 32 33 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-propagation-stopped.html 33 34 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch.html -
trunk/Source/WebCore/ChangeLog
r206457 r206462 1 2016-09-27 Chris Dumez <cdumez@apple.com> 2 3 It should be possible to dispatch events on documents that do not have a browsing context 4 https://bugs.webkit.org/show_bug.cgi?id=162620 5 6 Reviewed by Ryosuke Niwa. 7 8 It should be possible to dispatch events on documents that do not have a browsing 9 context (e.g. Documents created using DOMImplementation.createHTMLDocument()). 10 Gecko and Blink both allow this but WebKit did not. 11 12 The approach chosen to support this is similar to the one in Blink. When constructing 13 a new document (e.g. using DOMImplementation.createHTMLDocument()) we now keep track 14 of the context document. When requesting the scriptExecutionContext(), we now return 15 the context document if the document has one instead of the document itself. 16 17 Test: imported/w3c/web-platform-tests/dom/events/Event-dispatch-other-document.html 18 19 * bindings/js/JSDocumentCustom.cpp: 20 (WebCore::JSDocument::visitAdditionalChildren): 21 * dom/DOMImplementation.cpp: 22 (WebCore::DOMImplementation::createDocument): 23 (WebCore::DOMImplementation::createHTMLDocument): 24 * dom/Document.cpp: 25 (WebCore::Document::create): 26 (WebCore::Document::cloneDataFromDocument): 27 (WebCore::Document::contextDocument): 28 (WebCore::Document::takeDOMWindowFrom): Deleted. 29 * dom/Document.h: 30 (WebCore::Document::setContextDocument): 31 (WebCore::Node::scriptExecutionContext): 32 (WebCore::Node::isDocumentNode): Deleted. 33 * dom/Document.idl: 34 * xml/XMLHttpRequest.cpp: 35 (WebCore::XMLHttpRequest::responseXML): 36 1 37 2016-09-27 Alex Christensen <achristensen@webkit.org> 2 38 -
trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp
r206386 r206462 176 176 void JSDocument::visitAdditionalChildren(SlotVisitor& visitor) 177 177 { 178 visitor.addOpaqueRoot( wrapped().scriptExecutionContext());178 visitor.addOpaqueRoot(static_cast<ScriptExecutionContext*>(&wrapped())); 179 179 } 180 180 -
trunk/Source/WebCore/dom/DOMImplementation.cpp
r205468 r206462 115 115 { 116 116 auto document = createXMLDocument(namespaceURI); 117 117 document->setContextDocument(m_document.contextDocument()); 118 118 document->setSecurityOriginPolicy(m_document.securityOriginPolicy()); 119 119 … … 154 154 document->head()->appendChild(titleElement); 155 155 } 156 document->setContextDocument(m_document.contextDocument()); 156 157 document->setSecurityOriginPolicy(m_document.securityOriginPolicy()); 157 158 return document; -
trunk/Source/WebCore/dom/Document.cpp
r206395 r206462 577 577 #endif 578 578 579 Ref<Document> Document::create( ScriptExecutionContext& context)579 Ref<Document> Document::create(Document& contextDocument) 580 580 { 581 581 Ref<Document> document = adoptRef(*new Document(nullptr, URL())); 582 document->setSecurityOriginPolicy(context.securityOriginPolicy()); 582 document->setContextDocument(contextDocument); 583 document->setSecurityOriginPolicy(contextDocument.securityOriginPolicy()); 583 584 584 585 return document; … … 3506 3507 3507 3508 setCompatibilityMode(other.m_compatibilityMode); 3509 setContextDocument(other.contextDocument()); 3508 3510 setSecurityOriginPolicy(other.securityOriginPolicy()); 3509 3511 overrideMIMEType(other.contentType()); … … 4112 4114 ASSERT(m_domWindow->document() == this); 4113 4115 ASSERT(m_domWindow->frame() == m_frame); 4116 } 4117 4118 Document& Document::contextDocument() const 4119 { 4120 if (m_contextDocument) 4121 return *m_contextDocument.get(); 4122 return const_cast<Document&>(*this); 4114 4123 } 4115 4124 -
trunk/Source/WebCore/dom/Document.h
r206395 r206462 298 298 return adoptRef(*new Document(frame, url, DefaultDocumentClass, NonRenderedPlaceholder)); 299 299 } 300 static Ref<Document> create( ScriptExecutionContext&);300 static Ref<Document> create(Document&); 301 301 302 302 virtual ~Document(); … … 771 771 // In DOM Level 2, the Document's DOMWindow is called the defaultView. 772 772 DOMWindow* defaultView() const { return domWindow(); } 773 774 Document& contextDocument() const; 775 void setContextDocument(Document& document) { m_contextDocument = document.createWeakPtr(); } 773 776 774 777 // Helper functions for forwarding DOMWindow event related tasks to the DOMWindow if it exists. … … 1412 1415 Frame* m_frame; 1413 1416 RefPtr<DOMWindow> m_domWindow; 1417 WeakPtr<Document> m_contextDocument; 1414 1418 1415 1419 Ref<CachedResourceLoader> m_cachedResourceLoader; … … 1792 1796 inline ScriptExecutionContext* Node::scriptExecutionContext() const 1793 1797 { 1794 return &document() ;1798 return &document().contextDocument(); 1795 1799 } 1796 1800 -
trunk/Source/WebCore/dom/Document.idl
r205411 r206462 21 21 [ 22 22 Constructor, 23 ConstructorCallWith= ScriptExecutionContext,23 ConstructorCallWith=Document, 24 24 CustomToJSObject, 25 25 ExportMacro=WEBCORE_EXPORT, -
trunk/Source/WebCore/xml/XMLHttpRequest.cpp
r206254 r206462 200 200 // FIXME: Set Last-Modified. 201 201 m_responseDocument->setContent(m_responseBuilder.toStringPreserveCapacity()); 202 m_responseDocument->setContextDocument(downcast<Document>(*scriptExecutionContext())); 202 203 m_responseDocument->setSecurityOriginPolicy(scriptExecutionContext()->securityOriginPolicy()); 203 204 m_responseDocument->overrideMIMEType(mimeType);
Note: See TracChangeset
for help on using the changeset viewer.