browser(webkit): fix delete context stall, emit schedule load (#1211)

This commit is contained in:
Pavel Feldman 2020-03-03 23:06:59 -08:00 committed by GitHub
parent 771793f418
commit 778762455a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 12 deletions

View file

@ -1 +1 @@
1166 1167

View file

@ -3881,7 +3881,7 @@ index d6a3d0acd246de70cb485880a04b38941c832f65..61c8d5478f5eefccf88532bebf69b94d
DocumentWriter& writer() const { return m_writer; } DocumentWriter& writer() const { return m_writer; }
diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp
index 8cf9c5c47cea3ad27f282b5d73cfd5d6e3e7834a..8325b2ab10497f72a43dab18c15b5b54dfdf5afc 100644 index 8cf9c5c47cea3ad27f282b5d73cfd5d6e3e7834a..3c5b8808424f849925f5fcb3ac97d10eee2f5f07 100644
--- a/Source/WebCore/loader/FrameLoader.cpp --- a/Source/WebCore/loader/FrameLoader.cpp
+++ b/Source/WebCore/loader/FrameLoader.cpp +++ b/Source/WebCore/loader/FrameLoader.cpp
@@ -1178,6 +1178,7 @@ void FrameLoader::loadInSameDocument(const URL& url, SerializedScriptValue* stat @@ -1178,6 +1178,7 @@ void FrameLoader::loadInSameDocument(const URL& url, SerializedScriptValue* stat
@ -3901,7 +3901,15 @@ index 8cf9c5c47cea3ad27f282b5d73cfd5d6e3e7834a..8325b2ab10497f72a43dab18c15b5b54
// The search for a target frame is done earlier in the case of form submission. // The search for a target frame is done earlier in the case of form submission.
Frame* targetFrame = isFormSubmission ? nullptr : findFrameForNavigation(effectiveFrameName); Frame* targetFrame = isFormSubmission ? nullptr : findFrameForNavigation(effectiveFrameName);
if (targetFrame && targetFrame != &m_frame) { if (targetFrame && targetFrame != &m_frame) {
@@ -1597,6 +1600,8 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t @@ -1495,6 +1498,7 @@ void FrameLoader::load(FrameLoadRequest&& request)
void FrameLoader::loadWithNavigationAction(const ResourceRequest& request, NavigationAction&& action, LockHistory lockHistory, FrameLoadType type, RefPtr<FormState>&& formState, AllowNavigationToInvalidURL allowNavigationToInvalidURL, const String& downloadAttribute, CompletionHandler<void()>&& completionHandler)
{
+ InspectorInstrumentation::frameScheduledNavigation(m_frame, Seconds(0));
FRAMELOADER_RELEASE_LOG_IF_ALLOWED(ResourceLoading, "loadWithNavigationAction: frame load started");
Ref<DocumentLoader> loader = m_client.createDocumentLoader(request, defaultSubstituteDataForURL(request.url()));
@@ -1597,6 +1601,8 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t
const String& httpMethod = loader->request().httpMethod(); const String& httpMethod = loader->request().httpMethod();
if (shouldPerformFragmentNavigation(isFormSubmission, httpMethod, policyChecker().loadType(), newURL)) { if (shouldPerformFragmentNavigation(isFormSubmission, httpMethod, policyChecker().loadType(), newURL)) {
@ -3910,7 +3918,7 @@ index 8cf9c5c47cea3ad27f282b5d73cfd5d6e3e7834a..8325b2ab10497f72a43dab18c15b5b54
RefPtr<DocumentLoader> oldDocumentLoader = m_documentLoader; RefPtr<DocumentLoader> oldDocumentLoader = m_documentLoader;
NavigationAction action { *m_frame.document(), loader->request(), InitiatedByMainFrame::Unknown, policyChecker().loadType(), isFormSubmission }; NavigationAction action { *m_frame.document(), loader->request(), InitiatedByMainFrame::Unknown, policyChecker().loadType(), isFormSubmission };
@@ -3182,6 +3187,8 @@ void FrameLoader::receivedMainResourceError(const ResourceError& error) @@ -3182,6 +3188,8 @@ void FrameLoader::receivedMainResourceError(const ResourceError& error)
checkCompleted(); checkCompleted();
if (m_frame.page()) if (m_frame.page())
checkLoadComplete(); checkLoadComplete();
@ -3919,7 +3927,7 @@ index 8cf9c5c47cea3ad27f282b5d73cfd5d6e3e7834a..8325b2ab10497f72a43dab18c15b5b54
} }
void FrameLoader::continueFragmentScrollAfterNavigationPolicy(const ResourceRequest& request, bool shouldContinue) void FrameLoader::continueFragmentScrollAfterNavigationPolicy(const ResourceRequest& request, bool shouldContinue)
@@ -3944,9 +3951,6 @@ String FrameLoader::referrer() const @@ -3944,9 +3952,6 @@ String FrameLoader::referrer() const
void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds()
{ {
@ -3929,7 +3937,7 @@ index 8cf9c5c47cea3ad27f282b5d73cfd5d6e3e7834a..8325b2ab10497f72a43dab18c15b5b54
Vector<Ref<DOMWrapperWorld>> worlds; Vector<Ref<DOMWrapperWorld>> worlds;
ScriptController::getAllWorlds(worlds); ScriptController::getAllWorlds(worlds);
for (auto& world : worlds) for (auto& world : worlds)
@@ -3955,13 +3959,13 @@ void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() @@ -3955,13 +3960,13 @@ void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds()
void FrameLoader::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld& world) void FrameLoader::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld& world)
{ {
@ -14000,10 +14008,10 @@ index 0000000000000000000000000000000000000000..86e7b0c64df5fccdd66b87eecd995e0a
+@end +@end
diff --git a/Tools/Playwright/mac/AppDelegate.m b/Tools/Playwright/mac/AppDelegate.m diff --git a/Tools/Playwright/mac/AppDelegate.m b/Tools/Playwright/mac/AppDelegate.m
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..f6157600282944225a1e18b4aaa3b6d34ade5be9 index 0000000000000000000000000000000000000000..903587d11239d0071f49f0d91a844e28e65daa71
--- /dev/null --- /dev/null
+++ b/Tools/Playwright/mac/AppDelegate.m +++ b/Tools/Playwright/mac/AppDelegate.m
@@ -0,0 +1,398 @@ @@ -0,0 +1,396 @@
+/* +/*
+ * Copyright (C) 2010-2016 Apple Inc. All rights reserved. + * Copyright (C) 2010-2016 Apple Inc. All rights reserved.
+ * + *
@ -14348,7 +14356,6 @@ index 0000000000000000000000000000000000000000..f6157600282944225a1e18b4aaa3b6d3
+ dialog.webView = webView; + dialog.webView = webView;
+ dialog.completionHandler = ^void (BOOL accept, NSString* value) { + dialog.completionHandler = ^void (BOOL accept, NSString* value) {
+ completionHandler(); + completionHandler();
+ [_dialogs removeObject:dialog];
+ }; + };
+ [_dialogs addObject:dialog]; + [_dialogs addObject:dialog];
+} +}
@ -14359,7 +14366,6 @@ index 0000000000000000000000000000000000000000..f6157600282944225a1e18b4aaa3b6d3
+ dialog.webView = webView; + dialog.webView = webView;
+ dialog.completionHandler = ^void (BOOL accept, NSString* value) { + dialog.completionHandler = ^void (BOOL accept, NSString* value) {
+ completionHandler(accept); + completionHandler(accept);
+ [_dialogs removeObject:dialog];
+ }; + };
+ [_dialogs addObject:dialog]; + [_dialogs addObject:dialog];
+} +}
@ -14370,7 +14376,6 @@ index 0000000000000000000000000000000000000000..f6157600282944225a1e18b4aaa3b6d3
+ dialog.webView = webView; + dialog.webView = webView;
+ dialog.completionHandler = ^void (BOOL accept, NSString* value) { + dialog.completionHandler = ^void (BOOL accept, NSString* value) {
+ completionHandler(accept && value ? value : nil); + completionHandler(accept && value ? value : nil);
+ [_dialogs removeObject:dialog];
+ }; + };
+ [_dialogs addObject:dialog]; + [_dialogs addObject:dialog];
+} +}
@ -14381,7 +14386,6 @@ index 0000000000000000000000000000000000000000..f6157600282944225a1e18b4aaa3b6d3
+ dialog.webView = webView; + dialog.webView = webView;
+ dialog.completionHandler = ^void (BOOL accept, NSString* value) { + dialog.completionHandler = ^void (BOOL accept, NSString* value) {
+ completionHandler(accept); + completionHandler(accept);
+ [_dialogs removeObject:dialog];
+ }; + };
+ [_dialogs addObject:dialog]; + [_dialogs addObject:dialog];
+} +}
@ -14392,6 +14396,8 @@ index 0000000000000000000000000000000000000000..f6157600282944225a1e18b4aaa3b6d3
+ if (dialog.webView != webView) + if (dialog.webView != webView)
+ continue; + continue;
+ dialog.completionHandler(accept, value); + dialog.completionHandler(accept, value);
+ dialog.webView = nil;
+ [_dialogs removeObject:dialog];
+ break; + break;
+ } + }
+} +}