[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