Diff
Modified: trunk/Source/WebKit/ChangeLog (242759 => 242760)
--- trunk/Source/WebKit/ChangeLog 2019-03-12 00:46:41 UTC (rev 242759)
+++ trunk/Source/WebKit/ChangeLog 2019-03-12 00:57:53 UTC (rev 242760)
@@ -1,3 +1,34 @@
+2019-03-09 Jiewen Tan <[email protected]>
+
+ Optimizing loads when creating new pages
+ https://bugs.webkit.org/show_bug.cgi?id=195516
+ <rdar://problem/48738086>
+
+ Reviewed by Darin Adler.
+
+ This patch adds hooks in WebPageProxy::createNewPage to optimize loads, and moves the creationParameters
+ of API::NavigationAction from UI clients to WebPageProxy::createNewPage. Also, we now pass the whole
+ API::NavigationAction to the load optimizer instead of the request within.
+
+ * UIProcess/API/APINavigationAction.h:
+ * UIProcess/API/APIUIClient.h:
+ (API::UIClient::createNewPage):
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageSetPageUIClient):
+ * UIProcess/API/glib/WebKitUIClient.cpp:
+ * UIProcess/Cocoa/NavigationState.mm:
+ (WebKit::tryOptimizingLoad):
+ (WebKit::tryInterceptNavigation):
+ (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
+ * UIProcess/Cocoa/UIDelegate.h:
+ * UIProcess/Cocoa/UIDelegate.mm:
+ (WebKit::UIDelegate::UIClient::createNewPage):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::decidePolicyForNavigationAction):
+ (WebKit::tryOptimizingLoad):
+ (WebKit::WebPageProxy::createNewPage):
+ * UIProcess/WebPageProxy.h:
+
2019-03-11 Dean Jackson <[email protected]>
[iOS] Implement a faster click detection that intercepts double-tap-to-zoom if possible
Modified: trunk/Source/WebKit/UIProcess/API/APINavigationAction.h (242759 => 242760)
--- trunk/Source/WebKit/UIProcess/API/APINavigationAction.h 2019-03-12 00:46:41 UTC (rev 242759)
+++ trunk/Source/WebKit/UIProcess/API/APINavigationAction.h 2019-03-12 00:57:53 UTC (rev 242760)
@@ -33,6 +33,10 @@
#include <WebCore/ResourceRequest.h>
#include <wtf/URL.h>
+#if USE(APPLE_INTERNAL_SDK)
+#include <WebKitAdditions/APINavigationActionAdditions.h>
+#endif
+
namespace API {
class NavigationAction final : public ObjectImpl<Object::Type::NavigationAction> {
@@ -65,6 +69,10 @@
Navigation* mainFrameNavigation() const { return m_mainFrameNavigation.get(); }
+#if HAVE(LOAD_OPTIMIZER)
+APINAVIGATIONACTION_LOADOPTIMIZER_ADDITIONS_1
+#endif
+
private:
NavigationAction(WebKit::NavigationActionData&& navigationActionData, API::FrameInfo* sourceFrame, API::FrameInfo* targetFrame, Optional<WTF::String> targetFrameName, WebCore::ResourceRequest&& request, const WTF::URL& originalURL, bool shouldOpenAppLinks, RefPtr<UserInitiatedAction>&& userInitiatedAction, API::Navigation* mainFrameNavigation)
: m_sourceFrame(sourceFrame)
@@ -92,6 +100,9 @@
WTF::URL m_originalURL;
bool m_shouldOpenAppLinks;
+#if HAVE(LOAD_OPTIMIZER)
+APINAVIGATIONACTION_LOADOPTIMIZER_ADDITIONS_2
+#endif
RefPtr<UserInitiatedAction> m_userInitiatedAction;
Modified: trunk/Source/WebKit/UIProcess/API/APIUIClient.h (242759 => 242760)
--- trunk/Source/WebKit/UIProcess/API/APIUIClient.h 2019-03-12 00:46:41 UTC (rev 242759)
+++ trunk/Source/WebKit/UIProcess/API/APIUIClient.h 2019-03-12 00:57:53 UTC (rev 242760)
@@ -73,7 +73,7 @@
public:
virtual ~UIClient() { }
- virtual void createNewPage(WebKit::WebPageProxy&, Ref<FrameInfo>&&, WebCore::ResourceRequest&&, WebCore::WindowFeatures&&, WebKit::NavigationActionData&&, CompletionHandler<void(RefPtr<WebKit::WebPageProxy>&&)>&& completionHandler) { completionHandler(nullptr); }
+ virtual void createNewPage(WebKit::WebPageProxy&, WebCore::WindowFeatures&&, Ref<API::NavigationAction>&&, CompletionHandler<void(RefPtr<WebKit::WebPageProxy>&&)>&& completionHandler) { completionHandler(nullptr); }
virtual void showPage(WebKit::WebPageProxy*) { }
virtual void fullscreenMayReturnToInline(WebKit::WebPageProxy*) { }
virtual void didEnterFullscreen(WebKit::WebPageProxy*) { }
Modified: trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp (242759 => 242760)
--- trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2019-03-12 00:46:41 UTC (rev 242759)
+++ trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2019-03-12 00:57:53 UTC (rev 242760)
@@ -1474,19 +1474,15 @@
}
private:
- void createNewPage(WebPageProxy& page, Ref<API::FrameInfo>&& sourceFrameInfo, WebCore::ResourceRequest&& resourceRequest, WebCore::WindowFeatures&& windowFeatures, NavigationActionData&& navigationActionData, CompletionHandler<void(RefPtr<WebPageProxy>&&)>&& completionHandler) final
+ void createNewPage(WebPageProxy& page, WebCore::WindowFeatures&& windowFeatures, Ref<API::NavigationAction>&& navigationAction, CompletionHandler<void(RefPtr<WebPageProxy>&&)>&& completionHandler) final
{
if (m_client.createNewPage) {
auto configuration = page.configuration().copy();
configuration->setRelatedPage(&page);
- auto userInitiatedActivity = page.process().userInitiatedActivity(navigationActionData.userGestureTokenIdentifier);
- bool shouldOpenAppLinks = !hostsAreEqual(sourceFrameInfo->request().url(), resourceRequest.url());
- auto apiNavigationAction = API::NavigationAction::create(WTFMove(navigationActionData), sourceFrameInfo.ptr(), nullptr, WTF::nullopt, WTFMove(resourceRequest), URL(), shouldOpenAppLinks, WTFMove(userInitiatedActivity));
-
auto apiWindowFeatures = API::WindowFeatures::create(windowFeatures);
- return completionHandler(adoptRef(toImpl(m_client.createNewPage(toAPI(&page), toAPI(configuration.ptr()), toAPI(apiNavigationAction.ptr()), toAPI(apiWindowFeatures.ptr()), m_client.base.clientInfo))));
+ return completionHandler(adoptRef(toImpl(m_client.createNewPage(toAPI(&page), toAPI(configuration.ptr()), toAPI(navigationAction.ptr()), toAPI(apiWindowFeatures.ptr()), m_client.base.clientInfo))));
}
if (m_client.createNewPage_deprecatedForUseWithV1 || m_client.createNewPage_deprecatedForUseWithV0) {
@@ -1510,12 +1506,12 @@
Ref<API::Dictionary> featuresMap = API::Dictionary::create(WTFMove(map));
if (m_client.createNewPage_deprecatedForUseWithV1) {
- Ref<API::URLRequest> request = API::URLRequest::create(resourceRequest);
- return completionHandler(adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV1(toAPI(&page), toAPI(request.ptr()), toAPI(featuresMap.ptr()), toAPI(navigationActionData.modifiers), toAPI(navigationActionData.mouseButton), m_client.base.clientInfo))));
+ Ref<API::URLRequest> request = API::URLRequest::create(navigationAction->request());
+ return completionHandler(adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV1(toAPI(&page), toAPI(request.ptr()), toAPI(featuresMap.ptr()), toAPI(navigationAction->modifiers()), toAPI(navigationAction->mouseButton()), m_client.base.clientInfo))));
}
ASSERT(m_client.createNewPage_deprecatedForUseWithV0);
- return completionHandler(adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV0(toAPI(&page), toAPI(featuresMap.ptr()), toAPI(navigationActionData.modifiers), toAPI(navigationActionData.mouseButton), m_client.base.clientInfo))));
+ return completionHandler(adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV0(toAPI(&page), toAPI(featuresMap.ptr()), toAPI(navigationAction->modifiers()), toAPI(navigationAction->mouseButton()), m_client.base.clientInfo))));
}
completionHandler(nullptr);
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp (242759 => 242760)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp 2019-03-12 00:46:41 UTC (rev 242759)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp 2019-03-12 00:57:53 UTC (rev 242760)
@@ -50,10 +50,9 @@
}
private:
- void createNewPage(WebPageProxy& page, Ref<API::FrameInfo>&& frameInfo, WebCore::ResourceRequest&& resourceRequest, WebCore::WindowFeatures&& windowFeatures, NavigationActionData&& navigationActionData, CompletionHandler<void(RefPtr<WebPageProxy>&&)>&& completionHandler) final
+ void createNewPage(WebPageProxy& page, WebCore::WindowFeatures&& windowFeatures, Ref<API::NavigationAction>&& apiNavigationAction, CompletionHandler<void(RefPtr<WebPageProxy>&&)>&& completionHandler) final
{
- auto userInitiatedActivity = page.process().userInitiatedActivity(navigationActionData.userGestureTokenIdentifier);
- WebKitNavigationAction navigationAction(API::NavigationAction::create(WTFMove(navigationActionData), frameInfo.ptr(), nullptr, WTF::nullopt, WTFMove(resourceRequest), URL { }, false, WTFMove(userInitiatedActivity)));
+ WebKitNavigationAction navigationAction(WTFMove(apiNavigationAction));
completionHandler(webkitWebViewCreateNewPage(m_webView, windowFeatures, &navigationAction));
}
Modified: trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm (242759 => 242760)
--- trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm 2019-03-12 00:46:41 UTC (rev 242759)
+++ trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm 2019-03-12 00:57:53 UTC (rev 242760)
@@ -467,7 +467,7 @@
#endif
#if !USE(APPLE_INTERNAL_SDK)
-static void tryOptimizingLoad(const WebCore::ResourceRequest&, WebPageProxy&, Function<void(bool)>&& completionHandler)
+static void tryOptimizingLoad(Ref<API::NavigationAction>&&, WebPageProxy&, Function<void(bool)>&& completionHandler)
{
completionHandler(false);
}
@@ -477,15 +477,16 @@
{
#if HAVE(APP_LINKS)
if (navigationAction->shouldOpenAppLinks()) {
- auto* localCompletionHandler = new WTF::Function<void (bool)>([request = navigationAction->request().isolatedCopy(), weakPage = makeWeakPtr(page), completionHandler = WTFMove(completionHandler)] (bool success) mutable {
+ auto url = ""
+ auto* localCompletionHandler = new WTF::Function<void (bool)>([navigationAction = WTFMove(navigationAction), weakPage = makeWeakPtr(page), completionHandler = WTFMove(completionHandler)] (bool success) mutable {
ASSERT(RunLoop::isMain());
if (!success && weakPage) {
- tryOptimizingLoad(request, *weakPage, WTFMove(completionHandler));
+ tryOptimizingLoad(WTFMove(navigationAction), *weakPage, WTFMove(completionHandler));
return;
}
completionHandler(success);
});
- [LSAppLink openWithURL:navigationAction->request().url() completionHandler:[localCompletionHandler](BOOL success, NSError *) {
+ [LSAppLink openWithURL:url completionHandler:[localCompletionHandler](BOOL success, NSError *) {
dispatch_async(dispatch_get_main_queue(), [localCompletionHandler, success] {
(*localCompletionHandler)(success);
delete localCompletionHandler;
@@ -495,7 +496,7 @@
}
#endif
- tryOptimizingLoad(navigationAction->request(), page, WTFMove(completionHandler));
+ tryOptimizingLoad(WTFMove(navigationAction), page, WTFMove(completionHandler));
}
void NavigationState::NavigationClient::decidePolicyForNavigationAction(WebPageProxy& webPageProxy, Ref<API::NavigationAction>&& navigationAction, Ref<WebFramePolicyListenerProxy>&& listener, API::Object* userInfo)
@@ -587,7 +588,7 @@
localListener->download();
break;
case _WKNavigationActionPolicyAllowWithoutTryingAppLink:
- tryOptimizingLoad(navigationAction->request(), webPageProxy, [localListener = WTFMove(localListener), websitePolicies = WTFMove(apiWebsitePolicies)] (bool optimizedLoad) {
+ tryOptimizingLoad(WTFMove(navigationAction), webPageProxy, [localListener = WTFMove(localListener), websitePolicies = WTFMove(apiWebsitePolicies)] (bool optimizedLoad) {
if (optimizedLoad) {
localListener->ignore();
return;
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h (242759 => 242760)
--- trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h 2019-03-12 00:46:41 UTC (rev 242759)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h 2019-03-12 00:57:53 UTC (rev 242760)
@@ -79,7 +79,7 @@
private:
// API::UIClient
- void createNewPage(WebPageProxy&, Ref<API::FrameInfo>&&, WebCore::ResourceRequest&&, WebCore::WindowFeatures&&, NavigationActionData&&, CompletionHandler<void(RefPtr<WebPageProxy>&&)>&&) final;
+ void createNewPage(WebKit::WebPageProxy&, WebCore::WindowFeatures&&, Ref<API::NavigationAction>&&, CompletionHandler<void(RefPtr<WebPageProxy>&&)>&&) final;
void close(WebPageProxy*) final;
void fullscreenMayReturnToInline(WebPageProxy*) final;
void didEnterFullscreen(WebPageProxy*) final;
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm (242759 => 242760)
--- trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm 2019-03-12 00:46:41 UTC (rev 242759)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm 2019-03-12 00:57:53 UTC (rev 242760)
@@ -228,7 +228,7 @@
{
}
-void UIDelegate::UIClient::createNewPage(WebPageProxy& page, Ref<API::FrameInfo>&& sourceFrameInfo, WebCore::ResourceRequest&& request, WebCore::WindowFeatures&& windowFeatures, NavigationActionData&& navigationActionData, CompletionHandler<void(RefPtr<WebPageProxy>&&)>&& completionHandler)
+void UIDelegate::UIClient::createNewPage(WebKit::WebPageProxy&, WebCore::WindowFeatures&& windowFeatures, Ref<API::NavigationAction>&& navigationAction, CompletionHandler<void(RefPtr<WebPageProxy>&&)>&& completionHandler)
{
auto delegate = m_uiDelegate.m_delegate.get();
ASSERT(delegate);
@@ -236,16 +236,12 @@
auto configuration = adoptNS([m_uiDelegate.m_webView->_configuration copy]);
[configuration _setRelatedWebView:m_uiDelegate.m_webView];
- auto userInitiatedActivity = page.process().userInitiatedActivity(navigationActionData.userGestureTokenIdentifier);
- bool shouldOpenAppLinks = !hostsAreEqual(sourceFrameInfo->request().url(), request.url());
- auto apiNavigationAction = API::NavigationAction::create(WTFMove(navigationActionData), sourceFrameInfo.ptr(), nullptr, WTF::nullopt, WTFMove(request), URL(), shouldOpenAppLinks, WTFMove(userInitiatedActivity));
-
auto apiWindowFeatures = API::WindowFeatures::create(windowFeatures);
if (m_uiDelegate.m_delegateMethods.webViewCreateWebViewWithConfigurationForNavigationActionWindowFeaturesAsync) {
auto checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(_webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:completionHandler:));
- [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView createWebViewWithConfiguration:configuration.get() forNavigationAction:wrapper(apiNavigationAction) windowFeatures:wrapper(apiWindowFeatures) completionHandler:makeBlockPtr([completionHandler = WTFMove(completionHandler), checker = WTFMove(checker), relatedWebView = RetainPtr<WKWebView>(m_uiDelegate.m_webView)] (WKWebView *webView) mutable {
+ [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView createWebViewWithConfiguration:configuration.get() forNavigationAction:wrapper(navigationAction) windowFeatures:wrapper(apiWindowFeatures) completionHandler:makeBlockPtr([completionHandler = WTFMove(completionHandler), checker = WTFMove(checker), relatedWebView = RetainPtr<WKWebView>(m_uiDelegate.m_webView)] (WKWebView *webView) mutable {
if (checker->completionHandlerHasBeenCalled())
return;
checker->didCallCompletionHandler();
@@ -265,7 +261,7 @@
if (!m_uiDelegate.m_delegateMethods.webViewCreateWebViewWithConfigurationForNavigationActionWindowFeatures)
return completionHandler(nullptr);
- RetainPtr<WKWebView> webView = [delegate webView:m_uiDelegate.m_webView createWebViewWithConfiguration:configuration.get() forNavigationAction:wrapper(apiNavigationAction) windowFeatures:wrapper(apiWindowFeatures)];
+ RetainPtr<WKWebView> webView = [delegate webView:m_uiDelegate.m_webView createWebViewWithConfiguration:configuration.get() forNavigationAction:wrapper(navigationAction) windowFeatures:wrapper(apiWindowFeatures)];
if (!webView)
return completionHandler(nullptr);
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (242759 => 242760)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2019-03-12 00:46:41 UTC (rev 242759)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2019-03-12 00:57:53 UTC (rev 242760)
@@ -4607,10 +4607,18 @@
auto navigationAction = API::NavigationAction::create(WTFMove(navigationActionData), sourceFrameInfo.get(), destinationFrameInfo.ptr(), WTF::nullopt, WTFMove(request), originalRequest.url(), shouldOpenAppLinks, WTFMove(userInitiatedActivity), mainFrameNavigation);
+#if HAVE(LOAD_OPTIMIZER)
+WEBPAGEPROXY_LOADOPTIMIZER_ADDITIONS_3
+#endif
+
m_navigationClient->decidePolicyForNavigationAction(*this, WTFMove(navigationAction), WTFMove(listener), process->transformHandlesToObjects(userData.object()).get());
}
m_shouldSuppressAppLinksInNextNavigationPolicyDecision = false;
+
+#if HAVE(LOAD_OPTIMIZER)
+WEBPAGEPROXY_LOADOPTIMIZER_ADDITIONS_4
+#endif
}
WebPageProxy* WebPageProxy::nonEphemeralWebPageProxy()
@@ -4896,14 +4904,24 @@
// UIClient
+using NewPageCallback = CompletionHandler<void(RefPtr<WebPageProxy>&&)>;
+using UIClientCallback = Function<void(Ref<API::NavigationAction>&&, NewPageCallback&&)>;
+static void tryOptimizingLoad(Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, NewPageCallback&& newPageCallback, UIClientCallback&& uiClientCallback)
+{
+#if HAVE(LOAD_OPTIMIZER)
+WEBPAGEPROXY_LOADOPTIMIZER_ADDITIONS_6
+#else
+ ASSERT_UNUSED(page, page.pageID());
+ uiClientCallback(WTFMove(navigationAction), WTFMove(newPageCallback));
+#endif
+}
+
void WebPageProxy::createNewPage(const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, ResourceRequest&& request, WindowFeatures&& windowFeatures, NavigationActionData&& navigationActionData, Messages::WebPageProxy::CreateNewPage::DelayedReply&& reply)
{
MESSAGE_CHECK(m_process, m_process->webFrame(originatingFrameInfoData.frameID));
auto originatingFrameInfo = API::FrameInfo::create(originatingFrameInfoData, m_process->webPage(originatingPageID));
-
auto mainFrameURL = m_mainFrame->url();
-
- m_uiClient->createNewPage(*this, WTFMove(originatingFrameInfo), WTFMove(request), WTFMove(windowFeatures), WTFMove(navigationActionData), [this, protectedThis = makeRef(*this), mainFrameURL, request, reply = WTFMove(reply)] (RefPtr<WebPageProxy> newPage) mutable {
+ auto completionHandler = [this, protectedThis = makeRef(*this), mainFrameURL, request, reply = WTFMove(reply)] (RefPtr<WebPageProxy> newPage) mutable {
if (!newPage) {
reply(0, WTF::nullopt);
return;
@@ -4915,6 +4933,18 @@
WebsiteDataStore::cloneSessionData(*this, *newPage);
newPage->m_shouldSuppressAppLinksInNextNavigationPolicyDecision = hostsAreEqual(URL({ }, mainFrameURL), request.url());
+
+#if HAVE(LOAD_OPTIMIZER)
+WEBPAGEPROXY_LOADOPTIMIZER_ADDITIONS_5
+#endif
+ };
+
+ auto userInitiatedActivity = m_process->userInitiatedActivity(navigationActionData.userGestureTokenIdentifier);
+ bool shouldOpenAppLinks = !hostsAreEqual(originatingFrameInfo->request().url(), request.url());
+ auto navigationAction = API::NavigationAction::create(WTFMove(navigationActionData), originatingFrameInfo.ptr(), nullptr, WTF::nullopt, WTFMove(request), URL(), shouldOpenAppLinks, WTFMove(userInitiatedActivity));
+
+ tryOptimizingLoad(WTFMove(navigationAction), *this, WTFMove(completionHandler), [this, protectedThis = makeRef(*this), windowFeatures = WTFMove(windowFeatures)] (Ref<API::NavigationAction>&& navigationAction, CompletionHandler<void(RefPtr<WebPageProxy>&&)>&& completionHandler) mutable {
+ m_uiClient->createNewPage(*this, WTFMove(windowFeatures), WTFMove(navigationAction), WTFMove(completionHandler));
});
}
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (242759 => 242760)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2019-03-12 00:46:41 UTC (rev 242759)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2019-03-12 00:57:53 UTC (rev 242760)
@@ -135,6 +135,10 @@
#include <WebCore/WebMediaSessionManagerClient.h>
#endif
+#if USE(APPLE_INTERNAL_SDK)
+#include <WebKitAdditions/WebPageProxyAdditions.h>
+#endif
+
#if ENABLE(MEDIA_SESSION)
namespace WebCore {
class MediaSessionMetadata;
@@ -1481,6 +1485,10 @@
void removeObserver(WebViewDidMoveToWindowObserver&);
void webViewDidMoveToWindow();
+#if HAVE(LOAD_OPTIMIZER)
+WEBPAGEPROXY_LOADOPTIMIZER_ADDITIONS_1
+#endif
+
// IPC::MessageReceiver
// Implemented in generated WebPageProxyMessageReceiver.cpp
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
@@ -2188,6 +2196,10 @@
WebCore::ResourceRequest m_decidePolicyForResponseRequest;
bool m_shouldSuppressAppLinksInNextNavigationPolicyDecision { false };
+#if HAVE(LOAD_OPTIMIZER)
+WEBPAGEPROXY_LOADOPTIMIZER_ADDITIONS_2
+#endif
+
Deque<NativeWebMouseEvent> m_mouseEventQueue;
Deque<NativeWebKeyboardEvent> m_keyEventQueue;
Deque<NativeWebWheelEvent> m_wheelEventQueue;