diff options
author | Jim Hodapp <jim.hodapp@canonical.com> | 2015-08-03 14:27:16 +0200 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2015-08-10 15:12:22 +0000 |
commit | 23acd9f01d5dcca84025eb95de266e7e6b6cb386 (patch) | |
tree | bffd596d62312ed8be20075edb02b35ceec95cb0 /tests/auto/unit/qmultimedia_common | |
parent | 129b06ba77e451c08778badcd54cbaf193d195bc (diff) |
Add audio role API to QMediaPlayer.
Change-Id: Ia5e3e2fe714f10b6aad62f0a4801c607905c7e0d
Task-number: QTBUG-41054
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
Diffstat (limited to 'tests/auto/unit/qmultimedia_common')
3 files changed, 87 insertions, 1 deletions
diff --git a/tests/auto/unit/qmultimedia_common/mockaudiorolecontrol.h b/tests/auto/unit/qmultimedia_common/mockaudiorolecontrol.h new file mode 100644 index 000000000..6ba2328b9 --- /dev/null +++ b/tests/auto/unit/qmultimedia_common/mockaudiorolecontrol.h @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MOCKAUDIOROLECONTROL_H +#define MOCKAUDIOROLECONTROL_H + +#include <qaudiorolecontrol.h> + +class MockAudioRoleControl : public QAudioRoleControl +{ + friend class MockMediaPlayerService; + +public: + MockAudioRoleControl() + : QAudioRoleControl() + , m_audioRole(QAudio::UnknownRole) + { + } + + QAudio::Role audioRole() const + { + return m_audioRole; + } + + void setAudioRole(QAudio::Role role) + { + if (role != m_audioRole) + emit audioRoleChanged(m_audioRole = role); + } + + QList<QAudio::Role> supportedAudioRoles() const + { + return QList<QAudio::Role>() << QAudio::MusicRole + << QAudio::AlarmRole + << QAudio::NotificationRole; + } + + QAudio::Role m_audioRole; +}; + +#endif // MOCKAUDIOROLECONTROL_H + diff --git a/tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h b/tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h index d5c6d2e9f..398f92ac2 100644 --- a/tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h +++ b/tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h @@ -42,6 +42,7 @@ #include "mockvideorenderercontrol.h" #include "mockvideoprobecontrol.h" #include "mockvideowindowcontrol.h" +#include "mockaudiorolecontrol.h" class MockMediaPlayerService : public QMediaService { @@ -51,6 +52,7 @@ public: MockMediaPlayerService():QMediaService(0) { mockControl = new MockMediaPlayerControl; + mockAudioRoleControl = new MockAudioRoleControl; mockStreamsControl = new MockStreamsControl; mockNetworkControl = new MockNetworkAccessControl; rendererControl = new MockVideoRendererControl; @@ -58,11 +60,13 @@ public: mockVideoProbeControl = new MockVideoProbeControl; windowControl = new MockVideoWindowControl; windowRef = 0; + enableAudioRole = true; } ~MockMediaPlayerService() { delete mockControl; + delete mockAudioRoleControl; delete mockStreamsControl; delete mockNetworkControl; delete rendererControl; @@ -87,6 +91,8 @@ public: windowRef += 1; return windowControl; } + } else if (enableAudioRole && qstrcmp(iid, QAudioRoleControl_iid) == 0) { + return mockAudioRoleControl; } if (qstrcmp(iid, QMediaNetworkAccessControl_iid) == 0) @@ -125,6 +131,8 @@ public: void selectCurrentConfiguration(QNetworkConfiguration config) { mockNetworkControl->setCurrentConfiguration(config); } + void setHasAudioRole(bool enable) { enableAudioRole = enable; } + void reset() { mockControl->_state = QMediaPlayer::StoppedState; @@ -143,11 +151,15 @@ public: mockControl->_isValid = false; mockControl->_errorString = QString(); + enableAudioRole = true; + mockAudioRoleControl->m_audioRole = QAudio::UnknownRole; + mockNetworkControl->_current = QNetworkConfiguration(); mockNetworkControl->_configurations = QList<QNetworkConfiguration>(); } MockMediaPlayerControl *mockControl; + MockAudioRoleControl *mockAudioRoleControl; MockStreamsControl *mockStreamsControl; MockNetworkAccessControl *mockNetworkControl; MockVideoRendererControl *rendererControl; @@ -155,6 +167,7 @@ public: MockVideoWindowControl *windowControl; int windowRef; int rendererRef; + bool enableAudioRole; }; diff --git a/tests/auto/unit/qmultimedia_common/mockplayer.pri b/tests/auto/unit/qmultimedia_common/mockplayer.pri index 74f289d47..c43fb31e5 100644 --- a/tests/auto/unit/qmultimedia_common/mockplayer.pri +++ b/tests/auto/unit/qmultimedia_common/mockplayer.pri @@ -8,6 +8,7 @@ HEADERS *= \ ../qmultimedia_common/mockmediaplayercontrol.h \ ../qmultimedia_common/mockmediastreamscontrol.h \ ../qmultimedia_common/mockmedianetworkaccesscontrol.h \ - ../qmultimedia_common/mockvideoprobecontrol.h + ../qmultimedia_common/mockvideoprobecontrol.h \ + ../qmultimedia_common/mockaudiorolecontrol.h include(mockvideo.pri) |