<!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>[180425] trunk/Tools</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/180425">180425</a></dd>
<dt>Author</dt> <dd>timothy_horton@apple.com</dd>
<dt>Date</dt> <dd>2015-02-20 11:13:33 -0800 (Fri, 20 Feb 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>[WebEditingTester] Factor out list of editing operations
https://bugs.webkit.org/show_bug.cgi?id=141826

Reviewed by Sam Weinig.

* WebEditingTester/AppDelegate.m:
(-[WebEditingAppDelegate showOperations:]):
* WebEditingTester/EditingOperations.h: Added.
* WebEditingTester/EditingOperations.m: Added.
(editingOperations):
* WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj:
Move EditingOperations array to its own file, and make it an NSArray
instead of a C array. Adjust accordingly in showOperations:.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsWebEditingTesterAppDelegatem">trunk/Tools/WebEditingTester/AppDelegate.m</a></li>
<li><a href="#trunkToolsWebEditingTesterWebEditingTesterxcodeprojprojectpbxproj">trunk/Tools/WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkToolsWebEditingTesterEditingOperationsh">trunk/Tools/WebEditingTester/EditingOperations.h</a></li>
<li><a href="#trunkToolsWebEditingTesterEditingOperationsm">trunk/Tools/WebEditingTester/EditingOperations.m</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (180424 => 180425)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-02-20 18:49:19 UTC (rev 180424)
+++ trunk/Tools/ChangeLog        2015-02-20 19:13:33 UTC (rev 180425)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2015-02-20  Timothy Horton  &lt;timothy_horton@apple.com&gt;
+
+        [WebEditingTester] Factor out list of editing operations
+        https://bugs.webkit.org/show_bug.cgi?id=141826
+
+        Reviewed by Sam Weinig.
+
+        * WebEditingTester/AppDelegate.m:
+        (-[WebEditingAppDelegate showOperations:]):
+        * WebEditingTester/EditingOperations.h: Added.
+        * WebEditingTester/EditingOperations.m: Added.
+        (editingOperations):
+        * WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj:
+        Move EditingOperations array to its own file, and make it an NSArray
+        instead of a C array. Adjust accordingly in showOperations:.
+
</ins><span class="cx"> 2015-02-20  Michael Saboff  &lt;msaboff@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         DFG JIT needs to check for stack overflow at the start of Program and Eval execution
</span></span></pre></div>
<a id="trunkToolsWebEditingTesterAppDelegatem"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebEditingTester/AppDelegate.m (180424 => 180425)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/AppDelegate.m        2015-02-20 18:49:19 UTC (rev 180424)
+++ trunk/Tools/WebEditingTester/AppDelegate.m        2015-02-20 19:13:33 UTC (rev 180425)
</span><span class="lines">@@ -25,6 +25,7 @@
</span><span class="cx"> 
</span><span class="cx"> #import &quot;AppDelegate.h&quot;
</span><span class="cx"> 
</span><ins>+#import &quot;EditingOperations.h&quot;
</ins><span class="cx"> #import &quot;WK1WebDocumentController.h&quot;
</span><span class="cx"> #import &quot;WK2WebDocumentController.h&quot;
</span><span class="cx"> #import &lt;WebKit/WKPreferencesPrivate.h&gt;
</span><span class="lines">@@ -92,130 +93,19 @@
</span><span class="cx"> - (IBAction)showOperations:(id)sender
</span><span class="cx"> {
</span><span class="cx">     static BOOL initialized = NO;
</span><del>-    static NSString *operationNames[] = {
-        @&quot;alignCenter:&quot;,
-        @&quot;alignJustified:&quot;,
-        @&quot;alignLeft:&quot;,
-        @&quot;alignRight:&quot;,
-        @&quot;capitalizeWord:&quot;,
-        @&quot;centerSelectionInVisibleArea:&quot;,
-        @&quot;changeCaseOfLetter:&quot;,
-        @&quot;checkSpelling:&quot;,
-        @&quot;complete:&quot;,
-        @&quot;copy:&quot;,
-        @&quot;copyFont:&quot;,
-        @&quot;cut:&quot;,
-        @&quot;delete:&quot;,
-        @&quot;deleteBackward:&quot;,
-        @&quot;deleteBackwardByDecomposingPreviousCharacter:&quot;,
-        @&quot;deleteForward:&quot;,
-        @&quot;deleteToBeginningOfLine:&quot;,
-        @&quot;deleteToBeginningOfParagraph:&quot;,
-        @&quot;deleteToEndOfLine:&quot;,
-        @&quot;deleteToEndOfParagraph:&quot;,
-        @&quot;deleteToMark:&quot;,
-        @&quot;deleteWordBackward:&quot;,
-        @&quot;deleteWordForward:&quot;,
-        @&quot;ignoreSpelling:&quot;,
-        @&quot;indent:&quot;,
-        @&quot;insertBacktab:&quot;,
-        @&quot;insertLineBreak:&quot;,
-        @&quot;insertNewline:&quot;,
-        @&quot;insertNewlineIgnoringFieldEditor:&quot;,
-        @&quot;insertParagraphSeparator:&quot;,
-        @&quot;insertTab:&quot;,
-        @&quot;insertTabIgnoringFieldEditor:&quot;,
-        @&quot;insertTable:&quot;,
-        @&quot;lowercaseWord:&quot;,
-        @&quot;moveBackward:&quot;,
-        @&quot;moveBackwardAndModifySelection:&quot;,
-        @&quot;moveDown:&quot;,
-        @&quot;moveDownAndModifySelection:&quot;,
-        @&quot;moveForward:&quot;,
-        @&quot;moveForwardAndModifySelection:&quot;,
-        @&quot;moveLeft:&quot;,
-        @&quot;moveLeftAndModifySelection:&quot;,
-        @&quot;moveParagraphBackwardAndModifySelection:&quot;,
-        @&quot;moveParagraphForwardAndModifySelection:&quot;,
-        @&quot;moveRight:&quot;,
-        @&quot;moveRightAndModifySelection:&quot;,
-        @&quot;moveToBeginningOfDocument:&quot;,
-        @&quot;moveToBeginningOfDocumentAndModifySelection:&quot;,
-        @&quot;moveToBeginningOfSentence:&quot;,
-        @&quot;moveToBeginningOfSentenceAndModifySelection:&quot;,
-        @&quot;moveToBeginningOfLine:&quot;,
-        @&quot;moveToBeginningOfLineAndModifySelection:&quot;,
-        @&quot;moveToBeginningOfParagraph:&quot;,
-        @&quot;moveToBeginningOfParagraphAndModifySelection:&quot;,
-        @&quot;moveToEndOfDocument:&quot;,
-        @&quot;moveToEndOfDocumentAndModifySelection:&quot;,
-        @&quot;moveToEndOfSentence:&quot;,
-        @&quot;moveToEndOfSentenceAndModifySelection:&quot;,
-        @&quot;moveToEndOfLine:&quot;,
-        @&quot;moveToEndOfLineAndModifySelection:&quot;,
-        @&quot;moveToEndOfParagraph:&quot;,
-        @&quot;moveToEndOfParagraphAndModifySelection:&quot;,
-        @&quot;moveUp:&quot;,
-        @&quot;moveUpAndModifySelection:&quot;,
-        @&quot;moveWordBackward:&quot;,
-        @&quot;moveWordBackwardAndModifySelection:&quot;,
-        @&quot;moveWordForward:&quot;,
-        @&quot;moveWordForwardAndModifySelection:&quot;,
-        @&quot;moveWordLeft:&quot;,
-        @&quot;moveWordLeftAndModifySelection:&quot;,
-        @&quot;moveWordRight:&quot;,
-        @&quot;moveWordRightAndModifySelection:&quot;,
-        @&quot;outline:&quot;,
-        @&quot;pageDown:&quot;,
-        @&quot;pageDownAndModifySelection:&quot;,
-        @&quot;pageUp:&quot;,
-        @&quot;pageUpAndModifySelection:&quot;,
-        @&quot;paste:&quot;,
-        @&quot;pasteAsPlainText:&quot;,
-        @&quot;pasteAsRichText:&quot;,
-        @&quot;pasteFont:&quot;,
-        @&quot;scrollLineDown:&quot;,
-        @&quot;scrollLineUp:&quot;,
-        @&quot;scrollPageDown:&quot;,
-        @&quot;scrollPageUp:&quot;,
-        @&quot;selectAll:&quot;,
-        @&quot;selectSentence:&quot;,
-        @&quot;selectLine:&quot;,
-        @&quot;selectParagraph:&quot;,
-        @&quot;selectToMark:&quot;,
-        @&quot;selectWord:&quot;,
-        @&quot;setMark:&quot;,
-        @&quot;showGuessPanel:&quot;,
-        @&quot;startSpeaking:&quot;,
-        @&quot;stopSpeaking:&quot;,
-        @&quot;subscript:&quot;,
-        @&quot;superscript:&quot;,
-        @&quot;swapWithMark:&quot;,
-        @&quot;takeFindStringFromSelection:&quot;,
-        @&quot;toggleContinuousSpellChecking:&quot;,
-        @&quot;toggleSmartInsertDelete:&quot;,
-        @&quot;transpose:&quot;,
-        @&quot;transposeWords:&quot;,
-        @&quot;underline:&quot;,
-        @&quot;unscript:&quot;,
-        @&quot;uppercaseWord:&quot;,
-        @&quot;yank:&quot;,
-        @&quot;yankAndSelect:&quot;,
-        NULL
-    };
</del><span class="cx"> 
</span><span class="cx">     if (!initialized) {
</span><span class="cx">         NSFont *font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSMiniControlSize]];
</span><span class="cx">         NSDictionary *attributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
</span><ins>+        NSArray *operations = editingOperations();
</ins><span class="cx">         
</span><span class="cx">         float maxWidth = 0;
</span><del>-        int i;
-        for (i = 0; operationNames[i]; ++i)
-            maxWidth = MAX(maxWidth, [operationNames[i] sizeWithAttributes:attributes].width);
</del><ins>+        for (NSString *operationName in operations)
+            maxWidth = MAX(maxWidth, [operationName sizeWithAttributes:attributes].width);
</ins><span class="cx"> 
</span><span class="cx">         maxWidth += 24;
</span><span class="cx">         
</span><del>-        int columnHeight = (i + 2) / 3;
</del><ins>+        unsigned long columnHeight = (operations.count + 2) / 3;
</ins><span class="cx">         
</span><span class="cx">         NSView *superview = [_operationsPanel contentView];
</span><span class="cx">         
</span><span class="lines">@@ -224,7 +114,7 @@
</span><span class="cx">         float firstY = NSMaxY([superview frame]) - 1;
</span><span class="cx">         float y = firstY;
</span><span class="cx">         float x = 0;
</span><del>-        for (i = 0; operationNames[i]; ++i) {
</del><ins>+        for (NSString *operationName in operations) {
</ins><span class="cx">             y -= 16;
</span><span class="cx">             if (y &lt; 0) {
</span><span class="cx">                 y = firstY - 16;
</span><span class="lines">@@ -234,8 +124,8 @@
</span><span class="cx">             [button setBezelStyle:NSRoundedBezelStyle];
</span><span class="cx">             [button.cell setControlSize:NSMiniControlSize];
</span><span class="cx">             [button setFont:font];
</span><del>-            [button setTitle:operationNames[i]];
-            [button setAction:NSSelectorFromString(operationNames[i])];
</del><ins>+            [button setTitle:operationName];
+            [button setAction:NSSelectorFromString(operationName)];
</ins><span class="cx">             [superview addSubview:button];
</span><span class="cx">         }
</span><span class="cx">         
</span></span></pre></div>
<a id="trunkToolsWebEditingTesterEditingOperationsh"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/EditingOperations.h (0 => 180425)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/EditingOperations.h                                (rev 0)
+++ trunk/Tools/WebEditingTester/EditingOperations.h        2015-02-20 19:13:33 UTC (rev 180425)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+@class NSArray;
+
+NSArray *editingOperations();
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterEditingOperationsm"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/EditingOperations.m (0 => 180425)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/EditingOperations.m                                (rev 0)
+++ trunk/Tools/WebEditingTester/EditingOperations.m        2015-02-20 19:13:33 UTC (rev 180425)
</span><span class="lines">@@ -0,0 +1,142 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;EditingOperations.h&quot;
+
+#import &lt;Foundation/Foundation.h&gt;
+
+NSArray *editingOperations()
+{
+    return @[
+        @&quot;alignCenter:&quot;,
+        @&quot;alignJustified:&quot;,
+        @&quot;alignLeft:&quot;,
+        @&quot;alignRight:&quot;,
+        @&quot;capitalizeWord:&quot;,
+        @&quot;centerSelectionInVisibleArea:&quot;,
+        @&quot;changeCaseOfLetter:&quot;,
+        @&quot;checkSpelling:&quot;,
+        @&quot;complete:&quot;,
+        @&quot;copy:&quot;,
+        @&quot;copyFont:&quot;,
+        @&quot;cut:&quot;,
+        @&quot;delete:&quot;,
+        @&quot;deleteBackward:&quot;,
+        @&quot;deleteBackwardByDecomposingPreviousCharacter:&quot;,
+        @&quot;deleteForward:&quot;,
+        @&quot;deleteToBeginningOfLine:&quot;,
+        @&quot;deleteToBeginningOfParagraph:&quot;,
+        @&quot;deleteToEndOfLine:&quot;,
+        @&quot;deleteToEndOfParagraph:&quot;,
+        @&quot;deleteToMark:&quot;,
+        @&quot;deleteWordBackward:&quot;,
+        @&quot;deleteWordForward:&quot;,
+        @&quot;ignoreSpelling:&quot;,
+        @&quot;indent:&quot;,
+        @&quot;insertBacktab:&quot;,
+        @&quot;insertLineBreak:&quot;,
+        @&quot;insertNewline:&quot;,
+        @&quot;insertNewlineIgnoringFieldEditor:&quot;,
+        @&quot;insertParagraphSeparator:&quot;,
+        @&quot;insertTab:&quot;,
+        @&quot;insertTabIgnoringFieldEditor:&quot;,
+        @&quot;insertTable:&quot;,
+        @&quot;lowercaseWord:&quot;,
+        @&quot;moveBackward:&quot;,
+        @&quot;moveBackwardAndModifySelection:&quot;,
+        @&quot;moveDown:&quot;,
+        @&quot;moveDownAndModifySelection:&quot;,
+        @&quot;moveForward:&quot;,
+        @&quot;moveForwardAndModifySelection:&quot;,
+        @&quot;moveLeft:&quot;,
+        @&quot;moveLeftAndModifySelection:&quot;,
+        @&quot;moveParagraphBackwardAndModifySelection:&quot;,
+        @&quot;moveParagraphForwardAndModifySelection:&quot;,
+        @&quot;moveRight:&quot;,
+        @&quot;moveRightAndModifySelection:&quot;,
+        @&quot;moveToBeginningOfDocument:&quot;,
+        @&quot;moveToBeginningOfDocumentAndModifySelection:&quot;,
+        @&quot;moveToBeginningOfSentence:&quot;,
+        @&quot;moveToBeginningOfSentenceAndModifySelection:&quot;,
+        @&quot;moveToBeginningOfLine:&quot;,
+        @&quot;moveToBeginningOfLineAndModifySelection:&quot;,
+        @&quot;moveToBeginningOfParagraph:&quot;,
+        @&quot;moveToBeginningOfParagraphAndModifySelection:&quot;,
+        @&quot;moveToEndOfDocument:&quot;,
+        @&quot;moveToEndOfDocumentAndModifySelection:&quot;,
+        @&quot;moveToEndOfSentence:&quot;,
+        @&quot;moveToEndOfSentenceAndModifySelection:&quot;,
+        @&quot;moveToEndOfLine:&quot;,
+        @&quot;moveToEndOfLineAndModifySelection:&quot;,
+        @&quot;moveToEndOfParagraph:&quot;,
+        @&quot;moveToEndOfParagraphAndModifySelection:&quot;,
+        @&quot;moveUp:&quot;,
+        @&quot;moveUpAndModifySelection:&quot;,
+        @&quot;moveWordBackward:&quot;,
+        @&quot;moveWordBackwardAndModifySelection:&quot;,
+        @&quot;moveWordForward:&quot;,
+        @&quot;moveWordForwardAndModifySelection:&quot;,
+        @&quot;moveWordLeft:&quot;,
+        @&quot;moveWordLeftAndModifySelection:&quot;,
+        @&quot;moveWordRight:&quot;,
+        @&quot;moveWordRightAndModifySelection:&quot;,
+        @&quot;outline:&quot;,
+        @&quot;pageDown:&quot;,
+        @&quot;pageDownAndModifySelection:&quot;,
+        @&quot;pageUp:&quot;,
+        @&quot;pageUpAndModifySelection:&quot;,
+        @&quot;paste:&quot;,
+        @&quot;pasteAsPlainText:&quot;,
+        @&quot;pasteAsRichText:&quot;,
+        @&quot;pasteFont:&quot;,
+        @&quot;scrollLineDown:&quot;,
+        @&quot;scrollLineUp:&quot;,
+        @&quot;scrollPageDown:&quot;,
+        @&quot;scrollPageUp:&quot;,
+        @&quot;selectAll:&quot;,
+        @&quot;selectSentence:&quot;,
+        @&quot;selectLine:&quot;,
+        @&quot;selectParagraph:&quot;,
+        @&quot;selectToMark:&quot;,
+        @&quot;selectWord:&quot;,
+        @&quot;setMark:&quot;,
+        @&quot;showGuessPanel:&quot;,
+        @&quot;startSpeaking:&quot;,
+        @&quot;stopSpeaking:&quot;,
+        @&quot;subscript:&quot;,
+        @&quot;superscript:&quot;,
+        @&quot;swapWithMark:&quot;,
+        @&quot;takeFindStringFromSelection:&quot;,
+        @&quot;toggleContinuousSpellChecking:&quot;,
+        @&quot;toggleSmartInsertDelete:&quot;,
+        @&quot;transpose:&quot;,
+        @&quot;transposeWords:&quot;,
+        @&quot;underline:&quot;,
+        @&quot;unscript:&quot;,
+        @&quot;uppercaseWord:&quot;,
+        @&quot;yank:&quot;,
+        @&quot;yankAndSelect:&quot;
+    ];
+}
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterWebEditingTesterxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj (180424 => 180425)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj        2015-02-20 18:49:19 UTC (rev 180424)
+++ trunk/Tools/WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj        2015-02-20 19:13:33 UTC (rev 180425)
</span><span class="lines">@@ -7,6 +7,7 @@
</span><span class="cx">         objects = {
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXBuildFile section */
</span><ins>+                2D4FFA111A97079D0006360B /* EditingOperations.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D4FFA101A97079D0006360B /* EditingOperations.m */; };
</ins><span class="cx">                 C53E7D0D1A9546E600818F19 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C53E7D0B1A9546E600818F19 /* MainMenu.xib */; };
</span><span class="cx">                 C53E7D0E1A9546E600818F19 /* WebDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = C53E7D0C1A9546E600818F19 /* WebDocument.xib */; };
</span><span class="cx">                 C558CDB31A92D6900059A907 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C558CDB21A92D6900059A907 /* AppDelegate.m */; };
</span><span class="lines">@@ -19,6 +20,8 @@
</span><span class="cx"> /* End PBXBuildFile section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXFileReference section */
</span><ins>+                2D4FFA0F1A97079D0006360B /* EditingOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditingOperations.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D4FFA101A97079D0006360B /* EditingOperations.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EditingOperations.m; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 C53E7D0B1A9546E600818F19 /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C53E7D0C1A9546E600818F19 /* WebDocument.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WebDocument.xib; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C558CDAC1A92D6900059A907 /* WebEditingTester.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WebEditingTester.app; sourceTree = BUILT_PRODUCTS_DIR; };
</span><span class="lines">@@ -79,6 +82,8 @@
</span><span class="cx">                                 C59F9B9E1A93CB630041A959 /* WK2WebDocumentController.m */,
</span><span class="cx">                                 C558CDB61A92D6900059A907 /* WebDocumentController.h */,
</span><span class="cx">                                 C558CDB71A92D6900059A907 /* WebDocumentController.m */,
</span><ins>+                                2D4FFA0F1A97079D0006360B /* EditingOperations.h */,
+                                2D4FFA101A97079D0006360B /* EditingOperations.m */,
</ins><span class="cx">                         );
</span><span class="cx">                         name = WebEditingTester;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -181,6 +186,7 @@
</span><span class="cx">                         files = (
</span><span class="cx">                                 C558CDB81A92D6900059A907 /* WebDocumentController.m in Sources */,
</span><span class="cx">                                 C59F9BA01A93CB630041A959 /* WK2WebDocumentController.m in Sources */,
</span><ins>+                                2D4FFA111A97079D0006360B /* EditingOperations.m in Sources */,
</ins><span class="cx">                                 C558CDB51A92D6900059A907 /* main.m in Sources */,
</span><span class="cx">                                 C558CDB31A92D6900059A907 /* AppDelegate.m in Sources */,
</span><span class="cx">                                 C59F9B9F1A93CB630041A959 /* WK1WebDocumentController.m in Sources */,
</span></span></pre>
</div>
</div>

</body>
</html>