diff options
Diffstat (limited to 'src/core/file_system_access/file_system_access_permission_request_controller_impl.cpp')
-rw-r--r-- | src/core/file_system_access/file_system_access_permission_request_controller_impl.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/core/file_system_access/file_system_access_permission_request_controller_impl.cpp b/src/core/file_system_access/file_system_access_permission_request_controller_impl.cpp new file mode 100644 index 000000000..7dc5f5211 --- /dev/null +++ b/src/core/file_system_access/file_system_access_permission_request_controller_impl.cpp @@ -0,0 +1,48 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#include "file_system_access_permission_request_controller_impl.h" + +#include "components/permissions/permission_util.h" +#include "content/public/browser/file_system_access_permission_context.h" +#include "type_conversion.h" + +namespace QtWebEngineCore { + +ASSERT_ENUMS_MATCH(content::FileSystemAccessPermissionContext::HandleType::kFile, + QWebEngineFileSystemAccessRequest::HandleType::File); +ASSERT_ENUMS_MATCH(content::FileSystemAccessPermissionContext::HandleType::kDirectory, + QWebEngineFileSystemAccessRequest::HandleType::Directory); + +ASSERT_ENUMS_MATCH(FileSystemAccessPermissionRequestManagerQt::Access::kRead, + QWebEngineFileSystemAccessRequest::AccessFlag::Read); +ASSERT_ENUMS_MATCH(FileSystemAccessPermissionRequestManagerQt::Access::kWrite, + QWebEngineFileSystemAccessRequest::AccessFlag::Write); + +FileSystemAccessPermissionRequestControllerImpl::FileSystemAccessPermissionRequestControllerImpl( + const FileSystemAccessPermissionRequestManagerQt::RequestData &request, + base::OnceCallback<void(permissions::PermissionAction result)> callback) + : FileSystemAccessPermissionRequestController( + toQt(request.origin.GetURL()), toQt(request.path.value()), + (HandleType)request.handle_type, AccessFlags((int)request.access)) + , m_callback(std::move(callback)) +{ +} + +FileSystemAccessPermissionRequestControllerImpl::~FileSystemAccessPermissionRequestControllerImpl() +{ + if (m_callback) + std::move(m_callback).Run(permissions::PermissionAction::IGNORED); +} + +void FileSystemAccessPermissionRequestControllerImpl::accepted() +{ + std::move(m_callback).Run(permissions::PermissionAction::GRANTED); +} + +void FileSystemAccessPermissionRequestControllerImpl::rejected() +{ + std::move(m_callback).Run(permissions::PermissionAction::DENIED); +} + +} // namespace QtWebEngineCore |