summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJani Heikkinen <jani.heikkinen@qt.io>2022-10-25 04:31:35 +0000
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2022-10-25 09:32:00 +0000
commitffbf6b9ad4fb33e31a208466cd225d3c7b21115b (patch)
treea6d7d9837e1fe187fe7d10d17f94c6ac2e6553b5
parentQBenchlib/Perf: remove ioctl(FD_CLOEXEC) (diff)
downloadqtbase-ffbf6b9ad4fb33e31a208466cd225d3c7b21115b.tar.xz
qtbase-ffbf6b9ad4fb33e31a208466cd225d3c7b21115b.zip
Revert "Android: fix Android assets handler not listing dirs with only sub dirs"
This reverts commit 875e90d249820c6210bdc2beebe61d0224e37b93. Reason for revert: QTBUG-107879 Task-number: QTBUG-107627 Fixes: QTBUG-107879 Change-Id: Ie593c973928758657305d1b2241a0480546ccb79 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
-rw-r--r--src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp11
-rw-r--r--tests/auto/corelib/platform/android/testdata/assets/top_level_dir/file_in_top_dir.txt1
-rw-r--r--tests/auto/corelib/platform/android/testdata/assets/top_level_dir/sub_dir/file_in_sub_dir.txt1
-rw-r--r--tests/auto/corelib/platform/android/testdata/assets/top_level_dir/sub_dir/sub_dir_2/sub_dir_3/file_in_sub_dir_3.txt1
-rw-r--r--tests/auto/corelib/platform/android/tst_android.cpp23
5 files changed, 5 insertions, 32 deletions
diff --git a/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp b/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp
index 876048421b..36fa2dd945 100644
--- a/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp
+++ b/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp
@@ -108,12 +108,10 @@ public:
FolderIterator(const QString &path)
: m_path(path)
{
- // Note that empty dirs in the assets dir before the build are not going to be
- // included in the final apk, so no empty folders should expected to be listed.
QJniObject files = QJniObject::callStaticObjectMethod(QtAndroid::applicationClass(),
- "listAssetContent",
- "(Landroid/content/res/AssetManager;Ljava/lang/String;)[Ljava/lang/String;",
- QtAndroid::assets(), QJniObject::fromString(path).object());
+ "listAssetContent",
+ "(Landroid/content/res/AssetManager;Ljava/lang/String;)[Ljava/lang/String;",
+ QtAndroid::assets(), QJniObject::fromString(path).object());
if (files.isValid()) {
QJniEnvironment env;
jobjectArray jFiles = files.object<jobjectArray>();
@@ -352,7 +350,8 @@ public:
} else {
auto *assetDir = AAssetManager_openDir(m_assetManager, m_fileName.toUtf8());
if (assetDir) {
- m_assetInfo->type = AssetItem::Type::Folder;
+ if (AAssetDir_getNextFileName(assetDir))
+ m_assetInfo->type = AssetItem::Type::Folder;
AAssetDir_close(assetDir);
}
}
diff --git a/tests/auto/corelib/platform/android/testdata/assets/top_level_dir/file_in_top_dir.txt b/tests/auto/corelib/platform/android/testdata/assets/top_level_dir/file_in_top_dir.txt
deleted file mode 100644
index 61e2c47c25..0000000000
--- a/tests/auto/corelib/platform/android/testdata/assets/top_level_dir/file_in_top_dir.txt
+++ /dev/null
@@ -1 +0,0 @@
-FooBar \ No newline at end of file
diff --git a/tests/auto/corelib/platform/android/testdata/assets/top_level_dir/sub_dir/file_in_sub_dir.txt b/tests/auto/corelib/platform/android/testdata/assets/top_level_dir/sub_dir/file_in_sub_dir.txt
deleted file mode 100644
index 61e2c47c25..0000000000
--- a/tests/auto/corelib/platform/android/testdata/assets/top_level_dir/sub_dir/file_in_sub_dir.txt
+++ /dev/null
@@ -1 +0,0 @@
-FooBar \ No newline at end of file
diff --git a/tests/auto/corelib/platform/android/testdata/assets/top_level_dir/sub_dir/sub_dir_2/sub_dir_3/file_in_sub_dir_3.txt b/tests/auto/corelib/platform/android/testdata/assets/top_level_dir/sub_dir/sub_dir_2/sub_dir_3/file_in_sub_dir_3.txt
deleted file mode 100644
index 61e2c47c25..0000000000
--- a/tests/auto/corelib/platform/android/testdata/assets/top_level_dir/sub_dir/sub_dir_2/sub_dir_3/file_in_sub_dir_3.txt
+++ /dev/null
@@ -1 +0,0 @@
-FooBar \ No newline at end of file
diff --git a/tests/auto/corelib/platform/android/tst_android.cpp b/tests/auto/corelib/platform/android/tst_android.cpp
index 0906926edc..2fa6ec6415 100644
--- a/tests/auto/corelib/platform/android/tst_android.cpp
+++ b/tests/auto/corelib/platform/android/tst_android.cpp
@@ -6,7 +6,6 @@
#include <QTest>
#include <QtCore/qnativeinterface.h>
#include <QtCore/qjniobject.h>
-#include <QtCore/qdiriterator.h>
class tst_Android : public QObject
{
@@ -14,7 +13,6 @@ Q_OBJECT
private slots:
void assetsRead();
void assetsNotWritable();
- void assetsIterating();
void testAndroidSdkVersion();
void testAndroidActivity();
void testRunOnAndroidMainThread();
@@ -43,27 +41,6 @@ void tst_Android::assetsNotWritable()
QVERIFY(!file.open(QIODevice::Append));
}
-void tst_Android::assetsIterating()
-{
- QStringList assets = {"assets:/top_level_dir/file_in_top_dir.txt",
- "assets:/top_level_dir/sub_dir",
- "assets:/top_level_dir/sub_dir/file_in_sub_dir.txt",
- "assets:/top_level_dir/sub_dir/sub_dir_2",
- "assets:/top_level_dir/sub_dir/sub_dir_2/sub_dir_3",
- "assets:/top_level_dir/sub_dir/sub_dir_2/sub_dir_3/file_in_sub_dir_3.txt"};
-
- // Note that we have an "assets:/top_level_dir/sub_dir/empty_sub_dir" in the test's
- // assets physical directory, but empty folders are not packaged in the built apk,
- // so it's expected to not have such folder be listed in the assets on runtime
-
- QDirIterator it("assets:/top_level_dir", QDirIterator::Subdirectories);
- QStringList iteratorAssets;
- while (it.hasNext())
- iteratorAssets.append(it.next());
-
- QVERIFY(assets == iteratorAssets);
-}
-
void tst_Android::testAndroidSdkVersion()
{
QVERIFY(QNativeInterface::QAndroidApplication::sdkVersion() > 0);