--- a/qtmobility/tests/auto/qmediaserviceprovider/tst_qmediaserviceprovider.cpp Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/tests/auto/qmediaserviceprovider/tst_qmediaserviceprovider.cpp Mon May 03 13:18:40 2010 +0300
@@ -49,7 +49,6 @@
#include <qmediaobject.h>
#include <qmediaservice.h>
#include <qmediaplayer.h>
-#include <experimental/qcamera.h>
#include <qaudiocapturesource.h>
QTM_USE_NAMESPACE
@@ -75,8 +74,7 @@
QStringList keys() const
{
return QStringList() <<
- QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER) <<
- QLatin1String(Q_MEDIASERVICE_CAMERA);
+ QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER);
}
QMediaService* create(QString const& key)
@@ -112,8 +110,6 @@
QList<QByteArray> devices(const QByteArray &service) const
{
QList<QByteArray> res;
- if (service == QByteArray(Q_MEDIASERVICE_CAMERA))
- res << "camera1" << "camera2";
return res;
}
@@ -157,7 +153,7 @@
Q_UNUSED(codecs);
if (mimeType == "audio/wav")
- return QtMedia::PreferedService;
+ return QtMedia::PreferredService;
return QtMedia::NotSupported;
}
@@ -187,7 +183,6 @@
{
return QStringList() <<
QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER) <<
- QLatin1String(Q_MEDIASERVICE_CAMERA) <<
QLatin1String(Q_MEDIASERVICE_AUDIOSOURCE);
}
@@ -207,9 +202,7 @@
QList<QByteArray> devices(const QByteArray &service) const
{
QList<QByteArray> res;
- if (service == QByteArray(Q_MEDIASERVICE_CAMERA))
- res << "camera3" << "camera4";
- else if (service == QByteArray(Q_MEDIASERVICE_AUDIOSOURCE))
+ if (service == QByteArray(Q_MEDIASERVICE_AUDIOSOURCE))
res << "audiosource1" << "audiosource2";
return res;
@@ -224,6 +217,57 @@
}
};
+class MockServicePlugin4 : public QMediaServiceProviderPlugin,
+ public QMediaServiceSupportedFormatsInterface,
+ public QMediaServiceFeaturesInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(QtMobility::QMediaServiceSupportedFormatsInterface)
+ Q_INTERFACES(QtMobility::QMediaServiceFeaturesInterface)
+public:
+ QStringList keys() const
+ {
+ return QStringList() << QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER);
+ }
+
+ QMediaService* create(QString const& key)
+ {
+ if (keys().contains(key))
+ return new MockMediaService("MockServicePlugin4");
+ else
+ return 0;
+ }
+
+ void release(QMediaService *service)
+ {
+ delete service;
+ }
+
+ QtMedia::SupportEstimate hasSupport(const QString &mimeType, const QStringList& codecs) const
+ {
+ if (codecs.contains(QLatin1String("jpeg2000")))
+ return QtMedia::NotSupported;
+
+ if (supportedMimeTypes().contains(mimeType))
+ return QtMedia::ProbablySupported;
+
+ return QtMedia::MaybeSupported;
+ }
+
+ QStringList supportedMimeTypes() const
+ {
+ return QStringList() << "video/mp4" << "video/quicktime";
+ }
+
+ QMediaServiceProviderHint::Features supportedFeatures(const QByteArray &service) const
+ {
+ if (service == QByteArray(Q_MEDIASERVICE_MEDIAPLAYER))
+ return QMediaServiceProviderHint::StreamPlayback;
+ else
+ return 0;
+ }
+};
+
class MockMediaServiceProvider : public QMediaServiceProvider
@@ -248,12 +292,11 @@
public slots:
void initTestCase();
-private slots:
+private slots:
void testDefaultProviderAvailable();
void testObtainService();
void testHasSupport();
void testSupportedMimeTypes();
- void testDevices();
void testProviderHints();
private:
@@ -265,6 +308,7 @@
plugins << new MockServicePlugin1;
plugins << new MockServicePlugin2;
plugins << new MockServicePlugin3;
+ plugins << new MockServicePlugin4;
QMediaPluginLoader::setStaticPlugins(QLatin1String("/mediaservice"), plugins);
}
@@ -284,7 +328,6 @@
QMediaService *service = 0;
- QTest::ignoreMessage(QtWarningMsg, "Load static plugins for \"/mediaservice/\" ");
// Player
service = provider->requestService(Q_MEDIASERVICE_MEDIAPLAYER);
QVERIFY(service != 0);
@@ -325,12 +368,32 @@
QCOMPARE(QMediaPlayer::hasSupport("audio/ogg"), QtMedia::ProbablySupported);
QCOMPARE(QMediaPlayer::hasSupport("audio/wav"), QtMedia::ProbablySupported);
+ //test low latency flag support
+ QCOMPARE(QMediaPlayer::hasSupport("audio/wav", QStringList(), QMediaPlayer::LowLatency),
+ QtMedia::ProbablySupported);
+ //plugin1 probably supports audio/ogg, it checked because it doesn't provide features iface
+ QCOMPARE(QMediaPlayer::hasSupport("audio/ogg", QStringList(), QMediaPlayer::LowLatency),
+ QtMedia::ProbablySupported);
+ //Plugin4 is not checked here, sine it's known not support low latency
+ QCOMPARE(QMediaPlayer::hasSupport("video/quicktime", QStringList(), QMediaPlayer::LowLatency),
+ QtMedia::MaybeSupported);
+
+ //test streaming flag support
+ QCOMPARE(QMediaPlayer::hasSupport("video/quicktime", QStringList(), QMediaPlayer::StreamPlayback),
+ QtMedia::ProbablySupported);
+ //Plugin2 is not checked here, sine it's known not support streaming
+ QCOMPARE(QMediaPlayer::hasSupport("audio/wav", QStringList(), QMediaPlayer::StreamPlayback),
+ QtMedia::MaybeSupported);
+
//ensure the correct media player plugin is choosen for mime type
QMediaPlayer simplePlayer(0, QMediaPlayer::LowLatency);
QCOMPARE(simplePlayer.service()->objectName(), QLatin1String("MockServicePlugin2"));
QMediaPlayer mediaPlayer;
QVERIFY(mediaPlayer.service()->objectName() != QLatin1String("MockServicePlugin2"));
+
+ QMediaPlayer streamPlayer(0, QMediaPlayer::StreamPlayback);
+ QCOMPARE(streamPlayer.service()->objectName(), QLatin1String("MockServicePlugin4"));
}
void tst_QMediaServiceProvider::testSupportedMimeTypes()
@@ -344,43 +407,6 @@
QVERIFY(!provider->supportedMimeTypes(QByteArray(Q_MEDIASERVICE_MEDIAPLAYER)).contains("audio/mp3"));
}
-void tst_QMediaServiceProvider::testDevices()
-{
- MockMediaServiceProvider mockProvider;
- QVERIFY(mockProvider.devices(QByteArray(Q_MEDIASERVICE_CAMERA)).isEmpty());
- QVERIFY(mockProvider.deviceDescription(QByteArray(Q_MEDIASERVICE_CAMERA),
- QByteArray()).isEmpty());
-
- QMediaServiceProvider *provider = QMediaServiceProvider::defaultServiceProvider();
-
- QList<QByteArray> cameraDevices = provider->devices(QByteArray(Q_MEDIASERVICE_CAMERA));
- QCOMPARE(cameraDevices.count(), 4);
- QVERIFY(cameraDevices.contains(QByteArray("camera1")));
- QVERIFY(cameraDevices.contains(QByteArray("camera2")));
- QVERIFY(cameraDevices.contains(QByteArray("camera3")));
- QVERIFY(cameraDevices.contains(QByteArray("camera4")));
-
- //ensure the right plugin is choosen for a device
- QCamera camera1(QByteArray("camera1"));
- QCOMPARE( camera1.service()->objectName(), QLatin1String("MockServicePlugin1") );
- QCamera camera2(QByteArray("camera2"));
- QCOMPARE( camera2.service()->objectName(), QLatin1String("MockServicePlugin1") );
- QCamera camera3(QByteArray("camera3"));
- QCOMPARE( camera3.service()->objectName(), QLatin1String("MockServicePlugin3") );
- QCamera camera4(QByteArray("camera4"));
- QCOMPARE( camera4.service()->objectName(), QLatin1String("MockServicePlugin3") );
-
- QList<QByteArray> audioSourceDevices = provider->devices(QByteArray(Q_MEDIASERVICE_AUDIOSOURCE));
- QCOMPARE(audioSourceDevices.count(), 2);
- QVERIFY(audioSourceDevices.contains(QByteArray("audiosource1")));
- QVERIFY(audioSourceDevices.contains(QByteArray("audiosource2")));
-
- QVERIFY(provider->devices(QByteArray("non existing service")).isEmpty());
-}
-
-
-
-
void tst_QMediaServiceProvider::testProviderHints()
{
{