Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f730df710d6a5e003cc8bdcabf4ea9f6a607d699 https://github.com/WebKit/WebKit/commit/f730df710d6a5e003cc8bdcabf4ea9f6a607d699 Author: Sihui Liu <sihui_...@apple.com> Date: 2023-09-28 (Thu, 28 Sep 2023)
Changed paths: M Source/WebCore/Headers.cmake M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/editing/MarkupAccumulator.cpp M Source/WebCore/editing/MarkupAccumulator.h M Source/WebCore/editing/markup.cpp M Source/WebCore/editing/markup.h M Source/WebCore/loader/archive/Archive.cpp M Source/WebCore/loader/archive/Archive.h A Source/WebCore/loader/archive/ArchiveError.h M Source/WebCore/loader/archive/ArchiveResource.cpp M Source/WebCore/loader/archive/ArchiveResource.h M Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp M Source/WebCore/loader/archive/cf/LegacyWebArchive.h M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/WebPageProxy.h M Source/WebKit/WebProcess/WebPage/WebFrame.cpp M Source/WebKit/WebProcess/WebPage/WebFrame.h M Source/WebKit/WebProcess/WebPage/WebPage.cpp M Source/WebKit/WebProcess/WebPage/WebPage.h M Source/WebKit/WebProcess/WebPage/WebPage.messages.in M Tools/TestWebKitAPI/Tests/WebKitCocoa/CreateWebArchive.mm Log Message: ----------- Add SPI to save web page resources to disk https://bugs.webkit.org/show_bug.cgi?id=262128 rdar://116069722 Reviewed by Ryosuke Niwa and David Kilzer. WKWebView has API (createWebArchiveDataWithCompletionHandler) to store web page in webarchive format, which can only be understood by WebKit. This patch introduces a new SPI to allow storing web page and its subresources in file format that matches their MIME type, so the saved page can be loaded in other non-WebKit browsers. Similar to the previous API, the new SPI makes UI process request webarchive data of a web page from web process. However, instead of returning the data to API client, UI process will decode the data and store resources to given directory. Also, when creating web archive of web page, web process replaces urls in the web page with file names, so the saved page will point to saved subresource files instead of network resources. API test: WebArchive.SaveResourcesBasic * Source/WebCore/Headers.cmake: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/editing/MarkupAccumulator.cpp: (WebCore::MarkupAccumulator::MarkupAccumulator): (WebCore::MarkupAccumulator::resolveURLIfNeeded const): * Source/WebCore/editing/MarkupAccumulator.h: (WebCore::MarkupAccumulator::MarkupAccumulator): * Source/WebCore/editing/markup.cpp: (WebCore::serializeFragment): * Source/WebCore/editing/markup.h: (WebCore::serializeFragment): * Source/WebCore/loader/archive/Archive.cpp: (WebCore::Archive::saveResourcesToDisk): * Source/WebCore/loader/archive/Archive.h: * Source/WebCore/loader/archive/ArchiveError.h: Added. (WebCore::errorDescription): * Source/WebCore/loader/archive/ArchiveResource.cpp: (WebCore::ArchiveResource::ArchiveResource): (WebCore::ArchiveResource::create): (WebCore::ArchiveResource::saveToDisk): * Source/WebCore/loader/archive/ArchiveResource.h: (WebCore::ArchiveResource::create): (WebCore::ArchiveResource::fileName const): (WebCore::ArchiveResource::setFileName): (WebCore::ArchiveResource::ArchiveResource): * Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp: (WebCore::LegacyWebArchive::createPropertyListRepresentation): (WebCore::LegacyWebArchive::createResource): (WebCore::LegacyWebArchive::create): * Source/WebCore/loader/archive/cf/LegacyWebArchive.h: * Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _saveResources:suggestedFileName:completionHandler:]): * Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h: * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::sharedFileQueue): (WebKit::WebPageProxy::saveResources): * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::webArchiveData): * Source/WebKit/WebProcess/WebPage/WebFrame.h: (WebKit::WebFrame::webArchiveData): * Source/WebKit/WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::getWebArchiveOfFrameWithFileName): * Source/WebKit/WebProcess/WebPage/WebPage.h: * Source/WebKit/WebProcess/WebPage/WebPage.messages.in: * Tools/TestWebKitAPI/Tests/WebKitCocoa/CreateWebArchive.mm: Canonical link: https://commits.webkit.org/268614@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes