From 3c5eb8766e73c855782552f7c6472801e8ae820c Mon Sep 17 00:00:00 2001 From: Jyrki Jaakkola Date: Wed, 12 Jan 2011 18:23:10 +0100 Subject: QNetworkProxyFactory::systemProxyForQuery() for Symbian --- src/network/kernel/kernel.pri | 2 + src/network/kernel/qnetworkproxy_symbian.cpp | 267 +++++++++++++++++++++ tests/auto/network.pro | 1 + tests/auto/qnetworkproxyfactory/.gitignore | 1 + .../qnetworkproxyfactory/qnetworkproxyfactory.pro | 11 + .../tst_qnetworkproxyfactory_symbian.cpp | 101 ++++++++ 6 files changed, 383 insertions(+) create mode 100644 src/network/kernel/qnetworkproxy_symbian.cpp create mode 100644 tests/auto/qnetworkproxyfactory/.gitignore create mode 100644 tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro create mode 100644 tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp diff --git a/src/network/kernel/kernel.pri b/src/network/kernel/kernel.pri index 6145c43..66e87c9 100644 --- a/src/network/kernel/kernel.pri +++ b/src/network/kernel/kernel.pri @@ -27,5 +27,7 @@ win32:SOURCES += kernel/qhostinfo_win.cpp kernel/qnetworkinterface_win.cpp mac:LIBS_PRIVATE += -framework SystemConfiguration -framework CoreFoundation mac:SOURCES += kernel/qnetworkproxy_mac.cpp else:win32:SOURCES += kernel/qnetworkproxy_win.cpp +else:symbian:SOURCES += kernel/qnetworkproxy_symbian.cpp else:SOURCES += kernel/qnetworkproxy_generic.cpp +symbian: LIBS += -lcommsdat diff --git a/src/network/kernel/qnetworkproxy_symbian.cpp b/src/network/kernel/qnetworkproxy_symbian.cpp new file mode 100644 index 0000000..c1f9c1d --- /dev/null +++ b/src/network/kernel/qnetworkproxy_symbian.cpp @@ -0,0 +1,267 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtNetwork module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/** + * Some notes about the code: + * + * ** It is assumed that the system proxies are for url based requests + * ie. HTTP/HTTPS based. + * ** It is assumed that proxies don't use authentication. + * ** It is assumed that there is no exceptions to proxy use (Symbian side + * does have the field for it but it is not user modifiable by default). + * ** There is no checking for protocol name. + */ + +#include + +#ifndef QT_NO_NETWORKPROXY + +#include // CMDBSession +#include // CCDIAPRecord, CCDProxiesRecord +#include // KCDTIdIAPRecord, KCDTIdProxiesRecord +#include +#include + +using namespace CommsDat; + +QT_BEGIN_NAMESPACE + +class SymbianIapId +{ +public: + enum State{ + NotValid, + Valid + }; + Q_DECLARE_FLAGS(States, State) + SymbianIapId() {} + ~SymbianIapId() {} + void setIapId(TUint32 iapId) { iapState |= Valid; id = iapId; } + bool isValid() { return iapState == Valid; } + TUint32 iapId() { return id; } +private: + QFlags iapState; + TUint32 id; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(SymbianIapId::States) + +class SymbianProxyQuery +{ +public: + static QNetworkConfiguration findCurrentConfiguration(QNetworkConfigurationManager& configurationManager); + static SymbianIapId getIapId(QNetworkConfigurationManager& configurationManager); + static CCDIAPRecord *getIapRecordLC(TUint32 aIAPId, CMDBSession &aDb); + static CMDBRecordSet *prepareQueryLC(TUint32 serviceId, TDesC& serviceType); + static QList proxyQueryL(TUint32 aIAPId, const QNetworkProxyQuery &query); +}; + +QNetworkConfiguration SymbianProxyQuery::findCurrentConfiguration(QNetworkConfigurationManager& configurationManager) +{ + QList activeConfigurations = configurationManager.allConfigurations( + QNetworkConfiguration::Active); + QNetworkConfiguration currentConfig; + if (activeConfigurations.count() > 0) { + currentConfig = activeConfigurations.at(0); + } else { + // No active configurations, try default one + QNetworkConfiguration defaultConfiguration = configurationManager.defaultConfiguration(); + if (defaultConfiguration.isValid()) { + switch (defaultConfiguration.type()) { + case QNetworkConfiguration::InternetAccessPoint: + currentConfig = defaultConfiguration; + break; + case QNetworkConfiguration::ServiceNetwork: + { + // Note: This code assumes that the only unambigious way to + // find current proxy config is if there is only one access point + // or if the found access point is immediately usable. + QList childConfigurations = defaultConfiguration.children(); + if (childConfigurations.count() == 1) { + currentConfig = childConfigurations.at(0); + } else { + for (int index = 0; index < childConfigurations.count(); index++) { + QNetworkConfiguration childConfig = childConfigurations.at(index); + if (childConfig.isValid() && childConfig.state() == QNetworkConfiguration::Discovered) { + currentConfig = childConfig; + break; + } + } + } + } + break; + case QNetworkConfiguration::UserChoice: + // User choice is not a valid configuration for proxy discovery + break; + } + } + } + return currentConfig; +} + +SymbianIapId SymbianProxyQuery::getIapId(QNetworkConfigurationManager& configurationManager) +{ + SymbianIapId iapId; + + QNetworkConfiguration currentConfig = findCurrentConfiguration(configurationManager); + if (currentConfig.isValid()) { + // Note: the following code assumes that the identifier is in format + // I_xxxx where xxxx is the identifier of IAP. This is meant as a + // temporary solution until there is a support for returning + // implementation specific identifier. + const int generalPartLength = 2; + const int identifierNumberLength = currentConfig.identifier().length() - generalPartLength; + QString idString(currentConfig.identifier().right(identifierNumberLength)); + bool success; + uint id = idString.toUInt(&success); + if (success) + iapId.setIapId(id); + else + qWarning() << "Failed to convert identifier to access point identifier: " + << currentConfig.identifier(); + } + + return iapId; +} + +CCDIAPRecord *SymbianProxyQuery::getIapRecordLC(TUint32 aIAPId, CMDBSession &aDb) +{ + CCDIAPRecord *iap = static_cast (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(iap); + iap->SetRecordId(aIAPId); + iap->LoadL(aDb); + return iap; +} + +CMDBRecordSet *SymbianProxyQuery::prepareQueryLC(TUint32 serviceId, TDesC& serviceType) +{ + // Create a recordset of type CCDProxiesRecord + // for priming search. + // This will ultimately contain record(s) + // matching the priming record attributes + CMDBRecordSet *proxyRecords = new (ELeave) CMDBRecordSet ( + KCDTIdProxiesRecord); + CleanupStack::PushL(proxyRecords); + + CCDProxiesRecord *primingProxyRecord = + static_cast (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord)); + CleanupStack::PushL(primingProxyRecord); + + primingProxyRecord->iServiceType.SetMaxLengthL(serviceType.Length()); + primingProxyRecord->iServiceType = serviceType; + primingProxyRecord->iService = serviceId; + primingProxyRecord->iUseProxyServer = ETrue; + + proxyRecords->iRecords.AppendL(primingProxyRecord); + // Ownership of primingProxyRecord is transferred to + // proxyRecords, just remove it from the CleanupStack + CleanupStack::Pop(primingProxyRecord); + return proxyRecords; +} + +QList SymbianProxyQuery::proxyQueryL(TUint32 aIAPId, const QNetworkProxyQuery &query) +{ + QList foundProxies; + if (query.queryType() != QNetworkProxyQuery::UrlRequest) { + return foundProxies; + } + + CMDBSession *iDb = CMDBSession::NewLC(KCDVersion1_1); + CCDIAPRecord *iap = getIapRecordLC(aIAPId, *iDb); + + // Read service table id and service type + // from the IAP record found + TUint32 serviceId = iap->iService; + RBuf serviceType; + serviceType.CreateL(iap->iServiceType); + CleanupStack::PopAndDestroy(iap); + CleanupClosePushL(serviceType); + + CMDBRecordSet *proxyRecords = prepareQueryLC(serviceId, serviceType); + + // Now to find a proxy table matching our criteria + if (proxyRecords->FindL(*iDb)) { + TInt count = proxyRecords->iRecords.Count(); + for(TInt index = 0; index < count; index++) { + CCDProxiesRecord *proxyRecord = static_cast (proxyRecords->iRecords[index]); + RBuf serverName; + serverName.CreateL(proxyRecord->iServerName); + CleanupClosePushL(serverName); + if (serverName.Length() == 0) + User::Leave(KErrNotFound); + QString serverNameQt((const QChar*)serverName.Ptr(), serverName.Length()); + CleanupStack::Pop(); // serverName + TUint32 port = proxyRecord->iPortNumber; + + QNetworkProxy proxy(QNetworkProxy::HttpProxy, serverNameQt, port); + foundProxies.append(proxy); + } + } + + CleanupStack::PopAndDestroy(proxyRecords); + CleanupStack::Pop(); // serviceType + CleanupStack::PopAndDestroy(iDb); + + return foundProxies; +} + +QList QNetworkProxyFactory::systemProxyForQuery(const QNetworkProxyQuery &query) +{ + QList proxies; + SymbianIapId iapId; + TInt error; + QNetworkConfigurationManager manager; + iapId = SymbianProxyQuery::getIapId(manager); + if (iapId.isValid()) { + TRAP(error, proxies = SymbianProxyQuery::proxyQueryL(iapId.iapId(), query)) + if (error != KErrNone) { + qWarning() << "Error while retrieving proxies: '" << error << '"'; + proxies.clear(); + } + } + proxies << QNetworkProxy::NoProxy; + + return proxies; +} + +QT_END_NAMESPACE + +#endif diff --git a/tests/auto/network.pro b/tests/auto/network.pro index 31c754c..2e3b5cd 100644 --- a/tests/auto/network.pro +++ b/tests/auto/network.pro @@ -25,6 +25,7 @@ SUBDIRS=\ qnetworkcookiejar \ qnetworkinterface \ qnetworkproxy \ + qnetworkproxyfactory \ qnetworkrequest \ qnetworksession \ qobjectperformance \ diff --git a/tests/auto/qnetworkproxyfactory/.gitignore b/tests/auto/qnetworkproxyfactory/.gitignore new file mode 100644 index 0000000..9be26bb --- /dev/null +++ b/tests/auto/qnetworkproxyfactory/.gitignore @@ -0,0 +1 @@ +tst_qnetworkproxyfactory_symbian diff --git a/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro b/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro new file mode 100644 index 0000000..81460a1 --- /dev/null +++ b/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro @@ -0,0 +1,11 @@ +############################################################ +# Project file for autotest for file qnetworkproxy.h (proxy factory part) +############################################################ + +load(qttest_p4) +QT = core network + +SOURCES += tst_qnetworkproxyfactory_symbian.cpp + +symbian: TARGET.CAPABILITY = NetworkServices + diff --git a/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp b/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp new file mode 100644 index 0000000..6a8ea79 --- /dev/null +++ b/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include + +#include +#include +#include + +class tst_QNetworkProxyFactory_symbian : public QObject { + Q_OBJECT +private slots: + void systemProxyForQuery() const; + +private: + QString formatProxyName(const QNetworkProxy & proxy) const; +}; + +QString tst_QNetworkProxyFactory_symbian::formatProxyName(const QNetworkProxy & proxy) const +{ + QString proxyName; + if (!proxy.user().isNull()) + proxyName.append("%1:%2@").arg(proxy.user(), proxy.password()); + proxyName.append("%1:%2").arg(proxy.hostName(), proxy.port()); + proxyName.append(" (type=%1, capabilities=%2)").arg(proxy.type(), proxy.capabilities()); + + return proxyName; +} + +void tst_QNetworkProxyFactory_symbian::systemProxyForQuery() const +{ + QNetworkProxyFactory proxyFactory; + QNetworkProxyQuery query(QUrl(QString("http://www.abc.com")), QNetworkProxyQuery::UrlRequest); + QList systemProxyList = proxyFactory.systemProxyForQuery(query); + bool pass = true; + QNetworkProxy proxy; + + QList nativeProxyList; + nativeProxyList << QNetworkProxy(QNetworkProxy::HttpProxy, QString("http://test.proxy.com"), 8080) << QNetworkProxy::NoProxy; + + foreach (proxy, systemProxyList) { + if (!nativeProxyList.contains(proxy)) { + qWarning() << "System proxy not found in native proxy list: " << + formatProxyName(proxy); + pass = false; + } + } + + foreach (proxy, nativeProxyList) { + if (!systemProxyList.contains(proxy)) { + qWarning() << "Native proxy not found in system proxy list: " << + formatProxyName(proxy); + pass = false; + } + } + + if (!pass) + QFAIL("One or more system proxy lookup failures occured."); +} + +QTEST_MAIN(tst_QNetworkProxyFactory_symbian) +#include "tst_qnetworkproxyfactory_symbian.moc" -- cgit v0.12 From 4d0cd05e98c3e83a4d1871c139cd8b4a2a86e988 Mon Sep 17 00:00:00 2001 From: Jeremy Katz Date: Thu, 13 Jan 2011 13:43:56 +0100 Subject: Fix system proxy test: QNetworkProxyFactory::systemProxyForQuery() is static The test failed to build because QNetworkProxyFactory can't be instantiated (pure virtual member queryProxy()), but doing so isn't necessary. The test has also been removed from the network tests because it relies on a static configuration, but can not guarantee that the configuration exists. --- tests/auto/network.pro | 1 - tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro | 2 +- tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp | 3 +-- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/auto/network.pro b/tests/auto/network.pro index 2e3b5cd..31c754c 100644 --- a/tests/auto/network.pro +++ b/tests/auto/network.pro @@ -25,7 +25,6 @@ SUBDIRS=\ qnetworkcookiejar \ qnetworkinterface \ qnetworkproxy \ - qnetworkproxyfactory \ qnetworkrequest \ qnetworksession \ qobjectperformance \ diff --git a/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro b/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro index 81460a1..369b5fa 100644 --- a/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro +++ b/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro @@ -5,7 +5,7 @@ load(qttest_p4) QT = core network -SOURCES += tst_qnetworkproxyfactory_symbian.cpp +symbian: SOURCES += tst_qnetworkproxyfactory_symbian.cpp symbian: TARGET.CAPABILITY = NetworkServices diff --git a/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp b/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp index 6a8ea79..31521c3 100644 --- a/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp +++ b/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp @@ -68,9 +68,8 @@ QString tst_QNetworkProxyFactory_symbian::formatProxyName(const QNetworkProxy & void tst_QNetworkProxyFactory_symbian::systemProxyForQuery() const { - QNetworkProxyFactory proxyFactory; QNetworkProxyQuery query(QUrl(QString("http://www.abc.com")), QNetworkProxyQuery::UrlRequest); - QList systemProxyList = proxyFactory.systemProxyForQuery(query); + QList systemProxyList = QNetworkProxyFactory::systemProxyForQuery(query); bool pass = true; QNetworkProxy proxy; -- cgit v0.12 From deef2cb5e01b871008b08b81691ad4a46deca328 Mon Sep 17 00:00:00 2001 From: Jeremy Katz Date: Fri, 14 Jan 2011 14:23:56 +0100 Subject: various fixes to deal with CI gate failures --- src/network/kernel/qnetworkproxy_symbian.cpp | 30 +++---- tests/auto/network.pro | 1 + .../qnetworkproxyfactory/qnetworkproxyfactory.pro | 2 +- .../tst_qnetworkproxyfactory.cpp | 100 +++++++++++++++++++++ 4 files changed, 117 insertions(+), 16 deletions(-) create mode 100644 tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp diff --git a/src/network/kernel/qnetworkproxy_symbian.cpp b/src/network/kernel/qnetworkproxy_symbian.cpp index c1f9c1d..79dfb27 100644 --- a/src/network/kernel/qnetworkproxy_symbian.cpp +++ b/src/network/kernel/qnetworkproxy_symbian.cpp @@ -1,17 +1,17 @@ /**************************************************************************** ** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** -** This file is part of the QtNetwork module of the Qt Toolkit. +** This file is part of the FOO module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser @@ -25,16 +25,16 @@ ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** ** $QT_END_LICENSE$ ** ****************************************************************************/ diff --git a/tests/auto/network.pro b/tests/auto/network.pro index 31c754c..7d83054 100644 --- a/tests/auto/network.pro +++ b/tests/auto/network.pro @@ -35,6 +35,7 @@ SUBDIRS=\ qsslerror \ qsslkey \ qsslsocket \ +# qnetworkproxyfactory \ # Uses a hardcoded proxy configuration !contains(QT_CONFIG, private_tests): SUBDIRS -= \ qauthenticator \ diff --git a/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro b/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro index 369b5fa..f05c423 100644 --- a/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro +++ b/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro @@ -5,7 +5,7 @@ load(qttest_p4) QT = core network -symbian: SOURCES += tst_qnetworkproxyfactory_symbian.cpp +SOURCES += tst_qnetworkproxyfactory.cpp symbian: TARGET.CAPABILITY = NetworkServices diff --git a/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp b/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp new file mode 100644 index 0000000..e770f30 --- /dev/null +++ b/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include + +#include +#include +#include + +class tst_QNetworkProxyFactory : public QObject { + Q_OBJECT +private slots: + void systemProxyForQuery() const; + +private: + QString formatProxyName(const QNetworkProxy & proxy) const; +}; + +QString tst_QNetworkProxyFactory::formatProxyName(const QNetworkProxy & proxy) const +{ + QString proxyName; + if (!proxy.user().isNull()) + proxyName.append("%1:%2@").arg(proxy.user(), proxy.password()); + proxyName.append("%1:%2").arg(proxy.hostName(), proxy.port()); + proxyName.append(" (type=%1, capabilities=%2)").arg(proxy.type(), proxy.capabilities()); + + return proxyName; +} + +void tst_QNetworkProxyFactory::systemProxyForQuery() const +{ + QNetworkProxyQuery query(QUrl(QString("http://www.abc.com")), QNetworkProxyQuery::UrlRequest); + QList systemProxyList = QNetworkProxyFactory::systemProxyForQuery(query); + bool pass = true; + QNetworkProxy proxy; + + QList nativeProxyList; + nativeProxyList << QNetworkProxy(QNetworkProxy::HttpProxy, QString("http://test.proxy.com"), 8080) << QNetworkProxy::NoProxy; + + foreach (proxy, systemProxyList) { + if (!nativeProxyList.contains(proxy)) { + qWarning() << "System proxy not found in native proxy list: " << + formatProxyName(proxy); + pass = false; + } + } + + foreach (proxy, nativeProxyList) { + if (!systemProxyList.contains(proxy)) { + qWarning() << "Native proxy not found in system proxy list: " << + formatProxyName(proxy); + pass = false; + } + } + + if (!pass) + QFAIL("One or more system proxy lookup failures occured."); +} + +QTEST_MAIN(tst_QNetworkProxyFactory) +#include "tst_qnetworkproxyfactory.moc" -- cgit v0.12 From fa76fc577c138e0a8dd95671d3387cdc10a08c6e Mon Sep 17 00:00:00 2001 From: Jeremy Katz Date: Fri, 14 Jan 2011 14:46:54 +0100 Subject: file rename --- .../tst_qnetworkproxyfactory_symbian.cpp | 100 --------------------- 1 file changed, 100 deletions(-) delete mode 100644 tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp diff --git a/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp b/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp deleted file mode 100644 index 31521c3..0000000 --- a/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory_symbian.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include - -#include -#include -#include - -class tst_QNetworkProxyFactory_symbian : public QObject { - Q_OBJECT -private slots: - void systemProxyForQuery() const; - -private: - QString formatProxyName(const QNetworkProxy & proxy) const; -}; - -QString tst_QNetworkProxyFactory_symbian::formatProxyName(const QNetworkProxy & proxy) const -{ - QString proxyName; - if (!proxy.user().isNull()) - proxyName.append("%1:%2@").arg(proxy.user(), proxy.password()); - proxyName.append("%1:%2").arg(proxy.hostName(), proxy.port()); - proxyName.append(" (type=%1, capabilities=%2)").arg(proxy.type(), proxy.capabilities()); - - return proxyName; -} - -void tst_QNetworkProxyFactory_symbian::systemProxyForQuery() const -{ - QNetworkProxyQuery query(QUrl(QString("http://www.abc.com")), QNetworkProxyQuery::UrlRequest); - QList systemProxyList = QNetworkProxyFactory::systemProxyForQuery(query); - bool pass = true; - QNetworkProxy proxy; - - QList nativeProxyList; - nativeProxyList << QNetworkProxy(QNetworkProxy::HttpProxy, QString("http://test.proxy.com"), 8080) << QNetworkProxy::NoProxy; - - foreach (proxy, systemProxyList) { - if (!nativeProxyList.contains(proxy)) { - qWarning() << "System proxy not found in native proxy list: " << - formatProxyName(proxy); - pass = false; - } - } - - foreach (proxy, nativeProxyList) { - if (!systemProxyList.contains(proxy)) { - qWarning() << "Native proxy not found in system proxy list: " << - formatProxyName(proxy); - pass = false; - } - } - - if (!pass) - QFAIL("One or more system proxy lookup failures occured."); -} - -QTEST_MAIN(tst_QNetworkProxyFactory_symbian) -#include "tst_qnetworkproxyfactory_symbian.moc" -- cgit v0.12 From c3d2d583121219836714609b250e4e52e33e393d Mon Sep 17 00:00:00 2001 From: Jeremy Katz Date: Sun, 16 Jan 2011 19:14:54 +0100 Subject: fixed CI gate flagged spelling error: occured -> occurred --- tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp b/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp index e770f30..10fa7c6 100644 --- a/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp +++ b/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp @@ -93,7 +93,7 @@ void tst_QNetworkProxyFactory::systemProxyForQuery() const } if (!pass) - QFAIL("One or more system proxy lookup failures occured."); + QFAIL("One or more system proxy lookup failures occurred."); } QTEST_MAIN(tst_QNetworkProxyFactory) -- cgit v0.12