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

List:       kde-commits
Subject:    playground/libs/webkitkde
From:       Dawit Alemayehu <adawit () kde ! org>
Date:       2009-08-13 3:48:06
Message-ID: 1250135286.467123.18375.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1010646 by adawit:

Workaround for the crash when leaving pages that contain a flash plug-in.
For details read: 

http://mail.kde.org/pipermail/webkit-devel/2009-August/000157.html


 M  +18 -30    kdewebkit/kwebpage.cpp  
 M  +9 -0      part/webkitpart.cpp  


--- trunk/playground/libs/webkitkde/kdewebkit/kwebpage.cpp #1010645:1010646
@@ -307,34 +307,24 @@
 
 QString KWebPage::userAgentForUrl(const QUrl& _url) const
 {
-    const KUrl url(_url);
-    const QString host = url.isLocalFile() ? "localhost" : url.host();
+  const KUrl url(_url);
+  QString userAgent = KProtocolManager::userAgentForHost((url.isLocalFile() ? \
"localhost":url.host())); +  const int index = userAgent.indexOf("KHTML/");
 
-    QString userAgent = KProtocolManager::userAgentForHost(host);
-    const int indexOfKhtml = userAgent.indexOf("KHTML/");
-    if (indexOfKhtml == -1) // not a KHTML user agent, so no need to "update" it
-        return userAgent;
+  if (userAgent == KProtocolManager::defaultUserAgent() || index == -1)
+    userAgent = QWebPage::userAgentForUrl(_url);
+  else
+  {
+    QString webKitUserAgent = QWebPage::userAgentForUrl(_url);
+    userAgent = userAgent.left(index);
+    webKitUserAgent = webKitUserAgent.mid(webKitUserAgent.indexOf("AppleWebKit/"));
+    webKitUserAgent = webKitUserAgent.left(webKitUserAgent.indexOf(')') + 1);
+    userAgent += webKitUserAgent;
+    userAgent.remove("compatible; ");
+  }
 
-    QString webKitUserAgent = QWebPage::userAgentForUrl(url);
-
-    if (userAgent == KProtocolManager::defaultUserAgent())
-    {
-        const int index = webKitUserAgent.lastIndexOf(QChar(')')) + 1;
-        QString konqVer = userAgent.split(QChar(';')).at(1);
-        userAgent = webKitUserAgent;
-        userAgent.replace(index, (webKitUserAgent.length() - index),
-                          konqVer);
-    }
-    else
-    {
-      userAgent = userAgent.left(indexOfKhtml);
-      webKitUserAgent = \
                webKitUserAgent.mid(webKitUserAgent.indexOf("AppleWebKit/"));
-      webKitUserAgent = webKitUserAgent.left(webKitUserAgent.indexOf(')') + 1);
-      userAgent += webKitUserAgent;
-      userAgent.remove("compatible; ");
-    }
-
-    return userAgent;
+  //kDebug() << userAgent;
+  return userAgent;
 }
 
 void KWebPage::setMetaData(const QString& key, const QString& value)
@@ -345,6 +335,8 @@
 
 bool KWebPage::acceptNavigationRequest(QWebFrame * frame, const QNetworkRequest & \
request, NavigationType type)  {
+    kDebug() << "url: " << request.url() << ", type: " << type << ", frame: " << \
frame; +
     /*
       QWebPage calls acceptNavigationRequest when:
         ** a load url operation is requested... (e.g. user types in the url)
@@ -355,14 +347,10 @@
       We catch the first 3 scenarios here to make sure the "cross-domain"
       (cookiejar) and "main_frame_request" (SSL) meta datas are set.
     */
-
     if (frame) {
         QWebFrame* parentFrame = frame->parentFrame();
         QUrl url(request.url());
 
-        kDebug() << "url: " << request.url() << ", type: " << type
-        << ", main frame ? " << (parentFrame == 0);
-
         if (url.isValid() && url.host().toLower() != QString::fromUtf8("blank")) {
             if (!parentFrame)
                 d->accessManager->metaData()["cross-domain"] = url.toString();
--- trunk/playground/libs/webkitkde/part/webkitpart.cpp #1010645:1010646
@@ -218,6 +218,15 @@
     KComponentData componentData(&about);
     setComponentData(componentData);
 
+    // NOTE: If the application does not set its version number, we automatically
+    // set it to KDE's version number so that the default user-agent string contains
+    // proper version number information.
+    if (QCoreApplication::applicationVersion().isEmpty())
+      QCoreApplication::setApplicationVersion(QString("%1.%2.%3")
+                                              .arg(KDE::versionMajor())
+                                              .arg(KDE::versionMinor())
+                                              .arg(KDE::versionRelease()));
+
     setWidget(new QWidget(parentWidget));
     QVBoxLayout* lay = new QVBoxLayout(widget());
     lay->setMargin(0);


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

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