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

Reply via email to