WebKit Bugzilla
Attachment 360358 Details for
Bug 193915
: Regression(PSON) Crash under WebPageProxy::didStartProgress()
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193915-20190128111156.patch (text/plain), 4.73 KB, created by
Chris Dumez
on 2019-01-28 11:11:57 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Chris Dumez
Created:
2019-01-28 11:11:57 PST
Size:
4.73 KB
patch
obsolete
>Subversion Revision: 240583 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 30a40ff4d0cdae8612a11d2b357fb746ca41af7a..dc33dbed6fd85a70eabf3c153c0839d8dfe1501f 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,20 @@ >+2019-01-28 Chris Dumez <cdumez@apple.com> >+ >+ Regression(PSON) Crash under WebPageProxy::didStartProgress() >+ https://bugs.webkit.org/show_bug.cgi?id=193915 >+ <rdar://problem/47560907> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * UIProcess/WebPageProxy.cpp: >+ (WebKit::WebPageProxy::close): >+ Make sure we destroy the ProvisionalPageProxy if the page gets closed as we do not want to keep receiving >+ IPC after this or even worse, commit the provisional page. >+ >+ (WebKit::WebPageProxy::didStartProgress): >+ Add an assertion in didStartProgress() to make sure we do not receive this IPC after the page has been >+ closed. >+ > 2019-01-28 Antoine Quint <graouts@apple.com> > > Limit user-agent interactions based on the touch-action property on iOS >diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp >index 1207c67a2c2f98bff095f569d42539488d650743..756f68678a0e81f9a7cebac86a180edd372ba4ad 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.cpp >+++ b/Source/WebKit/UIProcess/WebPageProxy.cpp >@@ -965,6 +965,8 @@ void WebPageProxy::close() > m_activeContextMenu = nullptr; > #endif > >+ m_provisionalPage = nullptr; >+ > m_inspector->invalidate(); > > m_backForwardList->pageClosed(); >@@ -3711,6 +3713,8 @@ double WebPageProxy::estimatedProgress() const > > void WebPageProxy::didStartProgress() > { >+ ASSERT(!m_isClosed); >+ > PageClientProtector protector(pageClient()); > > auto transaction = m_pageLoadState.transaction(); >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index e40de57fdf38c64eb85e7a33acc03a4da1ad17a9..8298dfd8bfbe5dc2e674ecf8bf1e286940445b04 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,15 @@ >+2019-01-28 Chris Dumez <cdumez@apple.com> >+ >+ Regression(PSON) Crash under WebPageProxy::didStartProgress() >+ https://bugs.webkit.org/show_bug.cgi?id=193915 >+ <rdar://problem/47560907> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add API test coverage. >+ >+ * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm: >+ > 2019-01-28 Zalan Bujtas <zalan@apple.com> > > [LFC][MarginCollapsing][Quirks] Quirk margin values get propagated through margin collapsing >diff --git a/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm b/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm >index 274299381e1a6fcb242c79f326c8e829db03c06d..62caa3d0f75586bac5e6608bbaded250bd96ac53 100644 >--- a/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm >+++ b/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm >@@ -3351,6 +3351,44 @@ TEST(ProcessSwap, NavigateToCrossSiteThenBackFromJS) > EXPECT_NE(applePID, [webView _webProcessIdentifier]); > } > >+ >+TEST(ProcessSwap, ClosePageAfterCrossSiteProvisionalLoad) >+{ >+ auto processPoolConfiguration = adoptNS([[_WKProcessPoolConfiguration alloc] init]); >+ processPoolConfiguration.get().processSwapsOnNavigation = YES; >+ auto processPool = adoptNS([[WKProcessPool alloc] _initWithConfiguration:processPoolConfiguration.get()]); >+ >+ auto webViewConfiguration = adoptNS([[WKWebViewConfiguration alloc] init]); >+ [webViewConfiguration setProcessPool:processPool.get()]; >+ auto handler = adoptNS([[PSONScheme alloc] init]); >+ [webViewConfiguration setURLSchemeHandler:handler.get() forURLScheme:@"PSON"]; >+ >+ auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:webViewConfiguration.get()]); >+ auto navigationDelegate = adoptNS([[PSONNavigationDelegate alloc] init]); >+ [webView setNavigationDelegate:navigationDelegate.get()]; >+ >+ [webView configuration].preferences.safeBrowsingEnabled = NO; >+ >+ [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"pson://www.webkit.org/main.html"]]]; >+ TestWebKitAPI::Util::run(&done); >+ done = false; >+ >+ didStartProvisionalLoad = false; >+ [webView loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"simple" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]]; >+ >+ navigationDelegate->decidePolicyForNavigationAction = ^(WKNavigationAction *, void (^decisionHandler)(WKNavigationActionPolicy)) { >+ decisionHandler(WKNavigationActionPolicyAllow); >+ >+ [webView _close]; >+ done = true; >+ }; >+ >+ TestWebKitAPI::Util::run(&done); >+ done = false; >+ >+ TestWebKitAPI::Util::sleep(0.5); >+} >+ > #if PLATFORM(MAC) > > static const char* saveOpenerTestBytes = R"PSONRESOURCE(
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
achristensen
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193915
: 360358