summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Mira <samuel.mira@qt.io>2021-10-11 12:46:43 +0300
committerSamuel Mira <samuel.mira@qt.io>2021-10-13 11:20:37 +0300
commitedf911e3c162f161ce553d67cfd7f7950f9b435c (patch)
tree069c3bc9364443645d6bd53fc722548c23959c6f
parent9599406cdbf7eb6e84fb6b62704fe3d8a870441c (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.cpp31
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"