[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da
jocelyn.turcotte at nokia.com
jocelyn.turcotte at nokia.com
Wed Dec 22 18:23:29 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 02a1460bf86d2a63f62109cdc62ec51534b84ed5
Author: jocelyn.turcotte at nokia.com <jocelyn.turcotte at nokia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Dec 10 10:51:18 2010 +0000
2010-12-10 Jocelyn Turcotte <jocelyn.turcotte at nokia.com>
Reviewed by Kenneth Rohde Christiansen.
[Qt] Make QtTestBrowser spawn QNAM in a secondary thread.
A menu allows to switch QNAM back to the same thread.
* QtTestBrowser/launcherwindow.cpp:
(LauncherWindow::initializeView):
(LauncherWindow::createChrome):
(LauncherWindow::toggleThreadedQnam):
* QtTestBrowser/launcherwindow.h:
(WindowOptions::WindowOptions):
* QtTestBrowser/webpage.cpp:
(WebPage::WebPage):
(WebPage::setQnamThreaded):
* QtTestBrowser/webpage.h:
(QnamThread::QnamThread):
(QnamThread::~QnamThread):
(QnamThread::networkAccessManager):
(QnamThread::run):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73712 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index bb14a0b..c0287b4 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,26 @@
+2010-12-10 Jocelyn Turcotte <jocelyn.turcotte at nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Make QtTestBrowser spawn QNAM in a secondary thread.
+
+ A menu allows to switch QNAM back to the same thread.
+
+ * QtTestBrowser/launcherwindow.cpp:
+ (LauncherWindow::initializeView):
+ (LauncherWindow::createChrome):
+ (LauncherWindow::toggleThreadedQnam):
+ * QtTestBrowser/launcherwindow.h:
+ (WindowOptions::WindowOptions):
+ * QtTestBrowser/webpage.cpp:
+ (WebPage::WebPage):
+ (WebPage::setQnamThreaded):
+ * QtTestBrowser/webpage.h:
+ (QnamThread::QnamThread):
+ (QnamThread::~QnamThread):
+ (QnamThread::networkAccessManager):
+ (QnamThread::run):
+
2010-12-10 Martin Robinson <mrobinson at igalia.com>
Reviewed by Xan Lopez.
diff --git a/WebKitTools/QtTestBrowser/launcherwindow.cpp b/WebKitTools/QtTestBrowser/launcherwindow.cpp
index 7608063..1a4d28f 100644
--- a/WebKitTools/QtTestBrowser/launcherwindow.cpp
+++ b/WebKitTools/QtTestBrowser/launcherwindow.cpp
@@ -95,6 +95,7 @@ void LauncherWindow::initializeView()
QUrl url = page()->mainFrame()->url();
setPage(new WebPage(this));
+ page()->setQnamThreaded(m_windowOptions.useThreadedQnam);
QSplitter* splitter = static_cast<QSplitter*>(centralWidget());
@@ -234,6 +235,10 @@ void LauncherWindow::createChrome()
toggleWebGL->setCheckable(true);
toggleWebGL->setChecked(settings->testAttribute(QWebSettings::WebGLEnabled));
+ QAction* toggleThreadedQnam = toolsMenu->addAction("Toggle threaded network", this, SLOT(toggleThreadedQnam(bool)));
+ toggleThreadedQnam->setCheckable(true);
+ toggleThreadedQnam->setChecked(m_windowOptions.useThreadedQnam);
+
QAction* spatialNavigationAction = toolsMenu->addAction("Toggle Spatial Navigation", this, SLOT(toggleSpatialNavigation(bool)));
spatialNavigationAction->setCheckable(true);
spatialNavigationAction->setShortcut(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_S));
@@ -702,6 +707,12 @@ void LauncherWindow::toggleWebGL(bool toggle)
page()->settings()->setAttribute(QWebSettings::WebGLEnabled, toggle);
}
+void LauncherWindow::toggleThreadedQnam(bool toggle)
+{
+ m_windowOptions.useThreadedQnam = toggle;
+ page()->setQnamThreaded(toggle);
+}
+
void LauncherWindow::animatedFlip()
{
qobject_cast<WebViewGraphicsBased*>(m_view)->animatedFlip();
diff --git a/WebKitTools/QtTestBrowser/launcherwindow.h b/WebKitTools/QtTestBrowser/launcherwindow.h
index 84dedaa..e35e7fd 100644
--- a/WebKitTools/QtTestBrowser/launcherwindow.h
+++ b/WebKitTools/QtTestBrowser/launcherwindow.h
@@ -87,6 +87,7 @@ public:
#else
, useFrameFlattening(false)
#endif
+ , useThreadedQnam(true)
, cacheWebView(false)
, showFrameRate(false)
, resizesToContents(false)
@@ -102,6 +103,7 @@ public:
bool useTiledBackingStore;
bool useWebGL;
bool useFrameFlattening;
+ bool useThreadedQnam;
bool cacheWebView;
bool showFrameRate;
bool resizesToContents;
@@ -153,6 +155,7 @@ protected slots:
void toggleTiledBackingStore(bool toggle);
void toggleResizesToContents(bool toggle);
void toggleWebGL(bool toggle);
+ void toggleThreadedQnam(bool toggle);
void toggleSpatialNavigation(bool b);
void toggleFullScreenMode(bool enable);
void toggleFrameFlattening(bool toggle);
diff --git a/WebKitTools/QtTestBrowser/webpage.cpp b/WebKitTools/QtTestBrowser/webpage.cpp
index b6caf67..15f6db0 100644
--- a/WebKitTools/QtTestBrowser/webpage.cpp
+++ b/WebKitTools/QtTestBrowser/webpage.cpp
@@ -48,8 +48,6 @@ WebPage::WebPage(QObject* parent)
{
applyProxy();
- connect(networkAccessManager(), SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)),
- this, SLOT(authenticationRequired(QNetworkReply*, QAuthenticator*)));
connect(this, SIGNAL(featurePermissionRequested(QWebFrame*, QWebPage::Feature)), this, SLOT(requestPermission(QWebFrame*, QWebPage::Feature)));
connect(this, SIGNAL(featurePermissionRequestCanceled(QWebFrame*, QWebPage::Feature)), this, SLOT(featurePermissionRequestCanceled(QWebFrame*, QWebPage::Feature)));
}
@@ -121,6 +119,28 @@ QString WebPage::userAgentForUrl(const QUrl& url) const
return QWebPage::userAgentForUrl(url);
}
+void WebPage::setQnamThreaded(bool threaded)
+{
+ bool alreadyThreaded = networkAccessManager()->thread() != thread();
+ if (threaded == alreadyThreaded)
+ return;
+
+ if (threaded) {
+ m_qnamThread.reset(new QtNAMThread);
+ m_qnamThread->start();
+ setNetworkAccessManager(m_qnamThread->networkAccessManager());
+ } else {
+ setNetworkAccessManager(0);
+ m_qnamThread.reset();
+ }
+
+ Qt::ConnectionType connectionType = threaded ? Qt::BlockingQueuedConnection : Qt::DirectConnection;
+ connect(networkAccessManager(), SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)),
+ this, SLOT(authenticationRequired(QNetworkReply*, QAuthenticator*)),
+ connectionType);
+ applyProxy();
+}
+
bool WebPage::shouldInterruptJavaScript()
{
if (!m_interruptingJavaScriptEnabled)
diff --git a/WebKitTools/QtTestBrowser/webpage.h b/WebKitTools/QtTestBrowser/webpage.h
index 01f3f6a..e62402b 100644
--- a/WebKitTools/QtTestBrowser/webpage.h
+++ b/WebKitTools/QtTestBrowser/webpage.h
@@ -33,9 +33,14 @@
#ifndef webpage_h
#define webpage_h
+#include <QFuture>
+#include <QScopedPointer>
+#include <QThread>
#include <qwebframe.h>
#include <qwebpage.h>
+class QtNAMThread;
+
class WebPage : public QWebPage {
Q_OBJECT
@@ -51,6 +56,7 @@ public:
QString userAgentForUrl(const QUrl& url) const;
void setInterruptingJavaScriptEnabled(bool enabled) { m_interruptingJavaScriptEnabled = enabled; }
+ void setQnamThreaded(bool threaded);
public slots:
void openUrlInDefaultBrowser(const QUrl& url = QUrl());
@@ -64,6 +70,36 @@ private:
void applyProxy();
QString m_userAgent;
bool m_interruptingJavaScriptEnabled;
+ QScopedPointer<QtNAMThread> m_qnamThread;
+};
+
+
+class QtNAMThread : public QThread {
+public:
+ QtNAMThread()
+ {
+ m_qnamFuture.reportStarted();
+ }
+ ~QtNAMThread()
+ {
+ quit();
+ wait();
+ }
+
+ QFuture<QNetworkAccessManager*> networkAccessManager()
+ {
+ return m_qnamFuture.future();
+ }
+protected:
+ void run()
+ {
+ QNetworkAccessManager qnam;
+ m_qnamFuture.reportResult(&qnam);
+ m_qnamFuture.reportFinished();
+ exec();
+ }
+private:
+ QFutureInterface<QNetworkAccessManager*> m_qnamFuture;
};
#endif
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list