WebKit Bugzilla
Attachment 361300 Details for
Bug 194346
: Roll out parts of r238819 since it is a PLT performance regression.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-194346-20190206093825.patch (text/plain), 35.15 KB, created by
Per Arne Vollan
on 2019-02-06 09:38:25 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Per Arne Vollan
Created:
2019-02-06 09:38:25 PST
Size:
35.15 KB
patch
obsolete
>Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 241021) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,60 @@ >+2019-02-06 Per Arne Vollan <pvollan@apple.com> >+ >+ Roll out parts of r238819 since it is a PLT performance regression. >+ https://bugs.webkit.org/show_bug.cgi?id=194346 >+ >+ Unreviewed performance fix. >+ >+ * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: >+ (didStartProvisionalLoadForFrame): >+ (didReceiveServerRedirectForProvisionalLoadForFrame): >+ (didFinishLoadForFrame): >+ (globalObjectIsAvailableForFrame): >+ (didRemoveFrameFromHierarchy): >+ (didCommitLoadForFrame): >+ (didFinishDocumentLoadForFrame): >+ (didFailProvisionalLoadWithErrorForFrame): >+ (didFailLoadWithErrorForFrame): >+ (didSameDocumentNavigationForFrame): >+ (didLayoutForFrame): >+ (didReachLayoutMilestone): >+ (didFirstVisuallyNonEmptyLayoutForFrame): >+ (didHandleOnloadEventsForFrame): >+ (userAgentForURL): >+ (setUpPageLoaderClient): >+ (willSendRequestForFrame): >+ (didInitiateLoadForResource): >+ (didFinishLoadForResource): >+ (didFailLoadForResource): >+ (setUpResourceLoadClient): >+ (-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]): >+ (ResourceLoadClient::ResourceLoadClient): Deleted. >+ (ResourceLoadClient::loadDelegate const): Deleted. >+ (ResourceLoadClient::pluginContextController const): Deleted. >+ (PageLoaderClient::PageLoaderClient): Deleted. >+ (PageLoaderClient::loadDelegate const): Deleted. >+ (PageLoaderClient::pluginContextController const): Deleted. >+ (PageLoaderClient::didStartProvisionalLoadForFrame): Deleted. >+ (PageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame): Deleted. >+ (PageLoaderClient::didFinishLoadForFrame): Deleted. >+ (PageLoaderClient::globalObjectIsAvailableForFrame): Deleted. >+ (PageLoaderClient::didRemoveFrameFromHierarchy): Deleted. >+ (PageLoaderClient::didCommitLoadForFrame): Deleted. >+ (PageLoaderClient::didFinishDocumentLoadForFrame): Deleted. >+ (PageLoaderClient::didFailProvisionalLoadWithErrorForFrame): Deleted. >+ (PageLoaderClient::didFailLoadWithErrorForFrame): Deleted. >+ (PageLoaderClient::didSameDocumentNavigationForFrame): Deleted. >+ (PageLoaderClient::didLayoutForFrame): Deleted. >+ (PageLoaderClient::didReachLayoutMilestone): Deleted. >+ (PageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame): Deleted. >+ (PageLoaderClient::layoutMilestones const): Deleted. >+ (PageLoaderClient::didHandleOnloadEventsForFrame): Deleted. >+ (PageLoaderClient::userAgentForURL const): Deleted. >+ (ResourceLoadClient::willSendRequestForFrame): Deleted. >+ (ResourceLoadClient::didInitiateLoadForResource): Deleted. >+ (ResourceLoadClient::didFinishLoadForResource): Deleted. >+ (ResourceLoadClient::didFailLoadForResource): Deleted. >+ > 2019-02-06 Michael Catanzaro <mcatanzaro@igalia.com> > > REGRESSION(r240785): [SOUP] Broke cookie persistent storage >Index: Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm >=================================================================== >--- Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm (revision 241020) >+++ Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm (working copy) >@@ -29,7 +29,6 @@ > #if WK_API_ENABLED > > #import "APIData.h" >-#import "CompletionHandlerCallChecker.h" > #import "RemoteObjectRegistry.h" > #import "RemoteObjectRegistryMessages.h" > #import "WKBrowsingContextHandleInternal.h" >@@ -65,67 +64,12 @@ > #import <WebCore/HTMLFormElement.h> > #import <WebCore/HTMLInputElement.h> > #import <pal/spi/cocoa/NSKeyedArchiverSPI.h> >-#import <wtf/BlockPtr.h> > #import <wtf/WeakObjCPtr.h> > > @interface NSObject (WKDeprecatedDelegateMethods) > - (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller didSameDocumentNavigationForFrame:(WKWebProcessPlugInFrame *)frame; > @end > >-class ResourceLoadClient : public API::InjectedBundle::ResourceLoadClient { >-public: >- explicit ResourceLoadClient(WKWebProcessPlugInBrowserContextController *controller, id <WKWebProcessPlugInLoadDelegate> delegate) >- : m_controller(controller) >- , m_delegate(delegate) { } >- >- void didInitiateLoadForResource(WebKit::WebPage&, WebKit::WebFrame&, uint64_t identifier, const WebCore::ResourceRequest&, bool) override; >- void willSendRequestForFrame(WebKit::WebPage&, WebKit::WebFrame&, uint64_t identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse&) override; >- void didFinishLoadForResource(WebKit::WebPage&, WebKit::WebFrame&, uint64_t identifier) override; >- void didFailLoadForResource(WebKit::WebPage&, WebKit::WebFrame&, uint64_t identifier, const WebCore::ResourceError&) override; >- >-private: >- id <WKWebProcessPlugInLoadDelegate> loadDelegate() const { return m_delegate.get().get(); } >- WKWebProcessPlugInBrowserContextController *pluginContextController() const { return m_controller.get().get(); } >- >- WeakObjCPtr<WKWebProcessPlugInBrowserContextController> m_controller; >- WeakObjCPtr<id <WKWebProcessPlugInLoadDelegate>> m_delegate; >-}; >- >-class PageLoaderClient : public API::InjectedBundle::PageLoaderClient { >-public: >- explicit PageLoaderClient(WKWebProcessPlugInBrowserContextController *controller, id <WKWebProcessPlugInLoadDelegate> delegate) >- : m_controller(controller) >- , m_delegate(delegate) { } >- >- void didStartProvisionalLoadForFrame(WebKit::WebPage&, WebKit::WebFrame&, RefPtr<API::Object>&) override; >- void didReceiveServerRedirectForProvisionalLoadForFrame(WebKit::WebPage&, WebKit::WebFrame&, RefPtr<API::Object>&) override; >- void didFailProvisionalLoadWithErrorForFrame(WebKit::WebPage&, WebKit::WebFrame&, const WebCore::ResourceError&, RefPtr<API::Object>&) override; >- void didCommitLoadForFrame(WebKit::WebPage&, WebKit::WebFrame&, RefPtr<API::Object>&) override; >- void didFinishDocumentLoadForFrame(WebKit::WebPage&, WebKit::WebFrame&, RefPtr<API::Object>&) override; >- void didFinishLoadForFrame(WebKit::WebPage&, WebKit::WebFrame&, RefPtr<API::Object>&) override; >- void didFailLoadWithErrorForFrame(WebKit::WebPage&, WebKit::WebFrame&, const WebCore::ResourceError&, RefPtr<API::Object>&) override; >- void didSameDocumentNavigationForFrame(WebKit::WebPage&, WebKit::WebFrame&, WebKit::SameDocumentNavigationType, RefPtr<API::Object>&) override; >- void didRemoveFrameFromHierarchy(WebKit::WebPage&, WebKit::WebFrame&, RefPtr<API::Object>&) override; >- >- void didFirstVisuallyNonEmptyLayoutForFrame(WebKit::WebPage&, WebKit::WebFrame&, RefPtr<API::Object>&) override; >- void didLayoutForFrame(WebKit::WebPage&, WebKit::WebFrame&) override; >- void didReachLayoutMilestone(WebKit::WebPage&, OptionSet<WebCore::LayoutMilestone>, RefPtr<API::Object>&) override; >- OptionSet<WebCore::LayoutMilestone> layoutMilestones() const override; >- >- void didHandleOnloadEventsForFrame(WebKit::WebPage&, WebKit::WebFrame&) override; >- >- void globalObjectIsAvailableForFrame(WebKit::WebPage&, WebKit::WebFrame&, WebCore::DOMWrapperWorld&) override; >- >- WTF::String userAgentForURL(WebKit::WebFrame&, const URL&) const override; >- >-private: >- id <WKWebProcessPlugInLoadDelegate> loadDelegate() const { return m_delegate.get().get(); } >- WKWebProcessPlugInBrowserContextController *pluginContextController() const { return m_controller.get().get(); } >- >- WeakObjCPtr<WKWebProcessPlugInBrowserContextController> m_controller; >- WeakObjCPtr<id <WKWebProcessPlugInLoadDelegate>> m_delegate; >-}; >- > @implementation WKWebProcessPlugInBrowserContextController { > API::ObjectStorage<WebKit::WebPage> _page; > WeakObjCPtr<id <WKWebProcessPlugInLoadDelegate>> _loadDelegate; >@@ -135,159 +79,254 @@ private: > RetainPtr<_WKRemoteObjectRegistry> _remoteObjectRegistry; > } > >-void PageLoaderClient::didStartProvisionalLoadForFrame(WebKit::WebPage&, WebKit::WebFrame& frame, RefPtr<API::Object>&) >+static void didStartProvisionalLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userDataRef, const void *clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didStartProvisionalLoadForFrame:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didStartProvisionalLoadForFrame:wrapper(frame)]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didStartProvisionalLoadForFrame:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didStartProvisionalLoadForFrame:wrapper(*WebKit::toImpl(frame))]; > } > >-void PageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame(WebKit::WebPage&, WebKit::WebFrame& frame, RefPtr<API::Object>&) >+static void didReceiveServerRedirectForProvisionalLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef *userDataRef, const void *clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didReceiveServerRedirectForProvisionalLoadForFrame:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didReceiveServerRedirectForProvisionalLoadForFrame:wrapper(frame)]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didReceiveServerRedirectForProvisionalLoadForFrame:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didReceiveServerRedirectForProvisionalLoadForFrame:wrapper(*WebKit::toImpl(frame))]; > } > >-void PageLoaderClient::didFinishLoadForFrame(WebKit::WebPage&, WebKit::WebFrame& frame, RefPtr<API::Object>&) >+static void didFinishLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didFinishLoadForFrame:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didFinishLoadForFrame:wrapper(frame)]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didFinishLoadForFrame:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didFinishLoadForFrame:wrapper(*WebKit::toImpl(frame))]; > } > >-void PageLoaderClient::globalObjectIsAvailableForFrame(WebKit::WebPage&, WebKit::WebFrame& frame, WebCore::DOMWrapperWorld& scriptWorld) >+static void globalObjectIsAvailableForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKBundleScriptWorldRef scriptWorld, const void* clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:globalObjectIsAvailableForFrame:inScriptWorld:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() globalObjectIsAvailableForFrame:wrapper(frame) inScriptWorld:API::wrapper(WebKit::InjectedBundleScriptWorld::getOrCreate(scriptWorld))]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:globalObjectIsAvailableForFrame:inScriptWorld:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController globalObjectIsAvailableForFrame:wrapper(*WebKit::toImpl(frame)) inScriptWorld:wrapper(*WebKit::toImpl(scriptWorld))]; > } > >-void PageLoaderClient::didRemoveFrameFromHierarchy(WebKit::WebPage&, WebKit::WebFrame& frame, RefPtr<API::Object>&) >+static void didRemoveFrameFromHierarchy(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void* clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didRemoveFrameFromHierarchy:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didRemoveFrameFromHierarchy:wrapper(frame)]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didRemoveFrameFromHierarchy:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didRemoveFrameFromHierarchy:wrapper(*WebKit::toImpl(frame))]; > } > >-void PageLoaderClient::didCommitLoadForFrame(WebKit::WebPage&, WebKit::WebFrame& frame, RefPtr<API::Object>&) >+static void didCommitLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didCommitLoadForFrame:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didCommitLoadForFrame:wrapper(frame)]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didCommitLoadForFrame:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didCommitLoadForFrame:wrapper(*WebKit::toImpl(frame))]; > } > >-void PageLoaderClient::didFinishDocumentLoadForFrame(WebKit::WebPage&, WebKit::WebFrame& frame, RefPtr<API::Object>&) >+static void didFinishDocumentLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didFinishDocumentLoadForFrame:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didFinishDocumentLoadForFrame:wrapper(frame)]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didFinishDocumentLoadForFrame:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didFinishDocumentLoadForFrame:wrapper(*WebKit::toImpl(frame))]; > } > >-void PageLoaderClient::didFailProvisionalLoadWithErrorForFrame(WebKit::WebPage&, WebKit::WebFrame& frame, const WebCore::ResourceError& error, RefPtr<API::Object>&) >+static void didFailProvisionalLoadWithErrorForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKErrorRef wkError, WKTypeRef* userData, const void *clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didFailProvisionalLoadWithErrorForFrame:error:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didFailProvisionalLoadWithErrorForFrame:wrapper(frame) error:error]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didFailProvisionalLoadWithErrorForFrame:error:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didFailProvisionalLoadWithErrorForFrame:wrapper(*WebKit::toImpl(frame)) error:wrapper(*WebKit::toImpl(wkError))]; > } > >-void PageLoaderClient::didFailLoadWithErrorForFrame(WebKit::WebPage&, WebKit::WebFrame& frame, const WebCore::ResourceError& error, RefPtr<API::Object>&) >+static void didFailLoadWithErrorForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKErrorRef wkError, WKTypeRef* userData, const void *clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didFailLoadWithErrorForFrame:error:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didFailLoadWithErrorForFrame:wrapper(frame) error:error]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didFailLoadWithErrorForFrame:error:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didFailLoadWithErrorForFrame:wrapper(*WebKit::toImpl(frame)) error:wrapper(*WebKit::toImpl(wkError))]; > } > >-void PageLoaderClient::didSameDocumentNavigationForFrame(WebKit::WebPage&, WebKit::WebFrame& frame, WebKit::SameDocumentNavigationType type, RefPtr<API::Object>&) >+static void didSameDocumentNavigationForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKSameDocumentNavigationType type, WKTypeRef* userData, const void *clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didSameDocumentNavigation:forFrame:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didSameDocumentNavigation:toWKSameDocumentNavigationType(type) forFrame:wrapper(frame)]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didSameDocumentNavigation:forFrame:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didSameDocumentNavigation:toWKSameDocumentNavigationType(WebKit::toSameDocumentNavigationType(type)) forFrame:wrapper(*WebKit::toImpl(frame))]; > else { > // FIXME: Remove this once clients switch to implementing the above delegate method. >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didSameDocumentNavigationForFrame:)]) >- [(NSObject *)loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didSameDocumentNavigationForFrame:wrapper(frame)]; >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didSameDocumentNavigationForFrame:)]) >+ [(NSObject *)loadDelegate webProcessPlugInBrowserContextController:pluginContextController didSameDocumentNavigationForFrame:wrapper(*WebKit::toImpl(frame))]; > } > } > >-void PageLoaderClient::didLayoutForFrame(WebKit::WebPage&, WebKit::WebFrame& frame) >+static void didLayoutForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void* clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didLayoutForFrame:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didLayoutForFrame:wrapper(frame)]; >-} >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); > >-void PageLoaderClient::didReachLayoutMilestone(WebKit::WebPage&, OptionSet<WebCore::LayoutMilestone> milestones, RefPtr<API::Object>&) >-{ >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:renderingProgressDidChange:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() renderingProgressDidChange:renderingProgressEvents(milestones)]; >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didLayoutForFrame:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didLayoutForFrame:wrapper(*WebKit::toImpl(frame))]; > } > >-void PageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame(WebKit::WebPage&, WebKit::WebFrame& frame, RefPtr<API::Object>&) >+static void didReachLayoutMilestone(WKBundlePageRef page, WKLayoutMilestones milestones, WKTypeRef* userData, const void *clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didFirstVisuallyNonEmptyLayoutForFrame:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didFirstVisuallyNonEmptyLayoutForFrame:wrapper(frame)]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:renderingProgressDidChange:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController renderingProgressDidChange:renderingProgressEvents(WebKit::toLayoutMilestones(milestones))]; > } > >-OptionSet<WebCore::LayoutMilestone> PageLoaderClient::layoutMilestones() const >+static void didFirstVisuallyNonEmptyLayoutForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextControllerRenderingProgressEvents:)]) { >- _WKRenderingProgressEvents milestones = [loadDelegate() webProcessPlugInBrowserContextControllerRenderingProgressEvents:pluginContextController()]; >- return WebKit::toLayoutMilestones(static_cast<WKLayoutMilestones>(milestones)); >- } >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); > >- return { }; >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didFirstVisuallyNonEmptyLayoutForFrame:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didFirstVisuallyNonEmptyLayoutForFrame:wrapper(*WebKit::toImpl(frame))]; > } > >-void PageLoaderClient::didHandleOnloadEventsForFrame(WebKit::WebPage&, WebKit::WebFrame& frame) >+static void didHandleOnloadEventsForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void* clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didHandleOnloadEventsForFrame:)]) >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didHandleOnloadEventsForFrame:wrapper(frame)]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:didHandleOnloadEventsForFrame:)]) >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController didHandleOnloadEventsForFrame:wrapper(*WebKit::toImpl(frame))]; > } > >-WTF::String PageLoaderClient::userAgentForURL(WebKit::WebFrame& frame, const URL& url) const >+static WKStringRef userAgentForURL(WKBundleFrameRef frame, WKURLRef url, const void* clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:userAgentForURL:)]) >- return [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() frame:wrapper(frame) userAgentForURL:url]; >- return { }; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:userAgentForURL:)]) { >+ WKWebProcessPlugInFrame *newFrame = wrapper(*WebKit::toImpl(frame)); >+ NSString *string = [loadDelegate webProcessPlugInBrowserContextController:pluginContextController frame:newFrame userAgentForURL:wrapper(*WebKit::toImpl(url))]; >+ if (!string) >+ return nullptr; >+ >+ return WKStringCreateWithCFString((__bridge CFStringRef)string); >+ } >+ >+ return nullptr; > } > >-void ResourceLoadClient::willSendRequestForFrame(WebKit::WebPage&, WebKit::WebFrame& frame, uint64_t resourceIdentifier, WebCore::ResourceRequest& request, const WebCore::ResourceResponse& redirectResponse) >+static void setUpPageLoaderClient(WKWebProcessPlugInBrowserContextController *contextController, WebKit::WebPage& page) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:willSendRequestForResource:request:redirectResponse:)]) { >- RetainPtr<NSURLRequest> originalRequest = request.nsURLRequest(WebCore::HTTPBodyUpdatePolicy::DoNotUpdateHTTPBody); >- RetainPtr<NSURLRequest> substituteRequest = [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() frame:wrapper(frame) willSendRequestForResource:resourceIdentifier >- request:originalRequest.get() redirectResponse:redirectResponse.nsURLResponse()]; >+ WKBundlePageLoaderClientV9 client; >+ memset(&client, 0, sizeof(client)); > >- if (substituteRequest != originalRequest) { >- request = substituteRequest.get(); >- return; >- } >- } else if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:willSendRequest:redirectResponse:)]) { >- RetainPtr<NSURLRequest> originalRequest = request.nsURLRequest(WebCore::HTTPBodyUpdatePolicy::DoNotUpdateHTTPBody); >- RetainPtr<NSURLRequest> substituteRequest = [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() frame:wrapper(frame) willSendRequest:originalRequest.get() >- redirectResponse:redirectResponse.nsURLResponse()]; >+ client.base.version = 8; >+ client.base.clientInfo = (__bridge void*)contextController; >+ client.didStartProvisionalLoadForFrame = didStartProvisionalLoadForFrame; >+ client.didReceiveServerRedirectForProvisionalLoadForFrame = didReceiveServerRedirectForProvisionalLoadForFrame; >+ client.didCommitLoadForFrame = didCommitLoadForFrame; >+ client.didFinishDocumentLoadForFrame = didFinishDocumentLoadForFrame; >+ client.didFailProvisionalLoadWithErrorForFrame = didFailProvisionalLoadWithErrorForFrame; >+ client.didFailLoadWithErrorForFrame = didFailLoadWithErrorForFrame; >+ client.didSameDocumentNavigationForFrame = didSameDocumentNavigationForFrame; >+ client.didFinishLoadForFrame = didFinishLoadForFrame; >+ client.globalObjectIsAvailableForFrame = globalObjectIsAvailableForFrame; >+ client.didRemoveFrameFromHierarchy = didRemoveFrameFromHierarchy; >+ client.didHandleOnloadEventsForFrame = didHandleOnloadEventsForFrame; >+ client.didFirstVisuallyNonEmptyLayoutForFrame = didFirstVisuallyNonEmptyLayoutForFrame; >+ client.userAgentForURL = userAgentForURL; >+ >+ client.didLayoutForFrame = didLayoutForFrame; >+ client.didLayout = didReachLayoutMilestone; >+ >+ WKBundlePageSetPageLoaderClient(toAPI(&page), &client.base); >+} >+ >+static WKURLRequestRef willSendRequestForFrame(WKBundlePageRef, WKBundleFrameRef frame, uint64_t resourceIdentifier, WKURLRequestRef request, WKURLResponseRef redirectResponse, const void* clientInfo) >+{ >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:willSendRequestForResource:request:redirectResponse:)]) { >+ NSURLRequest *originalRequest = wrapper(*WebKit::toImpl(request)); >+ RetainPtr<NSURLRequest> substituteRequest = [loadDelegate webProcessPlugInBrowserContextController:pluginContextController frame:wrapper(*WebKit::toImpl(frame)) willSendRequestForResource:resourceIdentifier >+ request:originalRequest redirectResponse:WebKit::toImpl(redirectResponse)->resourceResponse().nsURLResponse()]; >+ >+ if (substituteRequest != originalRequest) >+ return substituteRequest ? WKURLRequestCreateWithNSURLRequest(substituteRequest.get()) : nullptr; >+ } else if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:willSendRequest:redirectResponse:)]) { >+ NSURLRequest *originalRequest = wrapper(*WebKit::toImpl(request)); >+ RetainPtr<NSURLRequest> substituteRequest = [loadDelegate webProcessPlugInBrowserContextController:pluginContextController frame:wrapper(*WebKit::toImpl(frame)) willSendRequest:originalRequest >+ redirectResponse:WebKit::toImpl(redirectResponse)->resourceResponse().nsURLResponse()]; > >- if (substituteRequest != originalRequest) { >- request = substituteRequest.get(); >- return; >- } >+ if (substituteRequest != originalRequest) >+ return substituteRequest ? WKURLRequestCreateWithNSURLRequest(substituteRequest.get()) : nullptr; > } >+ >+ WKRetain(request); >+ return request; > } > >-void ResourceLoadClient::didInitiateLoadForResource(WebKit::WebPage&, WebKit::WebFrame& frame, uint64_t resourceIdentifier, const WebCore::ResourceRequest& request, bool pageIsProvisionallyLoading) >+static void didInitiateLoadForResource(WKBundlePageRef, WKBundleFrameRef frame, uint64_t resourceIdentifier, WKURLRequestRef request, bool pageIsProvisionallyLoading, const void* clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:didInitiateLoadForResource:request:pageIsProvisionallyLoading:)]) { >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() frame:wrapper(frame) didInitiateLoadForResource:resourceIdentifier request:request.nsURLRequest(WebCore::HTTPBodyUpdatePolicy::DoNotUpdateHTTPBody) >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:didInitiateLoadForResource:request:pageIsProvisionallyLoading:)]) { >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController frame:wrapper(*WebKit::toImpl(frame)) didInitiateLoadForResource:resourceIdentifier request:wrapper(*WebKit::toImpl(request)) > pageIsProvisionallyLoading:pageIsProvisionallyLoading]; >- } else if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:didInitiateLoadForResource:request:)]) { >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() frame:wrapper(frame) didInitiateLoadForResource:resourceIdentifier request:request.nsURLRequest(WebCore::HTTPBodyUpdatePolicy::DoNotUpdateHTTPBody)]; >+ } else if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:didInitiateLoadForResource:request:)]) { >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController frame:wrapper(*WebKit::toImpl(frame)) didInitiateLoadForResource:resourceIdentifier request:wrapper(*WebKit::toImpl(request))]; > } > } > >-void ResourceLoadClient::didFinishLoadForResource(WebKit::WebPage&, WebKit::WebFrame& frame, uint64_t resourceIdentifier) >+static void didFinishLoadForResource(WKBundlePageRef, WKBundleFrameRef frame, uint64_t resourceIdentifier, const void* clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:didFinishLoadForResource:)]) { >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() frame:wrapper(frame) didFinishLoadForResource:resourceIdentifier]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:didFinishLoadForResource:)]) { >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController frame:wrapper(*WebKit::toImpl(frame)) didFinishLoadForResource:resourceIdentifier]; > } > } > >-void ResourceLoadClient::didFailLoadForResource(WebKit::WebPage&, WebKit::WebFrame& frame, uint64_t resourceIdentifier, const WebCore::ResourceError& error) >+static void didFailLoadForResource(WKBundlePageRef, WKBundleFrameRef frame, uint64_t resourceIdentifier, WKErrorRef error, const void* clientInfo) > { >- if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:didFailLoadForResource:error:)]) { >- [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() frame:wrapper(frame) didFailLoadForResource:resourceIdentifier error:error]; >+ auto pluginContextController = (__bridge WKWebProcessPlugInBrowserContextController *)clientInfo; >+ auto loadDelegate = pluginContextController->_loadDelegate.get(); >+ >+ if ([loadDelegate respondsToSelector:@selector(webProcessPlugInBrowserContextController:frame:didFailLoadForResource:error:)]) { >+ [loadDelegate webProcessPlugInBrowserContextController:pluginContextController frame:wrapper(*WebKit::toImpl(frame)) didFailLoadForResource:resourceIdentifier error:wrapper(*WebKit::toImpl(error))]; > } > } > >+static void setUpResourceLoadClient(WKWebProcessPlugInBrowserContextController *contextController, WebKit::WebPage& page) >+{ >+ WKBundlePageResourceLoadClientV1 client; >+ memset(&client, 0, sizeof(client)); >+ >+ client.base.version = 1; >+ client.base.clientInfo = (__bridge void*) contextController; >+ client.willSendRequestForFrame = willSendRequestForFrame; >+ client.didInitiateLoadForResource = didInitiateLoadForResource; >+ client.didFinishLoadForResource = didFinishLoadForResource; >+ client.didFailLoadForResource = didFailLoadForResource; >+ >+ WKBundlePageSetResourceLoadClient(toAPI(&page), &client.base); >+} >+ > - (id <WKWebProcessPlugInLoadDelegate>)loadDelegate > { > return _loadDelegate.getAutoreleased(); >@@ -298,11 +337,11 @@ - (void)setLoadDelegate:(id <WKWebProces > _loadDelegate = loadDelegate; > > if (loadDelegate) { >- _page->setInjectedBundlePageLoaderClient(std::make_unique<PageLoaderClient>(self, loadDelegate)); >- _page->setInjectedBundleResourceLoadClient(std::make_unique<ResourceLoadClient>(self, loadDelegate)); >+ setUpPageLoaderClient(self, *_page); >+ setUpResourceLoadClient(self, *_page); > } else { >- _page->setInjectedBundlePageLoaderClient(nullptr); >- _page->setInjectedBundleResourceLoadClient(nullptr); >+ WKBundlePageSetPageLoaderClient(toAPI(_page.get()), nullptr); >+ WKBundlePageSetResourceLoadClient(toAPI(_page.get()), nullptr); > } > } >
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
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 194346
: 361300