From ffbf6b9ad4fb33e31a208466cd225d3c7b21115b Mon Sep 17 00:00:00 2001 From: Jani Heikkinen Date: Tue, 25 Oct 2022 04:31:35 +0000 Subject: [PATCH] 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 --- .../qandroidassetsfileenginehandler.cpp | 11 ++++----- .../assets/top_level_dir/file_in_top_dir.txt | 1 - .../top_level_dir/sub_dir/file_in_sub_dir.txt | 1 - .../sub_dir_2/sub_dir_3/file_in_sub_dir_3.txt | 1 - .../corelib/platform/android/tst_android.cpp | 23 ------------------- 5 files changed, 5 insertions(+), 32 deletions(-) delete mode 100644 tests/auto/corelib/platform/android/testdata/assets/top_level_dir/file_in_top_dir.txt delete mode 100644 tests/auto/corelib/platform/android/testdata/assets/top_level_dir/sub_dir/file_in_sub_dir.txt delete mode 100644 tests/auto/corelib/platform/android/testdata/assets/top_level_dir/sub_dir/sub_dir_2/sub_dir_3/file_in_sub_dir_3.txt diff --git a/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp b/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp index 876048421bc..36fa2dd9454 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(); @@ -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 61e2c47c258..00000000000 --- 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 61e2c47c258..00000000000 --- 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 61e2c47c258..00000000000 --- 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 0906926edcb..2fa6ec64151 100644 --- a/tests/auto/corelib/platform/android/tst_android.cpp +++ b/tests/auto/corelib/platform/android/tst_android.cpp @@ -6,7 +6,6 @@ #include #include #include -#include 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);