Title: [222674] trunk/Source/WebKit
Revision
222674
Author
[email protected]
Date
2017-09-29 17:54:22 -0700 (Fri, 29 Sep 2017)

Log Message

REGRESSION: ASSERTION FAILED: m_provisionalURL.isEmpty() in WebKit::FrameLoadState::didStartProvisionalLoad
https://bugs.webkit.org/show_bug.cgi?id=177491

Patch by Alex Christensen <[email protected]> on 2017-09-29
Reviewed by Andy Estes.

* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::setUpWillSubmitFormListener):
(WebKit::WebFrame::continueWillSubmitForm):
(WebKit::WebFrame::invalidatePolicyListener):
Speculative fix for a flaky assertion.
Restore the clearing of the policy listeners we used to have when form submission was treated as a policy.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (222673 => 222674)


--- trunk/Source/WebKit/ChangeLog	2017-09-30 00:35:24 UTC (rev 222673)
+++ trunk/Source/WebKit/ChangeLog	2017-09-30 00:54:22 UTC (rev 222674)
@@ -1,3 +1,17 @@
+2017-09-29  Alex Christensen  <[email protected]>
+
+        REGRESSION: ASSERTION FAILED: m_provisionalURL.isEmpty() in WebKit::FrameLoadState::didStartProvisionalLoad
+        https://bugs.webkit.org/show_bug.cgi?id=177491
+
+        Reviewed by Andy Estes.
+
+        * WebProcess/WebPage/WebFrame.cpp:
+        (WebKit::WebFrame::setUpWillSubmitFormListener):
+        (WebKit::WebFrame::continueWillSubmitForm):
+        (WebKit::WebFrame::invalidatePolicyListener):
+        Speculative fix for a flaky assertion.
+        Restore the clearing of the policy listeners we used to have when form submission was treated as a policy.
+
 2017-09-29  Chris Dumez  <[email protected]>
 
         http/tests/preconnect/link-rel-preconnect-https.html is flaky

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp (222673 => 222674)


--- trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp	2017-09-30 00:35:24 UTC (rev 222673)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp	2017-09-30 00:54:22 UTC (rev 222674)
@@ -223,6 +223,7 @@
 uint64_t WebFrame::setUpWillSubmitFormListener(WTF::Function<void(void)>&& completionHandler)
 {
     uint64_t identifier = generateListenerID();
+    invalidatePolicyListener();
     m_willSubmitFormCompletionHandlers.set(identifier, WTFMove(completionHandler));
     return identifier;
 }
@@ -231,6 +232,7 @@
 {
     if (auto completionHandler = m_willSubmitFormCompletionHandlers.take(listenerID))
         completionHandler();
+    invalidatePolicyListener();
 }
 
 void WebFrame::invalidatePolicyListener()
@@ -242,6 +244,9 @@
     m_policyListenerID = 0;
     if (auto function = std::exchange(m_policyFunction, nullptr))
         function(PolicyAction::Ignore);
+    for (auto& function : m_willSubmitFormCompletionHandlers.values())
+        function();
+    m_willSubmitFormCompletionHandlers.clear();
 }
 
 void WebFrame::didReceivePolicyDecision(uint64_t listenerID, PolicyAction action, uint64_t navigationID, DownloadID downloadID)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to