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

List:       kde-commits
Subject:    KDE/kdelibs/khtml
From:       Maks Orlovich <maksim () kde ! org>
Date:       2010-11-26 19:36:41
Message-ID: 20101126193641.68B87AC8A2 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1201110 by orlovich:

Make sure we don't lose base for javascript: URls and such. Fixes problem 
noted by dfaure on kfm-devel.


 M  +9 -9      khtml_part.cpp  
 M  +1 -1      khtmlpart_p.h  


--- trunk/KDE/kdelibs/khtml/khtml_part.cpp #1201109:1201110
@@ -4441,11 +4441,9 @@
     KHTMLPart* p = static_cast<KHTMLPart*>(static_cast<KParts::ReadOnlyPart \
*>(inPart));  
     p->begin();
-    if (d->m_doc && p->d->m_doc)
-        p->d->m_doc->setBaseURL(d->m_doc->baseURL());
 
     // We may have to re-propagate the domain here if we go here due to navigation
-    d->propagateInitialDomainTo(p);
+    d->propagateInitialDomainAndBaseTo(p);
 
     // Support for javascript: sources
     if (d->isJavaScriptURL(url.url())) {
@@ -4456,7 +4454,7 @@
             p->begin();
             p->setAlwaysHonourDoctype(); // Disable public API compat; it messes \
with doctype  // We recreated the document, so propagate domain again.
-            d->propagateInitialDomainTo( p );
+            d->propagateInitialDomainAndBaseTo(p);
             p->write( res.toString() );
             p->end();
         }
@@ -5031,22 +5029,24 @@
   // This must only be done when loading the frameset initially (#22039),
   // not when following a link in a frame (#44162).
   if (KHTMLPart* htmlFrame = qobject_cast<KHTMLPart*>(sender()))
-    d->propagateInitialDomainTo( htmlFrame );
+      d->propagateInitialDomainAndBaseTo(htmlFrame);
 
   // So it only happens once
   disconnect( sender(), SIGNAL( docCreated() ), this, SLOT( slotChildDocCreated() ) \
);  }
 
-void KHTMLPartPrivate::propagateInitialDomainTo(KHTMLPart* kid)
+void KHTMLPartPrivate::propagateInitialDomainAndBaseTo(KHTMLPart* kid)
 {
-    // This method is used to propagate our domain information for
-    // child frames, to provide a domain for about: or JavaScript: URLs 
+    // This method is used to propagate our domain and base information for
+    // child frames, to provide them for about: or JavaScript: URLs 
     if ( m_doc && kid->d->m_doc ) {
         DocumentImpl* kidDoc = kid->d->m_doc;
-        if ( kidDoc->origin()->isEmpty() )
+        if ( kidDoc->origin()->isEmpty() ) {
             kidDoc->setOrigin( m_doc->origin() );
+            kidDoc->setBaseURL( m_doc->baseURL() );
     }
 }
+}
 
 void KHTMLPart::slotChildURLRequest( const KUrl &url, const \
KParts::OpenUrlArguments& args, const KParts::BrowserArguments &browserArgs )  {
--- trunk/KDE/kdelibs/khtml/khtmlpart_p.h #1201109:1201110
@@ -448,7 +448,7 @@
       executeJavascriptURL(url);
   }
 
-  void propagateInitialDomainTo(KHTMLPart* kid);
+  void propagateInitialDomainAndBaseTo(KHTMLPart* kid);
 
   void renameFrameForContainer(DOM::HTMLPartContainerElementImpl* cont,
                                const QString& newName);


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

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