From 2e576d786cdd03bb2e8a3dcbfaafc4856f3ee143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Thu, 10 Oct 2024 16:50:03 +0000 Subject: [PATCH] Bug 1923546 - Fix MockDragServiceController on macOS after bug 1922956. r=handyman Bug 1922956 made it so that nsChildView::GetTopLevelWidget() properly returned the top level nsCocoaWindow. However that meant that MockDragServiceController::SendEvent started sending events through the wrong widget (because the nsChildView is the thing that has the APZ state and such). However the fix is trivial. Use GetWidgetForContent in order to determine which widget to fire the event to, restoring the previous behavior and fixing the tests. Differential Revision: https://phabricator.services.mozilla.com/D225198 --- dom/events/test/browser.toml | 6 ------ widget/MockDragServiceController.cpp | 5 ++--- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/dom/events/test/browser.toml b/dom/events/test/browser.toml index 6eca39308b9c..058b3425ded1 100644 --- a/dom/events/test/browser.toml +++ b/dom/events/test/browser.toml @@ -20,14 +20,8 @@ support-files = [ ["browser_bug1539497.js"] ["browser_dragdrop_protected_diff_origin.js"] -skip-if = [ - "os == 'mac'", # Bug 1923546 - temp disabled due to permafails until a fix in place -] ["browser_dragdrop_protected_same_origin.js"] -skip-if = [ - "os == 'mac'", # Bug 1923546 - temp disabled due to permafails until a fix in place -] ["browser_dragdrop_unprotected_diff_origin.js"] diff --git a/widget/MockDragServiceController.cpp b/widget/MockDragServiceController.cpp index 0a1edbf13bfc..38add2d7071d 100644 --- a/widget/MockDragServiceController.cpp +++ b/widget/MockDragServiceController.cpp @@ -135,15 +135,14 @@ MockDragServiceController::SendEvent( dom::BrowsingContext* aBC, nsIMockDragServiceController::EventType aEventType, int32_t aScreenX, int32_t aScreenY, uint32_t aKeyModifiers = 0) { - RefPtr widget = - aBC->Canonical()->GetParentProcessWidgetContaining(); - NS_ENSURE_TRUE(widget, NS_ERROR_UNEXPECTED); auto* embedder = aBC->Top()->GetEmbedderElement(); NS_ENSURE_TRUE(embedder, NS_ERROR_UNEXPECTED); auto* frame = embedder->GetPrimaryFrame(); NS_ENSURE_TRUE(frame, NS_ERROR_UNEXPECTED); auto* presCxt = frame->PresContext(); MOZ_ASSERT(presCxt); + RefPtr widget = nsContentUtils::WidgetForContent(embedder); + NS_ENSURE_TRUE(widget, NS_ERROR_UNEXPECTED); EventMessage eventType = MockEventTypeToEventMessage(aEventType); UniquePtr widgetEvent;