Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 3f8ad758a672f42d1d38eb5789dee634da4c545e
https://github.com/WebKit/WebKit/commit/3f8ad758a672f42d1d38eb5789dee634da4c545e
Author: Wenson Hsieh <[email protected]>
Date: 2022-10-18 (Tue, 18 Oct 2022)
Changed paths:
M Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp
M Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.h
M Source/WebCore/dom/DataTransfer.cpp
M Source/WebCore/dom/DataTransfer.h
M Source/WebCore/dom/DataTransfer.idl
M Source/WebCore/dom/DataTransferItemList.cpp
M Source/WebCore/dom/DataTransferItemList.h
M Source/WebCore/dom/DataTransferItemList.idl
M Source/WebCore/editing/Editor.cpp
M Source/WebCore/page/ChromeClient.h
M Source/WebCore/page/Page.cpp
M Source/WebCore/page/Page.h
M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
M Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm
M Source/WebKit/WebProcess/WebPage/WebPage.h
Log Message:
-----------
Add a codepath to adjust URLs and plain text before writing to the system
pasteboard
https://bugs.webkit.org/show_bug.cgi?id=246635
rdar://101212078
Reviewed by Aditya Keerthi.
Add codepaths to adjust URLs written via either programmatic clipboard APIs
(i.e. DataTransfer,
async clipboard) or via the "Copy Link" context menu action. See below for more
details.
* Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:
(WebCore::ClipboardItemBindingsDataSource::collectDataForWriting):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::ClipboardItemTypeLoader):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::dataAsString
const):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::sanitizeDataIfNeeded):
* Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.h:
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::create):
For the programmatic clipboard APIs, we treat this URL sanitization in the same
way as sanitized
markup, by writing the original unsanitized URL to pickled clipboard data,
while writing the
sanitized URL to the pasteboard, but only in the case where the two differ.
* Source/WebCore/dom/DataTransfer.cpp:
(WebCore::DataTransfer::setData):
(WebCore::DataTransfer::setDataFromItemList):
Add a `Document&` argument to codepaths that can be used to programmatically
write URL data to the
pasteboard.
* Source/WebCore/dom/DataTransfer.h:
* Source/WebCore/dom/DataTransfer.idl:
Add `[CallWith=CurrentDocument]` so that we can easily call into `Page` to
sanitize URL data when
writing data to the pasteboard.
* Source/WebCore/dom/DataTransferItemList.cpp:
(WebCore::DataTransferItemList::add):
* Source/WebCore/dom/DataTransferItemList.h:
* Source/WebCore/dom/DataTransferItemList.idl:
Add `[CallWith=CurrentDocument]` here as well, so that we can easily call into
`Page`.
* Source/WebCore/editing/Editor.cpp:
(WebCore::Editor::copyURL):
Additionally sanitize URLs when copying a link via the context menu.
* Source/WebCore/page/ChromeClient.h:
(WebCore::ChromeClient::handlePDFServiceClick):
(WebCore::ChromeClient::sanitizeForCopyOrShare const):
Add a platform client hook to call "sanitize" the given URL.
* Source/WebCore/page/Page.cpp:
(WebCore::Page::sanitizeForCopyOrShare const):
Add a couple of helper methods on Page to sanitize either a given URL, or a
given URL string.
* Source/WebCore/page/Page.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::sanitizeForCopyOrShare const):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:
* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::sanitizeForCopyOrShare const):
Add a new additions extension point.
* Source/WebKit/WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::sanitizeForCopyOrShare const):
Add a no-op stub implementation for non-Cocoa builds.
Canonical link: https://commits.webkit.org/255708@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes