diff options
Diffstat (limited to 'tests/auto/unit/qmultimedia_common')
3 files changed, 42 insertions, 7 deletions
diff --git a/tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h b/tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h index 6620aa763..9f4eabf38 100644 --- a/tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h +++ b/tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h @@ -36,24 +36,52 @@ #include <private/qmediaplaylistcontrol_p.h> #include <private/qmediaplaylistnavigator_p.h> +#include <private/qmedianetworkplaylistprovider_p.h> #include "mockreadonlyplaylistprovider.h" -// Hmm, read only. class MockMediaPlaylistControl : public QMediaPlaylistControl { - Q_OBJECT public: - MockMediaPlaylistControl(QObject *parent) : QMediaPlaylistControl(parent) + MockMediaPlaylistControl(bool readonly = false, QObject *parent = 0) + : QMediaPlaylistControl(parent) + , m_navigator(0) + , m_playlist(0) + , m_ownsProvider(false) + , m_readOnly(readonly) { - m_navigator = new QMediaPlaylistNavigator(new MockReadOnlyPlaylistProvider(this), this); + reset(); } ~MockMediaPlaylistControl() { } - QMediaPlaylistProvider* playlistProvider() const { return m_navigator->playlist(); } + void reset() + { + delete m_navigator; + if (m_ownsProvider) + delete m_playlist; + + if (m_readOnly) + m_playlist = new MockReadOnlyPlaylistProvider(this); + else + m_playlist = new QMediaNetworkPlaylistProvider(this); + + m_ownsProvider = true; + m_navigator = new QMediaPlaylistNavigator(m_playlist, this); + } + + void setReadOnly(bool ro) + { + if (m_readOnly == ro) + return; + + m_readOnly = ro; + reset(); + } + + QMediaPlaylistProvider* playlistProvider() const { return m_playlist; } bool setPlaylistProvider(QMediaPlaylistProvider *newProvider) { bool bMediaContentChanged = false; @@ -70,6 +98,11 @@ public: emit currentMediaChanged(newProvider->media(i)); } + if (m_ownsProvider) + delete m_playlist; + m_playlist = newProvider; + m_ownsProvider = false; + m_navigator->setPlaylist(newProvider); return true; } @@ -99,6 +132,9 @@ public: private: QMediaPlaylistNavigator *m_navigator; + QMediaPlaylistProvider *m_playlist; + bool m_ownsProvider; + bool m_readOnly; }; #endif // MOCKMEDIAPLAYLISTCONTROL_H diff --git a/tests/auto/unit/qmultimedia_common/mockplaylistservice.h b/tests/auto/unit/qmultimedia_common/mockplaylistservice.h index 95d95dbff..6c038abfe 100644 --- a/tests/auto/unit/qmultimedia_common/mockplaylistservice.h +++ b/tests/auto/unit/qmultimedia_common/mockplaylistservice.h @@ -44,7 +44,7 @@ class MockPlaylistService : public QMediaService public: MockPlaylistService():QMediaService(0) { - mockControl = new MockMediaPlaylistControl(this); + mockControl = new MockMediaPlaylistControl(false, this); } ~MockPlaylistService() diff --git a/tests/auto/unit/qmultimedia_common/mockreadonlyplaylistprovider.h b/tests/auto/unit/qmultimedia_common/mockreadonlyplaylistprovider.h index 50747c1ad..39b1598b0 100644 --- a/tests/auto/unit/qmultimedia_common/mockreadonlyplaylistprovider.h +++ b/tests/auto/unit/qmultimedia_common/mockreadonlyplaylistprovider.h @@ -38,7 +38,6 @@ class MockReadOnlyPlaylistProvider : public QMediaPlaylistProvider { - Q_OBJECT public: MockReadOnlyPlaylistProvider(QObject *parent) :QMediaPlaylistProvider(parent) |