Don't add prefix for BaseName

Adding the "assets:" prefix to BaseName leads to wrong names returned by
QFileInfo{"assets:/path/to/file"}.fileName().
Instead to return "file" it returns "assets:/file" which is not the
expected result.

Fixes: QTBUG-114576
Fixes: QTBUG-114219
Fixes: QTBUG-112261
Pick-to: 6.6 6.5 6.5.2
Change-Id: I574bf325300c0aedef68b1b183fa837144ad63c6
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
BogDan Vatra 2023-06-15 08:50:40 +03:00
parent 77d0f37536
commit 76619eae4c
2 changed files with 11 additions and 5 deletions

View File

@ -307,9 +307,9 @@ public:
return prefixedPath(m_fileName);
case BaseName:
if ((pos = m_fileName.lastIndexOf(u'/')) != -1)
return prefixedPath(m_fileName.mid(pos));
return m_fileName.mid(pos + 1);
else
return prefixedPath(m_fileName);
return m_fileName;
case PathName:
case AbsolutePathName:
case CanonicalPathName:

View File

@ -13,6 +13,8 @@
#include <qpa/qplatformnativeinterface.h>
#include <QtCore/qdiriterator.h>
using namespace Qt::StringLiterals;
class tst_Android : public QObject
{
Q_OBJECT
@ -64,10 +66,14 @@ void tst_Android::assetsIterating()
QDirIterator it("assets:/top_level_dir", QDirIterator::Subdirectories);
QStringList iteratorAssets;
while (it.hasNext())
iteratorAssets.append(it.next());
while (it.hasNext())
iteratorAssets.append(it.next());
QVERIFY(assets == iteratorAssets);
QVERIFY(assets == iteratorAssets);
auto entryList = QDir{"assets:/"_L1}.entryList(QStringList{"*.txt"_L1});
QCOMPARE(entryList.size(), 1);
QCOMPARE(entryList[0], "test.txt"_L1);
}
void tst_Android::testAndroidSdkVersion()