diff options
Diffstat (limited to 'src/core/permission_manager_qt.cpp')
-rw-r--r-- | src/core/permission_manager_qt.cpp | 82 |
1 files changed, 44 insertions, 38 deletions
diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp index c65da34af..2fa42bf10 100644 --- a/src/core/permission_manager_qt.cpp +++ b/src/core/permission_manager_qt.cpp @@ -40,25 +40,26 @@ #include "permission_manager_qt.h" #include "content/browser/renderer_host/render_view_host_delegate.h" +#include "content/browser/web_contents/web_contents_impl.h" +#include "content/public/browser/permission_controller.h" #include "content/public/browser/permission_type.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_view_host.h" -#include "content/public/browser/web_contents.h" #include "type_conversion.h" #include "web_contents_delegate_qt.h" namespace QtWebEngineCore { -BrowserContextAdapter::PermissionType toQt(content::PermissionType type) +ProfileAdapter::PermissionType toQt(content::PermissionType type) { switch (type) { case content::PermissionType::GEOLOCATION: - return BrowserContextAdapter::GeolocationPermission; + return ProfileAdapter::GeolocationPermission; case content::PermissionType::AUDIO_CAPTURE: - return BrowserContextAdapter::AudioCapturePermission; + return ProfileAdapter::AudioCapturePermission; case content::PermissionType::VIDEO_CAPTURE: - return BrowserContextAdapter::VideoCapturePermission; + return ProfileAdapter::VideoCapturePermission; case content::PermissionType::FLASH: case content::PermissionType::NOTIFICATIONS: case content::PermissionType::MIDI_SYSEX: @@ -70,10 +71,11 @@ BrowserContextAdapter::PermissionType toQt(content::PermissionType type) case content::PermissionType::ACCESSIBILITY_EVENTS: case content::PermissionType::CLIPBOARD_READ: case content::PermissionType::CLIPBOARD_WRITE: + case content::PermissionType::PAYMENT_HANDLER: case content::PermissionType::NUM: break; } - return BrowserContextAdapter::UnsupportedPermission; + return ProfileAdapter::UnsupportedPermission; } PermissionManagerQt::PermissionManagerQt() @@ -86,9 +88,9 @@ PermissionManagerQt::~PermissionManagerQt() { } -void PermissionManagerQt::permissionRequestReply(const QUrl &origin, BrowserContextAdapter::PermissionType type, bool reply) +void PermissionManagerQt::permissionRequestReply(const QUrl &origin, ProfileAdapter::PermissionType type, bool reply) { - QPair<QUrl, BrowserContextAdapter::PermissionType> key(origin, type); + QPair<QUrl, ProfileAdapter::PermissionType> key(origin, type); m_permissions[key] = reply; blink::mojom::PermissionStatus status = reply ? blink::mojom::PermissionStatus::GRANTED : blink::mojom::PermissionStatus::DENIED; { @@ -101,7 +103,7 @@ void PermissionManagerQt::permissionRequestReply(const QUrl &origin, BrowserCont ++it; } } - Q_FOREACH (const RequestOrSubscription &subscriber, m_subscribers) { + for (const RequestOrSubscription &subscriber : qAsConst(m_subscribers)) { if (subscriber.origin == origin && subscriber.type == type) subscriber.callback.Run(status); } @@ -113,13 +115,13 @@ void PermissionManagerQt::permissionRequestReply(const QUrl &origin, BrowserCont std::vector<blink::mojom::PermissionStatus> result; result.reserve(it->types.size()); for (content::PermissionType permission : it->types) { - const BrowserContextAdapter::PermissionType permissionType = toQt(permission); - if (permissionType == BrowserContextAdapter::UnsupportedPermission) { + const ProfileAdapter::PermissionType permissionType = toQt(permission); + if (permissionType == ProfileAdapter::UnsupportedPermission) { result.push_back(blink::mojom::PermissionStatus::DENIED); continue; } - QPair<QUrl, BrowserContextAdapter::PermissionType> key(origin, permissionType); + QPair<QUrl, ProfileAdapter::PermissionType> key(origin, permissionType); if (!m_permissions.contains(key)) { answerable = false; break; @@ -139,9 +141,9 @@ void PermissionManagerQt::permissionRequestReply(const QUrl &origin, BrowserCont } } -bool PermissionManagerQt::checkPermission(const QUrl &origin, BrowserContextAdapter::PermissionType type) +bool PermissionManagerQt::checkPermission(const QUrl &origin, ProfileAdapter::PermissionType type) { - QPair<QUrl, BrowserContextAdapter::PermissionType> key(origin, type); + QPair<QUrl, ProfileAdapter::PermissionType> key(origin, type); return m_permissions.contains(key) && m_permissions[key]; } @@ -152,14 +154,14 @@ int PermissionManagerQt::RequestPermission(content::PermissionType permission, const base::Callback<void(blink::mojom::PermissionStatus)>& callback) { int request_id = ++m_requestIdCount; - BrowserContextAdapter::PermissionType permissionType = toQt(permission); - if (permissionType == BrowserContextAdapter::UnsupportedPermission) { + ProfileAdapter::PermissionType permissionType = toQt(permission); + if (permissionType == ProfileAdapter::UnsupportedPermission) { callback.Run(blink::mojom::PermissionStatus::DENIED); - return kNoPendingOperation; + return content::PermissionController::kNoPendingOperation; } // Audio and video-capture should not come this way currently - Q_ASSERT(permissionType != BrowserContextAdapter::AudioCapturePermission - && permissionType != BrowserContextAdapter::VideoCapturePermission); + Q_ASSERT(permissionType != ProfileAdapter::AudioCapturePermission + && permissionType != ProfileAdapter::VideoCapturePermission); content::WebContents *webContents = frameHost->GetRenderViewHost()->GetDelegate()->GetAsWebContents(); WebContentsDelegateQt* contentsDelegate = static_cast<WebContentsDelegateQt*>(webContents->GetDelegate()); @@ -170,7 +172,7 @@ int PermissionManagerQt::RequestPermission(content::PermissionType permission, callback }; m_requests.insert(request_id, request); - if (permissionType == BrowserContextAdapter::GeolocationPermission) + if (permissionType == ProfileAdapter::GeolocationPermission) contentsDelegate->requestGeolocationPermission(request.origin); return request_id; } @@ -185,8 +187,8 @@ int PermissionManagerQt::RequestPermissions(const std::vector<content::Permissio std::vector<blink::mojom::PermissionStatus> result; result.reserve(permissions.size()); for (content::PermissionType permission : permissions) { - const BrowserContextAdapter::PermissionType permissionType = toQt(permission); - if (permissionType == BrowserContextAdapter::UnsupportedPermission) + const ProfileAdapter::PermissionType permissionType = toQt(permission); + if (permissionType == ProfileAdapter::UnsupportedPermission) result.push_back(blink::mojom::PermissionStatus::DENIED); else { answerable = false; @@ -195,7 +197,7 @@ int PermissionManagerQt::RequestPermissions(const std::vector<content::Permissio } if (answerable) { callback.Run(result); - return kNoPendingOperation; + return content::PermissionController::kNoPendingOperation; } int request_id = ++m_requestIdCount; @@ -209,30 +211,23 @@ int PermissionManagerQt::RequestPermissions(const std::vector<content::Permissio }; m_multiRequests.insert(request_id, request); for (content::PermissionType permission : permissions) { - const BrowserContextAdapter::PermissionType permissionType = toQt(permission); - if (permissionType == BrowserContextAdapter::GeolocationPermission) + const ProfileAdapter::PermissionType permissionType = toQt(permission); + if (permissionType == ProfileAdapter::GeolocationPermission) contentsDelegate->requestGeolocationPermission(request.origin); } return request_id; } -void PermissionManagerQt::CancelPermissionRequest(int request_id) -{ - // Should we add API to cancel permissions in the UI level? - m_requests.remove(request_id); - m_multiRequests.remove(request_id); -} - blink::mojom::PermissionStatus PermissionManagerQt::GetPermissionStatus( content::PermissionType permission, const GURL& requesting_origin, const GURL& /*embedding_origin*/) { - const BrowserContextAdapter::PermissionType permissionType = toQt(permission); - if (permissionType == BrowserContextAdapter::UnsupportedPermission) + const ProfileAdapter::PermissionType permissionType = toQt(permission); + if (permissionType == ProfileAdapter::UnsupportedPermission) return blink::mojom::PermissionStatus::DENIED; - QPair<QUrl, BrowserContextAdapter::PermissionType> key(toQt(requesting_origin), permissionType); + QPair<QUrl, ProfileAdapter::PermissionType> key(toQt(requesting_origin), permissionType); if (!m_permissions.contains(key)) return blink::mojom::PermissionStatus::ASK; if (m_permissions[key]) @@ -240,16 +235,27 @@ blink::mojom::PermissionStatus PermissionManagerQt::GetPermissionStatus( return blink::mojom::PermissionStatus::DENIED; } +blink::mojom::PermissionStatus PermissionManagerQt::GetPermissionStatusForFrame( + content::PermissionType permission, + content::RenderFrameHost *render_frame_host, + const GURL &requesting_origin) +{ + return GetPermissionStatus( + permission, + requesting_origin, + content::WebContents::FromRenderFrameHost(render_frame_host)->GetLastCommittedURL().GetOrigin()); +} + void PermissionManagerQt::ResetPermission( content::PermissionType permission, const GURL& requesting_origin, const GURL& /*embedding_origin*/) { - const BrowserContextAdapter::PermissionType permissionType = toQt(permission); - if (permissionType == BrowserContextAdapter::UnsupportedPermission) + const ProfileAdapter::PermissionType permissionType = toQt(permission); + if (permissionType == ProfileAdapter::UnsupportedPermission) return; - QPair<QUrl, BrowserContextAdapter::PermissionType> key(toQt(requesting_origin), permissionType); + QPair<QUrl, ProfileAdapter::PermissionType> key(toQt(requesting_origin), permissionType); m_permissions.remove(key); } |