From 07d4ecd73465fba946047610bc2736daa641b8f6 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Wed, 30 Jun 2021 13:54:54 +0300 Subject: [PATCH] Rename QPermission namespace to QApplicationPermission MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pick-to: 6.2 Task-number: QTBUG-94407 Change-Id: Ie9c05dbe498cd372c015b5125e6cb8d59ca96b59 Reviewed-by: Edward Welbourne Reviewed-by: Tor Arne Vestbø --- examples/network/http/main.cpp | 5 +- src/corelib/CMakeLists.txt | 2 +- .../doc/snippets/permissions/permissions.cpp | 32 +++--- ...qpermission.h => qapplicationpermission.h} | 13 ++- ...ssion.qdoc => qapplicationpermission.qdoc} | 9 +- src/corelib/kernel/qcoreapplication.cpp | 40 ++++---- src/corelib/kernel/qcoreapplication.h | 16 +-- .../kernel/qcoreapplication_android.cpp | 98 +++++++++---------- src/corelib/kernel/qcoreapplication_p.h | 16 +-- 9 files changed, 120 insertions(+), 111 deletions(-) rename src/corelib/kernel/{qpermission.h => qapplicationpermission.h} (89%) rename src/corelib/kernel/{qpermission.qdoc => qapplicationpermission.qdoc} (94%) diff --git a/examples/network/http/main.cpp b/examples/network/http/main.cpp index 94c3685af84..43d510e16ba 100644 --- a/examples/network/http/main.cpp +++ b/examples/network/http/main.cpp @@ -58,8 +58,9 @@ int main(int argc, char *argv[]) { QApplication app(argc, argv); - auto permission = QPermission::WriteStorage; - if (QCoreApplication::requestPermission(permission).result() != QPermission::Authorized) { + auto permission = QApplicationPermission::WriteStorage; + if (QCoreApplication::requestPermission(permission).result() + != QApplicationPermission::Authorized) { qWarning() << "Couldn't get 'WriteStorage' permission!"; return -1; } diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index 9023e24dd20..4878c45008c 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -119,7 +119,7 @@ qt_internal_add_module(Core kernel/qobjectcleanuphandler.cpp kernel/qobjectcleanuphandler.h kernel/qobjectdefs.h kernel/qobjectdefs_impl.h - kernel/qpermission.h + kernel/qapplicationpermission.h kernel/qpointer.cpp kernel/qpointer.h kernel/qproperty.cpp kernel/qproperty.h kernel/qproperty_p.h kernel/qpropertyprivate.h diff --git a/src/corelib/doc/snippets/permissions/permissions.cpp b/src/corelib/doc/snippets/permissions/permissions.cpp index 2eac4192261..a2c05db4235 100644 --- a/src/corelib/doc/snippets/permissions/permissions.cpp +++ b/src/corelib/doc/snippets/permissions/permissions.cpp @@ -58,8 +58,8 @@ void requestCameraPermissionAndroid() { //! [Request camera permission on Android] QCoreApplication::requestPermission(QStringLiteral("android.permission.CAMERA")) - .then([=](QPermission::PermissionResult result) { - if (result == QPermission::Authorized) + .then([=](QApplicationPermission::PermissionResult result) { + if (result == QApplicationPermission::Authorized) takeSelfie(); }); //! [Request camera permission on Android] @@ -68,9 +68,9 @@ void requestCameraPermissionAndroid() void requestCameraPermission() { //! [Request camera permission] - QCoreApplication::requestPermission(QPermission::Camera) - .then([=](QPermission::PermissionResult result) { - if (result == QPermission::Authorized) + QCoreApplication::requestPermission(QApplicationPermission::Camera) + .then([=](QApplicationPermission::PermissionResult result) { + if (result == QApplicationPermission::Authorized) takeSelfie(); }); //! [Request camera permission] @@ -81,7 +81,7 @@ void requestCameraPermissionSyncAndroid() //! [Request camera permission sync on Android] auto future = QCoreApplication::requestPermission(QStringLiteral("android.permission.CAMERA")); auto result = future.result(); // blocks and waits for the result to be ready - if (result == QPermission::Authorized) + if (result == QApplicationPermission::Authorized) takeSelfie(); //! [Request camera permission sync on Android] } @@ -89,9 +89,9 @@ void requestCameraPermissionSyncAndroid() void requestCameraPermissionSync() { //! [Request camera permission sync] - auto future = QCoreApplication::requestPermission(QPermission::Camera); + auto future = QCoreApplication::requestPermission(QApplicationPermission::Camera); auto result = future.result(); // blocks and waits for the result to be ready - if (result == QPermission::Authorized) + if (result == QApplicationPermission::Authorized) takeSelfie(); //! [Request camera permission sync] } @@ -100,8 +100,8 @@ void checkCameraPermissionAndroid() { //! [Check camera permission on Android] QCoreApplication::checkPermission(QStringLiteral("android.permission.CAMERA")) - .then([=](QPermission::PermissionResult result) { - if (result == QPermission::Authorized) + .then([=](QApplicationPermission::PermissionResult result) { + if (result == QApplicationPermission::Authorized) takeSelfie(); }); //! [Check camera permission on Android] @@ -110,9 +110,9 @@ void checkCameraPermissionAndroid() void checkCameraPermission() { //! [Check camera permission] - QCoreApplication::checkPermission(QPermission::Camera) - .then([=](QPermission::PermissionResult result) { - if (result == QPermission::Authorized) + QCoreApplication::checkPermission(QApplicationPermission::Camera) + .then([=](QApplicationPermission::PermissionResult result) { + if (result == QApplicationPermission::Authorized) takeSelfie(); }); //! [Check camera permission] @@ -124,7 +124,7 @@ void checkCameraPermissionAndroidSync() auto future = QCoreApplication::checkPermission(QStringLiteral("android.permission.CAMERA")); // may block and wait for the result to be ready on some platforms auto result = future.result(); - if (result == QPermission::Authorized) + if (result == QApplicationPermission::Authorized) takeSelfie(); //! [Check camera permission sync on Android] } @@ -132,10 +132,10 @@ void checkCameraPermissionAndroidSync() void checkCameraPermissionSync() { //! [Check camera permission sync] - auto future = QCoreApplication::checkPermission(QPermission::Camera); + auto future = QCoreApplication::checkPermission(QApplicationPermission::Camera); // may block and wait for the result to be ready on some platforms auto result = future.result(); - if (result == QPermission::Authorized) + if (result == QApplicationPermission::Authorized) takeSelfie(); //! [Check camera permission sync] } diff --git a/src/corelib/kernel/qpermission.h b/src/corelib/kernel/qapplicationpermission.h similarity index 89% rename from src/corelib/kernel/qpermission.h rename to src/corelib/kernel/qapplicationpermission.h index c3a92393267..35b0d5beef7 100644 --- a/src/corelib/kernel/qpermission.h +++ b/src/corelib/kernel/qapplicationpermission.h @@ -37,14 +37,14 @@ ** ****************************************************************************/ -#ifndef QPERMISSION_H -#define QPERMISSION_H +#ifndef QAPPLICATIONPERMISSION_H +#define QAPPLICATIONPERMISSION_H #include QT_BEGIN_NAMESPACE -namespace QPermission +namespace QApplicationPermission { enum PermissionType { @@ -71,8 +71,11 @@ enum PermissionResult { Restricted, Undetermined }; -} // QPermission +} // QApplicationPermission + +// TODO: remove after usages in other modules are renamed. +namespace QPermission = QApplicationPermission; QT_END_NAMESPACE -#endif // QPERMISSION_H +#endif // QAPPLICATIONPERMISSION_H diff --git a/src/corelib/kernel/qpermission.qdoc b/src/corelib/kernel/qapplicationpermission.qdoc similarity index 94% rename from src/corelib/kernel/qpermission.qdoc rename to src/corelib/kernel/qapplicationpermission.qdoc index 8298d0ffbe6..fee02b634fd 100644 --- a/src/corelib/kernel/qpermission.qdoc +++ b/src/corelib/kernel/qapplicationpermission.qdoc @@ -26,16 +26,17 @@ ****************************************************************************/ /*! - \namespace QPermission + \namespace QApplicationPermission - \brief The QPermission namespace contains enums for app permission types and results. + \brief The QApplicationPermission namespace contains enums for app permission + types and results. This namespace's enums are used by \l {QCoreApplication::requestPermission()} and \l {QCoreApplication::checkPermission()}. */ /*! - \enum QPermission::PermissionType + \enum QApplicationPermission::PermissionType Predefined sets of permission values. @@ -87,7 +88,7 @@ */ /*! - \enum QPermission::PermissionResult + \enum QApplicationPermission::PermissionResult The result values for a permission check or request. diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 7536f2eabf0..81ea3dc5bee 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -3086,42 +3086,42 @@ void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatc #if QT_CONFIG(future) && !defined(QT_NO_QOBJECT) #if !defined(Q_OS_ANDROID) - QFuture defaultPermissionFuture() + QFuture defaultPermissionFuture() { - QPromise promise; - QFuture future = promise.future(); + QPromise promise; + QFuture future = promise.future(); promise.start(); #if defined(QT_DEBUG) qWarning() << "This platform doesn't have an implementation" << "for the application permissions API."; #endif - promise.addResult(QPermission::Authorized); + promise.addResult(QApplicationPermission::Authorized); promise.finish(); return future; } - QFuture - QCoreApplicationPrivate::requestPermission(QPermission::PermissionType permission) + QFuture + QCoreApplicationPrivate::requestPermission(QApplicationPermission::PermissionType permission) { Q_UNUSED(permission) return defaultPermissionFuture(); } - QFuture + QFuture QCoreApplicationPrivate::requestPermission(const QString &permission) { Q_UNUSED(permission) return defaultPermissionFuture(); } - QFuture - QCoreApplicationPrivate::checkPermission(QPermission::PermissionType permission) + QFuture + QCoreApplicationPrivate::checkPermission(QApplicationPermission::PermissionType permission) { Q_UNUSED(permission) return defaultPermissionFuture(); } - QFuture + QFuture QCoreApplicationPrivate::checkPermission(const QString &permission) { Q_UNUSED(permission) @@ -3148,14 +3148,14 @@ void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatc \snippet permissions/permissions.cpp Request camera permission sync \note Any platform that doesn't have an implementation for this API, - returns QPermission::Authorized by default. Currently, only Android + returns QApplicationPermission::Authorized by default. Currently, only Android has an implemtation for this API. \since 6.2 \sa checkPermission() */ -QFuture -QCoreApplication::requestPermission(QPermission::PermissionType permission) +QFuture +QCoreApplication::requestPermission(QApplicationPermission::PermissionType permission) { return QCoreApplicationPrivate::requestPermission(permission); } @@ -3180,13 +3180,13 @@ QCoreApplication::requestPermission(QPermission::PermissionType permission) \snippet permissions/permissions.cpp Request camera permission sync on Android \note Any platform that doesn't have an implementation for this API, - returns QPermission::Authorized by default. Currently, only Android + returns QApplicationPermission::Authorized by default. Currently, only Android has an implemtation for this API. \since 6.2 \sa checkPermission() */ -QFuture +QFuture QCoreApplication::requestPermission(const QString &permission) { return QCoreApplicationPrivate::requestPermission(permission); @@ -3206,14 +3206,14 @@ QCoreApplication::requestPermission(const QString &permission) \snippet permissions/permissions.cpp Check camera permission sync \note Any platform that doesn't have an implementation for this API, - returns QPermission::Authorized by default. Currently, only Android + returns QApplicationPermission::Authorized by default. Currently, only Android has an implemtation for this API. \since 6.2 \sa requestPermission() */ -QFuture -QCoreApplication::checkPermission(QPermission::PermissionType permission) +QFuture +QCoreApplication::checkPermission(QApplicationPermission::PermissionType permission) { return QCoreApplicationPrivate::checkPermission(permission); } @@ -3233,13 +3233,13 @@ QCoreApplication::checkPermission(QPermission::PermissionType permission) \snippet permissions/permissions.cpp Check camera permission sync on Android \note Any platform that doesn't have an implementation for this API, - returns QPermission::Authorized by default. Currently, only Android + returns QApplicationPermission::Authorized by default. Currently, only Android has an implemtation for this API. \since 6.2 \sa requestPermission() */ -QFuture +QFuture QCoreApplication::checkPermission(const QString &permission) { return QCoreApplicationPrivate::checkPermission(permission); diff --git a/src/corelib/kernel/qcoreapplication.h b/src/corelib/kernel/qcoreapplication.h index 3ff57b9d583..cbb9d120405 100644 --- a/src/corelib/kernel/qcoreapplication.h +++ b/src/corelib/kernel/qcoreapplication.h @@ -47,7 +47,7 @@ #include #if QT_CONFIG(future) #include -#include +#include #endif #include #else @@ -168,13 +168,15 @@ public: #ifndef QT_NO_QOBJECT #if QT_CONFIG(future) - static QFuture requestPermission( - QPermission::PermissionType permission); - static QFuture requestPermission(const QString &permission); + static QFuture + requestPermission(QApplicationPermission::PermissionType permission); + static QFuture + requestPermission(const QString &permission); - static QFuture checkPermission( - QPermission::PermissionType permission); - static QFuture checkPermission(const QString &permission); + static QFuture + checkPermission(QApplicationPermission::PermissionType permission); + static QFuture + checkPermission(const QString &permission); #endif void installNativeEventFilter(QAbstractNativeEventFilter *filterObj); void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj); diff --git a/src/corelib/kernel/qcoreapplication_android.cpp b/src/corelib/kernel/qcoreapplication_android.cpp index b1c22f362a1..b960aebf588 100644 --- a/src/corelib/kernel/qcoreapplication_android.cpp +++ b/src/corelib/kernel/qcoreapplication_android.cpp @@ -59,13 +59,13 @@ static const char invalidNativePermissionExcept[] = "Coudn't convert the provided permission type to a native Android permission string."; #endif -QPermission::PermissionResult resultFromAndroid(jint value) +QApplicationPermission::PermissionResult resultFromAndroid(jint value) { - return value == 0 ? QPermission::Authorized : QPermission::Denied; + return value == 0 ? QApplicationPermission::Authorized : QApplicationPermission::Denied; } using PendingPermissionRequestsHash - = QHash>>; + = QHash>>; Q_GLOBAL_STATIC(PendingPermissionRequestsHash, g_pendingPermissionRequests); static QBasicMutex g_pendingPermissionRequestsMutex; @@ -75,7 +75,7 @@ static int nextRequestCode() return counter.fetchAndAddRelaxed(1); } -static QStringList nativeStringsFromPermission(QPermission::PermissionType permission) +static QStringList nativeStringsFromPermission(QApplicationPermission::PermissionType permission) { static const auto precisePerm = QStringLiteral("android.permission.ACCESS_FINE_LOCATION"); static const auto coarsePerm = QStringLiteral("android.permission.ACCESS_COARSE_LOCATION"); @@ -83,39 +83,39 @@ static QStringList nativeStringsFromPermission(QPermission::PermissionType permi QStringLiteral("android.permission.ACCESS_BACKGROUND_LOCATION"); switch (permission) { - case QPermission::CoarseLocation: + case QApplicationPermission::CoarseLocation: return {coarsePerm}; - case QPermission::PreciseLocation: + case QApplicationPermission::PreciseLocation: return {precisePerm}; - case QPermission::CoarseBackgroundLocation: + case QApplicationPermission::CoarseBackgroundLocation: // Keep the background permission first to be able to use .first() // in checkPermission because it takes single permission if (QtAndroidPrivate::androidSdkVersion() >= 29) return {backgroundPerm, coarsePerm}; return {coarsePerm}; - case QPermission::PreciseBackgroundLocation: + case QApplicationPermission::PreciseBackgroundLocation: if (QtAndroidPrivate::androidSdkVersion() >= 29) return {backgroundPerm, precisePerm}; return {precisePerm}; - case QPermission::Camera: + case QApplicationPermission::Camera: return {QStringLiteral("android.permission.CAMERA")}; - case QPermission::Microphone: + case QApplicationPermission::Microphone: return {QStringLiteral("android.permission.RECORD_AUDIO")}; - case QPermission::BodySensors: + case QApplicationPermission::BodySensors: return {QStringLiteral("android.permission.BODY_SENSORS")}; - case QPermission::PhysicalActivity: + case QApplicationPermission::PhysicalActivity: return {QStringLiteral("android.permission.ACTIVITY_RECOGNITION")}; - case QPermission::ReadContacts: + case QApplicationPermission::ReadContacts: return {QStringLiteral("android.permission.READ_CONTACTS")}; - case QPermission::WriteContacts: + case QApplicationPermission::WriteContacts: return {QStringLiteral("android.permission.WRITE_CONTACTS")}; - case QPermission::ReadStorage: + case QApplicationPermission::ReadStorage: return {QStringLiteral("android.permission.READ_EXTERNAL_STORAGE")}; - case QPermission::WriteStorage: + case QApplicationPermission::WriteStorage: return {QStringLiteral("android.permission.WRITE_EXTERNAL_STORAGE")}; - case QPermission::ReadCalendar: + case QApplicationPermission::ReadCalendar: return {QStringLiteral("android.permission.READ_CALENDAR")}; - case QPermission::WriteCalendar: + case QApplicationPermission::WriteCalendar: return {QStringLiteral("android.permission.WRITE_CALENDAR")}; default: @@ -151,18 +151,18 @@ static void sendRequestPermissionsResult(JNIEnv *env, jobject *obj, jint request env->GetIntArrayRegion(grantResults, 0, size, results.get()); for (int i = 0 ; i < size; ++i) { - QPermission::PermissionResult result = resultFromAndroid(results[i]); + QApplicationPermission::PermissionResult result = resultFromAndroid(results[i]); request->addResult(result, i); } request->finish(); } -QFuture requestPermissionsInternal(const QStringList &permissions) +QFuture requestPermissionsInternal(const QStringList &permissions) { - QSharedPointer> promise; - promise.reset(new QPromise()); - QFuture future = promise->future(); + QSharedPointer> promise; + promise.reset(new QPromise()); + QFuture future = promise->future(); promise->start(); // No mechanism to request permission for SDK version below 23, because @@ -197,70 +197,70 @@ QFuture requestPermissionsInternal(const QStringL return future; } -QFuture +QFuture QCoreApplicationPrivate::requestPermission(const QString &permission) { // avoid the uneccessary call and response to an empty permission string if (permission.size() > 0) return requestPermissionsInternal({permission}); - QPromise promise; - QFuture future = promise.future(); + QPromise promise; + QFuture future = promise.future(); promise.start(); #ifndef QT_NO_EXCEPTIONS promise.setException(std::make_exception_ptr(std::runtime_error(emptyPermissionExcept))); #else - promise.addResult(QPermission::Denied); + promise.addResult(QApplicationPermission::Denied); #endif promise.finish(); return future; } -QFuture groupRequestToSingleResult(const QStringList &permissions) +QFuture groupRequestToSingleResult(const QStringList &permissions) { - QSharedPointer> promise; - promise.reset(new QPromise()); - QFuture future = promise->future(); + QSharedPointer> promise; + promise.reset(new QPromise()); + QFuture future = promise->future(); promise->start(); requestPermissionsInternal(permissions).then( - [promise](QFuture future) { + [promise](QFuture future) { auto results = future.results(); - if (results.count(QPermission::Authorized) == results.count()) - promise->addResult(QPermission::Authorized, 0); + if (results.count(QApplicationPermission::Authorized) == results.count()) + promise->addResult(QApplicationPermission::Authorized, 0); else - promise->addResult(QPermission::Denied, 0); + promise->addResult(QApplicationPermission::Denied, 0); promise->finish(); }); return future; } -QFuture -QCoreApplicationPrivate::requestPermission(QPermission::PermissionType permission) +QFuture +QCoreApplicationPrivate::requestPermission(QApplicationPermission::PermissionType permission) { const auto nativePermissions = nativeStringsFromPermission(permission); if (nativePermissions.size() > 0) return groupRequestToSingleResult(nativePermissions); - QPromise promise; - QFuture future = promise.future(); + QPromise promise; + QFuture future = promise.future(); promise.start(); #ifndef QT_NO_EXCEPTIONS promise.setException(std::make_exception_ptr( std::runtime_error(invalidNativePermissionExcept))); #else - promise.addResult(QPermission::Denied); + promise.addResult(QApplicationPermission::Denied); #endif promise.finish(); return future; } -QFuture +QFuture QCoreApplicationPrivate::checkPermission(const QString &permission) { - QPromise promise; - QFuture future = promise.future(); + QPromise promise; + QFuture future = promise.future(); promise.start(); if (permission.size() > 0) { @@ -273,7 +273,7 @@ QCoreApplicationPrivate::checkPermission(const QString &permission) #ifndef QT_NO_EXCEPTIONS promise.setException(std::make_exception_ptr(std::runtime_error(emptyPermissionExcept))); #else - promise.addResult(QPermission::Denied); + promise.addResult(QApplicationPermission::Denied); #endif } @@ -281,22 +281,22 @@ QCoreApplicationPrivate::checkPermission(const QString &permission) return future; } -QFuture -QCoreApplicationPrivate::checkPermission(QPermission::PermissionType permission) +QFuture +QCoreApplicationPrivate::checkPermission(QApplicationPermission::PermissionType permission) { const auto nativePermissions = nativeStringsFromPermission(permission); if (nativePermissions.size() > 0) return checkPermission(nativePermissions.first()); - QPromise promise; - QFuture future = promise.future(); + QPromise promise; + QFuture future = promise.future(); promise.start(); #ifndef QT_NO_EXCEPTIONS promise.setException(std::make_exception_ptr( std::runtime_error(invalidNativePermissionExcept))); #else - promise.addResult(QPermission::Denied); + promise.addResult(QApplicationPermission::Denied); #endif promise.finish(); return future; diff --git a/src/corelib/kernel/qcoreapplication_p.h b/src/corelib/kernel/qcoreapplication_p.h index 55e81de3585..26dfef20598 100644 --- a/src/corelib/kernel/qcoreapplication_p.h +++ b/src/corelib/kernel/qcoreapplication_p.h @@ -63,7 +63,7 @@ #include "private/qobject_p.h" #include "private/qlocking_p.h" #if QT_CONFIG(future) -#include +#include #include #endif #endif @@ -204,13 +204,15 @@ public: QString qmljs_debug_arguments; // a string containing arguments for js/qml debugging. inline QString qmljsDebugArgumentsString() const { return qmljs_debug_arguments; } #if QT_CONFIG(future) && !defined QT_NO_QOBJECT - static QFuture requestPermission( - QPermission::PermissionType permission); - static QFuture requestPermission(const QString &permission); + static QFuture + requestPermission(QApplicationPermission::PermissionType permission); + static QFuture + requestPermission(const QString &permission); - static QFuture checkPermission( - QPermission::PermissionType permission); - static QFuture checkPermission(const QString &permission); + static QFuture + checkPermission(QApplicationPermission::PermissionType permission); + static QFuture + checkPermission(const QString &permission); #endif #ifdef QT_NO_QOBJECT