Fix for 4095839, wrong background image used on flechtwerk.de. Make sure that the...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 21 Apr 2005 20:55:15 +0000 (20:55 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 21 Apr 2005 20:55:15 +0000 (20:55 +0000)
attribute cache hashed background attributes into per-document buckets.

        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::mapToEntry):
        * khtml/html/html_elementimpl.h:
        (DOM::):
        * khtml/html/html_tableimpl.cpp:
        (HTMLTableElementImpl::mapToEntry):
        (HTMLTablePartElementImpl::mapToEntry):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        * khtml/xml/dom_docimpl.h:
        (DOM::DocumentImpl::docID):

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/html/html_baseimpl.cpp
WebCore/khtml/html/html_elementimpl.h
WebCore/khtml/html/html_tableimpl.cpp
WebCore/khtml/xml/dom_docimpl.cpp
WebCore/khtml/xml/dom_docimpl.h

index c96642babec89f9e62cbb150d79de03adb27aead..29aa31c8c1251acd27241166a674d104d8589451 100644 (file)
@@ -1,3 +1,20 @@
+2005-04-21  David Hyatt  <hyatt@apple.com>
+
+       Fix for 4095839, wrong background image used on flechtwerk.de.  Make sure that the global mapped
+       attribute cache hashed background attributes into per-document buckets.
+
+        * khtml/html/html_baseimpl.cpp:
+        (HTMLBodyElementImpl::mapToEntry):
+        * khtml/html/html_elementimpl.h:
+        (DOM::):
+        * khtml/html/html_tableimpl.cpp:
+        (HTMLTableElementImpl::mapToEntry):
+        (HTMLTablePartElementImpl::mapToEntry):
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::DocumentImpl):
+        * khtml/xml/dom_docimpl.h:
+        (DOM::DocumentImpl::docID):
+
 2005-04-21  Vicki Murley  <vicki@apple.com>
 
        - layout test for 4065447, outerHTML on images
index 5ece3b1cc95eb98b91e8b2c39a788a6b6f6d8378..c210e076cb7d8123640f2d72d461b2ca5852ae38 100644 (file)
@@ -81,6 +81,8 @@ bool HTMLBodyElementImpl::mapToEntry(NodeImpl::Id attr, MappedAttributeEntry& re
     switch(attr)
     {
         case ATTR_BACKGROUND:
+            result = (MappedAttributeEntry)(eLastEntry + getDocument()->docID());
+            return false;
         case ATTR_BGCOLOR:
         case ATTR_TEXT:
         case ATTR_MARGINWIDTH:
index bf8270650d4daec8efbaaaa8c2f2269ba396c563..f4887e67fe537b14719c0e0de1c22b569179136d 100644 (file)
@@ -36,7 +36,7 @@ class HTMLFormElementImpl;
 class DocumentFragmentImpl;
 
 enum MappedAttributeEntry { eNone, eUniversal, ePersistent, eReplaced, eBlock, eHR, eUnorderedList, eListItem,
-    eTable, eCell, eCaption };
+    eTable, eCell, eCaption, eLastEntry };
 
 class CSSMappedAttributeDeclarationImpl : public CSSMutableStyleDeclarationImpl
 {
index 0e6bfa2617575db62dcf835fdb39a8a185a2b641..e9d4a75a97658a402aa0fb4fbe651d015f6e4027 100644 (file)
@@ -365,10 +365,12 @@ NodeImpl *HTMLTableElementImpl::addChild(NodeImpl *child)
 bool HTMLTableElementImpl::mapToEntry(NodeImpl::Id attr, MappedAttributeEntry& result) const
 {
     switch(attr) {
+        case ATTR_BACKGROUND:
+            result = (MappedAttributeEntry)(eLastEntry + getDocument()->docID());
+            return false;
         case ATTR_WIDTH:
         case ATTR_HEIGHT:
         case ATTR_BGCOLOR:
-        case ATTR_BACKGROUND:
         case ATTR_CELLSPACING:
         case ATTR_VSPACE:
         case ATTR_HSPACE:
@@ -622,8 +624,10 @@ bool HTMLTableElementImpl::isURLAttribute(AttributeImpl *attr) const
 bool HTMLTablePartElementImpl::mapToEntry(NodeImpl::Id attr, MappedAttributeEntry& result) const
 {
     switch(attr) {
-        case ATTR_BGCOLOR:
         case ATTR_BACKGROUND:
+            result = (MappedAttributeEntry)(eLastEntry + getDocument()->docID());
+            return false;
+        case ATTR_BGCOLOR:
         case ATTR_BORDERCOLOR:
         case ATTR_VALIGN:
         case ATTR_HEIGHT:
index a938591e1fde5a279336fabd28f10e0ac17afa02..ac7349ebe8df5ed56e8994491ba54bebcb8e4171 100644 (file)
@@ -364,6 +364,9 @@ DocumentImpl::DocumentImpl(DOMImplementationImpl *_implementation, KHTMLView *v)
     m_jsEditor = 0;
 
     m_markers.setAutoDelete(true);
+    
+    static int docID = 0;
+    m_docID = docID++;
 }
 
 DocumentImpl::~DocumentImpl()
index 33f9887c9a080f30f9e6ea07ca7f6bdf861bcd85..bb4d63b7cf8fda944f87522ce40d699c58a0fd2b 100644 (file)
@@ -570,6 +570,8 @@ public:
     DocumentImpl *parentDocument() const;
     DocumentImpl *topDocument() const;
 
+    int docID() const { return m_docID; }
+
 #ifdef KHTML_XSLT
     void applyXSLTransform(ProcessingInstructionImpl* pi);
     void setTransformSource(void* doc) { m_transformSource = doc; }
@@ -706,6 +708,8 @@ protected:
 
     QPtrDict<NodeImpl> m_disconnectedNodesWithEventListeners;
 
+    int m_docID; // A unique document identifier used for things like document-specific mapped attributes.
+
 #if APPLE_CHANGES
 public:
     KWQSignal m_finishedParsing;