2009-01-15 Adele Peterson <adele@apple.com>
authoradele@apple.com <adele@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 15 Jan 2009 19:54:29 +0000 (19:54 +0000)
committeradele@apple.com <adele@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 15 Jan 2009 19:54:29 +0000 (19:54 +0000)
        Reviewed by Darin Adler.

        Fix for https://bugs.webkit.org/show_bug.cgi?id=21799
        <rdar://problem/6310684> Crash in dumpFramesAsText() when running http/tests/security/cross-origin-xsl-BLOCKED.html

        Return S_OK or E_FAIL based on the result from CreateInstance.
        This was causing DumpRenderTree to not realize it had just gotten a null documentElement.

        * DOMCoreClasses.cpp: Made all functions that return the result of CreateInstance consistent.
        (DOMNode::parentNode):
        (DOMNode::ownerDocument):
        (DOMNodeList::item):
        (DOMDocument::documentElement):
        (DOMDocument::createElement):
        (DOMDocument::getElementsByTagName):
        (DOMDocument::getElementsByTagNameNS):
        (DOMDocument::getElementById):
        (DOMDocument::getComputedStyle):
        (DOMDocument::createEvent):
        (DOMElement::style):

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

WebKit/win/ChangeLog
WebKit/win/DOMCoreClasses.cpp

index d7178b3..f1578da 100644 (file)
@@ -1,3 +1,26 @@
+2009-01-15  Adele Peterson  <adele@apple.com>
+
+        Reviewed by Darin Adler.
+        
+        Fix for https://bugs.webkit.org/show_bug.cgi?id=21799
+        <rdar://problem/6310684> Crash in dumpFramesAsText() when running http/tests/security/cross-origin-xsl-BLOCKED.html
+        
+        Return S_OK or E_FAIL based on the result from CreateInstance.
+        This was causing DumpRenderTree to not realize it had just gotten a null documentElement.
+        
+        * DOMCoreClasses.cpp: Made all functions that return the result of CreateInstance consistent.
+        (DOMNode::parentNode):
+        (DOMNode::ownerDocument):
+        (DOMNodeList::item):
+        (DOMDocument::documentElement):
+        (DOMDocument::createElement):
+        (DOMDocument::getElementsByTagName):
+        (DOMDocument::getElementsByTagNameNS):
+        (DOMDocument::getElementById):
+        (DOMDocument::getComputedStyle):
+        (DOMDocument::createEvent):
+        (DOMElement::style):
+
 2009-01-14  Adele Peterson  <adele@apple.com>
 
         Reviewed by Darin Adler.
index eef1e64..bbda116 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.
+ * Copyright (C) 2006, 2007, 2009 Apple Inc.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -129,7 +129,7 @@ HRESULT STDMETHODCALLTYPE DOMNode::parentNode(
     if (!m_node || !m_node->parentNode())
         return E_FAIL;
     *result = DOMNode::createInstance(m_node->parentNode());
-    return S_OK;
+    return *result ? S_OK : E_FAIL;
 }
 
 HRESULT STDMETHODCALLTYPE DOMNode::childNodes( 
@@ -183,7 +183,7 @@ HRESULT STDMETHODCALLTYPE DOMNode::ownerDocument(
     if (!m_node)
         return E_FAIL;
     *result = DOMDocument::createInstance(m_node->ownerDocument());
-    return S_OK;
+    return *result ? S_OK : E_FAIL;
 }
 
 HRESULT STDMETHODCALLTYPE DOMNode::insertBefore( 
@@ -465,9 +465,7 @@ HRESULT STDMETHODCALLTYPE DOMNodeList::item(
         return E_FAIL;
 
     *result = DOMNode::createInstance(itemNode);
-    if (!(*result))
-        return E_FAIL;
-    return S_OK;
+    return *result ? S_OK : E_FAIL;
 }
 
 HRESULT STDMETHODCALLTYPE DOMNodeList::length( 
@@ -548,7 +546,7 @@ HRESULT STDMETHODCALLTYPE DOMDocument::documentElement(
     /* [retval][out] */ IDOMElement** result)
 {
     *result = DOMElement::createInstance(m_document->documentElement());
-    return S_OK;
+    return *result ? S_OK : E_FAIL;
 }
 
 HRESULT STDMETHODCALLTYPE DOMDocument::createElement( 
@@ -561,9 +559,7 @@ HRESULT STDMETHODCALLTYPE DOMDocument::createElement(
     String tagNameString(tagName);
     ExceptionCode ec;
     *result = DOMElement::createInstance(m_document->createElement(tagNameString, ec).get());
-    if (!(*result))
-        return E_FAIL;
-    return S_OK;    
+    return *result ? S_OK : E_FAIL;
 }
 
 HRESULT STDMETHODCALLTYPE DOMDocument::createDocumentFragment( 
@@ -631,9 +627,7 @@ HRESULT STDMETHODCALLTYPE DOMDocument::getElementsByTagName(
 
     String tagNameString(tagName);
     *result = DOMNodeList::createInstance(m_document->getElementsByTagName(tagNameString).get());
-    if (!(*result))
-        return E_FAIL;
-    return S_OK;
+    return *result ? S_OK : E_FAIL;
 }
 
 HRESULT STDMETHODCALLTYPE DOMDocument::importNode( 
@@ -674,9 +668,7 @@ HRESULT STDMETHODCALLTYPE DOMDocument::getElementsByTagNameNS(
     String namespaceURIString(namespaceURI);
     String localNameString(localName);
     *result = DOMNodeList::createInstance(m_document->getElementsByTagNameNS(namespaceURIString, localNameString).get());
-    if (!(*result))
-        return E_FAIL;
-    return S_OK;
+    return *result ? S_OK : E_FAIL;
 }
 
 HRESULT STDMETHODCALLTYPE DOMDocument::getElementById( 
@@ -688,9 +680,7 @@ HRESULT STDMETHODCALLTYPE DOMDocument::getElementById(
 
     String idString(elementId);
     *result = DOMElement::createInstance(m_document->getElementById(idString));
-    if (!(*result))
-        return E_FAIL;
-    return S_OK;
+    return *result ? S_OK : E_FAIL;
 }
 
 // DOMDocument - IDOMViewCSS --------------------------------------------------
@@ -716,7 +706,7 @@ HRESULT STDMETHODCALLTYPE DOMDocument::getComputedStyle(
         return E_FAIL;
     
     *result = DOMCSSStyleDeclaration::createInstance(dv->getComputedStyle(element, pseudoEltString.impl()).get());
-    return S_OK;
+    return *result ? S_OK : E_FAIL;
 }
 
 // DOMDocument - IDOMDocumentEvent --------------------------------------------
@@ -728,7 +718,7 @@ HRESULT STDMETHODCALLTYPE DOMDocument::createEvent(
     String eventTypeString(eventType, SysStringLen(eventType));
     WebCore::ExceptionCode ec = 0;
     *result = DOMEvent::createInstance(m_document->createEvent(eventTypeString, ec));
-    return S_OK;
+    return *result ? S_OK : E_FAIL;
 }
 
 // DOMDocument - DOMDocument --------------------------------------------------
@@ -1104,7 +1094,7 @@ HRESULT STDMETHODCALLTYPE DOMElement::style(
         return E_FAIL;
 
     *result = DOMCSSStyleDeclaration::createInstance(style);
-    return S_OK;
+    return *result ? S_OK : E_FAIL;
 }
 
 // IDOMElementExtensions ------------------------------------------------------