Changeset 236129 in webkit
- Timestamp:
- Sep 18, 2018, 8:39:15 AM (8 years ago)
- Location:
- releases/WebKitGTK/webkit-2.22/Source
- Files:
-
- 17 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/loader/EmptyClients.cpp (modified) (1 diff)
-
WebCore/loader/EmptyFrameLoaderClient.h (modified) (1 diff)
-
WebCore/loader/FrameLoader.cpp (modified) (1 diff)
-
WebCore/loader/FrameLoaderClient.h (modified) (1 diff)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/UIProcess/WebFormSubmissionListenerProxy.h (modified) (2 diffs)
-
WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (modified) (2 diffs)
-
WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h (modified) (1 diff)
-
WebKit/WebProcess/WebPage/WebFrame.cpp (modified) (3 diffs)
-
WebKit/WebProcess/WebPage/WebFrame.h (modified) (2 diffs)
-
WebKitLegacy/mac/ChangeLog (modified) (1 diff)
-
WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h (modified) (1 diff)
-
WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm (modified) (1 diff)
-
WebKitLegacy/win/ChangeLog (modified) (1 diff)
-
WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp (modified) (3 diffs)
-
WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog
r236120 r236129 1 2018-08-31 Chris Dumez <cdumez@apple.com> 2 3 Assertion hit in ~CompletionHandler() from ~WebFrame() 4 https://bugs.webkit.org/show_bug.cgi?id=189199 5 <rdar://problem/42657233> 6 7 Reviewed by Youenn Fablet. 8 9 The issue was caused by WebFrame::m_willSubmitFormCompletionHandlers implicitly containing 10 CompletionHandlers (wrapped in WTF::Functions) and not calling them upon WebFrame 11 destruction. 12 13 No new tests, covered by fast/frames/iframe-target.html. 14 15 * loader/EmptyClients.cpp: 16 (WebCore::EmptyFrameLoaderClient::dispatchWillSubmitForm): 17 * loader/EmptyFrameLoaderClient.h: 18 * loader/FrameLoaderClient.h: 19 1 20 2018-08-30 Zalan Bujtas <zalan@apple.com> 2 21 -
releases/WebKitGTK/webkit-2.22/Source/WebCore/loader/EmptyClients.cpp
r235299 r236129 455 455 } 456 456 457 void EmptyFrameLoaderClient::dispatchWillSubmitForm(FormState&, WTF::Function<void(void)>&&) 458 { 457 void EmptyFrameLoaderClient::dispatchWillSubmitForm(FormState&, CompletionHandler<void()>&& completionHandler) 458 { 459 completionHandler(); 459 460 } 460 461 -
releases/WebKitGTK/webkit-2.22/Source/WebCore/loader/EmptyFrameLoaderClient.h
r232814 r236129 102 102 103 103 void dispatchWillSendSubmitEvent(Ref<FormState>&&) final; 104 void dispatchWillSubmitForm(FormState&, WTF::Function<void(void)>&&) final;104 void dispatchWillSubmitForm(FormState&, CompletionHandler<void()>&&) final; 105 105 106 106 void revertToProvisionalState(DocumentLoader*) final { } -
releases/WebKitGTK/webkit-2.22/Source/WebCore/loader/FrameLoader.cpp
r235300 r236129 3338 3338 } 3339 3339 3340 CompletionHandler<void( void)> completionHandler = [this, shouldContinue] {3340 CompletionHandler<void()> completionHandler = [this, shouldContinue] { 3341 3341 if (!m_provisionalDocumentLoader) 3342 3342 return; -
releases/WebKitGTK/webkit-2.22/Source/WebCore/loader/FrameLoaderClient.h
r233782 r236129 198 198 199 199 virtual void dispatchWillSendSubmitEvent(Ref<FormState>&&) = 0; 200 virtual void dispatchWillSubmitForm(FormState&, WTF::Function<void(void)>&&) = 0;200 virtual void dispatchWillSubmitForm(FormState&, CompletionHandler<void()>&&) = 0; 201 201 202 202 virtual void revertToProvisionalState(DocumentLoader*) = 0; -
releases/WebKitGTK/webkit-2.22/Source/WebKit/ChangeLog
r236118 r236129 1 2018-08-31 Chris Dumez <cdumez@apple.com> 2 3 Assertion hit in ~CompletionHandler() from ~WebFrame() 4 https://bugs.webkit.org/show_bug.cgi?id=189199 5 <rdar://problem/42657233> 6 7 Reviewed by Youenn Fablet. 8 9 * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: 10 (WebKit::WebFrameLoaderClient::dispatchWillSubmitForm): 11 * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: 12 * WebProcess/WebPage/WebFrame.cpp: 13 (WebKit::WebFrame::~WebFrame): 14 (WebKit::WebFrame::setUpWillSubmitFormListener): 15 (WebKit::WebFrame::invalidatePolicyListener): 16 * WebProcess/WebPage/WebFrame.h: 17 1 18 2018-08-30 Tim Horton <timothy_horton@apple.com> 2 19 -
releases/WebKitGTK/webkit-2.22/Source/WebKit/UIProcess/WebFormSubmissionListenerProxy.h
r234009 r236129 33 33 class WebFormSubmissionListenerProxy : public API::ObjectImpl<API::Object::Type::FormSubmissionListener> { 34 34 public: 35 static Ref<WebFormSubmissionListenerProxy> create(CompletionHandler<void( void)>&& completionHandler)35 static Ref<WebFormSubmissionListenerProxy> create(CompletionHandler<void()>&& completionHandler) 36 36 { 37 37 return adoptRef(*new WebFormSubmissionListenerProxy(WTFMove(completionHandler))); … … 41 41 42 42 private: 43 WebFormSubmissionListenerProxy(CompletionHandler<void( void)>&& completionHandler)43 WebFormSubmissionListenerProxy(CompletionHandler<void()>&& completionHandler) 44 44 : m_completionHandler(WTFMove(completionHandler)) 45 45 { } 46 CompletionHandler<void( void)> m_completionHandler;46 CompletionHandler<void()> m_completionHandler; 47 47 }; 48 48 -
releases/WebKitGTK/webkit-2.22/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
r236041 r236129 941 941 } 942 942 943 void WebFrameLoaderClient::dispatchWillSubmitForm(FormState& formState, WTF::Function<void(void)>&& function) 944 { 945 WebPage* webPage = m_frame->page(); 946 if (!webPage) 947 return; 943 void WebFrameLoaderClient::dispatchWillSubmitForm(FormState& formState, CompletionHandler<void()>&& completionHandler) 944 { 945 WebPage* webPage = m_frame->page(); 946 if (!webPage) { 947 completionHandler(); 948 return; 949 } 948 950 949 951 auto& form = formState.form(); … … 959 961 webPage->injectedBundleFormClient().willSubmitForm(webPage, &form, m_frame, sourceFrame, values, userData); 960 962 961 uint64_t listenerID = m_frame->setUpWillSubmitFormListener(WTFMove( function));963 uint64_t listenerID = m_frame->setUpWillSubmitFormListener(WTFMove(completionHandler)); 962 964 963 965 webPage->send(Messages::WebPageProxy::WillSubmitForm(m_frame->frameID(), sourceFrame->frameID(), values, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()))); -
releases/WebKitGTK/webkit-2.22/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
r233782 r236129 132 132 133 133 void dispatchWillSendSubmitEvent(Ref<WebCore::FormState>&&) final; 134 void dispatchWillSubmitForm(WebCore::FormState&, WTF::Function<void(void)>&&) final;134 void dispatchWillSubmitForm(WebCore::FormState&, CompletionHandler<void()>&&) final; 135 135 136 136 void revertToProvisionalState(WebCore::DocumentLoader*) final; -
releases/WebKitGTK/webkit-2.22/Source/WebKit/WebProcess/WebPage/WebFrame.cpp
r236041 r236129 164 164 ASSERT(!m_coreFrame); 165 165 166 auto willSubmitFormCompletionHandlers = WTFMove(m_willSubmitFormCompletionHandlers); 167 for (auto& completionHandler : willSubmitFormCompletionHandlers.values()) 168 completionHandler(); 169 166 170 #ifndef NDEBUG 167 171 webFrameCounter.decrement(); … … 220 224 } 221 225 222 uint64_t WebFrame::setUpWillSubmitFormListener( WTF::Function<void(void)>&& completionHandler)226 uint64_t WebFrame::setUpWillSubmitFormListener(CompletionHandler<void()>&& completionHandler) 223 227 { 224 228 uint64_t identifier = generateListenerID(); … … 245 249 function(PolicyAction::Ignore); 246 250 m_policyFunctionForNavigationAction = ForNavigationAction::No; 247 for (auto& function : m_willSubmitFormCompletionHandlers.values()) 248 function(); 249 m_willSubmitFormCompletionHandlers.clear(); 251 252 auto willSubmitFormCompletionHandlers = WTFMove(m_willSubmitFormCompletionHandlers); 253 for (auto& completionHandler : willSubmitFormCompletionHandlers.values()) 254 completionHandler(); 250 255 } 251 256 -
releases/WebKitGTK/webkit-2.22/Source/WebKit/WebProcess/WebPage/WebFrame.h
r231479 r236129 90 90 void didReceivePolicyDecision(uint64_t listenerID, WebCore::PolicyAction, uint64_t navigationID, DownloadID, std::optional<WebsitePoliciesData>&&); 91 91 92 uint64_t setUpWillSubmitFormListener( WTF::Function<void(void)>&&);92 uint64_t setUpWillSubmitFormListener(CompletionHandler<void()>&&); 93 93 void continueWillSubmitForm(uint64_t); 94 94 … … 184 184 WebCore::FramePolicyFunction m_policyFunction; 185 185 ForNavigationAction m_policyFunctionForNavigationAction { ForNavigationAction::No }; 186 HashMap<uint64_t, WTF::Function<void(void)>> m_willSubmitFormCompletionHandlers;186 HashMap<uint64_t, CompletionHandler<void()>> m_willSubmitFormCompletionHandlers; 187 187 DownloadID m_policyDownloadID { 0 }; 188 188 -
releases/WebKitGTK/webkit-2.22/Source/WebKitLegacy/mac/ChangeLog
r236045 r236129 1 2018-08-31 Chris Dumez <cdumez@apple.com> 2 3 Assertion hit in ~CompletionHandler() from ~WebFrame() 4 https://bugs.webkit.org/show_bug.cgi?id=189199 5 <rdar://problem/42657233> 6 7 Reviewed by Youenn Fablet. 8 9 * WebCoreSupport/WebFrameLoaderClient.h: 10 * WebCoreSupport/WebFrameLoaderClient.mm: 11 (WebFrameLoaderClient::dispatchWillSubmitForm): 12 1 13 2018-08-23 Mark Lam <mark.lam@apple.com> 2 14 -
releases/WebKitGTK/webkit-2.22/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h
r232814 r236129 135 135 136 136 void dispatchWillSendSubmitEvent(Ref<WebCore::FormState>&&) final; 137 void dispatchWillSubmitForm(WebCore::FormState&, WTF::Function<void(void)>&&) final;137 void dispatchWillSubmitForm(WebCore::FormState&, CompletionHandler<void()>&&) final; 138 138 139 139 void revertToProvisionalState(WebCore::DocumentLoader*) final; -
releases/WebKitGTK/webkit-2.22/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm
r234808 r236129 950 950 } 951 951 952 void WebFrameLoaderClient::dispatchWillSubmitForm(FormState& formState, WTF::Function<void(void)>&& function)952 void WebFrameLoaderClient::dispatchWillSubmitForm(FormState& formState, CompletionHandler<void()>&& completionHandler) 953 953 { 954 954 id <WebFormDelegate> formDelegate = [getWebView(m_webFrame.get()) _formDelegate]; 955 955 if (!formDelegate) { 956 function();956 completionHandler(); 957 957 return; 958 958 } 959 959 960 960 NSDictionary *values = makeFormFieldValuesDictionary(formState); 961 CallFormDelegate(getWebView(m_webFrame.get()), @selector(frame:sourceFrame:willSubmitForm:withValues:submissionListener:), m_webFrame.get(), kit(formState.sourceDocument().frame()), kit(&formState.form()), values, setUpPolicyListener([ function = WTFMove(function)](PolicyAction) { function(); }, PolicyAction::Ignore).get());961 CallFormDelegate(getWebView(m_webFrame.get()), @selector(frame:sourceFrame:willSubmitForm:withValues:submissionListener:), m_webFrame.get(), kit(formState.sourceDocument().frame()), kit(&formState.form()), values, setUpPolicyListener([completionHandler = WTFMove(completionHandler)](PolicyAction) mutable { completionHandler(); }, PolicyAction::Ignore).get()); 962 962 } 963 963 -
releases/WebKitGTK/webkit-2.22/Source/WebKitLegacy/win/ChangeLog
r234501 r236129 1 2018-08-31 Chris Dumez <cdumez@apple.com> 2 3 Assertion hit in ~CompletionHandler() from ~WebFrame() 4 https://bugs.webkit.org/show_bug.cgi?id=189199 5 <rdar://problem/42657233> 6 7 Reviewed by Youenn Fablet. 8 9 * WebCoreSupport/WebFrameLoaderClient.cpp: 10 (WebFrameLoaderClient::dispatchWillSubmitForm): 11 * WebCoreSupport/WebFrameLoaderClient.h: 12 1 13 2018-08-02 David Fenton <david_fenton@apple.com> 2 14 -
releases/WebKitGTK/webkit-2.22/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp
r232814 r236129 600 600 } 601 601 602 void WebFrameLoaderClient::dispatchWillSubmitForm(FormState& formState, WTF::Function<void(void)>&& function)602 void WebFrameLoaderClient::dispatchWillSubmitForm(FormState& formState, CompletionHandler<void()>&& completionHandler) 603 603 { 604 604 WebView* webView = m_webFrame->webView(); … … 609 609 610 610 if (FAILED(webView->formDelegate(&formDelegate))) { 611 function();611 completionHandler(); 612 612 return; 613 613 } … … 624 624 625 625 COMPtr<WebFrame> sourceFrame(kit(formState.sourceDocument().frame())); 626 if (SUCCEEDED(formDelegate->willSubmitForm(m_webFrame, sourceFrame.get(), formElement.get(), formValuesPropertyBag.get(), setUpPolicyListener([ function = WTFMove(function)] (PolicyAction) { function(); }).get())))626 if (SUCCEEDED(formDelegate->willSubmitForm(m_webFrame, sourceFrame.get(), formElement.get(), formValuesPropertyBag.get(), setUpPolicyListener([completionHandler = WTFMove(completionHandler)] (PolicyAction) { completionHandler(); }).get()))) 627 627 return; 628 628 629 629 // FIXME: Add a sane default implementation 630 function();630 completionHandler(); 631 631 } 632 632 -
releases/WebKitGTK/webkit-2.22/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.h
r232814 r236129 109 109 110 110 void dispatchWillSendSubmitEvent(Ref<WebCore::FormState>&&) override; 111 void dispatchWillSubmitForm(WebCore::FormState&, WTF::Function<void(void)>&&) override;111 void dispatchWillSubmitForm(WebCore::FormState&, CompletionHandler<void()>&&) override; 112 112 113 113 void revertToProvisionalState(WebCore::DocumentLoader*) override;
Note:
See TracChangeset
for help on using the changeset viewer.