[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/khtml/css
From:       Matthias Grimrath <maps4711 () gmx ! de>
Date:       2010-05-13 7:33:13
Message-ID: 20100513073313.9173AAC8B4 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1126176 by grimrath:

Remember original values from CSS. Delay expanding to full
URLs until needed. It enables the webarchiver plugin to change URLs
in CSS by search&replace and it is probably more correct
regarding the DOM API.


 M  +4 -2      css_valueimpl.cpp  
 M  +1 -1      css_valueimpl.h  
 M  +12 -14    cssparser.cpp  


--- trunk/KDE/kdelibs/khtml/css/css_valueimpl.cpp #1126175:1126176
@@ -25,6 +25,7 @@
 #include "css_valueimpl.h"
 #include "css_ruleimpl.h"
 #include "css_stylesheetimpl.h"
+#include "css/csshelper.h"
 #include "cssparser.h"
 #include "cssproperties.h"
 #include "cssvalues.h"
@@ -1370,7 +1371,7 @@
 
 // -----------------------------------------------------------------
 
-CSSImageValueImpl::CSSImageValueImpl(const DOMString &url, const StyleBaseImpl* \
style) +CSSImageValueImpl::CSSImageValueImpl(const DOMString &url, StyleBaseImpl* \
style)  : CSSPrimitiveValueImpl(url, CSSPrimitiveValue::CSS_URI)
 {
     khtml::DocLoader *docLoader = 0;
@@ -1380,7 +1381,8 @@
     if (root->isCSSStyleSheet())
 	docLoader = static_cast<const CSSStyleSheetImpl*>(root)->docLoader();
 
-    m_image = docLoader->requestImage(url);
+    KUrl fullURL( style->baseURL(), khtml::parseURL(url).string() );
+    m_image = docLoader->requestImage( fullURL.url() );
     if(m_image) m_image->ref(this);
 }
 
--- trunk/KDE/kdelibs/khtml/css/css_valueimpl.h #1126175:1126176
@@ -351,7 +351,7 @@
 class CSSImageValueImpl : public CSSPrimitiveValueImpl, public \
khtml::CachedObjectClient  {
 public:
-    CSSImageValueImpl(const DOMString &url, const StyleBaseImpl *style);
+    CSSImageValueImpl(const DOMString &url, StyleBaseImpl *style);
     CSSImageValueImpl();
     virtual ~CSSImageValueImpl();
 
--- trunk/KDE/kdelibs/khtml/css/cssparser.cpp #1126175:1126176
@@ -844,11 +844,9 @@
         }
         else if (value->unit == CSSPrimitiveValue::CSS_URI ) {
             // ### allow string in non strict mode?
-            DOMString uri = khtml::parseURL( domString( value->string ) );
+            DOMString uri = domString( value->string );
             if (!uri.isNull()) {
-                parsedValue = new CSSImageValueImpl(
-                    DOMString(KUrl( styleElement->baseURL(), uri.string()).url()),
-                    styleElement );
+                parsedValue = new CSSImageValueImpl( uri, styleElement );
                 valueList->next();
             }
         }
@@ -1537,9 +1535,8 @@
         parsedValue = 0;
         if ( val->unit == CSSPrimitiveValue::CSS_URI ) {
             // url
-            DOMString value = khtml::parseURL(domString(val->string));
-            parsedValue = new CSSImageValueImpl(
-                DOMString(KUrl( styleElement->baseURL(), value.string()).url() ), \
styleElement ); +            DOMString value = domString(val->string);
+            parsedValue = new CSSImageValueImpl( value, styleElement );
 #ifdef CSS_DEBUG
             kDebug( 6080 ) << "content, url=" << value.string() << " base=" << \
styleElement->baseURL().url( );  #endif
@@ -1649,20 +1646,21 @@
 
 CSSValueImpl* CSSParser::parseBackgroundImage(bool& didParse)
 {
-    didParse = false;
     if (valueList->current()->id == CSS_VAL_NONE) {
         didParse = true;
         return new CSSImageValueImpl();
-    }
-    if (valueList->current()->unit == CSSPrimitiveValue::CSS_URI) {
+    } else if (valueList->current()->unit == CSSPrimitiveValue::CSS_URI) {
         didParse = true;
-        DOMString uri = khtml::parseURL(domString(valueList->current()->string));
+        DOMString uri = domString(valueList->current()->string);
         if (!uri.isNull())
-            return new CSSImageValueImpl(DOMString(KUrl(styleElement->baseURL(), \
                uri.string()).url()),
-                                         styleElement);
-    }
+            return new CSSImageValueImpl(uri, styleElement);
+        else
     return 0;
+    } else {
+        didParse = false;
+        return 0;
 }
+}
 
 CSSValueImpl* CSSParser::parseBackgroundPositionXY(BackgroundPosKind& kindOut)
 {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic