[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

andreas.kling at nokia.com andreas.kling at nokia.com
Wed Dec 22 15:54:07 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 61f503554b7c3fee488c8197d296e7df3166e928
Author: andreas.kling at nokia.com <andreas.kling at nokia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Nov 16 12:06:18 2010 +0000

    2010-11-16  Andreas Kling  <kling at webkit.org>
    
            Reviewed by Kenneth Rohde Christiansen.
    
            [Qt][WK2] Get proxy settings from environment (http[s]_proxy)
    
            If http_proxy and/or https_proxy are set in the environment,
            pass those in to QNetworkAccessManager.
    
            * WebProcess/qt/WebProcessMainQt.cpp:
            (WebKit::EnvHttpProxyFactory::EnvHttpProxyFactory):
            (WebKit::EnvHttpProxyFactory::initializeFromEnvironment):
            (WebKit::EnvHttpProxyFactory::queryProxy):
            (WebKit::initializeProxy):
            (WebKit::WebProcessMainQt):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72080 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index d67bb52..1ce3615 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -2,6 +2,22 @@
 
         Reviewed by Kenneth Rohde Christiansen.
 
+        [Qt][WK2] Get proxy settings from environment (http[s]_proxy)
+
+        If http_proxy and/or https_proxy are set in the environment,
+        pass those in to QNetworkAccessManager.
+
+        * WebProcess/qt/WebProcessMainQt.cpp:
+        (WebKit::EnvHttpProxyFactory::EnvHttpProxyFactory):
+        (WebKit::EnvHttpProxyFactory::initializeFromEnvironment):
+        (WebKit::EnvHttpProxyFactory::queryProxy):
+        (WebKit::initializeProxy):
+        (WebKit::WebProcessMainQt):
+
+2010-11-16  Andreas Kling  <kling at webkit.org>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
         [Qt][WK2] Emit windowCloseRequested signal on window.close()
 
         Original patch by Zalan Bujtas.
diff --git a/WebKit2/WebProcess/qt/WebProcessMainQt.cpp b/WebKit2/WebProcess/qt/WebProcessMainQt.cpp
index 3695714..cb15c53 100644
--- a/WebKit2/WebProcess/qt/WebProcessMainQt.cpp
+++ b/WebKit2/WebProcess/qt/WebProcessMainQt.cpp
@@ -30,8 +30,11 @@
 #include <wtf/Threading.h>
 
 #include <QApplication>
+#include <QList>
+#include <QNetworkProxyFactory>
 #include <QString>
 #include <QStringList>
+#include <QUrl>
 #include <QtGlobal>
 
 #if USE(MEEGOTOUCH)
@@ -61,6 +64,71 @@ static void sleep(unsigned seconds)
 #endif
 #endif
 
+class EnvHttpProxyFactory : public QNetworkProxyFactory
+{
+public:
+    EnvHttpProxyFactory() { }
+
+    bool initializeFromEnvironment();
+
+    QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery& query = QNetworkProxyQuery());
+
+private:
+    QList<QNetworkProxy> m_httpProxy;
+    QList<QNetworkProxy> m_httpsProxy;
+};
+
+bool EnvHttpProxyFactory::initializeFromEnvironment()
+{
+    bool wasSetByEnvironment = false;
+
+    QUrl proxyUrl = QUrl::fromUserInput(qgetenv("http_proxy"));
+    if (proxyUrl.isValid() && !proxyUrl.host().isEmpty()) {
+        int proxyPort = (proxyUrl.port() > 0) ? proxyUrl.port() : 8080;
+        m_httpProxy << QNetworkProxy(QNetworkProxy::HttpProxy, proxyUrl.host(), proxyPort);
+        wasSetByEnvironment = true;
+    } else
+        m_httpProxy << QNetworkProxy::NoProxy;
+
+    proxyUrl = QUrl::fromUserInput(qgetenv("https_proxy"));
+    if (proxyUrl.isValid() && !proxyUrl.host().isEmpty()) {
+        int proxyPort = (proxyUrl.port() > 0) ? proxyUrl.port() : 8080;
+        m_httpsProxy << QNetworkProxy(QNetworkProxy::HttpProxy, proxyUrl.host(), proxyPort);
+        wasSetByEnvironment = true;
+    } else
+        m_httpsProxy << QNetworkProxy::NoProxy;
+
+    return wasSetByEnvironment;
+}
+
+QList<QNetworkProxy> EnvHttpProxyFactory::queryProxy(const QNetworkProxyQuery& query)
+{
+    QString protocol = query.protocolTag().toLower();
+    if (protocol == QLatin1String("http"))
+        return m_httpProxy;
+    else if (protocol == QLatin1String("https"))
+        return m_httpsProxy;
+
+    QList<QNetworkProxy> proxies;
+    proxies << QNetworkProxy::NoProxy;
+    return proxies;
+}
+
+static void initializeProxy()
+{
+    QList<QNetworkProxy> proxylist = QNetworkProxyFactory::systemProxyForQuery();
+    if (proxylist.count() == 1) {
+        QNetworkProxy proxy = proxylist.first();
+        if (proxy == QNetworkProxy::NoProxy || proxy == QNetworkProxy::DefaultProxy) {
+            EnvHttpProxyFactory* proxyFactory = new EnvHttpProxyFactory();
+            if (proxyFactory->initializeFromEnvironment()) {
+                QNetworkProxyFactory::setApplicationProxyFactory(proxyFactory);
+                return;
+            }
+        }
+    }
+    QNetworkProxyFactory::setUseSystemConfiguration(true);
+}
 
 QWEBKIT_EXPORT int WebProcessMainQt(int argc, char** argv)
 {
@@ -77,6 +145,8 @@ QWEBKIT_EXPORT int WebProcessMainQt(int argc, char** argv)
     new MComponentData(argc, argv);
 #endif
 
+    initializeProxy();
+
     srandom(time(0));
 
     JSC::initializeThreading();

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list