summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBogDan Vatra <bogdan@kde.org>2023-06-15 08:50:40 +0300
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2023-06-19 16:40:15 +0300
commit3e7d4f16561f187d4dda28e59dc031ce1b771f77 (patch)
treeba0dda99cd6d878e98e2b81436cccd927ddc33d9
parentAndroid: fix Android assets handler not listing dirs with only sub dirs (diff)
downloadqtbase-3e7d4f16561f187d4dda28e59dc031ce1b771f77.tar.xz
qtbase-3e7d4f16561f187d4dda28e59dc031ce1b771f77.zip
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 Change-Id: I574bf325300c0aedef68b1b183fa837144ad63c6 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit 76619eae4c4e857721529c87eb3c9d519fa2f0b7)
-rw-r--r--src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp4
-rw-r--r--tests/auto/corelib/platform/android/tst_android.cpp12
2 files changed, 11 insertions, 5 deletions
diff --git a/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp b/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp
index c7785486b0..902dee5f25 100644
--- a/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp
+++ b/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp
@@ -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:
diff --git a/tests/auto/corelib/platform/android/tst_android.cpp b/tests/auto/corelib/platform/android/tst_android.cpp
index bb1fdcae1c..1be12e0c33 100644
--- a/tests/auto/corelib/platform/android/tst_android.cpp
+++ b/tests/auto/corelib/platform/android/tst_android.cpp
@@ -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()