[webkit-changes] [WebKit/WebKit] 74e0b3: Implement the Close Watcher API

Luke Warlow noreply at github.com
Wed Jan 29 15:53:21 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 74e0b308c9978fbbd289a8b070f3352c411d173d
      https://github.com/WebKit/WebKit/commit/74e0b308c9978fbbd289a8b070f3352c411d173d
  Author: Luke Warlow <lwarlow at igalia.com>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/abortsignal-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/basic-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/keydown-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/keypress-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/keyup-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/not-user-activation-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/synthetic-keyboard-event-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/event-properties-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/frame-removal-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/inside-event-listeners-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-activate-preventDefault_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-activate_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-closerequest-n_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-destroy-n_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-activate-CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-dialog-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-CloseWatcher-dialog-popover-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ny-activate-preventDefault_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ny_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyn_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyn_dialog-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn-destroy_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn-destroy_dialog-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn_dialog-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyyn-CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyyyn-CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/y_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yn-activate_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yn_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ynn-CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yy_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyn_CloseWatcher-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy-CloseWatcher-dialog-popover-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy-activate-CloseWatcher-dialog-popover-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy_CloseWatcher-expected.txt
    M LayoutTests/platform/ios/TestExpectations
    A LayoutTests/platform/ios/imported/w3c/web-platform-tests/close-watcher/abortsignal-expected.txt
    A LayoutTests/platform/ios/imported/w3c/web-platform-tests/close-watcher/basic-expected.txt
    M LayoutTests/platform/win/TestExpectations
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/DerivedSources-input.xcfilelist
    M Source/WebCore/DerivedSources-output.xcfilelist
    M Source/WebCore/DerivedSources.make
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/bindings/js/WebCoreBuiltinNames.h
    M Source/WebCore/dom/EventTargetFactory.in
    A Source/WebCore/html/closewatcher/CloseWatcher.cpp
    A Source/WebCore/html/closewatcher/CloseWatcher.h
    A Source/WebCore/html/closewatcher/CloseWatcher.idl
    A Source/WebCore/html/closewatcher/CloseWatcherManager.cpp
    A Source/WebCore/html/closewatcher/CloseWatcherManager.h
    M Source/WebCore/page/EventHandler.cpp
    M Source/WebCore/page/LocalDOMWindow.cpp
    M Source/WebCore/page/LocalDOMWindow.h

  Log Message:
  -----------
  Implement the Close Watcher API
https://bugs.webkit.org/show_bug.cgi?id=263305

Reviewed by Abrar Rahman Protyasha.

Implement the Close Watcher API behind a feature flag.

This patch doesn't include the integration with Popovers or Dialogs.

Spec: https://html.spec.whatwg.org/#close-requests-and-close-watchers

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/abortsignal-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/basic-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/keydown-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/keypress-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/keyup-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/not-user-activation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/synthetic-keyboard-event-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/event-properties-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/frame-removal-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/inside-event-listeners-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-activate-preventDefault_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-activate_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-closerequest-n_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-destroy-n_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-activate-CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-dialog-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-CloseWatcher-dialog-popover-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ny-activate-preventDefault_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ny_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyn_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyn_dialog-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn-destroy_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn-destroy_dialog-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn_dialog-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyyn-CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyyyn-CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/y_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yn-activate_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yn_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ynn-CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yy_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyn_CloseWatcher-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy-CloseWatcher-dialog-popover-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy-activate-CloseWatcher-dialog-popover-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy_CloseWatcher-expected.txt:
* LayoutTests/platform/ios/TestExpectations:
* LayoutTests/platform/ios/imported/w3c/web-platform-tests/close-watcher/abortsignal-expected.txt: Added.
* LayoutTests/platform/ios/imported/w3c/web-platform-tests/close-watcher/basic-expected.txt: Added.
* LayoutTests/platform/win/TestExpectations:
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/CMakeLists.txt:
* Source/WebCore/DerivedSources-input.xcfilelist:
* Source/WebCore/DerivedSources-output.xcfilelist:
* Source/WebCore/DerivedSources.make:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/bindings/js/WebCoreBuiltinNames.h:
* Source/WebCore/dom/EventTargetFactory.in:
* Source/WebCore/html/closewatcher/CloseWatcher.cpp: Added.
(WebCore::CloseWatcher::create):
(WebCore::CloseWatcher::establish):
(WebCore::CloseWatcher::CloseWatcher):
(WebCore::CloseWatcher::requestClose):
(WebCore::CloseWatcher::requestToClose):
(WebCore::CloseWatcher::close):
(WebCore::CloseWatcher::canBeClosed const):
(WebCore::CloseWatcher::destroy):
(WebCore::CloseWatcher::eventListenersDidChange):
(WebCore::CloseWatcher::virtualHasPendingActivity const):
* Source/WebCore/html/closewatcher/CloseWatcher.h: Added.
* Source/WebCore/html/closewatcher/CloseWatcher.idl: Added.
* Source/WebCore/html/closewatcher/CloseWatcherManager.cpp: Added.
(WebCore::CloseWatcherManager::add):
(WebCore::CloseWatcherManager::remove):
(WebCore::CloseWatcherManager::notifyAboutUserActivation):
(WebCore::CloseWatcherManager::canPreventClose):
(WebCore::CloseWatcherManager::escapeKeyHandler):
* Source/WebCore/html/closewatcher/CloseWatcherManager.h: Added.
* Source/WebCore/page/EventHandler.cpp:
(WebCore::EventHandler::defaultKeyboardEventHandler):
* Source/WebCore/page/LocalDOMWindow.cpp:
(WebCore::LocalDOMWindow::notifyActivated):
(WebCore::LocalDOMWindow::closeWatcherManager):
* Source/WebCore/page/LocalDOMWindow.h:

Canonical link: https://commits.webkit.org/289529@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list