Changeset 270560 in webkit
- Timestamp:
- Dec 8, 2020 3:54:12 PM (3 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r270557 r270560 1 2020-12-08 Chris Dumez <cdumez@apple.com> 2 3 Unreviewed, reverting r269983. 4 5 Seems to have regressed PLT5 6 7 Reverted changeset: 8 9 "[iOS] beforeunload event does not fire in MobileSafari" 10 https://bugs.webkit.org/show_bug.cgi?id=219102 11 https://trac.webkit.org/changeset/269983 12 1 13 2020-12-08 Simon Fraser <simon.fraser@apple.com> 2 14 -
trunk/Source/WebCore/loader/FrameLoader.cpp
r270273 r270560 3235 3235 if (!page) 3236 3236 return true; 3237 if (!page->chrome().canRunBeforeUnloadConfirmPanel()) 3238 return true; 3237 3239 3238 3240 // Store all references to each subframe in advance since beforeunload's event handler may modify frame … … 3364 3366 document->defaultEventHandler(beforeUnloadEvent.get()); 3365 3367 3366 if (! chrome.canRunBeforeUnloadConfirmPanel() || !shouldAskForNavigationConfirmation(*document, beforeUnloadEvent))3368 if (!shouldAskForNavigationConfirmation(*document, beforeUnloadEvent)) 3367 3369 return true; 3368 3370 -
trunk/Tools/ChangeLog
r270559 r270560 1 2020-12-08 Chris Dumez <cdumez@apple.com> 2 3 Unreviewed, reverting r269983. 4 5 Seems to have regressed PLT5 6 7 Reverted changeset: 8 9 "[iOS] beforeunload event does not fire in MobileSafari" 10 https://bugs.webkit.org/show_bug.cgi?id=219102 11 https://trac.webkit.org/changeset/269983 12 1 13 2020-12-08 Chris Dumez <cdumez@apple.com> 2 14 -
trunk/Tools/TestWebKitAPI/Tests/WebKit/beforeunload.html
r269983 r270560 4 4 <script> 5 5 onbeforeunload = (ev) => { 6 if (window.webkit && webkit.messageHandlers.testHandler)7 webkit.messageHandlers.testHandler.postMessage("beforeunload called");8 6 ev.preventDefault(); 9 7 return "foo"; -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ModalAlerts.mm
r269983 r270560 314 314 315 315 #endif 316 317 static bool wasBeforeUnloadEventHandlerCalled = false;318 319 @interface UIDelegateWithoutRunBeforeUnload : NSObject <WKUIDelegate>320 @end321 322 @implementation UIDelegateWithoutRunBeforeUnload323 324 - (void)webViewDidClose:(WKWebView *)webView325 {326 [webView _close];327 }328 329 @end330 331 @interface BeforeUnloadMessageHandler : NSObject <WKScriptMessageHandler>332 @end333 334 @implementation BeforeUnloadMessageHandler335 - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message336 {337 NSString *scriptMessage = [message body];338 EXPECT_WK_STREQ(@"beforeunload called", scriptMessage);339 wasBeforeUnloadEventHandlerCalled = true;340 }341 @end342 343 TEST(WebKit, BeforeUnloadEventWithoutRunBeforeUnloadConfirmPanelUIDelegate)344 {345 auto webViewConfiguration = adoptNS([[WKWebViewConfiguration alloc] init]);346 auto messageHandler = adoptNS([[BeforeUnloadMessageHandler alloc] init]);347 [[webViewConfiguration userContentController] addScriptMessageHandler:messageHandler.get() name:@"testHandler"];348 349 auto uiDelegate = adoptNS([[UIDelegateWithoutRunBeforeUnload alloc] init]);350 auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:webViewConfiguration.get()]);351 [webView setUIDelegate:uiDelegate.get()];352 353 [webView synchronouslyLoadTestPageNamed:@"beforeunload"];354 355 TestWebKitAPI::Util::spinRunLoop(10);356 357 [webView _tryClose];358 359 // The beforeunload event handler should get called even if the client application does not360 // have a UIDelegate that can show the before unload prompt.361 TestWebKitAPI::Util::run(&wasBeforeUnloadEventHandlerCalled);362 363 // The view should get closed.364 while (![webView _isClosed])365 TestWebKitAPI::Util::sleep(0.1);366 }
Note: See TracChangeset
for help on using the changeset viewer.