summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlli Salli <ollisal@gmail.com>2011-09-13 14:13:47 +0300
committerOlli Salli <ollisal@gmail.com>2011-10-10 19:17:42 +0300
commit56a077fa7e0ffd00e5009239bacf059d303aa909 (patch)
treeed3f90378975b19afb21cfb3265b83ea3e7e3fd1
parent1d1e6720ccafb6ead38ccecb4ef080c59e2791ed (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.cpp2
-rw-r--r--qt4/TelepathyQt4/stream-tube-client.cpp5
-rw-r--r--qt4/tests/dbus/stream-tube-handlers.cpp24
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()