Changeset 280374 in webkit
- Timestamp:
- Jul 27, 2021, 8:56:44 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 19 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/media/modern-media-controls/overflow-support/button-state-expected.txt (added)
-
LayoutTests/media/modern-media-controls/overflow-support/button-state.html (added)
-
LayoutTests/media/modern-media-controls/overflow-support/playback-speed.html (modified) (1 diff)
-
LayoutTests/media/modern-media-controls/tracks-support/click-track-in-contextmenu.html (modified) (2 diffs)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp (modified) (2 diffs)
-
Source/WebCore/page/ContextMenuController.cpp (modified) (1 diff)
-
Source/WebCore/page/ContextMenuController.h (modified) (1 diff)
-
Source/WebCore/page/ContextMenuProvider.h (modified) (1 diff)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/UIProcess/WebContextMenuProxy.cpp (modified) (1 diff)
-
Source/WebKit/UIProcess/WebPageProxy.cpp (modified) (2 diffs)
-
Source/WebKit/UIProcess/WebPageProxy.h (modified) (1 diff)
-
Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm (modified) (1 diff)
-
Source/WebKit/WebProcess/WebPage/WebContextMenu.cpp (modified) (1 diff)
-
Source/WebKit/WebProcess/WebPage/WebPage.cpp (modified) (2 diffs)
-
Source/WebKit/WebProcess/WebPage/WebPage.h (modified) (3 diffs)
-
Source/WebKit/WebProcess/WebPage/WebPage.messages.in (modified) (2 diffs)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r280368 r280374 1 2021-07-27 Devin Rousso <drousso@apple.com> 2 3 [Modern Media Controls] [macOS] Overflow button still shows as `on` even after contextmenu is dismissed 4 https://bugs.webkit.org/show_bug.cgi?id=228310 5 <rdar://problem/81124786> 6 7 Reviewed by Wenson Hsieh. 8 9 * media/modern-media-controls/overflow-support/button-state.html: Added. 10 * media/modern-media-controls/overflow-support/button-state-expected.txt: Added. 11 12 * media/modern-media-controls/overflow-support/playback-speed.html: 13 * media/modern-media-controls/tracks-support/click-track-in-contextmenu.html: 14 Adjust how these tests wait for and dismiss the contextmenu. 15 1 16 2021-07-27 Amir Mark Jr <amir_mark@apple.com> 2 17 -
trunk/LayoutTests/media/modern-media-controls/overflow-support/playback-speed.html
r278618 r280374 31 31 shouldBe("checkedItems.length", "1"); 32 32 shouldBeEqualToString("checkedItems[0].title", `1${multiplicationSign}`); 33 34 await new Promise((resolve, reject) => { 35 testRunner.runUIScript(` 36 uiController.dismissMenu(); 37 uiController.uiScriptComplete(); 38 `, resolve); 39 }); 33 40 await UIHelper.waitForContextMenuToHide(); 34 41 -
trunk/LayoutTests/media/modern-media-controls/tracks-support/click-track-in-contextmenu.html
r277616 r280374 44 44 { 45 45 debug("Selecting 'French' track..."); 46 await getTracksContextMenu();46 await UIHelper.waitForContextMenuToShow(); 47 47 await UIHelper.chooseMenuAction("French Sound"); 48 48 } … … 51 51 { 52 52 debug("Selecting 'Spanish' track..."); 53 await getTracksContextMenu();53 await UIHelper.waitForContextMenuToShow(); 54 54 await UIHelper.chooseMenuAction("Spanish Sound"); 55 55 } -
trunk/Source/WebCore/ChangeLog
r280369 r280374 1 2021-07-27 Devin Rousso <drousso@apple.com> 2 3 [Modern Media Controls] [macOS] Overflow button still shows as `on` even after contextmenu is dismissed 4 https://bugs.webkit.org/show_bug.cgi?id=228310 5 <rdar://problem/81124786> 6 7 Reviewed by Wenson Hsieh. 8 9 Test: media/modern-media-controls/overflow-support/button-state.html 10 11 * page/ContextMenuController.h: 12 * page/ContextMenuController.cpp: 13 (WebCore::ContextMenuController::didDismissContextMenu): Added. 14 * page/ContextMenuProvider.h: 15 (WebCore::ContextMenuProvider::didDismissContextMenu): Added. 16 Add plumbing from WebKit to the `ContextMenuProvider` for when the contextmenu is dismissed. 17 18 * Modules/mediacontrols/MediaControlsHost.cpp: 19 (WebCore::MediaControlsContextMenuProvider::didDismissContextMenu): Added. 20 When the contextmenu is dismissed, invoke the callback provided to `MediaControlsHost::showMediaControlsContextMenu` 21 as that's the signal to the `MediaController` that the contextmenu interaction is over, 22 which adjusts the `on` state of the `Button`. 23 1 24 2021-07-27 Ryosuke Niwa <rniwa@webkit.org> 2 25 -
trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp
r279914 r280374 389 389 } 390 390 391 void didDismissContextMenu() override 392 { 393 if (m_callback) 394 m_callback(ContextMenuItemTagNoAction); 395 } 396 391 397 void contextMenuItemSelected(ContextMenuAction action, const String&) override 392 398 { … … 456 462 { 457 463 #if USE(UICONTEXTMENU) || (ENABLE(CONTEXT_MENUS) && USE(ACCESSIBILITY_CONTEXT_MENUS)) 458 if (m_showMediaControlsContextMenuCallback) { 459 #if USE(UICONTEXTMENU) 464 if (m_showMediaControlsContextMenuCallback) 460 465 return false; 461 #elif (ENABLE(CONTEXT_MENUS) && USE(ACCESSIBILITY_CONTEXT_MENUS))462 // FIXME: `contextMenuCleared` is invoked between show and item selected so we may have a pending callback.463 std::exchange(m_showMediaControlsContextMenuCallback, nullptr)->handleEvent();464 #endif465 }466 466 467 467 m_showMediaControlsContextMenuCallback = WTFMove(callback); -
trunk/Source/WebCore/page/ContextMenuController.cpp
r279164 r280374 173 173 } 174 174 175 void ContextMenuController::didDismissContextMenu() 176 { 177 if (m_menuProvider) 178 m_menuProvider->didDismissContextMenu(); 179 } 180 175 181 static void openNewWindow(const URL& urlToLoad, Frame& frame, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy) 176 182 { -
trunk/Source/WebCore/page/ContextMenuController.h
r277295 r280374 57 57 58 58 void populate(); 59 WEBCORE_EXPORT void didDismissContextMenu(); 59 60 WEBCORE_EXPORT void contextMenuItemSelected(ContextMenuAction, const String& title); 60 61 void addInspectElementItem(); -
trunk/Source/WebCore/page/ContextMenuProvider.h
r274521 r280374 46 46 47 47 virtual void populateContextMenu(ContextMenu*) = 0; 48 virtual void didDismissContextMenu() { } 48 49 virtual void contextMenuItemSelected(ContextMenuAction, const String& title) = 0; 49 50 virtual void contextMenuCleared() = 0; -
trunk/Source/WebKit/ChangeLog
r280361 r280374 1 2021-07-27 Devin Rousso <drousso@apple.com> 2 3 [Modern Media Controls] [macOS] Overflow button still shows as `on` even after contextmenu is dismissed 4 https://bugs.webkit.org/show_bug.cgi?id=228310 5 <rdar://problem/81124786> 6 7 Reviewed by Wenson Hsieh. 8 9 Pipe along the `-[NSMenuDelegate menuDidClose:]` signal to the WebProcess so the `WebCore::ContextMenuProvider` 10 can handle it if needed. 11 12 * UIProcess/WebContextMenuProxy.cpp: 13 (WebKit::WebContextMenuProxy::useContextMenuItems): 14 * UIProcess/mac/WebContextMenuProxyMac.mm: 15 (-[WKMenuDelegate menuWillOpen:]): 16 (-[WKMenuDelegate menuDidClose:]): 17 18 * UIProcess/WebPageProxy.h: 19 * UIProcess/WebPageProxy.cpp: 20 (WebKit::WebPageProxy::showContextMenu): 21 (WebKit::WebPageProxy::didShowContextMenu): 22 (WebKit::WebPageProxy::didDismissContextMenu): Added. 23 24 * WebProcess/WebPage/WebContextMenu.cpp: 25 (WebKit::WebContextMenu::show): 26 27 * WebProcess/WebPage/WebPage.messages.in: 28 * WebProcess/WebPage/WebPage.h: 29 (WebKit::WebPage::startWaitingForContextMenuToShow): Added. 30 (WebKit::WebPage::contextMenuShowing): Deleted. 31 (WebKit::WebPage::contextMenuHidden): Deleted. 32 * WebProcess/WebPage/WebPage.cpp: 33 (WebKit::WebPage::didShowContextMenu): Added. 34 (WebKit::WebPage::didDismissContextMenu): Added. 35 (WebKit::WebPage::mouseEvent): 36 Drive-by: Rename `m_contextMenuShowing` to `m_waitingForContextMenuToShow` for clarity. 37 1 38 2021-07-27 Myles C. Maxfield <mmaxfield@apple.com> 2 39 -
trunk/Source/WebKit/UIProcess/WebContextMenuProxy.cpp
r264333 r280374 74 74 75 75 // No matter the result of showContextMenuWithItems, always notify the WebProcess that the menu is hidden so it starts handling mouse events again. 76 page->send(Messages::WebPage:: ContextMenuHidden());76 page->send(Messages::WebPage::DidShowContextMenu()); 77 77 } 78 78 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r280327 r280374 6829 6829 if (auto* automationSession = process().processPool().automationSession()) { 6830 6830 if (m_controlledByAutomation && automationSession->isSimulatingUserInteraction()) { 6831 send(Messages::WebPage:: ContextMenuHidden());6831 send(Messages::WebPage::DidShowContextMenu()); 6832 6832 return; 6833 6833 } … … 6843 6843 6844 6844 m_activeContextMenu->show(); 6845 } 6846 6847 void WebPageProxy::didShowContextMenu() 6848 { 6849 // Don't send `Messages::WebPage::DidShowContextMenu` as that should've already been eagerly 6850 // sent when requesting the context menu to show, regardless of the result of that request. 6851 6852 pageClient().didShowContextMenu(); 6853 } 6854 6855 void WebPageProxy::didDismissContextMenu() 6856 { 6857 send(Messages::WebPage::DidDismissContextMenu()); 6858 6859 pageClient().didDismissContextMenu(); 6845 6860 } 6846 6861 -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r280178 r280374 1315 1315 #if ENABLE(CONTEXT_MENUS) 1316 1316 // Called by the WebContextMenuProxy. 1317 void didShowContextMenu(); 1318 void didDismissContextMenu(); 1317 1319 void contextMenuItemSelected(const WebContextMenuItemData&); 1318 1320 void handleContextMenuKeyEvent(); -
trunk/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm
r279164 r280374 172 172 - (void)menuWillOpen:(NSMenu *)menu 173 173 { 174 _menuProxy->page()-> pageClient().didShowContextMenu();174 _menuProxy->page()->didShowContextMenu(); 175 175 } 176 176 177 177 - (void)menuDidClose:(NSMenu *)menu 178 178 { 179 _menuProxy->page()-> pageClient().didDismissContextMenu();179 _menuProxy->page()->didDismissContextMenu(); 180 180 } 181 181 -
trunk/Source/WebKit/WebProcess/WebPage/WebContextMenu.cpp
r271206 r280374 69 69 70 70 // Mark the WebPage has having a shown context menu then notify the UIProcess. 71 m_page-> contextMenuShowing();71 m_page->startWaitingForContextMenuToShow(); 72 72 m_page->flushPendingEditorStateUpdate(); 73 73 m_page->send(Messages::WebPageProxy::ShowContextMenu(contextMenuContextData, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()))); -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r280337 r280374 2858 2858 }; 2859 2859 2860 #if ENABLE(CONTEXT_MENUS) 2861 2862 void WebPage::didShowContextMenu() 2863 { 2864 m_waitingForContextMenuToShow = false; 2865 } 2866 2867 void WebPage::didDismissContextMenu() 2868 { 2869 corePage()->contextMenuController().didDismissContextMenu(); 2870 } 2871 2872 #endif // ENABLE(CONTEXT_MENUS) 2873 2860 2874 #if ENABLE(CONTEXT_MENU_EVENT) 2861 2875 static bool isContextClick(const PlatformMouseEvent& event) … … 2963 2977 #if ENABLE(CONTEXT_MENUS) 2964 2978 // Don't try to handle any pending mouse events if a context menu is showing. 2965 if (m_ isShowingContextMenu)2979 if (m_waitingForContextMenuToShow) 2966 2980 shouldHandleEvent = false; 2967 2981 #endif -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r280337 r280374 1051 1051 1052 1052 #if ENABLE(CONTEXT_MENUS) 1053 void contextMenuShowing() { m_isShowingContextMenu= true; }1053 void startWaitingForContextMenuToShow() { m_waitingForContextMenuToShow = true; } 1054 1054 #endif 1055 1055 … … 1621 1621 1622 1622 #if ENABLE(CONTEXT_MENUS) 1623 void contextMenuHidden() { m_isShowingContextMenu = false; } 1623 void didShowContextMenu(); 1624 void didDismissContextMenu(); 1624 1625 #endif 1625 1626 #if ENABLE(CONTEXT_MENU_EVENT) … … 2173 2174 2174 2175 #if ENABLE(CONTEXT_MENUS) 2175 bool m_ isShowingContextMenu{ false };2176 bool m_waitingForContextMenuToShow { false }; 2176 2177 #endif 2177 2178 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in
r280077 r280374 165 165 #endif 166 166 167 #if ENABLE(CONTEXT_MENUS)168 ContextMenuHidden()169 ContextMenuForKeyEvent()170 #endif171 172 167 ScrollBy(uint32_t scrollDirection, uint32_t scrollGranularity) 173 168 CenterSelectionInVisibleArea() … … 346 341 #if ENABLE(CONTEXT_MENUS) 347 342 # Context menu. 343 DidShowContextMenu() 344 DidDismissContextMenu() 348 345 DidSelectItemFromActiveContextMenu(WebKit::WebContextMenuItemData menuItem) 346 ContextMenuForKeyEvent() 349 347 #endif 350 348 -
trunk/Tools/ChangeLog
r280366 r280374 1 2021-07-27 Devin Rousso <drousso@apple.com> 2 3 [Modern Media Controls] [macOS] Overflow button still shows as `on` even after contextmenu is dismissed 4 https://bugs.webkit.org/show_bug.cgi?id=228310 5 <rdar://problem/81124786> 6 7 Reviewed by Wenson Hsieh. 8 9 * WebKitTestRunner/cocoa/TestRunnerWKWebView.mm: 10 (-[TestRunnerWKWebView dismissActiveMenu]): 11 (-[TestRunnerWKWebView immediatelyDismissContextMenuIfNeeded]): 12 (-[TestRunnerWKWebView _dismissAllContextMenuInteractions]): Added. 13 1 14 2021-07-27 Diego Pino Garcia <dpino@igalia.com> 2 15 -
trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm
r279750 r280374 186 186 { 187 187 #if PLATFORM(IOS_FAMILY) 188 [self _dismissAllContextMenuInteractions]; 188 189 [self resignFirstResponder]; 189 190 #else … … 254 255 self.showingContextMenu = NO; 255 256 257 [self _dismissAllContextMenuInteractions]; 258 } 259 260 - (void)_dismissAllContextMenuInteractions 261 { 256 262 #if PLATFORM(IOS) 257 263 for (id <UIInteraction> interaction in self.contentView.interactions) {
Note:
See TracChangeset
for help on using the changeset viewer.