Diff
Modified: trunk/Source/WebKit/ChangeLog (235491 => 235492)
--- trunk/Source/WebKit/ChangeLog 2018-08-30 01:20:20 UTC (rev 235491)
+++ trunk/Source/WebKit/ChangeLog 2018-08-30 01:22:40 UTC (rev 235492)
@@ -1,3 +1,21 @@
+2018-08-29 Alex Christensen <[email protected]>
+
+ Revert some of r235398
+ https://bugs.webkit.org/show_bug.cgi?id=189133
+
+ Reviewed by Tim Horton.
+
+ * UIProcess/API/APILoaderClient.h:
+ (API::LoaderClient::processDidCrash):
+ (API::LoaderClient::didChangeBackForwardList):
+ (API::LoaderClient::didCommitLoadForFrame):
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageSetPageLoaderClient):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::didChangeBackForwardList):
+ (WebKit::WebPageProxy::didCommitLoadForFrame):
+ (WebKit::WebPageProxy::dispatchProcessDidTerminate):
+
2018-08-29 Olivia Barnett <[email protected]>
Implement the Web Share API
Modified: trunk/Source/WebKit/UIProcess/API/APILoaderClient.h (235491 => 235492)
--- trunk/Source/WebKit/UIProcess/API/APILoaderClient.h 2018-08-30 01:20:20 UTC (rev 235491)
+++ trunk/Source/WebKit/UIProcess/API/APILoaderClient.h 2018-08-30 01:22:40 UTC (rev 235492)
@@ -63,6 +63,9 @@
virtual void didFirstVisuallyNonEmptyLayoutForFrame(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, API::Object*) { }
virtual void didReachLayoutMilestone(WebKit::WebPageProxy&, WebCore::LayoutMilestones) { }
virtual bool shouldKeepCurrentBackForwardListItemInList(WebKit::WebPageProxy&, WebKit::WebBackForwardListItem&) { return true; }
+ virtual bool processDidCrash(WebKit::WebPageProxy&) { return false; }
+ virtual void didChangeBackForwardList(WebKit::WebPageProxy&, WebKit::WebBackForwardListItem*, Vector<Ref<WebKit::WebBackForwardListItem>>&&) { }
+ virtual void didCommitLoadForFrame(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, API::Navigation*, API::Object*) { }
};
} // namespace API
Modified: trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp (235491 => 235492)
--- trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2018-08-30 01:20:20 UTC (rev 235491)
+++ trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2018-08-30 01:22:40 UTC (rev 235492)
@@ -1044,7 +1044,6 @@
initialize(client);
// WKPageSetPageLoaderClient is deprecated. Use WKPageSetPageNavigationClient instead.
- RELEASE_ASSERT(!m_client.didCommitLoadForFrame);
RELEASE_ASSERT(!m_client.didFinishDocumentLoadForFrame);
RELEASE_ASSERT(!m_client.didSameDocumentNavigationForFrame);
RELEASE_ASSERT(!m_client.didReceiveTitleForFrame);
@@ -1059,8 +1058,6 @@
RELEASE_ASSERT(!m_client.didFinishProgress);
RELEASE_ASSERT(!m_client.processDidBecomeUnresponsive);
RELEASE_ASSERT(!m_client.processDidBecomeResponsive);
- RELEASE_ASSERT(!m_client.processDidCrash);
- RELEASE_ASSERT(!m_client.didChangeBackForwardList);
RELEASE_ASSERT(!m_client.shouldGoToBackForwardListItem);
RELEASE_ASSERT(!m_client.didFailToInitializePlugin_deprecatedForUseWithV0);
RELEASE_ASSERT(!m_client.didDetectXSSForFrame);
@@ -1081,6 +1078,15 @@
}
private:
+
+ void didCommitLoadForFrame(WebPageProxy& page, WebFrameProxy& frame, API::Navigation*, API::Object* userData) override
+ {
+ if (!m_client.didCommitLoadForFrame)
+ return;
+
+ m_client.didCommitLoadForFrame(toAPI(&page), toAPI(&frame), toAPI(userData), m_client.base.clientInfo);
+ }
+
void didStartProvisionalLoadForFrame(WebPageProxy& page, WebFrameProxy& frame, API::Navigation*, API::Object* userData) override
{
if (!m_client.didStartProvisionalLoadForFrame)
@@ -1137,6 +1143,33 @@
m_client.didLayout(toAPI(&page), toWKLayoutMilestones(milestones), nullptr, m_client.base.clientInfo);
}
+ bool processDidCrash(WebPageProxy& page) override
+ {
+ if (!m_client.processDidCrash)
+ return false;
+
+ m_client.processDidCrash(toAPI(&page), m_client.base.clientInfo);
+ return true;
+ }
+
+ void didChangeBackForwardList(WebPageProxy& page, WebBackForwardListItem* addedItem, Vector<Ref<WebBackForwardListItem>>&& removedItems) override
+ {
+ if (!m_client.didChangeBackForwardList)
+ return;
+
+ RefPtr<API::Array> removedItemsArray;
+ if (!removedItems.isEmpty()) {
+ Vector<RefPtr<API::Object>> removedItemsVector;
+ removedItemsVector.reserveInitialCapacity(removedItems.size());
+ for (auto& removedItem : removedItems)
+ removedItemsVector.append(WTFMove(removedItem));
+
+ removedItemsArray = API::Array::create(WTFMove(removedItemsVector));
+ }
+
+ m_client.didChangeBackForwardList(toAPI(&page), toAPI(addedItem), toAPI(removedItemsArray.get()), m_client.base.clientInfo);
+ }
+
bool shouldKeepCurrentBackForwardListItemInList(WebKit::WebPageProxy& page, WebKit::WebBackForwardListItem& item) override
{
if (!m_client.shouldKeepCurrentBackForwardListItemInList)
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (235491 => 235492)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2018-08-30 01:20:20 UTC (rev 235491)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2018-08-30 01:22:40 UTC (rev 235492)
@@ -1271,8 +1271,8 @@
{
PageClientProtector protector(m_pageClient);
- if (m_navigationClient)
- m_navigationClient->didChangeBackForwardList(*this, added, removed);
+ if (!m_navigationClient || !m_navigationClient->didChangeBackForwardList(*this, added, removed))
+ m_loaderClient->didChangeBackForwardList(*this, added, WTFMove(removed));
auto transaction = m_pageLoadState.transaction();
@@ -3673,9 +3673,11 @@
#endif
m_pageLoadState.commitChanges();
- if (m_navigationClient && frame->isMainFrame())
- m_navigationClient->didCommitNavigation(*this, navigation.get(), m_process->transformHandlesToObjects(userData.object()).get());
-
+ if (m_navigationClient) {
+ if (frame->isMainFrame())
+ m_navigationClient->didCommitNavigation(*this, navigation.get(), m_process->transformHandlesToObjects(userData.object()).get());
+ } else
+ m_loaderClient->didCommitLoadForFrame(*this, *frame, navigation.get(), m_process->transformHandlesToObjects(userData.object()).get());
#if ENABLE(ATTACHMENT_ELEMENT)
if (frame->isMainFrame())
invalidateAllAttachments();
@@ -5922,6 +5924,8 @@
bool handledByClient = false;
if (m_navigationClient)
handledByClient = m_navigationClient->processDidTerminate(*this, reason);
+ else if (reason != ProcessTerminationReason::RequestedByClient)
+ handledByClient = m_loaderClient->processDidCrash(*this);
if (!handledByClient && shouldReloadAfterProcessTermination(reason))
tryReloadAfterProcessTermination();