diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/api/Qt6WebEngineCoreMacros.cmake | 7 | ||||
| -rw-r--r-- | src/core/browser_accessibility_manager_qt.cpp | 5 | ||||
| -rw-r--r-- | src/core/browser_accessibility_qt.cpp | 8 | ||||
| -rw-r--r-- | src/core/permission_manager_qt.cpp | 19 |
4 files changed, 33 insertions, 6 deletions
diff --git a/src/core/api/Qt6WebEngineCoreMacros.cmake b/src/core/api/Qt6WebEngineCoreMacros.cmake index 8bb731548..ed58aa8e7 100644 --- a/src/core/api/Qt6WebEngineCoreMacros.cmake +++ b/src/core/api/Qt6WebEngineCoreMacros.cmake @@ -14,6 +14,13 @@ function(qt6_add_webengine_dictionary) cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT TARGET ${QT_CMAKE_EXPORT_NAMESPACE}::qwebengine_convert_dict) + message(WARNING + "qwebengine_convert_dict is not available. Skipping qt6_add_webengine_dictionary." + ) + return() + endif() + if (NOT ARGS_SOURCE OR NOT EXISTS "${ARGS_SOURCE}" OR NOT IS_ABSOLUTE "${ARGS_SOURCE}") message(FATAL_ERROR "Function qt_add_webengine_dictionary requires an absolute path to SOURCE dictionary.") endif() diff --git a/src/core/browser_accessibility_manager_qt.cpp b/src/core/browser_accessibility_manager_qt.cpp index 5a5138a08..8a0cfb94f 100644 --- a/src/core/browser_accessibility_manager_qt.cpp +++ b/src/core/browser_accessibility_manager_qt.cpp @@ -6,6 +6,7 @@ #include "ui/accessibility/platform/browser_accessibility_manager.h" +#include <QtCore/qdebug.h> #include <QtGui/qtguiglobal.h> #if QT_CONFIG(accessibility) @@ -100,6 +101,10 @@ void BrowserAccessibilityManagerQt::FireBlinkEvent(ax::mojom::Event event_type, int action_request_id) { auto *iface = toQAccessibleInterface(node); + if (!iface) { + qWarning() << "Trying to fire accessibility event on deinitialized node, ax::mojom::Event:" << (int)event_type; + return; + } switch (event_type) { case ax::mojom::Event::kFocus: { diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp index c45557858..31ea541ca 100644 --- a/src/core/browser_accessibility_qt.cpp +++ b/src/core/browser_accessibility_qt.cpp @@ -38,6 +38,7 @@ public: #endif bool isReady() const; + bool CanFireEvents() const override; QtWebEngineCore::BrowserAccessibilityInterface *interface = nullptr; }; @@ -165,6 +166,13 @@ bool BrowserAccessibilityQt::isReady() const return manager()->GetFromID(node()->id()) != nullptr; } +bool BrowserAccessibilityQt::CanFireEvents() const +{ + if (!node() || !interface || !isReady()) + return false; + return BrowserAccessibility::CanFireEvents(); +} + #if defined(Q_OS_MACOS) // Mac-only logic based on ui/accessibility/platform/browser_accessibility_mac.mm: diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp index 502f4deb9..7a7f24b67 100644 --- a/src/core/permission_manager_qt.cpp +++ b/src/core/permission_manager_qt.cpp @@ -469,8 +469,15 @@ QList<QWebEnginePermission> PermissionManagerQt::listPermissions( Q_ASSERT(origin.isEmpty() || permissionType == QWebEnginePermission::PermissionType::Unsupported); QList<QWebEnginePermission> returnList; - const GURL gorigin = toGurl(origin).DeprecatedGetOriginAsURL(); - const std::string originSpec = gorigin.spec(); + const GURL gorigin = toGurl(origin); + std::string originString = url::Origin::Create(gorigin).Serialize(); + + if (originString == "null") { + // Origin::Serialize() returns "null" for empty URLs. + // Set originString to empty string so we don't have to do + // string comparisons for every permission in the loop below. + originString.clear(); + } if (!origin.isEmpty() && !gorigin.is_valid()) return returnList; @@ -495,7 +502,7 @@ QList<QWebEnginePermission> PermissionManagerQt::listPermissions( Q_ASSERT(prefDict); for (auto &&entry : *prefDict) { - if (!originSpec.empty() && entry.first != originSpec) + if (!originString.empty() && entry.first != originString) continue; auto *pvt = new QWebEnginePermissionPrivate( @@ -695,7 +702,7 @@ blink::mojom::PermissionStatus PermissionManagerQt::GetPermissionStatus( const auto *permissionsDict = pref->GetValue()->GetIfDict(); Q_ASSERT(permissionsDict); - const auto requestedPermission = permissionsDict->FindBool(requesting_origin.DeprecatedGetOriginAsURL().spec()); + const auto requestedPermission = permissionsDict->FindBool(url::Origin::Create(requesting_origin).Serialize()); if (!requestedPermission) return blink::mojom::PermissionStatus::ASK; // Origin is not in the current permission type's database @@ -790,7 +797,7 @@ void PermissionManagerQt::ResetPermission( return; ScopedDictPrefUpdate updater(m_prefService.get(), permissionTypeString(permissionType)); - updater.Get().Remove(requesting_origin.spec()); + updater.Get().Remove(url::Origin::Create(requesting_origin).Serialize()); } blink::mojom::PermissionStatus PermissionManagerQt::getTransientPermissionStatus( @@ -829,7 +836,7 @@ void PermissionManagerQt::setPersistentPermission( return; ScopedDictPrefUpdate updater(m_prefService.get(), permissionTypeString(permissionTypeQt)); - updater.Get().Set(requesting_origin.spec(), granted); + updater.Get().Set(url::Origin::Create(requesting_origin).Serialize(), granted); m_prefService->SchedulePendingLossyWrites(); } |
