Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a204337cb0ff2df80b628fb8415ee6a39ceb4b2f
      
https://github.com/WebKit/WebKit/commit/a204337cb0ff2df80b628fb8415ee6a39ceb4b2f
  Author: Megan Gardner <megan_gard...@apple.com>
  Date:   2024-02-17 (Sat, 17 Feb 2024)

  Changed paths:
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
    M Source/WTF/wtf/URL.cpp
    M Source/WTF/wtf/URL.h
    M Source/WTF/wtf/URLParser.cpp
    M Source/WTF/wtf/URLParser.h
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    A Source/WebCore/dom/FragmentDirectiveGenerator.cpp
    A Source/WebCore/dom/FragmentDirectiveGenerator.h
    M Source/WebCore/en.lproj/Localizable.strings
    M Source/WebCore/page/ContextMenuController.cpp
    M Source/WebCore/page/ContextMenuController.h
    M Source/WebCore/page/Page.cpp
    M Source/WebCore/page/Page.h
    M Source/WebCore/platform/ContextMenuItem.cpp
    M Source/WebCore/platform/ContextMenuItem.h
    M Source/WebCore/platform/LocalizedStrings.cpp
    M Source/WebCore/platform/LocalizedStrings.h
    M Source/WebKit/Shared/API/c/WKContextMenuItemTypes.h
    M Source/WebKit/Shared/API/c/WKSharedAPICast.h
    M Source/WebKit/UIProcess/API/Cocoa/WKMenuItemIdentifiers.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
    M Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/WebPage.messages.in

  Log Message:
  -----------
  Add Context menu option to copy link to currently selected text.
https://bugs.webkit.org/show_bug.cgi?id=269400
rdar://113158483

Reviewed by Ryosuke Niwa.

As discussed in  
https://wicg.github.io/scroll-to-text-fragment/#generating-text-fragment-directives
Which is non-normative, currently, we can generated fragment directives by
looking at the text that is highlighted and the surrounding text.
This is a first pass implementation and there are several edge cases that still 
need to be
worked out, but this is a place to start.

Currently, for short pieces of text, we look back up to 3 words, in the same 
node, in each direction for
context. And if we have a large piece of text, we take the first three words at 
the beginning and end of
the content. Medium sized pieces of text are just denoted completely.

This does not give enough for situations where there is lots of repeated text, 
or text that is
repeated several times across a page, but it covers most cases.

This will be expanded with tests and additional work on know edge cases.

* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WTF/wtf/URL.cpp:
(WTF::percentEncodeFragmentDirectiveSpecialCharacters):
* Source/WTF/wtf/URL.h:
* Source/WTF/wtf/URLParser.cpp:
(WTF::isSpecialCharacterForFragmentDirective):
(WTF::URLParser::isSpecialCharacterForFragmentDirective):
* Source/WTF/wtf/URLParser.h:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/dom/FragmentDirectiveGenerator.cpp: Added.
(WebCore::FragmentDirectiveGenerator::FragmentDirectiveGenerator):
(WebCore::previousWordsFromPosition):
* Source/WebCore/dom/FragmentDirectiveGenerator.h: Added.
(WebCore::FragmentDirectiveGenerator::urlWithFragment const):
* Source/WebCore/en.lproj/Localizable.strings:
* Source/WebCore/page/ContextMenuController.cpp:
(WebCore::ContextMenuController::contextMenuItemSelected):
(WebCore::ContextMenuController::populate):
(WebCore::ContextMenuController::shouldEnableCopyLinkToHighlight const):
(WebCore::ContextMenuController::checkOrEnableIfNeeded const):
* Source/WebCore/page/ContextMenuController.h:
* Source/WebCore/page/Page.cpp:
(WebCore::Page::urlForSelectedText):
* Source/WebCore/page/Page.h:
* Source/WebCore/platform/ContextMenuItem.cpp:
(WebCore::isValidContextMenuAction):
* Source/WebCore/platform/ContextMenuItem.h:
* Source/WebCore/platform/LocalizedStrings.h:
* Source/WebCore/platform/cocoa/LocalizedStringsCocoa.mm:
(WebCore::contextMenuItemTagCopyLinkToHighlight):
* Source/WebKit/Shared/API/c/WKContextMenuItemTypes.h:
* Source/WebKit/Shared/API/c/WKSharedAPICast.h:
(WebKit::toAPI):
(WebKit::toImpl):
* Source/WebKit/UIProcess/API/Cocoa/WKMenuItemIdentifiers.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::copyLinkToHighlight):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView shouldAllowHighlightLinkCreation]):
(-[WKContentView buildMenuForWebViewWithBuilder:]):
(-[WKContentView appHighlightMenu]):
(-[WKContentView scrollToTextFragmentGenerationMenu]):
(-[WKContentView shouldAllowAppHighlightCreation]): Deleted.
* Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::menuItemIdentifier):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::copyLinkToHighlight):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:

Canonical link: https://commits.webkit.org/274919@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to