summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLev Zelenskiy <lev.zelenskiy@nokia.com>2012-03-15 09:41:18 +1000
committerQt by Nokia <qt-info@nokia.com>2012-03-21 07:36:53 +0100
commit92b58ac1a7a608dc9d1f7f8dfb7a0670da08322d (patch)
tree1aa5c65c93aafff1cb962a0525b94863c955db15
parentc00033dfe21c767e5045dc1ef83130033e767713 (diff)
QMediaPlaylist: Added ability to load from provided QNetworkRequest.
Change-Id: I7d8fc8a432810ff87650808b9ca6af53f7356d4e Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
-rw-r--r--src/multimedia/playback/playlistfileparser.cpp10
-rw-r--r--src/multimedia/playback/playlistfileparser_p.h2
-rw-r--r--src/multimedia/playback/qmedianetworkplaylistprovider.cpp10
-rw-r--r--src/multimedia/playback/qmedianetworkplaylistprovider_p.h2
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp2
-rw-r--r--src/multimedia/playback/qmediaplaylist.cpp27
-rw-r--r--src/multimedia/playback/qmediaplaylist.h1
-rw-r--r--src/multimedia/playback/qmediaplaylistprovider.cpp6
-rw-r--r--src/multimedia/playback/qmediaplaylistprovider_p.h2
-rw-r--r--tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp6
10 files changed, 45 insertions, 23 deletions
diff --git a/src/multimedia/playback/playlistfileparser.cpp b/src/multimedia/playback/playlistfileparser.cpp
index c7e3cea17..11fe5a232 100644
--- a/src/multimedia/playback/playlistfileparser.cpp
+++ b/src/multimedia/playback/playlistfileparser.cpp
@@ -543,21 +543,21 @@ QPlaylistFileParser::FileType QPlaylistFileParser::findPlaylistType(const QStrin
return UNKNOWN;
}
-void QPlaylistFileParser::start(const QUrl& url, bool utf8)
+void QPlaylistFileParser::start(const QNetworkRequest& request, bool utf8)
{
Q_D(QPlaylistFileParser);
stop();
d->m_type = UNKNOWN;
d->m_utf8 = utf8;
- d->m_root = url;
+ d->m_root = request.url();
- if (url.isLocalFile() && !QFile::exists(url.toLocalFile())) {
- emit error(NetworkError, QString(tr("%1 does not exist")).arg(url.toString()));
+ if (d->m_root.isLocalFile() && !QFile::exists(d->m_root.toLocalFile())) {
+ emit error(NetworkError, QString(tr("%1 does not exist")).arg(d->m_root.toString()));
return;
}
- d->m_source = d->m_mgr.get(QNetworkRequest(url));
+ d->m_source = d->m_mgr.get(request);
connect(d->m_source, SIGNAL(readyRead()), this, SLOT(_q_handleData()));
connect(d->m_source, SIGNAL(finished()), this, SLOT(_q_handleData()));
diff --git a/src/multimedia/playback/playlistfileparser_p.h b/src/multimedia/playback/playlistfileparser_p.h
index 4a609ee25..b466e8e24 100644
--- a/src/multimedia/playback/playlistfileparser_p.h
+++ b/src/multimedia/playback/playlistfileparser_p.h
@@ -85,7 +85,7 @@ public:
static FileType findPlaylistType(const QString& uri, const QString& mime, const void *data, quint32 size);
- void start(const QUrl& url, bool utf8 = false);
+ void start(const QNetworkRequest &request, bool utf8 = false);
void stop();
Q_SIGNALS:
diff --git a/src/multimedia/playback/qmedianetworkplaylistprovider.cpp b/src/multimedia/playback/qmedianetworkplaylistprovider.cpp
index f7cc342fe..972d99df1 100644
--- a/src/multimedia/playback/qmedianetworkplaylistprovider.cpp
+++ b/src/multimedia/playback/qmedianetworkplaylistprovider.cpp
@@ -51,7 +51,7 @@ class QMediaNetworkPlaylistProviderPrivate: public QMediaPlaylistProviderPrivate
{
Q_DECLARE_NON_CONST_PUBLIC(QMediaNetworkPlaylistProvider)
public:
- bool load(const QUrl &location);
+ bool load(const QNetworkRequest &request);
QPlaylistFileParser parser;
QList<QMediaContent> resources;
@@ -62,10 +62,10 @@ public:
QMediaNetworkPlaylistProvider *q_ptr;
};
-bool QMediaNetworkPlaylistProviderPrivate::load(const QUrl &location)
+bool QMediaNetworkPlaylistProviderPrivate::load(const QNetworkRequest &request)
{
parser.stop();
- parser.start(location, false);
+ parser.start(request, false);
return true;
}
@@ -129,10 +129,10 @@ bool QMediaNetworkPlaylistProvider::isReadOnly() const
return false;
}
-bool QMediaNetworkPlaylistProvider::load(const QUrl &location, const char *format)
+bool QMediaNetworkPlaylistProvider::load(const QNetworkRequest &request, const char *format)
{
Q_UNUSED(format);
- return d_func()->load(location);
+ return d_func()->load(request);
}
int QMediaNetworkPlaylistProvider::mediaCount() const
diff --git a/src/multimedia/playback/qmedianetworkplaylistprovider_p.h b/src/multimedia/playback/qmedianetworkplaylistprovider_p.h
index a90201d8d..d3104a456 100644
--- a/src/multimedia/playback/qmedianetworkplaylistprovider_p.h
+++ b/src/multimedia/playback/qmedianetworkplaylistprovider_p.h
@@ -70,7 +70,7 @@ public:
QMediaNetworkPlaylistProvider(QObject *parent=0);
virtual ~QMediaNetworkPlaylistProvider();
- virtual bool load(const QUrl &location, const char *format = 0);
+ virtual bool load(const QNetworkRequest &request, const char *format = 0);
virtual int mediaCount() const;
virtual QMediaContent media(int pos) const;
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp
index a699e281f..aaf911c50 100644
--- a/src/multimedia/playback/qmediaplayer.cpp
+++ b/src/multimedia/playback/qmediaplayer.cpp
@@ -370,7 +370,7 @@ void QMediaPlayerPrivate::loadPlaylist()
pendingPlaylist = QMediaContent(new QMediaPlaylist, q->currentMedia().canonicalUrl(), true);
QObject::connect(pendingPlaylist.playlist(), SIGNAL(loaded()), q, SLOT(_q_handlePlaylistLoaded()));
QObject::connect(pendingPlaylist.playlist(), SIGNAL(loadFailed()), q, SLOT(_q_handlePlaylistLoadFailed()));
- pendingPlaylist.playlist()->load(pendingPlaylist.canonicalUrl());
+ pendingPlaylist.playlist()->load(pendingPlaylist.canonicalRequest());
} else if (playlist) {
playlist->next();
}
diff --git a/src/multimedia/playback/qmediaplaylist.cpp b/src/multimedia/playback/qmediaplaylist.cpp
index 8c2cd3112..354527541 100644
--- a/src/multimedia/playback/qmediaplaylist.cpp
+++ b/src/multimedia/playback/qmediaplaylist.cpp
@@ -437,22 +437,22 @@ bool QMediaPlaylistPrivate::writeItems(QMediaPlaylistWriter *writer)
}
/*!
- Load playlist from \a location. If \a format is specified, it is used,
- otherwise format is guessed from location name and data.
+ Load playlist using network \a request. If \a format is specified, it is used,
+ otherwise format is guessed from playlist name and data.
New items are appended to playlist.
QMediaPlaylist::loaded() signal is emitted if playlist was loaded successfully,
otherwise the playlist emits loadFailed().
*/
-void QMediaPlaylist::load(const QUrl &location, const char *format)
+void QMediaPlaylist::load(const QNetworkRequest &request, const char *format)
{
Q_D(QMediaPlaylist);
d->error = NoError;
d->errorString.clear();
- if (d->playlist()->load(location,format))
+ if (d->playlist()->load(request,format))
return;
if (isReadOnly()) {
@@ -464,8 +464,8 @@ void QMediaPlaylist::load(const QUrl &location, const char *format)
foreach (QString const& key, playlistIOLoader()->keys()) {
QMediaPlaylistIOInterface* plugin = qobject_cast<QMediaPlaylistIOInterface*>(playlistIOLoader()->instance(key));
- if (plugin && plugin->canRead(location,format)) {
- QMediaPlaylistReader *reader = plugin->createReader(location,QByteArray(format));
+ if (plugin && plugin->canRead(request.url(), format)) {
+ QMediaPlaylistReader *reader = plugin->createReader(request.url(), QByteArray(format));
if (reader && d->readItems(reader)) {
delete reader;
emit loaded();
@@ -483,6 +483,21 @@ void QMediaPlaylist::load(const QUrl &location, const char *format)
}
/*!
+ Load playlist from \a location. If \a format is specified, it is used,
+ otherwise format is guessed from location name and data.
+
+ New items are appended to playlist.
+
+ QMediaPlaylist::loaded() signal is emitted if playlist was loaded successfully,
+ otherwise the playlist emits loadFailed().
+*/
+
+void QMediaPlaylist::load(const QUrl &location, const char *format)
+{
+ load(QNetworkRequest(location), format);
+}
+
+/*!
Load playlist from QIODevice \a device. If \a format is specified, it is used,
otherwise format is guessed from device data.
diff --git a/src/multimedia/playback/qmediaplaylist.h b/src/multimedia/playback/qmediaplaylist.h
index 6f2aa541e..fc834c98a 100644
--- a/src/multimedia/playback/qmediaplaylist.h
+++ b/src/multimedia/playback/qmediaplaylist.h
@@ -101,6 +101,7 @@ public:
bool removeMedia(int start, int end);
bool clear();
+ void load(const QNetworkRequest &request, const char *format = 0);
void load(const QUrl &location, const char *format = 0);
void load(QIODevice * device, const char *format = 0);
diff --git a/src/multimedia/playback/qmediaplaylistprovider.cpp b/src/multimedia/playback/qmediaplaylistprovider.cpp
index ddc6b9249..9f058b9f6 100644
--- a/src/multimedia/playback/qmediaplaylistprovider.cpp
+++ b/src/multimedia/playback/qmediaplaylistprovider.cpp
@@ -98,7 +98,7 @@ QMediaPlaylistProvider::~QMediaPlaylistProvider()
/*!
- Loads a playlist from from a URL \a location. If no playlist \a format is specified the loader
+ Loads a playlist using network \a request. If no playlist \a format is specified the loader
will inspect the URL or probe the headers to guess the format.
New items are appended to playlist.
@@ -106,9 +106,9 @@ QMediaPlaylistProvider::~QMediaPlaylistProvider()
Returns true if the provider supports the format and loading from the locations URL protocol,
otherwise this will return false.
*/
-bool QMediaPlaylistProvider::load(const QUrl &location, const char *format)
+bool QMediaPlaylistProvider::load(const QNetworkRequest &request, const char *format)
{
- Q_UNUSED(location);
+ Q_UNUSED(request);
Q_UNUSED(format);
return false;
}
diff --git a/src/multimedia/playback/qmediaplaylistprovider_p.h b/src/multimedia/playback/qmediaplaylistprovider_p.h
index 7e816f8c8..b63afa0dd 100644
--- a/src/multimedia/playback/qmediaplaylistprovider_p.h
+++ b/src/multimedia/playback/qmediaplaylistprovider_p.h
@@ -79,7 +79,7 @@ public:
QMediaPlaylistProvider(QObject *parent=0);
virtual ~QMediaPlaylistProvider();
- virtual bool load(const QUrl &location, const char *format = 0);
+ virtual bool load(const QNetworkRequest &request, const char *format = 0);
virtual bool load(QIODevice * device, const char *format = 0);
virtual bool save(const QUrl &location, const char *format = 0);
virtual bool save(QIODevice * device, const char *format);
diff --git a/tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp b/tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp
index f8092b4a0..2e98b548c 100644
--- a/tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp
+++ b/tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp
@@ -429,6 +429,12 @@ void tst_QMediaPlaylist::loadM3uFile()
//ensure #2 suffix is not stripped from path
testFileName = QFINDTESTDATA("testdata/testfile2#suffix");
QCOMPARE(playlist.media(6).canonicalUrl(), QUrl::fromLocalFile(testFileName));
+ // check ability to load from QNetworkRequest
+ QSignalSpy loadSpy(&playlist, SIGNAL(loaded()));
+ QSignalSpy loadFailedSpy(&playlist, SIGNAL(loadFailed()));
+ playlist.load(QNetworkRequest(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.m3u"))));
+ QTRY_VERIFY(!loadSpy.isEmpty());
+ QVERIFY(loadFailedSpy.isEmpty());
}
void tst_QMediaPlaylist::playbackMode_data()