summaryrefslogtreecommitdiffstats
path: root/src/core/permission_manager_qt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/permission_manager_qt.cpp')
-rw-r--r--src/core/permission_manager_qt.cpp82
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);
}