Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: f730df710d6a5e003cc8bdcabf4ea9f6a607d699
https://github.com/WebKit/WebKit/commit/f730df710d6a5e003cc8bdcabf4ea9f6a607d699
Author: Sihui Liu <[email protected]>
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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes