Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e97a970f4f182a0dd7f31c946bddd96c02ad2b5f
      
https://github.com/WebKit/WebKit/commit/e97a970f4f182a0dd7f31c946bddd96c02ad2b5f
  Author: Charlie Wolfe <[email protected]>
  Date:   2026-02-05 (Thu, 05 Feb 2026)

  Changed paths:
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/ios/PageClientImplIOS.h
    M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm

  Log Message:
  -----------
  Block JS initiated mainframe navigations while safe browsing warning is 
displayed
https://bugs.webkit.org/show_bug.cgi?id=307008
rdar://167596435

Reviewed by Pascoe.

When a safe browsing warning is shown and JavaScript tries to navigate via 
location.href, the page would
incorrectly close. This happened because the new navigation lead to the warning 
view being cleared, whose
dealloc called the completion handler with ContinueUnsafeLoad::No.

Fix by blocking non-API-initiated main frame navigations in 
decidePolicyForNavigationAction while a
browsing warning is displayed.

Test: Tools/TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::hasBrowsingWarning const):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm:
(TEST(SafeBrowsing, NavigationFromWarningPage)):
(TEST(SafeBrowsing, SetTimeoutNavigationFromWarningPage)):

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



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

Reply via email to