<https://webkit.org/b/119989> Make use of Node::ownerDocument a compile time error
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 19 Aug 2013 06:40:25 +0000 (06:40 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 19 Aug 2013 06:40:25 +0000 (06:40 +0000)
Reviewed by Sam Weinig.

Source/WebCore:

* dom/Element.h: Deleted the ownerDocument function. For compilers that don't support
deleted functions, it is instead overrides the base class function with one that is
private and not defined, which accomplishes almost the same thing: An error, either
at compile time or link time.

* bindings/js/JSHTMLElementCustom.cpp:
(WebCore::JSHTMLElement::pushEventHandlerScope): Use document instead of ownerDocument.
* dom/Document.cpp:
(WebCore::Document::~Document): Added a comment about this clearly-incorrect code.
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didPushShadowRoot): Use document instead of ownerDocument.
(WebCore::InspectorInstrumentation::willPopShadowRoot): Ditto.
* inspector/InspectorStyleSheet.cpp:
(WebCore::InspectorStyleSheetForInlineStyle::setStyleText): Ditto.
* plugins/PluginView.cpp:
(WebCore::getFrame): Removed ineffective call to ownerDocument after document when it
returns 0. It will never return anything other than 0 in that case.
* rendering/RenderVideo.cpp:
(WebCore::RenderVideo::calculateIntrinsicSize): Use document instead of ownerDocument.
Did not remove the null check at this time, although I'm pretty sure it's bogus. We can
fix that when/if we change the return type of Element::document to a reference.
* svg/SVGFEImageElement.cpp:
(WebCore::SVGFEImageElement::requestImageResource): Use document instead of ownerDocument.

Source/WebKit2:

* WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
(WebKit::PDFPluginChoiceAnnotation::createAnnotationElement): Use document instead of
ownerDocument.
* WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:
(WebKit::PDFPluginTextAnnotation::createAnnotationElement): Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@154264 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 files changed:
Source/WebCore/ChangeLog
Source/WebCore/bindings/js/JSHTMLElementCustom.cpp
Source/WebCore/dom/Document.cpp
Source/WebCore/dom/Element.h
Source/WebCore/inspector/InspectorInstrumentation.h
Source/WebCore/inspector/InspectorStyleSheet.cpp
Source/WebCore/plugins/PluginView.cpp
Source/WebCore/rendering/RenderVideo.cpp
Source/WebCore/svg/SVGFEImageElement.cpp
Source/WebKit2/ChangeLog
Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm
Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm

index 20569bf..4d4857d 100644 (file)
@@ -1,5 +1,35 @@
 2013-08-18  Darin Adler  <darin@apple.com>
 
+        <https://webkit.org/b/119989> Make use of Node::ownerDocument a compile time error
+
+        Reviewed by Sam Weinig.
+
+        * dom/Element.h: Deleted the ownerDocument function. For compilers that don't support
+        deleted functions, it is instead overrides the base class function with one that is
+        private and not defined, which accomplishes almost the same thing: An error, either
+        at compile time or link time.
+
+        * bindings/js/JSHTMLElementCustom.cpp:
+        (WebCore::JSHTMLElement::pushEventHandlerScope): Use document instead of ownerDocument.
+        * dom/Document.cpp:
+        (WebCore::Document::~Document): Added a comment about this clearly-incorrect code.
+        * inspector/InspectorInstrumentation.h:
+        (WebCore::InspectorInstrumentation::didPushShadowRoot): Use document instead of ownerDocument.
+        (WebCore::InspectorInstrumentation::willPopShadowRoot): Ditto.
+        * inspector/InspectorStyleSheet.cpp:
+        (WebCore::InspectorStyleSheetForInlineStyle::setStyleText): Ditto.
+        * plugins/PluginView.cpp:
+        (WebCore::getFrame): Removed ineffective call to ownerDocument after document when it
+        returns 0. It will never return anything other than 0 in that case.
+        * rendering/RenderVideo.cpp:
+        (WebCore::RenderVideo::calculateIntrinsicSize): Use document instead of ownerDocument.
+        Did not remove the null check at this time, although I'm pretty sure it's bogus. We can
+        fix that when/if we change the return type of Element::document to a reference.
+        * svg/SVGFEImageElement.cpp:
+        (WebCore::SVGFEImageElement::requestImageResource): Use document instead of ownerDocument.
+
+2013-08-18  Darin Adler  <darin@apple.com>
+
         <https://webkit.org/b/119993> Remove most remaining platform-specific code from Clipboard class
 
         Reviewed by Sam Weinig.
index df7a637..b1e8e7d 100644 (file)
@@ -39,7 +39,7 @@ JSScope* JSHTMLElement::pushEventHandlerScope(ExecState* exec, JSScope* scope) c
     HTMLElement* element = impl();
 
     // The document is put on first, fall back to searching it only after the element and form.
-    scope = JSWithScope::create(exec, asObject(toJS(exec, globalObject(), element->ownerDocument())), scope);
+    scope = JSWithScope::create(exec, asObject(toJS(exec, globalObject(), element->document())), scope);
 
     // The form is next, searched before the document, but after the element itself.
     if (HTMLFormElement* form = element->form())
index 7bd99b6..8eb4c2f 100644 (file)
@@ -554,9 +554,11 @@ Document::~Document()
 #endif
 
 #if ENABLE(TOUCH_EVENT_TRACKING)
+    // FIXME: This is dead code. The ownerDocument function returns 0 when called on a document.
     if (Document* ownerDocument = this->ownerDocument())
         ownerDocument->didRemoveEventTargetNode(this);
 #endif
+
     // FIXME: Should we reset m_domWindow when we detach from the Frame?
     if (m_domWindow)
         m_domWindow->resetUnlessSuspendedForPageCache();
index 8e55bb8..da4a1ba 100644 (file)
@@ -670,6 +670,9 @@ private:
 
     bool isJavaScriptURLAttribute(const Attribute&) const;
 
+    // Anyone thinking of using this should call document instead of ownerDocument.
+    void ownerDocument() const WTF_DELETED_FUNCTION;
+
     QualifiedName m_tagName;
     RefPtr<ElementData> m_elementData;
 };
index e3dab9b..c8344ef 100644 (file)
@@ -665,7 +665,7 @@ inline void InspectorInstrumentation::didPushShadowRoot(Element* host, ShadowRoo
 {
 #if ENABLE(INSPECTOR)
     FAST_RETURN_IF_NO_FRONTENDS(void());
-    if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(host->ownerDocument()))
+    if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(host->document()))
         didPushShadowRootImpl(instrumentingAgents, host, root);
 #else
     UNUSED_PARAM(host);
@@ -677,7 +677,7 @@ inline void InspectorInstrumentation::willPopShadowRoot(Element* host, ShadowRoo
 {
 #if ENABLE(INSPECTOR)
     FAST_RETURN_IF_NO_FRONTENDS(void());
-    if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(host->ownerDocument()))
+    if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(host->document()))
         willPopShadowRootImpl(instrumentingAgents, host, root);
 #else
     UNUSED_PARAM(host);
index d65696e..2b08411 100644 (file)
@@ -1484,7 +1484,7 @@ bool InspectorStyleSheetForInlineStyle::setStyleText(CSSStyleDeclaration* style,
     ASSERT_UNUSED(style, style == inlineStyle());
 
     {
-        InspectorCSSAgent::InlineStyleOverrideScope overrideScope(m_element->ownerDocument());
+        InspectorCSSAgent::InlineStyleOverrideScope overrideScope(m_element->document());
         m_element->setAttribute("style", text, ec);
     }
 
index 9a73b7f..06c31ff 100644 (file)
@@ -1369,8 +1369,6 @@ static Frame* getFrame(Frame* parentFrame, Element* element)
         return parentFrame;
     
     Document* document = element->document();
-    if (!document)
-        document = element->ownerDocument();
     if (document)
         return document->frame();
     
index 61ec6f2..9e08395 100644 (file)
@@ -128,7 +128,7 @@ LayoutSize RenderVideo::calculateIntrinsicSize()
     // size since they also have audio-only files. By setting the intrinsic
     // size to 300x1 the video will resize itself in these cases, and audio will
     // have the correct height (it needs to be > 0 for controls to render properly).
-    if (video->ownerDocument() && video->ownerDocument()->isMediaDocument())
+    if (video->document() && video->document()->isMediaDocument())
         return LayoutSize(defaultSize().width(), 1);
 
     return defaultSize();
index 6cfd35e..b960c71 100644 (file)
@@ -82,7 +82,7 @@ void SVGFEImageElement::clearResourceReferences()
 
 void SVGFEImageElement::requestImageResource()
 {
-    CachedResourceRequest request(ResourceRequest(ownerDocument()->completeURL(href())));
+    CachedResourceRequest request(ResourceRequest(document()->completeURL(href())));
     request.setInitiator(this);
     m_cachedImage = document()->cachedResourceLoader()->requestImage(request);
 
index fc2c35c..1bae791 100644 (file)
@@ -1,3 +1,15 @@
+2013-08-18  Darin Adler  <darin@apple.com>
+
+        <https://webkit.org/b/119989> Make use of Node::ownerDocument a compile time error
+
+        Reviewed by Sam Weinig.
+
+        * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
+        (WebKit::PDFPluginChoiceAnnotation::createAnnotationElement): Use document instead of
+        ownerDocument.
+        * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:
+        (WebKit::PDFPluginTextAnnotation::createAnnotationElement): Ditto.
+
 2013-08-18  Dan Bernstein  <mitz@apple.com>
 
         Fix clean engineering builds after r154251.
index ce229e8..bfae778 100644 (file)
@@ -68,7 +68,7 @@ void PDFPluginChoiceAnnotation::commit()
 
 PassRefPtr<Element> PDFPluginChoiceAnnotation::createAnnotationElement()
 {
-    Document* document = parent()->ownerDocument();
+    Document* document = parent()->document();
     PDFAnnotationChoiceWidget *choiceAnnotation = this->choiceAnnotation();
 
     RefPtr<Element> element = document->createElement(selectTag, false);
index d124cc6..a6983a2 100644 (file)
@@ -83,7 +83,7 @@ PassRefPtr<Element> PDFPluginTextAnnotation::createAnnotationElement()
 {
     RefPtr<Element> element;
 
-    Document* document = parent()->ownerDocument();
+    Document* document = parent()->document();
     PDFAnnotationTextWidget *textAnnotation = this->textAnnotation();
     bool isMultiline = textAnnotation.isMultiline;