diff options
author | Samuel Mira <samuel.mira@qt.io> | 2021-10-11 12:46:43 +0300 |
---|---|---|
committer | Samuel Mira <samuel.mira@qt.io> | 2021-10-13 11:20:37 +0300 |
commit | edf911e3c162f161ce553d67cfd7f7950f9b435c (patch) | |
tree | 069c3bc9364443645d6bd53fc722548c23959c6f | |
parent | 9599406cdbf7eb6e84fb6b62704fe3d8a870441c (diff) |
Add test for change application state while recording
This test tests if the a media recording can finish successfully when
the application state changes to a inative state while recording. This
can happen in mobile devices when you are recording and user changes
the app or if the user gets a popup from the OS like a permission popup.
Pick-to: 6.2
Change-Id: I4a4dbca3e47b4aa345be4ea3fa257eac523bb8a1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r-- | tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp b/tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp index 882ef82f2..30ba55c33 100644 --- a/tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp +++ b/tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp @@ -32,11 +32,13 @@ #include <QDebug> #include <QtMultimedia/qmediametadata.h> #include <private/qplatformmediarecorder_p.h> +#include "private/qguiapplication_p.h" #include <qmediarecorder.h> #include <qaudioformat.h> #include <qmockintegration_p.h> #include <qmediacapturesession.h> +#include "qguiapplication_platform.h" #include "qmockmediacapturesession.h" #include "qmockmediaencoder.h" @@ -70,6 +72,8 @@ private slots: void testVideoSettingsQuality(); void testVideoSettingsEncodingMode(); + void testApplicationInative(); + private: QMockIntegration *mockIntegration = nullptr; QMediaCaptureSession *captureSession; @@ -455,5 +459,32 @@ void tst_QMediaRecorder::testVideoSettingsEncodingMode() QCOMPARE(recorder.encodingMode(), QMediaRecorder::AverageBitRateEncoding); } +void tst_QMediaRecorder::testApplicationInative() +{ + QMediaCaptureSession session; + QMediaRecorder encoder; + session.setRecorder(&encoder); + + encoder.setVideoResolution(640, 480); + encoder.setQuality(QMediaRecorder::VeryHighQuality); + + encoder.setOutputLocation(QUrl("test.tmp")); + QCOMPARE(encoder.outputLocation().toString(), QString("test.tmp")); + QCOMPARE(encoder.actualLocation(), QUrl()); + + encoder.record(); + + QGuiApplicationPrivate::setApplicationState(Qt::ApplicationInactive); + QCoreApplication::processEvents(); + + QGuiApplicationPrivate::setApplicationState(Qt::ApplicationActive); + QCoreApplication::processEvents(); + + encoder.stop(); + + // the actual location is available after record + QCOMPARE(encoder.actualLocation().toString(), QString("test.tmp")); +} + QTEST_GUILESS_MAIN(tst_QMediaRecorder) #include "tst_qmediarecorder.moc" |