diff options
author | Olli Salli <ollisal@gmail.com> | 2011-09-13 14:13:47 +0300 |
---|---|---|
committer | Olli Salli <ollisal@gmail.com> | 2011-10-10 19:17:42 +0300 |
commit | 56a077fa7e0ffd00e5009239bacf059d303aa909 (patch) | |
tree | ed3f90378975b19afb21cfb3265b83ea3e7e3fd1 | |
parent | 1d1e6720ccafb6ead38ccecb4ef080c59e2791ed (diff) |
Make it possible for STS to have an empty filter, and a checkable error for STC to have an empty one
-rw-r--r-- | qt4/TelepathyQt4/simple-stream-tube-handler.cpp | 2 | ||||
-rw-r--r-- | qt4/TelepathyQt4/stream-tube-client.cpp | 5 | ||||
-rw-r--r-- | qt4/tests/dbus/stream-tube-handlers.cpp | 24 |
3 files changed, 28 insertions, 3 deletions
diff --git a/qt4/TelepathyQt4/simple-stream-tube-handler.cpp b/qt4/TelepathyQt4/simple-stream-tube-handler.cpp index 7e06e71d9..c5b1c5fb8 100644 --- a/qt4/TelepathyQt4/simple-stream-tube-handler.cpp +++ b/qt4/TelepathyQt4/simple-stream-tube-handler.cpp @@ -40,8 +40,6 @@ namespace ChannelClassSpecList buildFilter(const QStringList &p2pServices, const QStringList &roomServices, bool requested) { - Q_ASSERT(!p2pServices.isEmpty() || !roomServices.isEmpty()); - ChannelClassSpecList filter; foreach (const QString &service, p2pServices) diff --git a/qt4/TelepathyQt4/stream-tube-client.cpp b/qt4/TelepathyQt4/stream-tube-client.cpp index 4dad023f6..ae50ebd7a 100644 --- a/qt4/TelepathyQt4/stream-tube-client.cpp +++ b/qt4/TelepathyQt4/stream-tube-client.cpp @@ -237,6 +237,11 @@ StreamTubeClientPtr StreamTubeClient::create( bool monitorConnections, bool bypassApproval) { + if (p2pServices.isEmpty() && roomServices.isEmpty()) { + warning() << "Tried to create a StreamTubeClient with no services, returning NULL"; + return StreamTubeClientPtr(); + } + return StreamTubeClientPtr( new StreamTubeClient(registrar, p2pServices, roomServices, clientName, monitorConnections, bypassApproval)); diff --git a/qt4/tests/dbus/stream-tube-handlers.cpp b/qt4/tests/dbus/stream-tube-handlers.cpp index 3d2ed8f33..d58abd026 100644 --- a/qt4/tests/dbus/stream-tube-handlers.cpp +++ b/qt4/tests/dbus/stream-tube-handlers.cpp @@ -668,6 +668,7 @@ void TestStreamTubeHandlers::testRegistration() StreamTubeServerPtr activatedServer = StreamTubeServer::create(QStringList() << QLatin1String("ftp"), QStringList(), QLatin1String("vsftpd")); + StreamTubeServerPtr preferredHandlerServer = StreamTubeServer::create(QStringList()); StreamTubeClientPtr browser = StreamTubeClient::create(QStringList() << QLatin1String("http"), QStringList(), @@ -675,6 +676,16 @@ void TestStreamTubeHandlers::testRegistration() StreamTubeClientPtr collaborationTool = StreamTubeClient::create(QStringList() << QLatin1String("sketch") << QLatin1String("ftp"), QStringList() << QLatin1String("sketch")); + StreamTubeClientPtr invalidBecauseNoServicesClient = + StreamTubeClient::create(QStringList()); + + QVERIFY(!httpServer.isNull()); + QVERIFY(!whiteboardServer.isNull()); + QVERIFY(!activatedServer.isNull()); + QVERIFY(!preferredHandlerServer.isNull()); + QVERIFY(!browser.isNull()); + QVERIFY(!collaborationTool.isNull()); + QVERIFY(invalidBecauseNoServicesClient.isNull()); QCOMPARE(activatedServer->clientName(), QLatin1String("vsftpd")); QCOMPARE(browser->clientName(), QLatin1String("Debian.Iceweasel")); @@ -708,6 +719,7 @@ void TestStreamTubeHandlers::testRegistration() whiteboardServer->exportTcpSocket(QHostAddress::LocalHost, 31552, whiteboardParams); activatedServer->exportTcpSocket(&server); QCOMPARE(activatedServer->exportedParameters(), QVariantMap()); + preferredHandlerServer->exportTcpSocket(QHostAddress::LocalHost, 6681); browser->setToAcceptAsTcp(); collaborationTool->setToAcceptAsUnix(true); @@ -715,19 +727,29 @@ void TestStreamTubeHandlers::testRegistration() QVERIFY(httpServer->isRegistered()); QVERIFY(whiteboardServer->isRegistered()); QVERIFY(activatedServer->isRegistered()); + QVERIFY(preferredHandlerServer->isRegistered()); QVERIFY(browser->isRegistered()); QVERIFY(collaborationTool->isRegistered()); QMap<QString, ClientHandlerInterface *> handlers = ourHandlers(); QVERIFY(!handlers.isEmpty()); - QCOMPARE(handlers.size(), 5); QVERIFY(handlers.contains(httpServer->clientName())); QVERIFY(handlers.contains(whiteboardServer->clientName())); QVERIFY(handlers.contains(QLatin1String("vsftpd"))); + QVERIFY(handlers.contains(preferredHandlerServer->clientName())); QVERIFY(handlers.contains(QLatin1String("Debian.Iceweasel"))); QVERIFY(handlers.contains(collaborationTool->clientName())); + + QCOMPARE(handlers.size(), 6); + + // The only-to-be-used-through-preferredHandler server should have an empty filter, but still be + // registered and introspectable + ChannelClassList filter; + QVERIFY(waitForProperty(handlers.value(preferredHandlerServer->clientName())-> + requestPropertyHandlerChannelFilter(), &filter)); + QVERIFY(filter.isEmpty()); } void TestStreamTubeHandlers::testBasicTcpExport() |