<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[192393] trunk/Source</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/192393">192393</a></dd>
<dt>Author</dt> <dd>andersca@apple.com</dd>
<dt>Date</dt> <dd>2015-11-12 15:55:49 -0800 (Thu, 12 Nov 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>ContextMenuAction and WebMenuItemTag shouldn't have to be in sync
https://bugs.webkit.org/show_bug.cgi?id=151226
Reviewed by Tim Horton.
Source/WebCore:
* page/ContextMenuController.cpp:
* platform/ContextMenuItem.h:
Remove now unneeded comments. Also, remove ContextMenuItemTagOpenLinkInThisWindow since it wasn't used by any of our remaining ports.
Source/WebKit/mac:
* WebView/WebHTMLView.mm:
(toAction):
(toTag):
Add conversion functions.
(-[WebMenuTarget forwardContextMenuAction:]):
Use toAction.
(createMenuItem):
Use toTag.
(setMenuItemTarget): Deleted.
(setMenuTargets): Deleted.
(-[WebHTMLView menuForEvent:]):
Don't call setMenuTargets, that's already done when we create the menu items.
* WebView/WebUIDelegatePrivate.h:
Add missing menu item tags. This does break ABI, but the menu item tags were already out of sync
so it's very likely that nobody is relying on this.
Source/WebKit2:
* Shared/API/c/WKSharedAPICast.h:
(WebKit::toAPI):
(WebKit::toImpl):
Remove ContextMenuItemTagOpenLinkInThisWindow.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorepageContextMenuControllercpp">trunk/Source/WebCore/page/ContextMenuController.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformContextMenuItemh">trunk/Source/WebCore/platform/ContextMenuItem.h</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebHTMLViewmm">trunk/Source/WebKit/mac/WebView/WebHTMLView.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebUIDelegatePrivateh">trunk/Source/WebKit/mac/WebView/WebUIDelegatePrivate.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedAPIcWKSharedAPICasth">trunk/Source/WebKit2/Shared/API/c/WKSharedAPICast.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (192392 => 192393)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-11-12 23:50:10 UTC (rev 192392)
+++ trunk/Source/WebCore/ChangeLog        2015-11-12 23:55:49 UTC (rev 192393)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2015-11-12 Anders Carlsson <andersca@apple.com>
+
+ ContextMenuAction and WebMenuItemTag shouldn't have to be in sync
+ https://bugs.webkit.org/show_bug.cgi?id=151226
+
+ Reviewed by Tim Horton.
+
+ * page/ContextMenuController.cpp:
+ * platform/ContextMenuItem.h:
+ Remove now unneeded comments. Also, remove ContextMenuItemTagOpenLinkInThisWindow since it wasn't used by any of our remaining ports.
+
</ins><span class="cx"> 2015-11-12 Zalan Bujtas <zalan@apple.com>
</span><span class="cx">
</span><span class="cx"> Ignore visited background color when deciding if the input renderer needs to be painted natively.
</span></span></pre></div>
<a id="trunkSourceWebCorepageContextMenuControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/ContextMenuController.cpp (192392 => 192393)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/ContextMenuController.cpp        2015-11-12 23:50:10 UTC (rev 192392)
+++ trunk/Source/WebCore/page/ContextMenuController.cpp        2015-11-12 23:55:49 UTC (rev 192393)
</span><span class="lines">@@ -392,9 +392,6 @@
</span><span class="cx"> else
</span><span class="cx"> openNewWindow(m_context.hitTestResult().absoluteLinkURL(), frame, ShouldOpenExternalURLsPolicy::ShouldAllow);
</span><span class="cx"> break;
</span><del>- case ContextMenuItemTagOpenLinkInThisWindow:
- frame->loader().loadFrameRequest(FrameLoadRequest(frame->document()->securityOrigin(), ResourceRequest(m_context.hitTestResult().absoluteLinkURL(), frame->loader().outgoingReferrer()), LockHistory::No, LockBackForwardList::No, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Suppress, ShouldOpenExternalURLsPolicy::ShouldAllowExternalSchemes), nullptr, nullptr);
- break;
</del><span class="cx"> case ContextMenuItemTagBold:
</span><span class="cx"> frame->editor().command("ToggleBold").execute();
</span><span class="cx"> break;
</span><span class="lines">@@ -1307,7 +1304,6 @@
</span><span class="cx"> #endif
</span><span class="cx"> case ContextMenuItemTagNoAction:
</span><span class="cx"> case ContextMenuItemTagOpenLinkInNewWindow:
</span><del>- case ContextMenuItemTagOpenLinkInThisWindow:
</del><span class="cx"> case ContextMenuItemTagDownloadLinkToDisk:
</span><span class="cx"> case ContextMenuItemTagCopyLinkToClipboard:
</span><span class="cx"> case ContextMenuItemTagOpenImageInNewWindow:
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformContextMenuItemh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ContextMenuItem.h (192392 => 192393)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ContextMenuItem.h        2015-11-12 23:50:10 UTC (rev 192392)
+++ trunk/Source/WebCore/platform/ContextMenuItem.h        2015-11-12 23:55:49 UTC (rev 192393)
</span><span class="lines">@@ -40,11 +40,9 @@
</span><span class="cx"> class Image;
</span><span class="cx"> class URL;
</span><span class="cx">
</span><del>-// This enum needs to be in sync with the WebMenuItemTag enum in WebUIDelegate.h and the
-// extra values in WebUIDelegatePrivate.h
</del><span class="cx"> enum ContextMenuAction {
</span><del>- ContextMenuItemTagNoAction=0, // This item is not actually in WebUIDelegate.h
- ContextMenuItemTagOpenLinkInNewWindow=1,
</del><ins>+ ContextMenuItemTagNoAction,
+ ContextMenuItemTagOpenLinkInNewWindow,
</ins><span class="cx"> ContextMenuItemTagDownloadLinkToDisk,
</span><span class="cx"> ContextMenuItemTagCopyLinkToClipboard,
</span><span class="cx"> ContextMenuItemTagOpenImageInNewWindow,
</span><span class="lines">@@ -99,8 +97,7 @@
</span><span class="cx"> ContextMenuItemPDFContinuous,
</span><span class="cx"> ContextMenuItemPDFNextPage,
</span><span class="cx"> ContextMenuItemPDFPreviousPage,
</span><del>- // These are new tags! Not a part of API!!!!
- ContextMenuItemTagOpenLink = 2000,
</del><ins>+ ContextMenuItemTagOpenLink,
</ins><span class="cx"> ContextMenuItemTagIgnoreGrammar,
</span><span class="cx"> ContextMenuItemTagSpellingMenu, // Spelling or Spelling/Grammar sub-menu
</span><span class="cx"> ContextMenuItemTagShowSpellingPanel,
</span><span class="lines">@@ -153,7 +150,6 @@
</span><span class="cx"> ContextMenuItemTagMediaPlayPause,
</span><span class="cx"> ContextMenuItemTagMediaMute,
</span><span class="cx"> ContextMenuItemTagDictationAlternative,
</span><del>- ContextMenuItemTagOpenLinkInThisWindow,
</del><span class="cx"> ContextMenuItemTagToggleVideoFullscreen,
</span><span class="cx"> ContextMenuItemTagShareMenu,
</span><span class="cx"> ContextMenuItemBaseCustomTag = 5000,
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (192392 => 192393)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2015-11-12 23:50:10 UTC (rev 192392)
+++ trunk/Source/WebKit/mac/ChangeLog        2015-11-12 23:55:49 UTC (rev 192393)
</span><span class="lines">@@ -1,5 +1,32 @@
</span><span class="cx"> 2015-11-12 Anders Carlsson <andersca@apple.com>
</span><span class="cx">
</span><ins>+ ContextMenuAction and WebMenuItemTag shouldn't have to be in sync
+ https://bugs.webkit.org/show_bug.cgi?id=151226
+
+ Reviewed by Tim Horton.
+
+ * WebView/WebHTMLView.mm:
+ (toAction):
+ (toTag):
+ Add conversion functions.
+
+ (-[WebMenuTarget forwardContextMenuAction:]):
+ Use toAction.
+
+ (createMenuItem):
+ Use toTag.
+
+ (setMenuItemTarget): Deleted.
+ (setMenuTargets): Deleted.
+ (-[WebHTMLView menuForEvent:]):
+ Don't call setMenuTargets, that's already done when we create the menu items.
+
+ * WebView/WebUIDelegatePrivate.h:
+ Add missing menu item tags. This does break ABI, but the menu item tags were already out of sync
+ so it's very likely that nobody is relying on this.
+
+2015-11-12 Anders Carlsson <andersca@apple.com>
+
</ins><span class="cx"> Fix build.
</span><span class="cx">
</span><span class="cx"> * WebView/WebHTMLView.mm:
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebHTMLViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebHTMLView.mm (192392 => 192393)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebHTMLView.mm        2015-11-12 23:50:10 UTC (rev 192392)
+++ trunk/Source/WebKit/mac/WebView/WebHTMLView.mm        2015-11-12 23:55:49 UTC (rev 192393)
</span><span class="lines">@@ -180,6 +180,370 @@
</span><span class="cx"> - (void)forwardContextMenuAction:(id)sender;
</span><span class="cx"> @end
</span><span class="cx">
</span><ins>+static Optional<ContextMenuAction> toAction(NSInteger tag)
+{
+ if (tag >= ContextMenuItemBaseCustomTag && tag <= ContextMenuItemLastCustomTag) {
+ // Just pass these through.
+ return static_cast<ContextMenuAction>(tag);
+ }
+
+ switch (tag) {
+ case WebMenuItemTagOpenLinkInNewWindow:
+ return ContextMenuItemTagOpenLinkInNewWindow;
+ case WebMenuItemTagDownloadLinkToDisk:
+ return ContextMenuItemTagDownloadLinkToDisk;
+ case WebMenuItemTagCopyLinkToClipboard:
+ return ContextMenuItemTagCopyLinkToClipboard;
+ case WebMenuItemTagOpenImageInNewWindow:
+ return ContextMenuItemTagOpenImageInNewWindow;
+ case WebMenuItemTagDownloadImageToDisk:
+ return ContextMenuItemTagDownloadImageToDisk;
+ case WebMenuItemTagCopyImageToClipboard:
+ return ContextMenuItemTagCopyImageToClipboard;
+ case WebMenuItemTagOpenFrameInNewWindow:
+ return ContextMenuItemTagOpenFrameInNewWindow;
+ case WebMenuItemTagCopy:
+ return ContextMenuItemTagCopy;
+ case WebMenuItemTagGoBack:
+ return ContextMenuItemTagGoBack;
+ case WebMenuItemTagGoForward:
+ return ContextMenuItemTagGoForward;
+ case WebMenuItemTagStop:
+ return ContextMenuItemTagStop;
+ case WebMenuItemTagReload:
+ return ContextMenuItemTagReload;
+ case WebMenuItemTagCut:
+ return ContextMenuItemTagCut;
+ case WebMenuItemTagPaste:
+ return ContextMenuItemTagPaste;
+ case WebMenuItemTagSpellingGuess:
+ return ContextMenuItemTagSpellingGuess;
+ case WebMenuItemTagNoGuessesFound:
+ return ContextMenuItemTagNoGuessesFound;
+ case WebMenuItemTagIgnoreSpelling:
+ return ContextMenuItemTagIgnoreSpelling;
+ case WebMenuItemTagLearnSpelling:
+ return ContextMenuItemTagLearnSpelling;
+ case WebMenuItemTagOther:
+ return ContextMenuItemTagOther;
+ case WebMenuItemTagSearchInSpotlight:
+ return ContextMenuItemTagSearchInSpotlight;
+ case WebMenuItemTagSearchWeb:
+ return ContextMenuItemTagSearchWeb;
+ case WebMenuItemTagLookUpInDictionary:
+ return ContextMenuItemTagLookUpInDictionary;
+ case WebMenuItemTagOpenWithDefaultApplication:
+ return ContextMenuItemTagOpenWithDefaultApplication;
+ case WebMenuItemPDFActualSize:
+ return ContextMenuItemPDFActualSize;
+ case WebMenuItemPDFZoomIn:
+ return ContextMenuItemPDFZoomIn;
+ case WebMenuItemPDFZoomOut:
+ return ContextMenuItemPDFZoomOut;
+ case WebMenuItemPDFAutoSize:
+ return ContextMenuItemPDFAutoSize;
+ case WebMenuItemPDFSinglePage:
+ return ContextMenuItemPDFSinglePage;
+ case WebMenuItemPDFFacingPages:
+ return ContextMenuItemPDFFacingPages;
+ case WebMenuItemPDFContinuous:
+ return ContextMenuItemPDFContinuous;
+ case WebMenuItemPDFNextPage:
+ return ContextMenuItemPDFNextPage;
+ case WebMenuItemPDFPreviousPage:
+ return ContextMenuItemPDFPreviousPage;
+ case WebMenuItemTagOpenLink:
+ return ContextMenuItemTagOpenLink;
+ case WebMenuItemTagIgnoreGrammar:
+ return ContextMenuItemTagIgnoreGrammar;
+ case WebMenuItemTagSpellingMenu:
+ return ContextMenuItemTagSpellingMenu;
+ case WebMenuItemTagShowSpellingPanel:
+ return ContextMenuItemTagShowSpellingPanel;
+ case WebMenuItemTagCheckSpelling:
+ return ContextMenuItemTagCheckSpelling;
+ case WebMenuItemTagCheckSpellingWhileTyping:
+ return ContextMenuItemTagCheckSpellingWhileTyping;
+ case WebMenuItemTagCheckGrammarWithSpelling:
+ return ContextMenuItemTagCheckGrammarWithSpelling;
+ case WebMenuItemTagFontMenu:
+ return ContextMenuItemTagFontMenu;
+ case WebMenuItemTagShowFonts:
+ return ContextMenuItemTagShowFonts;
+ case WebMenuItemTagBold:
+ return ContextMenuItemTagBold;
+ case WebMenuItemTagItalic:
+ return ContextMenuItemTagItalic;
+ case WebMenuItemTagUnderline:
+ return ContextMenuItemTagUnderline;
+ case WebMenuItemTagOutline:
+ return ContextMenuItemTagOutline;
+ case WebMenuItemTagStyles:
+ return ContextMenuItemTagStyles;
+ case WebMenuItemTagShowColors:
+ return ContextMenuItemTagShowColors;
+ case WebMenuItemTagSpeechMenu:
+ return ContextMenuItemTagSpeechMenu;
+ case WebMenuItemTagStartSpeaking:
+ return ContextMenuItemTagStartSpeaking;
+ case WebMenuItemTagStopSpeaking:
+ return ContextMenuItemTagStopSpeaking;
+ case WebMenuItemTagWritingDirectionMenu:
+ return ContextMenuItemTagWritingDirectionMenu;
+ case WebMenuItemTagDefaultDirection:
+ return ContextMenuItemTagDefaultDirection;
+ case WebMenuItemTagLeftToRight:
+ return ContextMenuItemTagLeftToRight;
+ case WebMenuItemTagRightToLeft:
+ return ContextMenuItemTagRightToLeft;
+ case WebMenuItemPDFSinglePageScrolling:
+ return ContextMenuItemTagPDFSinglePageScrolling;
+ case WebMenuItemPDFFacingPagesScrolling:
+ return ContextMenuItemTagPDFFacingPagesScrolling;
+ case WebMenuItemTagInspectElement:
+ return ContextMenuItemTagInspectElement;
+ case WebMenuItemTagTextDirectionMenu:
+ return ContextMenuItemTagTextDirectionMenu;
+ case WebMenuItemTagTextDirectionDefault:
+ return ContextMenuItemTagTextDirectionDefault;
+ case WebMenuItemTagTextDirectionLeftToRight:
+ return ContextMenuItemTagTextDirectionLeftToRight;
+ case WebMenuItemTagTextDirectionRightToLeft:
+ return ContextMenuItemTagTextDirectionRightToLeft;
+ case WebMenuItemTagCorrectSpellingAutomatically:
+ return ContextMenuItemTagCorrectSpellingAutomatically;
+ case WebMenuItemTagSubstitutionsMenu:
+ return ContextMenuItemTagSubstitutionsMenu;
+ case WebMenuItemTagShowSubstitutions:
+ return ContextMenuItemTagShowSubstitutions;
+ case WebMenuItemTagSmartCopyPaste:
+ return ContextMenuItemTagSmartCopyPaste;
+ case WebMenuItemTagSmartQuotes:
+ return ContextMenuItemTagSmartQuotes;
+ case WebMenuItemTagSmartDashes:
+ return ContextMenuItemTagSmartDashes;
+ case WebMenuItemTagSmartLinks:
+ return ContextMenuItemTagSmartLinks;
+ case WebMenuItemTagTextReplacement:
+ return ContextMenuItemTagTextReplacement;
+ case WebMenuItemTagTransformationsMenu:
+ return ContextMenuItemTagTransformationsMenu;
+ case WebMenuItemTagMakeUpperCase:
+ return ContextMenuItemTagMakeUpperCase;
+ case WebMenuItemTagMakeLowerCase:
+ return ContextMenuItemTagMakeLowerCase;
+ case WebMenuItemTagCapitalize:
+ return ContextMenuItemTagCapitalize;
+ case WebMenuItemTagChangeBack:
+ return ContextMenuItemTagChangeBack;
+ case WebMenuItemTagOpenMediaInNewWindow:
+ return ContextMenuItemTagOpenMediaInNewWindow;
+ case WebMenuItemTagCopyMediaLinkToClipboard:
+ return ContextMenuItemTagCopyMediaLinkToClipboard;
+ case WebMenuItemTagToggleMediaControls:
+ return ContextMenuItemTagToggleMediaControls;
+ case WebMenuItemTagToggleMediaLoop:
+ return ContextMenuItemTagToggleMediaLoop;
+ case WebMenuItemTagEnterVideoFullscreen:
+ return ContextMenuItemTagEnterVideoFullscreen;
+ case WebMenuItemTagMediaPlayPause:
+ return ContextMenuItemTagMediaPlayPause;
+ case WebMenuItemTagMediaMute:
+ return ContextMenuItemTagMediaMute;
+ case WebMenuItemTagDictationAlternative:
+ return ContextMenuItemTagDictationAlternative;
+ }
+ return Nullopt;
+}
+
+static Optional<NSInteger> toTag(ContextMenuAction action)
+{
+ switch (action) {
+ case ContextMenuItemTagNoAction:
+ return Nullopt;
+
+ case ContextMenuItemTagOpenLinkInNewWindow:
+ return WebMenuItemTagOpenLinkInNewWindow;
+ case ContextMenuItemTagDownloadLinkToDisk:
+ return WebMenuItemTagDownloadLinkToDisk;
+ case ContextMenuItemTagCopyLinkToClipboard:
+ return WebMenuItemTagCopyLinkToClipboard;
+ case ContextMenuItemTagOpenImageInNewWindow:
+ return WebMenuItemTagOpenImageInNewWindow;
+ case ContextMenuItemTagDownloadImageToDisk:
+ return WebMenuItemTagDownloadImageToDisk;
+ case ContextMenuItemTagCopyImageToClipboard:
+ return WebMenuItemTagCopyImageToClipboard;
+ case ContextMenuItemTagOpenFrameInNewWindow:
+ return WebMenuItemTagOpenFrameInNewWindow;
+ case ContextMenuItemTagCopy:
+ return WebMenuItemTagCopy;
+ case ContextMenuItemTagGoBack:
+ return WebMenuItemTagGoBack;
+ case ContextMenuItemTagGoForward:
+ return WebMenuItemTagGoForward;
+ case ContextMenuItemTagStop:
+ return WebMenuItemTagStop;
+ case ContextMenuItemTagReload:
+ return WebMenuItemTagReload;
+ case ContextMenuItemTagCut:
+ return WebMenuItemTagCut;
+ case ContextMenuItemTagPaste:
+ return WebMenuItemTagPaste;
+ case ContextMenuItemTagSpellingGuess:
+ return WebMenuItemTagSpellingGuess;
+ case ContextMenuItemTagNoGuessesFound:
+ return WebMenuItemTagNoGuessesFound;
+ case ContextMenuItemTagIgnoreSpelling:
+ return WebMenuItemTagIgnoreSpelling;
+ case ContextMenuItemTagLearnSpelling:
+ return WebMenuItemTagLearnSpelling;
+ case ContextMenuItemTagOther:
+ return WebMenuItemTagOther;
+ case ContextMenuItemTagSearchInSpotlight:
+ return WebMenuItemTagSearchInSpotlight;
+ case ContextMenuItemTagSearchWeb:
+ return WebMenuItemTagSearchWeb;
+ case ContextMenuItemTagLookUpInDictionary:
+ return WebMenuItemTagLookUpInDictionary;
+ case ContextMenuItemTagOpenWithDefaultApplication:
+ return WebMenuItemTagOpenWithDefaultApplication;
+ case ContextMenuItemPDFActualSize:
+ return WebMenuItemPDFActualSize;
+ case ContextMenuItemPDFZoomIn:
+ return WebMenuItemPDFZoomIn;
+ case ContextMenuItemPDFZoomOut:
+ return WebMenuItemPDFZoomOut;
+ case ContextMenuItemPDFAutoSize:
+ return WebMenuItemPDFAutoSize;
+ case ContextMenuItemPDFSinglePage:
+ return WebMenuItemPDFSinglePage;
+ case ContextMenuItemPDFFacingPages:
+ return WebMenuItemPDFFacingPages;
+ case ContextMenuItemPDFContinuous:
+ return WebMenuItemPDFContinuous;
+ case ContextMenuItemPDFNextPage:
+ return WebMenuItemPDFNextPage;
+ case ContextMenuItemPDFPreviousPage:
+ return WebMenuItemPDFPreviousPage;
+ case ContextMenuItemTagOpenLink:
+ return WebMenuItemTagOpenLink;
+ case ContextMenuItemTagIgnoreGrammar:
+ return WebMenuItemTagIgnoreGrammar;
+ case ContextMenuItemTagSpellingMenu:
+ return WebMenuItemTagSpellingMenu;
+ case ContextMenuItemTagShowSpellingPanel:
+ return WebMenuItemTagShowSpellingPanel;
+ case ContextMenuItemTagCheckSpelling:
+ return WebMenuItemTagCheckSpelling;
+ case ContextMenuItemTagCheckSpellingWhileTyping:
+ return WebMenuItemTagCheckSpellingWhileTyping;
+ case ContextMenuItemTagCheckGrammarWithSpelling:
+ return WebMenuItemTagCheckGrammarWithSpelling;
+ case ContextMenuItemTagFontMenu:
+ return WebMenuItemTagFontMenu;
+ case ContextMenuItemTagShowFonts:
+ return WebMenuItemTagShowFonts;
+ case ContextMenuItemTagBold:
+ return WebMenuItemTagBold;
+ case ContextMenuItemTagItalic:
+ return WebMenuItemTagItalic;
+ case ContextMenuItemTagUnderline:
+ return WebMenuItemTagUnderline;
+ case ContextMenuItemTagOutline:
+ return WebMenuItemTagOutline;
+ case ContextMenuItemTagStyles:
+ return WebMenuItemTagStyles;
+ case ContextMenuItemTagShowColors:
+ return WebMenuItemTagShowColors;
+ case ContextMenuItemTagSpeechMenu:
+ return WebMenuItemTagSpeechMenu;
+ case ContextMenuItemTagStartSpeaking:
+ return WebMenuItemTagStartSpeaking;
+ case ContextMenuItemTagStopSpeaking:
+ return WebMenuItemTagStopSpeaking;
+ case ContextMenuItemTagWritingDirectionMenu:
+ return WebMenuItemTagWritingDirectionMenu;
+ case ContextMenuItemTagDefaultDirection:
+ return WebMenuItemTagDefaultDirection;
+ case ContextMenuItemTagLeftToRight:
+ return WebMenuItemTagLeftToRight;
+ case ContextMenuItemTagRightToLeft:
+ return WebMenuItemTagRightToLeft;
+ case ContextMenuItemTagPDFSinglePageScrolling:
+ return WebMenuItemPDFSinglePageScrolling;
+ case ContextMenuItemTagPDFFacingPagesScrolling:
+ return WebMenuItemPDFFacingPagesScrolling;
+ case ContextMenuItemTagInspectElement:
+ return WebMenuItemTagInspectElement;
+ case ContextMenuItemTagTextDirectionMenu:
+ return WebMenuItemTagTextDirectionMenu;
+ case ContextMenuItemTagTextDirectionDefault:
+ return WebMenuItemTagTextDirectionDefault;
+ case ContextMenuItemTagTextDirectionLeftToRight:
+ return WebMenuItemTagTextDirectionLeftToRight;
+ case ContextMenuItemTagTextDirectionRightToLeft:
+ return WebMenuItemTagTextDirectionRightToLeft;
+ case ContextMenuItemTagCorrectSpellingAutomatically:
+ return WebMenuItemTagCorrectSpellingAutomatically;
+ case ContextMenuItemTagSubstitutionsMenu:
+ return WebMenuItemTagSubstitutionsMenu;
+ case ContextMenuItemTagShowSubstitutions:
+ return WebMenuItemTagShowSubstitutions;
+ case ContextMenuItemTagSmartCopyPaste:
+ return WebMenuItemTagSmartCopyPaste;
+ case ContextMenuItemTagSmartQuotes:
+ return WebMenuItemTagSmartQuotes;
+ case ContextMenuItemTagSmartDashes:
+ return WebMenuItemTagSmartDashes;
+ case ContextMenuItemTagSmartLinks:
+ return WebMenuItemTagSmartLinks;
+ case ContextMenuItemTagTextReplacement:
+ return WebMenuItemTagTextReplacement;
+ case ContextMenuItemTagTransformationsMenu:
+ return WebMenuItemTagTransformationsMenu;
+ case ContextMenuItemTagMakeUpperCase:
+ return WebMenuItemTagMakeUpperCase;
+ case ContextMenuItemTagMakeLowerCase:
+ return WebMenuItemTagMakeLowerCase;
+ case ContextMenuItemTagCapitalize:
+ return WebMenuItemTagCapitalize;
+ case ContextMenuItemTagChangeBack:
+ return WebMenuItemTagChangeBack;
+ case ContextMenuItemTagOpenMediaInNewWindow:
+ return WebMenuItemTagOpenMediaInNewWindow;
+ case ContextMenuItemTagDownloadMediaToDisk:
+ return WebMenuItemTagDownloadMediaToDisk;
+ case ContextMenuItemTagCopyMediaLinkToClipboard:
+ return WebMenuItemTagCopyMediaLinkToClipboard;
+ case ContextMenuItemTagToggleMediaControls:
+ return WebMenuItemTagToggleMediaControls;
+ case ContextMenuItemTagToggleMediaLoop:
+ return WebMenuItemTagToggleMediaLoop;
+ case ContextMenuItemTagEnterVideoFullscreen:
+ return WebMenuItemTagEnterVideoFullscreen;
+ case ContextMenuItemTagMediaPlayPause:
+ return WebMenuItemTagMediaPlayPause;
+ case ContextMenuItemTagMediaMute:
+ return WebMenuItemTagMediaMute;
+ case ContextMenuItemTagDictationAlternative:
+ return WebMenuItemTagDictationAlternative;
+ case ContextMenuItemTagToggleVideoFullscreen:
+ return WebMenuItemTagToggleVideoFullscreen;
+ case ContextMenuItemTagShareMenu:
+ return WebMenuItemTagShareMenu;
+
+ case ContextMenuItemBaseCustomTag ... ContextMenuItemLastCustomTag:
+ // We just pass these through.
+ return static_cast<NSInteger>(action);
+
+ case ContextMenuItemBaseApplicationTag:
+ ASSERT_NOT_REACHED();
+ }
+
+ return Nullopt;
+}
+
</ins><span class="cx"> static WebMenuTarget* target;
</span><span class="cx">
</span><span class="cx"> @implementation WebMenuTarget
</span><span class="lines">@@ -203,7 +567,8 @@
</span><span class="cx">
</span><span class="cx"> - (void)forwardContextMenuAction:(id)sender
</span><span class="cx"> {
</span><del>- _menuController->contextMenuItemSelected(static_cast<WebCore::ContextMenuAction>([sender tag]), [sender title]);
</del><ins>+ if (auto action = toAction([sender tag]))
+ _menuController->contextMenuItemSelected(*action, [sender title]);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @end
</span><span class="lines">@@ -3299,28 +3664,6 @@
</span><span class="cx"> coreframe->eventHandler().mouseUp(event, [[self _webView] _pressureEvent]);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void setMenuItemTarget(NSMenuItem* menuItem)
-{
- // Don't set the menu item's action to the context menu action forwarder if we already
- // have an action.
- if ([menuItem action])
- return;
-
- [menuItem setTarget:[WebMenuTarget sharedMenuTarget]];
- [menuItem setAction:@selector(forwardContextMenuAction:)];
-}
-
-static void setMenuTargets(NSMenu* menu)
-{
- NSInteger itemCount = [menu numberOfItems];
- for (NSInteger i = 0; i < itemCount; ++i) {
- NSMenuItem *item = [menu itemAtIndex:i];
- setMenuItemTarget(item);
- if ([item hasSubmenu])
- setMenuTargets([item submenu]);
- }
-}
-
</del><span class="cx"> static BOOL isPreVersion3Client(void)
</span><span class="cx"> {
</span><span class="cx"> static BOOL preVersion3Client = !WebKitLinkedOnOrAfter(WEBKIT_FIRST_VERSION_WITH_3_0_CONTEXT_MENU_TAGS);
</span><span class="lines">@@ -3571,7 +3914,8 @@
</span><span class="cx"> case WebCore::CheckableActionType: {
</span><span class="cx"> auto menuItem = adoptNS([[NSMenuItem alloc] initWithTitle:item.title() action:@selector(forwardContextMenuAction:) keyEquivalent:@""]);
</span><span class="cx">
</span><del>- [menuItem setTag:item.action()];
</del><ins>+ if (auto tag = toTag(item.action()))
+ [menuItem setTag:*tag];
</ins><span class="cx"> [menuItem setEnabled:item.enabled()];
</span><span class="cx"> [menuItem setState:item.checked() ? NSOnState : NSOffState];
</span><span class="cx"> [menuItem setTarget:[WebMenuTarget sharedMenuTarget]];
</span><span class="lines">@@ -3696,8 +4040,6 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- setMenuTargets(menu.get());
-
</del><span class="cx"> [[WebMenuTarget sharedMenuTarget] setMenuController:&page->contextMenuController()];
</span><span class="cx">
</span><span class="cx"> return menu.autorelease();
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebUIDelegatePrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebUIDelegatePrivate.h (192392 => 192393)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebUIDelegatePrivate.h        2015-11-12 23:50:10 UTC (rev 192392)
+++ trunk/Source/WebKit/mac/WebView/WebUIDelegatePrivate.h        2015-11-12 23:55:49 UTC (rev 192393)
</span><span class="lines">@@ -92,6 +92,7 @@
</span><span class="cx"> WebMenuItemTagCapitalize,
</span><span class="cx"> WebMenuItemTagChangeBack,
</span><span class="cx"> WebMenuItemTagOpenMediaInNewWindow,
</span><ins>+ WebMenuItemTagDownloadMediaToDisk,
</ins><span class="cx"> WebMenuItemTagCopyMediaLinkToClipboard,
</span><span class="cx"> WebMenuItemTagToggleMediaControls,
</span><span class="cx"> WebMenuItemTagToggleMediaLoop,
</span><span class="lines">@@ -99,6 +100,8 @@
</span><span class="cx"> WebMenuItemTagMediaPlayPause,
</span><span class="cx"> WebMenuItemTagMediaMute,
</span><span class="cx"> WebMenuItemTagDictationAlternative,
</span><ins>+ WebMenuItemTagToggleVideoFullscreen,
+ WebMenuItemTagShareMenu,
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> // Deprecated; remove when there are no more clients.
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (192392 => 192393)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-11-12 23:50:10 UTC (rev 192392)
+++ trunk/Source/WebKit2/ChangeLog        2015-11-12 23:55:49 UTC (rev 192393)
</span><span class="lines">@@ -1,5 +1,17 @@
</span><span class="cx"> 2015-11-12 Anders Carlsson <andersca@apple.com>
</span><span class="cx">
</span><ins>+ ContextMenuAction and WebMenuItemTag shouldn't have to be in sync
+ https://bugs.webkit.org/show_bug.cgi?id=151226
+
+ Reviewed by Tim Horton.
+
+ * Shared/API/c/WKSharedAPICast.h:
+ (WebKit::toAPI):
+ (WebKit::toImpl):
+ Remove ContextMenuItemTagOpenLinkInThisWindow.
+
+2015-11-12 Anders Carlsson <andersca@apple.com>
+
</ins><span class="cx"> ContextMenuController::contextMenuItemSelected only needs the action and title, not the full item
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=151217
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedAPIcWKSharedAPICasth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/API/c/WKSharedAPICast.h (192392 => 192393)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/API/c/WKSharedAPICast.h        2015-11-12 23:50:10 UTC (rev 192392)
+++ trunk/Source/WebKit2/Shared/API/c/WKSharedAPICast.h        2015-11-12 23:55:49 UTC (rev 192393)
</span><span class="lines">@@ -504,8 +504,6 @@
</span><span class="cx"> case WebCore::ContextMenuItemTagChangeBack:
</span><span class="cx"> return kWKContextMenuItemTagChangeBack;
</span><span class="cx"> #endif
</span><del>- case WebCore::ContextMenuItemTagOpenLinkInThisWindow:
- return kWKContextMenuItemTagOpenLinkInThisWindow;
</del><span class="cx"> case WebCore::ContextMenuItemTagShareMenu:
</span><span class="cx"> return kWKContextMenuItemTagShareMenu;
</span><span class="cx"> default:
</span><span class="lines">@@ -701,7 +699,6 @@
</span><span class="cx"> return WebCore::ContextMenuItemTagShareMenu;
</span><span class="cx"> #endif
</span><span class="cx"> case kWKContextMenuItemTagOpenLinkInThisWindow:
</span><del>- return WebCore::ContextMenuItemTagOpenLinkInThisWindow;
</del><span class="cx"> default:
</span><span class="cx"> if (tag < kWKContextMenuItemBaseApplicationTag)
</span><span class="cx"> LOG_ERROR("WKContextMenuItemTag %i is an unknown tag but is below the allowable custom tag value of %i", tag, kWKContextMenuItemBaseApplicationTag);
</span></span></pre>
</div>
</div>
</body>
</html>