[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

darin darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:46:55 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 13cc4dec63fa13e4b9d6dd109f274cb355288337
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Jul 11 16:24:37 2003 +0000

            Reviewed by Chris.
    
            - fixed 3305391 -- repro crash in QPixmap::QPixmap after click in SVG using Adobe SVG plugin
    
            * kwq/WebCoreBridge.mm: (-[WebCoreBridge elementAtPoint:]): Remove code that tried to determine
            if something is an image by looking at the node type. Instead look at the object in the render
            tree and ask it if it's an image. Also use logic that exactly matches what RenderImage uses.
    
            * kwq/KWQDOMNode.h: Remove unused isImage function.
            * kwq/KWQDOMNode.cpp: Ditto.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@4624 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index e13cf3a..7fe413e 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,5 +1,18 @@
 2003-07-11  Darin Adler  <darin at apple.com>
 
+        Reviewed by Chris.
+
+        - fixed 3305391 -- repro crash in QPixmap::QPixmap after click in SVG using Adobe SVG plugin
+
+        * kwq/WebCoreBridge.mm: (-[WebCoreBridge elementAtPoint:]): Remove code that tried to determine
+        if something is an image by looking at the node type. Instead look at the object in the render
+        tree and ask it if it's an image. Also use logic that exactly matches what RenderImage uses.
+
+        * kwq/KWQDOMNode.h: Remove unused isImage function.
+        * kwq/KWQDOMNode.cpp: Ditto.
+
+2003-07-11  Darin Adler  <darin at apple.com>
+
         Reviewed by Ken.
 
         - fixed 3300220 -- repro crash in closeURL when choosing from popup menus on www.drivewire.com
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index e13cf3a..7fe413e 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,5 +1,18 @@
 2003-07-11  Darin Adler  <darin at apple.com>
 
+        Reviewed by Chris.
+
+        - fixed 3305391 -- repro crash in QPixmap::QPixmap after click in SVG using Adobe SVG plugin
+
+        * kwq/WebCoreBridge.mm: (-[WebCoreBridge elementAtPoint:]): Remove code that tried to determine
+        if something is an image by looking at the node type. Instead look at the object in the render
+        tree and ask it if it's an image. Also use logic that exactly matches what RenderImage uses.
+
+        * kwq/KWQDOMNode.h: Remove unused isImage function.
+        * kwq/KWQDOMNode.cpp: Ditto.
+
+2003-07-11  Darin Adler  <darin at apple.com>
+
         Reviewed by Ken.
 
         - fixed 3300220 -- repro crash in closeURL when choosing from popup menus on www.drivewire.com
diff --git a/WebCore/kwq/KWQDOMNode.cpp b/WebCore/kwq/KWQDOMNode.cpp
index 62ca0bd..0472837 100644
--- a/WebCore/kwq/KWQDOMNode.cpp
+++ b/WebCore/kwq/KWQDOMNode.cpp
@@ -25,33 +25,10 @@
 
 #include "KWQDOMNode.h"
 
-#include "dom_elementimpl.h"
-#include "dom_nodeimpl.h"
-#include "htmlattrs.h"
-#include "htmltags.h"
+using DOM::NodeImpl;
 
-bool isImage(DOM::NodeImpl *node)
-{    
-    if(node->id() == ID_IMG){
-        return true;
-    }else if(node->id() == ID_INPUT){
-        ElementImpl* i =  static_cast<ElementImpl*>(node);
-        if(i->getAttribute(ATTR_TYPE) == "image"){
-            return true;
-        }
-    }else if(node->id() == ID_OBJECT){
-        ElementImpl* i =  static_cast<ElementImpl*>(node);
-        if(i->getAttribute(ATTR_TYPE).string().startsWith("image/")){
-            return true;
-        }
-    }
-
-    return false;
-}
-
-// here because calling id() from ObjC runs into probs with id being a reserved word
-NodeImpl::Id idFromNode(DOM::NodeImpl *node)
+// This needs to be in a C++ source file because id is a reserved word in Objective-C++.
+NodeImpl::Id idFromNode(NodeImpl *node)
 {
     return node->id();
 }
-
diff --git a/WebCore/kwq/KWQDOMNode.h b/WebCore/kwq/KWQDOMNode.h
index 5957e26..515f565 100644
--- a/WebCore/kwq/KWQDOMNode.h
+++ b/WebCore/kwq/KWQDOMNode.h
@@ -23,12 +23,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#import "dom_nodeimpl.h"
+#include "dom_nodeimpl.h"
 
-namespace DOM {
-    class NodeImpl;
-}
-
-bool isImage(DOM::NodeImpl *);
 DOM::NodeImpl::Id idFromNode(DOM::NodeImpl *);
-
diff --git a/WebCore/kwq/WebCoreBridge.mm b/WebCore/kwq/WebCoreBridge.mm
index 8dbf9b2..360611a 100644
--- a/WebCore/kwq/WebCoreBridge.mm
+++ b/WebCore/kwq/WebCoreBridge.mm
@@ -29,8 +29,9 @@
 #import "dom_node.h"
 #import "dom_docimpl.h"
 #import "dom_nodeimpl.h"
-#import "html_formimpl.h"
 #import "html_documentimpl.h"
+#import "html_formimpl.h"
+#import "html_imageimpl.h"
 #import "htmlattrs.h"
 #import "htmltags.h"
 #import "khtml_part.h"
@@ -42,7 +43,6 @@
 #import "render_canvas.h"
 #import "render_style.h"
 #import "render_replaced.h"
-using khtml::RenderWidget;
 
 #import <JavaScriptCore/property_map.h>
 
@@ -70,11 +70,12 @@ using DOM::NodeImpl;
 
 using khtml::Decoder;
 using khtml::parseURL;
+using khtml::RenderCanvas;
 using khtml::RenderImage;
 using khtml::RenderObject;
 using khtml::RenderPart;
 using khtml::RenderStyle;
-using khtml::RenderCanvas;
+using khtml::RenderWidget;
 
 using KJS::SavedProperties;
 using KJS::SavedBuiltins;
@@ -704,37 +705,42 @@ static HTMLFormElementImpl *formElementFromDOMElement(id <WebDOMElement>element)
     }
 
     NodeImpl *node = nodeInfo.innerNonSharedNode();
-    if (node && isImage(node)){
+    if (node && node->renderer() && node->renderer()->isImage()) {
         ElementImpl *i = static_cast<ElementImpl*>(node);
-        DOMString attr = i->getAttribute(ATTR_SRC);
-        if (attr.isEmpty()) {
-            // Look for the URL in the DATA attribute of the OBJECT tag.
+
+        // FIXME: Code copied from RenderImage::updateFromElement; should share.
+        DOMString attr;
+        if (idFromNode(i) == ID_OBJECT) {
             attr = i->getAttribute(ATTR_DATA);
+        } else {
+            attr = i->getAttribute(ATTR_SRC);
         }
-
         if (!attr.isEmpty()) {
             [element setObject:_part->xmlDocImpl()->completeURL(attr.string()).getNSString() forKey:WebCoreElementImageURLKey];
         }
         
-        DOMString alt = i->getAttribute(ATTR_ALT);
+        // FIXME: Code copied from RenderImage::updateFromElement; should share.
+        DOMString alt;
+        if (idFromNode(i) == ID_INPUT)
+            alt = static_cast<HTMLInputElementImpl *>(i)->altText();
+        else if (idFromNode(i) == ID_IMG)
+            alt = static_cast<HTMLImageElementImpl *>(i)->altText();
         if (!alt.isNull()) {
             QString altText = alt.string();
             altText.replace('\\', _part->backslashAsCurrencySymbol());
             [element setObject:altText.getNSString() forKey:WebCoreElementImageAltStringKey];
         }
-        
-        RenderImage *r = (RenderImage *)node->renderer();
-        if (r) {
-            int x, y;
-            if (r->absolutePosition(x, y)) {
-                NSValue *rect = [NSValue valueWithRect:NSMakeRect(x, y, r->contentWidth(), r->contentHeight())];
-                [element setObject:rect forKey:WebCoreElementImageRectKey];
-            }
-            
-            NSImage *image = r->pixmap().image();
-            if (image) {
-                [element setObject:image forKey:WebCoreElementImageKey];
-            }
+
+        RenderImage *r = static_cast<RenderImage *>(node->renderer());
+        int x, y;
+        if (r->absolutePosition(x, y)) {
+            NSValue *rect = [NSValue valueWithRect:NSMakeRect(x, y, r->contentWidth(), r->contentHeight())];
+            [element setObject:rect forKey:WebCoreElementImageRectKey];
+        }
+
+        NSImage *image = r->pixmap().image();
+        if (image) {
+            [element setObject:image forKey:WebCoreElementImageKey];
         }
     }
     

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list