TestRunnerWKWebView's menu callbacks should be cleared upon UI script completion
authorwenson_hsieh@apple.com <wenson_hsieh@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 May 2019 17:15:21 +0000 (17:15 +0000)
committerwenson_hsieh@apple.com <wenson_hsieh@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 May 2019 17:15:21 +0000 (17:15 +0000)
commit99c1caf5939a8ced0283d5f92cb308e7ab8fc336
tree9a309cb1c935349af6ed24216cf08da0c8680d13
parent5cce1b3360f6daf60b8c07826fc40230ef5931fc
TestRunnerWKWebView's menu callbacks should be cleared upon UI script completion
https://bugs.webkit.org/show_bug.cgi?id=197685

Reviewed by Alex Christensen.

Tools:

Fixes a bug in the test runner wherein didShowMenuCallback and didHideMenuCallback are not reset upon UI script
completion. See LayoutTests/ChangeLog for more details.

* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::platformClearAllCallbacks):

LayoutTests:

Adjust a couple of existing layout tests such that they don't rely on didShowMenuCallback and
didHideMenuCallback sticking around across UI scripts. Currently, these layout tests do the following:

1. Run a UI script that registers menu callback handlers.
2. Run a subsequent UI script that will cause the callback handlers to be fired (e.g. clicking on an element).

After making the change in the test runner to clear menu callbacks upon script completion, callbacks registered
in step (1) are now unregistered when step (2) completes. Instead, we can rewrite this test logic so that
they're driven by a single UI script.

* editing/pasteboard/ios/dom-paste-consecutive-confirmations.html:
* editing/pasteboard/ios/dom-paste-requires-user-gesture.html:

Instead of using internals.withUserGesture, put the test logic under a click handler (which is inside the scope
of a user gesture token), and then use requestAnimationFrame to schedule a second programmatic paste that is
outside the scope of user interaction. As opposed to setTimeout, requestAnimationFrame does not propagate the
current user gesture token.

* editing/pasteboard/ios/resources/dom-paste-helper.js:
(return.new.Promise.):
(async._waitForOrTriggerPasteMenu):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245057 268f45cc-cd09-0410-ab3c-d52691b4dbfc
LayoutTests/ChangeLog
LayoutTests/editing/pasteboard/ios/dom-paste-consecutive-confirmations.html
LayoutTests/editing/pasteboard/ios/dom-paste-requires-user-gesture.html
LayoutTests/editing/pasteboard/ios/resources/dom-paste-helper.js
Tools/ChangeLog
Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm