diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-10-07 13:54:14 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-01-28 11:27:04 +0100 |
commit | 3071de1e07be28d763164a037d946281146bf31d (patch) | |
tree | 5d320a1c0cc2424a18a5fab0241c5d5a8ee69728 /src/core/content_browser_client_qt.cpp | |
parent | 8f45d71a77f34ad250b73b9bbaf02dbaed6cc831 (diff) |
Improve local scheme access rules
Pick-to: 6.3 6.2
Task-number: QTBUG-96849
Change-Id: Ieb24da12a61e5e37b29ccf2d1a11b7bd863b842e
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'src/core/content_browser_client_qt.cpp')
-rw-r--r-- | src/core/content_browser_client_qt.cpp | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp index 2b1485b2d..6201bab27 100644 --- a/src/core/content_browser_client_qt.cpp +++ b/src/core/content_browser_client_qt.cpp @@ -1102,15 +1102,10 @@ void ContentBrowserClientQt::RegisterNonNetworkSubresourceURLLoaderFactories(int // Install file scheme if necessary: bool install_file_scheme = false; if (web_contents && !is_background_page) { - const auto *settings = static_cast<WebContentsDelegateQt *>(web_contents->GetResponsibleWebContents()->GetDelegate())->webEngineSettings(); - if (settings->testAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls)) { - for (const auto &local_scheme : url::GetLocalSchemes()) { - if (url.SchemeIs(local_scheme)) { - install_file_scheme = true; - break; - } - } - } + const std::string scheme = url.scheme(); + install_file_scheme = base::Contains(url::GetLocalSchemes(), scheme); + if (const url::CustomScheme *cs = url::CustomScheme::FindScheme(scheme)) + install_file_scheme = cs->flags & (url::CustomScheme::LocalAccessAllowed | url::CustomScheme::Local); } if (install_file_scheme && factories->find(url::kFileScheme) == factories->end()) { |