diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-04-15 13:01:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-05-20 10:40:00 +0200 |
commit | 1fa77712fb241e9c87bf97263df57a5f6f905702 (patch) | |
tree | bde6b4c4ddbeb06126a287510354c033ba7cd1b4 /src/core/permission_manager_qt.cpp | |
parent | 2beb353bb850c4c6a09d497cea5b597a8543e1ab (diff) |
Add support for clearing the feature request
Task-number: QTBUG-83476
Change-Id: I63ad9801e3e97f7fdac959600c69c04d0105be1f
Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
Diffstat (limited to 'src/core/permission_manager_qt.cpp')
-rw-r--r-- | src/core/permission_manager_qt.cpp | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp index 2f9543769..862a1c262 100644 --- a/src/core/permission_manager_qt.cpp +++ b/src/core/permission_manager_qt.cpp @@ -102,6 +102,18 @@ static bool canRequestPermissionFor(ProfileAdapter::PermissionType type) return false; } +static blink::mojom::PermissionStatus toBlink(ProfileAdapter::PermissionState reply) +{ + switch (reply) { + case ProfileAdapter::AskPermission: + return blink::mojom::PermissionStatus::ASK; + case ProfileAdapter::AllowedPermission: + return blink::mojom::PermissionStatus::GRANTED; + case ProfileAdapter::DeniedPermission: + return blink::mojom::PermissionStatus::DENIED; + } +} + PermissionManagerQt::PermissionManagerQt() : m_requestIdCount(0) , m_subscriberIdCount(0) @@ -112,7 +124,7 @@ PermissionManagerQt::~PermissionManagerQt() { } -void PermissionManagerQt::permissionRequestReply(const QUrl &url, ProfileAdapter::PermissionType type, bool reply) +void PermissionManagerQt::permissionRequestReply(const QUrl &url, ProfileAdapter::PermissionType type, ProfileAdapter::PermissionState reply) { // Normalize the QUrl to GURL origin form. const GURL gorigin = toGurl(url).GetOrigin(); @@ -120,9 +132,12 @@ void PermissionManagerQt::permissionRequestReply(const QUrl &url, ProfileAdapter if (origin.isEmpty()) return; QPair<QUrl, ProfileAdapter::PermissionType> key(origin, type); - m_permissions[key] = reply; - blink::mojom::PermissionStatus status = reply ? blink::mojom::PermissionStatus::GRANTED : blink::mojom::PermissionStatus::DENIED; - { + if (reply == ProfileAdapter::AskPermission) + m_permissions.remove(key); + else + m_permissions[key] = (reply == ProfileAdapter::AllowedPermission); + blink::mojom::PermissionStatus status = toBlink(reply); + if (reply != ProfileAdapter::AskPermission) { auto it = m_requests.begin(); while (it != m_requests.end()) { if (it->origin == origin && it->type == type) { @@ -137,6 +152,9 @@ void PermissionManagerQt::permissionRequestReply(const QUrl &url, ProfileAdapter it.second.callback.Run(status); } + if (reply == ProfileAdapter::AskPermission) + return; + auto it = m_multiRequests.begin(); while (it != m_multiRequests.end()) { if (it->origin == origin) { |