summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2023-01-16 21:03:19 +0200
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2023-02-14 16:50:25 +0000
commit19160fb46a11517e10eb4d19b9343a4f75b298a7 (patch)
treecdbcb3726e8101a210afbff104d8f857d579eaa5
parent7cf7fe93efbfb8a8fd5ff5790c63c3be7dceabe6 (diff)
downloadqtbase-19160fb46a11517e10eb4d19b9343a4f75b298a7.tar.gz
Fix few QFileInfo and QDir calls
Return the file engine impl of QFileInfo::completeBaseName() and QDir::absolutePath() and QFileInfo::fileName() (based on QAbstractFileEngine::BaseName) if the file engine impl is valid. Amends f77668ffec48d8aaad7c74069c6f3e770a305ae1. Task-number: QTBUG-98974 Change-Id: I28a8c75a6f25e30012b0791c12dbde51bfe8f62c Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 249d613a60aa6a1347ebc1c29902049247b93324) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
-rw-r--r--src/corelib/io/qdir.cpp8
-rw-r--r--src/corelib/io/qfileinfo.cpp11
-rw-r--r--tests/manual/android_content_uri/tst_content_uris.cpp4
3 files changed, 15 insertions, 8 deletions
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp
index bb0633864b..eb55696ccf 100644
--- a/src/corelib/io/qdir.cpp
+++ b/src/corelib/io/qdir.cpp
@@ -630,8 +630,12 @@ QString QDir::path() const
QString QDir::absolutePath() const
{
Q_D(const QDir);
- d->resolveAbsoluteEntry();
- return d->absoluteDirEntry.filePath();
+ if (!d->fileEngine) {
+ d->resolveAbsoluteEntry();
+ return d->absoluteDirEntry.filePath();
+ }
+
+ return d->fileEngine->fileName(QAbstractFileEngine::AbsoluteName);
}
/*!
diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp
index d4439fa8f9..1fbd1e5708 100644
--- a/src/corelib/io/qfileinfo.cpp
+++ b/src/corelib/io/qfileinfo.cpp
@@ -748,7 +748,9 @@ QString QFileInfo::fileName() const
Q_D(const QFileInfo);
if (d->isDefaultConstructed)
return ""_L1;
- return d->fileEntry.fileName();
+ if (!d->fileEngine)
+ return d->fileEntry.fileName();
+ return d->fileEngine->fileName(QAbstractFileEngine::BaseName);
}
/*!
@@ -792,7 +794,7 @@ QString QFileInfo::baseName() const
Q_D(const QFileInfo);
if (d->isDefaultConstructed)
return ""_L1;
- if (!d_ptr->fileEngine)
+ if (!d->fileEngine)
return d->fileEntry.baseName();
return QFileSystemEntry(d->fileEngine->fileName(QAbstractFileEngine::BaseName)).baseName();
}
@@ -813,7 +815,10 @@ QString QFileInfo::completeBaseName() const
Q_D(const QFileInfo);
if (d->isDefaultConstructed)
return ""_L1;
- return d->fileEntry.completeBaseName();
+ if (!d->fileEngine)
+ return d->fileEntry.completeBaseName();
+ const QString fileEngineBaseName = d->fileEngine->fileName(QAbstractFileEngine::BaseName);
+ return QFileSystemEntry(fileEngineBaseName).completeBaseName();
}
/*!
diff --git a/tests/manual/android_content_uri/tst_content_uris.cpp b/tests/manual/android_content_uri/tst_content_uris.cpp
index 900644091e..d2c2400849 100644
--- a/tests/manual/android_content_uri/tst_content_uris.cpp
+++ b/tests/manual/android_content_uri/tst_content_uris.cpp
@@ -53,7 +53,6 @@ void tst_ContentUris::dirFacilities()
const QDir subDir = dirList.first();
QVERIFY(subDir.dirName() == "Sub"_L1);
- QEXPECT_FAIL("", "absolutePath() is returning wrong path, cutting from 'primary' onward", Continue);
qWarning() << "subDir.absolutePath()" << subDir.absolutePath() << dirList.first();
QVERIFY(subDir.absolutePath() == dirList.first());
QVERIFY(subDir.path() == dirList.first());
@@ -67,7 +66,6 @@ void tst_ContentUris::dirFacilities()
QVERIFY(listFiles(dir, QDirIterator::Subdirectories).size() == 3);
QVERIFY(dir.mkpath("Sub/Sub2/Sub3")); // Create an existing dir hierarchy
QVERIFY(dir.rmdir("Sub"));
-
}
void tst_ContentUris::readWriteFile()
@@ -83,7 +81,7 @@ void tst_ContentUris::readWriteFile()
QVERIFY(file.exists());
QVERIFY(file.size() == 0);
QVERIFY(file.fileName() == url);
- QVERIFY(QFileInfo(url).baseName() == fileName);
+ QVERIFY(QFileInfo(url).completeBaseName() == fileName);
QVERIFY(file.open(QFile::WriteOnly));
QVERIFY(file.isOpen());