summaryrefslogtreecommitdiffstats
path: root/src/core/file_system_access/file_system_access_permission_request_controller_impl.cpp
blob: f77c974d0b64b140f35feb51059b4a86e6218aa7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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()), QUrl::fromLocalFile(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