<!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>[180348] 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/180348">180348</a></dd>
<dt>Author</dt> <dd>enrica@apple.com</dd>
<dt>Date</dt> <dd>2015-02-19 10:41:24 -0800 (Thu, 19 Feb 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Add new tool to test editable Webviews.
https://bugs.webkit.org/show_bug.cgi?id=141772
Reviewed by Tim Horton.
Adding WebEditingTester, a Cocoa application to
test WK1 and Wk2 views in editable mode.
* WebEditingTester: Added.
* WebEditingTester/AppDelegate.h: Added.
* WebEditingTester/AppDelegate.m: Added.
(-[WebEditingAppDelegate init]):
(defaultConfiguration):
(-[WebEditingAppDelegate applicationDidFinishLaunching:]):
(-[WebEditingAppDelegate applicationWillTerminate:]):
(-[WebEditingAppDelegate newEditor:]):
(-[WebEditingAppDelegate showOperations:]):
(-[WebEditingAppDelegate useWebKit2ByDefault]):
(-[WebEditingAppDelegate toggleUseWK2ByDefault:]):
(-[WebEditingAppDelegate validateMenuItem:]):
* WebEditingTester/Info.plist: Added.
* WebEditingTester/MainMenu.xib: Added.
* WebEditingTester/WK1WebDocumentController.h: Added.
* WebEditingTester/WK1WebDocumentController.m: Added.
(-[WK1WebDocumentController awakeFromNib]):
(-[WK1WebDocumentController loadContent]):
(-[WK1WebDocumentController dealloc]):
(-[WK1WebDocumentController pasteAsMarkup:]):
* WebEditingTester/WK2WebDocumentController.h: Added.
* WebEditingTester/WK2WebDocumentController.m: Added.
(-[WK2WebDocumentController initWithConfiguration:]):
(-[WK2WebDocumentController pasteAsMarkup:]):
(-[WK2WebDocumentController awakeFromNib]):
(-[WK2WebDocumentController dealloc]):
(-[WK2WebDocumentController loadContent]):
* WebEditingTester/WebDocument.xib: Added.
* WebEditingTester/WebDocumentController.h: Added.
* WebEditingTester/WebDocumentController.m: Added.
(-[WebDocumentController initWithWindow:]):
(-[WebDocumentController windowDidLoad]):
(-[WebDocumentController defaultEditingSource]):
(-[WebDocumentController applicationTerminating]):
(-[WebDocumentController loadContent]):
* WebEditingTester/WebEditingTester.xcodeproj: Added.
* WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Added.
* WebEditingTester/main.m: Added.
(main):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li>trunk/Tools/WebEditingTester/</li>
<li><a href="#trunkToolsWebEditingTesterAppDelegateh">trunk/Tools/WebEditingTester/AppDelegate.h</a></li>
<li><a href="#trunkToolsWebEditingTesterAppDelegatem">trunk/Tools/WebEditingTester/AppDelegate.m</a></li>
<li><a href="#trunkToolsWebEditingTesterInfoplist">trunk/Tools/WebEditingTester/Info.plist</a></li>
<li><a href="#trunkToolsWebEditingTesterMainMenuxib">trunk/Tools/WebEditingTester/MainMenu.xib</a></li>
<li><a href="#trunkToolsWebEditingTesterWK1WebDocumentControllerh">trunk/Tools/WebEditingTester/WK1WebDocumentController.h</a></li>
<li><a href="#trunkToolsWebEditingTesterWK1WebDocumentControllerm">trunk/Tools/WebEditingTester/WK1WebDocumentController.m</a></li>
<li><a href="#trunkToolsWebEditingTesterWK2WebDocumentControllerh">trunk/Tools/WebEditingTester/WK2WebDocumentController.h</a></li>
<li><a href="#trunkToolsWebEditingTesterWK2WebDocumentControllerm">trunk/Tools/WebEditingTester/WK2WebDocumentController.m</a></li>
<li><a href="#trunkToolsWebEditingTesterWebDocumentxib">trunk/Tools/WebEditingTester/WebDocument.xib</a></li>
<li><a href="#trunkToolsWebEditingTesterWebDocumentControllerh">trunk/Tools/WebEditingTester/WebDocumentController.h</a></li>
<li><a href="#trunkToolsWebEditingTesterWebDocumentControllerm">trunk/Tools/WebEditingTester/WebDocumentController.m</a></li>
<li>trunk/Tools/WebEditingTester/WebEditingTester.xcodeproj/</li>
<li><a href="#trunkToolsWebEditingTesterWebEditingTesterxcodeprojprojectpbxproj">trunk/Tools/WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkToolsWebEditingTestermainm">trunk/Tools/WebEditingTester/main.m</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (180347 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-02-19 18:36:40 UTC (rev 180347)
+++ trunk/Tools/ChangeLog        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -1,3 +1,53 @@
</span><ins>+2015-02-18 Enrica Casucci <enrica@apple.com>
+
+ Add new tool to test editable Webviews.
+ https://bugs.webkit.org/show_bug.cgi?id=141772
+
+ Reviewed by Tim Horton.
+
+ Adding WebEditingTester, a Cocoa application to
+ test WK1 and Wk2 views in editable mode.
+
+ * WebEditingTester: Added.
+ * WebEditingTester/AppDelegate.h: Added.
+ * WebEditingTester/AppDelegate.m: Added.
+ (-[WebEditingAppDelegate init]):
+ (defaultConfiguration):
+ (-[WebEditingAppDelegate applicationDidFinishLaunching:]):
+ (-[WebEditingAppDelegate applicationWillTerminate:]):
+ (-[WebEditingAppDelegate newEditor:]):
+ (-[WebEditingAppDelegate showOperations:]):
+ (-[WebEditingAppDelegate useWebKit2ByDefault]):
+ (-[WebEditingAppDelegate toggleUseWK2ByDefault:]):
+ (-[WebEditingAppDelegate validateMenuItem:]):
+ * WebEditingTester/Info.plist: Added.
+ * WebEditingTester/MainMenu.xib: Added.
+ * WebEditingTester/WK1WebDocumentController.h: Added.
+ * WebEditingTester/WK1WebDocumentController.m: Added.
+ (-[WK1WebDocumentController awakeFromNib]):
+ (-[WK1WebDocumentController loadContent]):
+ (-[WK1WebDocumentController dealloc]):
+ (-[WK1WebDocumentController pasteAsMarkup:]):
+ * WebEditingTester/WK2WebDocumentController.h: Added.
+ * WebEditingTester/WK2WebDocumentController.m: Added.
+ (-[WK2WebDocumentController initWithConfiguration:]):
+ (-[WK2WebDocumentController pasteAsMarkup:]):
+ (-[WK2WebDocumentController awakeFromNib]):
+ (-[WK2WebDocumentController dealloc]):
+ (-[WK2WebDocumentController loadContent]):
+ * WebEditingTester/WebDocument.xib: Added.
+ * WebEditingTester/WebDocumentController.h: Added.
+ * WebEditingTester/WebDocumentController.m: Added.
+ (-[WebDocumentController initWithWindow:]):
+ (-[WebDocumentController windowDidLoad]):
+ (-[WebDocumentController defaultEditingSource]):
+ (-[WebDocumentController applicationTerminating]):
+ (-[WebDocumentController loadContent]):
+ * WebEditingTester/WebEditingTester.xcodeproj: Added.
+ * WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Added.
+ * WebEditingTester/main.m: Added.
+ (main):
+
</ins><span class="cx"> 2015-02-18 Csaba Osztrogonác <ossy@webkit.org>
</span><span class="cx">
</span><span class="cx"> Run JSC tests on ARM EFL bots
</span></span></pre></div>
<a id="trunkToolsWebEditingTesterAppDelegateh"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/AppDelegate.h (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/AppDelegate.h         (rev 0)
+++ trunk/Tools/WebEditingTester/AppDelegate.h        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,39 @@
</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 <Cocoa/Cocoa.h>
+
+@interface WebEditingAppDelegate : NSObject <NSApplicationDelegate> {
+ NSMutableSet *_webDocuments;
+ IBOutlet NSMenuItem *_newWK1EditorItem;
+ IBOutlet NSMenuItem *_newWK2EditorItem;
+ IBOutlet NSPanel *_operationsPanel;
+}
+- (IBAction)newEditor:(id)sender;
+- (IBAction)showOperations:(id)sender;
+- (IBAction)toggleUseWK2ByDefault:(id)sender;
+
+@end
+
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterAppDelegatem"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/AppDelegate.m (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/AppDelegate.m         (rev 0)
+++ trunk/Tools/WebEditingTester/AppDelegate.m        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,272 @@
</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 "AppDelegate.h"
+
+#import "WK1WebDocumentController.h"
+#import "WK2WebDocumentController.h"
+#import <WebKit/WKPreferencesPrivate.h>
+#import <WebKit/WKWebViewConfigurationPrivate.h>
+#import <WebKit/WebKit.h>
+#import <WebKit/_WKWebsiteDataStore.h>
+
+static NSString * const UseWebKit2ByDefaultPreferenceKey = @"UseWebKit2ByDefault";
+
+@implementation WebEditingAppDelegate
+- (id)init
+{
+ self = [super init];
+ if (self)
+ _webDocuments = [[NSMutableSet alloc] init];
+
+ return self;
+}
+
+static WKWebViewConfiguration *defaultConfiguration()
+{
+ static WKWebViewConfiguration *configuration;
+
+ if (!configuration) {
+ configuration = [[WKWebViewConfiguration alloc] init];
+ configuration.preferences._fullScreenEnabled = YES;
+ configuration.preferences._developerExtrasEnabled = YES;
+ }
+
+ return configuration;
+}
+
+
+- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
+{
+ [self newEditor:self];
+}
+
+- (void)applicationWillTerminate:(NSNotification *)aNotification
+{
+ for (WebDocumentController *documents in _webDocuments)
+ [documents applicationTerminating];
+}
+
+- (IBAction)newEditor:(id)sender
+{
+ BOOL useWebKit2 = NO;
+
+ if (sender == self)
+ useWebKit2 = [self useWebKit2ByDefault];
+ else if (sender == _newWK2EditorItem)
+ useWebKit2 = YES;
+
+ WebDocumentController *controller = nil;
+ if (useWebKit2)
+ controller = [[WK2WebDocumentController alloc] initWithConfiguration:defaultConfiguration()];
+ else
+ controller = [[WK1WebDocumentController alloc] initWithWindowNibName:@"WebDocument"];
+
+ [[controller window] makeKeyAndOrderFront:sender];
+ [_webDocuments addObject:controller];
+ [controller loadContent];
+}
+
+- (IBAction)showOperations:(id)sender
+{
+ static BOOL initialized = NO;
+ static NSString *operationNames[] = {
+ @"alignCenter:",
+ @"alignJustified:",
+ @"alignLeft:",
+ @"alignRight:",
+ @"capitalizeWord:",
+ @"centerSelectionInVisibleArea:",
+ @"changeCaseOfLetter:",
+ @"checkSpelling:",
+ @"complete:",
+ @"copy:",
+ @"copyFont:",
+ @"cut:",
+ @"delete:",
+ @"deleteBackward:",
+ @"deleteBackwardByDecomposingPreviousCharacter:",
+ @"deleteForward:",
+ @"deleteToBeginningOfLine:",
+ @"deleteToBeginningOfParagraph:",
+ @"deleteToEndOfLine:",
+ @"deleteToEndOfParagraph:",
+ @"deleteToMark:",
+ @"deleteWordBackward:",
+ @"deleteWordForward:",
+ @"ignoreSpelling:",
+ @"indent:",
+ @"insertBacktab:",
+ @"insertLineBreak:",
+ @"insertNewline:",
+ @"insertNewlineIgnoringFieldEditor:",
+ @"insertParagraphSeparator:",
+ @"insertTab:",
+ @"insertTabIgnoringFieldEditor:",
+ @"insertTable:",
+ @"lowercaseWord:",
+ @"moveBackward:",
+ @"moveBackwardAndModifySelection:",
+ @"moveDown:",
+ @"moveDownAndModifySelection:",
+ @"moveForward:",
+ @"moveForwardAndModifySelection:",
+ @"moveLeft:",
+ @"moveLeftAndModifySelection:",
+ @"moveParagraphBackwardAndModifySelection:",
+ @"moveParagraphForwardAndModifySelection:",
+ @"moveRight:",
+ @"moveRightAndModifySelection:",
+ @"moveToBeginningOfDocument:",
+ @"moveToBeginningOfDocumentAndModifySelection:",
+ @"moveToBeginningOfSentence:",
+ @"moveToBeginningOfSentenceAndModifySelection:",
+ @"moveToBeginningOfLine:",
+ @"moveToBeginningOfLineAndModifySelection:",
+ @"moveToBeginningOfParagraph:",
+ @"moveToBeginningOfParagraphAndModifySelection:",
+ @"moveToEndOfDocument:",
+ @"moveToEndOfDocumentAndModifySelection:",
+ @"moveToEndOfSentence:",
+ @"moveToEndOfSentenceAndModifySelection:",
+ @"moveToEndOfLine:",
+ @"moveToEndOfLineAndModifySelection:",
+ @"moveToEndOfParagraph:",
+ @"moveToEndOfParagraphAndModifySelection:",
+ @"moveUp:",
+ @"moveUpAndModifySelection:",
+ @"moveWordBackward:",
+ @"moveWordBackwardAndModifySelection:",
+ @"moveWordForward:",
+ @"moveWordForwardAndModifySelection:",
+ @"moveWordLeft:",
+ @"moveWordLeftAndModifySelection:",
+ @"moveWordRight:",
+ @"moveWordRightAndModifySelection:",
+ @"outline:",
+ @"pageDown:",
+ @"pageDownAndModifySelection:",
+ @"pageUp:",
+ @"pageUpAndModifySelection:",
+ @"paste:",
+ @"pasteAsPlainText:",
+ @"pasteAsRichText:",
+ @"pasteFont:",
+ @"scrollLineDown:",
+ @"scrollLineUp:",
+ @"scrollPageDown:",
+ @"scrollPageUp:",
+ @"selectAll:",
+ @"selectSentence:",
+ @"selectLine:",
+ @"selectParagraph:",
+ @"selectToMark:",
+ @"selectWord:",
+ @"setMark:",
+ @"showGuessPanel:",
+ @"startSpeaking:",
+ @"stopSpeaking:",
+ @"subscript:",
+ @"superscript:",
+ @"swapWithMark:",
+ @"takeFindStringFromSelection:",
+ @"toggleContinuousSpellChecking:",
+ @"toggleSmartInsertDelete:",
+ @"transpose:",
+ @"transposeWords:",
+ @"underline:",
+ @"unscript:",
+ @"uppercaseWord:",
+ @"yank:",
+ @"yankAndSelect:",
+ NULL
+ };
+
+ if (!initialized) {
+ NSFont *font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSMiniControlSize]];
+ NSDictionary *attributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
+
+ float maxWidth = 0;
+ int i;
+ for (i = 0; operationNames[i]; ++i)
+ maxWidth = MAX(maxWidth, [operationNames[i] sizeWithAttributes:attributes].width);
+
+ maxWidth += 24;
+
+ int columnHeight = (i + 2) / 3;
+
+ NSView *superview = [_operationsPanel contentView];
+
+ [_operationsPanel setContentSize:NSMakeSize(3 * maxWidth, columnHeight * 16 + 1)];
+
+ float firstY = NSMaxY([superview frame]) - 1;
+ float y = firstY;
+ float x = 0;
+ for (i = 0; operationNames[i]; ++i) {
+ y -= 16;
+ if (y < 0) {
+ y = firstY - 16;
+ x += maxWidth;
+ }
+ NSButton *button = [[[NSButton alloc] initWithFrame:NSMakeRect(x, y, maxWidth, 16)] autorelease];
+ [button setBezelStyle:NSRoundedBezelStyle];
+ [button.cell setControlSize:NSMiniControlSize];
+ [button setFont:font];
+ [button setTitle:operationNames[i]];
+ [button setAction:NSSelectorFromString(operationNames[i])];
+ [superview addSubview:button];
+ }
+
+ [_operationsPanel center];
+ [_operationsPanel setFloatingPanel:YES];
+ [_operationsPanel setBecomesKeyOnlyIfNeeded:YES];
+ initialized = YES;
+ }
+
+ [_operationsPanel orderFront:nil];
+}
+
+- (BOOL)useWebKit2ByDefault
+{
+ return [[NSUserDefaults standardUserDefaults] boolForKey:UseWebKit2ByDefaultPreferenceKey];
+}
+
+- (IBAction)toggleUseWK2ByDefault:(id)sender
+{
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+ [defaults setBool:![defaults boolForKey:UseWebKit2ByDefaultPreferenceKey] forKey:UseWebKit2ByDefaultPreferenceKey];
+}
+
+- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
+{
+ SEL action = [menuItem action];
+
+ if (action == @selector(toggleUseWK2ByDefault:))
+ [menuItem setState:[self useWebKit2ByDefault] ? NSOnState : NSOffState];
+
+ return YES;
+}
+
+@end
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterInfoplist"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/Info.plist (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/Info.plist         (rev 0)
+++ trunk/Tools/WebEditingTester/Info.plist        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+        <key>CFBundleDevelopmentRegion</key>
+        <string>en</string>
+        <key>CFBundleExecutable</key>
+        <string>$(EXECUTABLE_NAME)</string>
+        <key>CFBundleIconFile</key>
+        <string></string>
+        <key>CFBundleIdentifier</key>
+        <string>org.webkit.WebEditingTester</string>
+        <key>CFBundleInfoDictionaryVersion</key>
+        <string>6.0</string>
+        <key>CFBundleName</key>
+        <string>$(PRODUCT_NAME)</string>
+        <key>CFBundlePackageType</key>
+        <string>APPL</string>
+        <key>CFBundleShortVersionString</key>
+        <string>1.0</string>
+        <key>CFBundleSignature</key>
+        <string>????</string>
+        <key>CFBundleVersion</key>
+        <string>1</string>
+        <key>LSMinimumSystemVersion</key>
+        <string>$(MACOSX_DEPLOYMENT_TARGET)</string>
+        <key>NSMainNibFile</key>
+        <string>MainMenu</string>
+        <key>NSPrincipalClass</key>
+        <string>NSApplication</string>
+</dict>
+</plist>
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterMainMenuxib"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/MainMenu.xib (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/MainMenu.xib         (rev 0)
+++ trunk/Tools/WebEditingTester/MainMenu.xib        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,700 @@
</span><ins>+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="8034" systemVersion="14D87" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+ <dependencies>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="8034"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
+ <connections>
+ <outlet property="delegate" destination="Voe-Tx-rLC" id="wPy-Qu-E0P"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+ <customObject id="Voe-Tx-rLC" userLabel="Delegate" customClass="WebEditingAppDelegate">
+ <connections>
+ <outlet property="_newWK1EditorItem" destination="2Pd-3X-Tvf" id="oy2-LL-9U7"/>
+ <outlet property="_newWK2EditorItem" destination="kzr-0m-cAu" id="vsf-6z-Lk3"/>
+ <outlet property="_operationsPanel" destination="XRZ-ss-zpK" id="YJ2-gq-nmx"/>
+ </connections>
+ </customObject>
+ <customObject id="YLy-65-1bz" customClass="NSFontManager"/>
+ <menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
+ <items>
+ <menuItem title="WebEditingTester" id="1Xt-HY-uBw">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="WebEditingTester" systemMenu="apple" id="uQy-DD-JDr">
+ <items>
+ <menuItem title="About WebEditingTester" id="5kV-Vb-QxS">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
+ <menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
+ <menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
+ <menuItem title="Services" id="NMo-om-nkz">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
+ <menuItem title="Hide WebEditingTester" keyEquivalent="h" id="Olw-nP-bQN">
+ <connections>
+ <action selector="hide:" target="-1" id="PnN-Uc-m68"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
+ <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+ <connections>
+ <action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Show All" id="Kd2-mp-pUS">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
+ <menuItem title="Quit WebEditingTester" keyEquivalent="q" id="4sb-4s-VLi">
+ <connections>
+ <action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="File" id="dMs-cI-mzQ">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="File" id="bib-Uj-vzu">
+ <items>
+ <menuItem title="New WK1 Editor" id="2Pd-3X-Tvf" userLabel="New WK1 Editor">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="newEditor:" target="Voe-Tx-rLC" id="21m-3B-oXY"/>
+ </connections>
+ </menuItem>
+ <menuItem title="New WK2 Editor" id="kzr-0m-cAu" userLabel="New WK2 Editor">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="newEditor:" target="Voe-Tx-rLC" id="Za3-gM-3R7"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
+ <connections>
+ <action selector="openDocument:" target="-1" id="bVn-NM-KNZ"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Open Recent" id="tXI-mr-wws">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
+ <items>
+ <menuItem title="Clear Menu" id="vNY-rz-j42">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="clearRecentDocuments:" target="-1" id="Daa-9d-B3U"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
+ <menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
+ <connections>
+ <action selector="performClose:" target="-1" id="HmO-Ls-i7Q"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Save…" keyEquivalent="s" id="pxx-59-PXV">
+ <connections>
+ <action selector="saveDocument:" target="-1" id="teZ-XB-qJY"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Save As…" keyEquivalent="S" id="Bw7-FT-i3A">
+ <connections>
+ <action selector="saveDocumentAs:" target="-1" id="mDf-zr-I0C"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
+ <menuItem title="Page Setup…" keyEquivalent="P" id="qIS-W8-SiK">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ <connections>
+ <action selector="runPageLayout:" target="-1" id="Din-rz-gC5"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Print…" keyEquivalent="p" id="aTl-1u-JFS">
+ <connections>
+ <action selector="printDocument:" target="-1" id="qaZ-4w-aoO"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Edit" id="5QF-Oa-p0T">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Edit" id="W48-6f-4Dl">
+ <items>
+ <menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
+ <connections>
+ <action selector="undo:" target="-1" id="M6e-cu-g7V"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
+ <connections>
+ <action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
+ <menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
+ <connections>
+ <action selector="cut:" target="-1" id="YJe-68-I9s"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
+ <connections>
+ <action selector="copy:" target="-1" id="G1f-GL-Joy"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
+ <connections>
+ <action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
+ <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+ <connections>
+ <action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Delete" id="pa3-QI-u2k">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
+ <connections>
+ <action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
+ <menuItem title="Find" id="4EN-yA-p0u">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Find" id="1b7-l0-nxx">
+ <items>
+ <menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
+ <connections>
+ <action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
+ <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+ <connections>
+ <action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
+ <connections>
+ <action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
+ <connections>
+ <action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
+ <connections>
+ <action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
+ <connections>
+ <action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
+ <items>
+ <menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
+ <connections>
+ <action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
+ <connections>
+ <action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
+ <menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Substitutions" id="9ic-FL-obx">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
+ <items>
+ <menuItem title="Show Substitutions" id="z6F-FW-3nz">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
+ <menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Smart Quotes" id="hQb-2v-fYv">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Smart Dashes" id="rgM-f4-ycn">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Smart Links" id="cwL-P1-jid">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Data Detectors" id="tRr-pd-1PS">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Text Replacement" id="HFQ-gK-NFA">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Transformations" id="2oI-Rn-ZJC">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Transformations" id="c8a-y6-VQd">
+ <items>
+ <menuItem title="Make Upper Case" id="vmV-6d-7jI">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Make Lower Case" id="d9M-CD-aMd">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Capitalize" id="UEZ-Bs-lqG">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Speech" id="xrE-MZ-jX0">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Speech" id="3rS-ZA-NoH">
+ <items>
+ <menuItem title="Start Speaking" id="Ynk-f8-cLZ">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Stop Speaking" id="Oyz-dy-DGm">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Format" id="jxT-CU-nIS">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Format" id="GEO-Iw-cKr">
+ <items>
+ <menuItem title="Font" id="Gi5-1S-RQB">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Font" systemMenu="font" id="aXa-aM-Jaq">
+ <items>
+ <menuItem title="Show Fonts" keyEquivalent="t" id="Q5e-8K-NDq">
+ <connections>
+ <action selector="orderFrontFontPanel:" target="YLy-65-1bz" id="WHr-nq-2xA"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Bold" tag="2" keyEquivalent="b" id="GB9-OM-e27">
+ <connections>
+ <action selector="addFontTrait:" target="YLy-65-1bz" id="hqk-hr-sYV"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Italic" tag="1" keyEquivalent="i" id="Vjx-xi-njq">
+ <connections>
+ <action selector="addFontTrait:" target="YLy-65-1bz" id="IHV-OB-c03"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Underline" keyEquivalent="u" id="WRG-CD-K1S">
+ <connections>
+ <action selector="underline:" target="-1" id="FYS-2b-JAY"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="5gT-KC-WSO"/>
+ <menuItem title="Bigger" tag="3" keyEquivalent="+" id="Ptp-SP-VEL">
+ <connections>
+ <action selector="modifyFont:" target="YLy-65-1bz" id="Uc7-di-UnL"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Smaller" tag="4" keyEquivalent="-" id="i1d-Er-qST">
+ <connections>
+ <action selector="modifyFont:" target="YLy-65-1bz" id="HcX-Lf-eNd"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="kx3-Dk-x3B"/>
+ <menuItem title="Kern" id="jBQ-r6-VK2">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Kern" id="tlD-Oa-oAM">
+ <items>
+ <menuItem title="Use Default" id="GUa-eO-cwY">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="useStandardKerning:" target="-1" id="6dk-9l-Ckg"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Use None" id="cDB-IK-hbR">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="turnOffKerning:" target="-1" id="U8a-gz-Maa"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Tighten" id="46P-cB-AYj">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="tightenKerning:" target="-1" id="hr7-Nz-8ro"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Loosen" id="ogc-rX-tC1">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="loosenKerning:" target="-1" id="8i4-f9-FKE"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Ligatures" id="o6e-r0-MWq">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Ligatures" id="w0m-vy-SC9">
+ <items>
+ <menuItem title="Use Default" id="agt-UL-0e3">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="useStandardLigatures:" target="-1" id="7uR-wd-Dx6"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Use None" id="J7y-lM-qPV">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="turnOffLigatures:" target="-1" id="iX2-gA-Ilz"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Use All" id="xQD-1f-W4t">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="useAllLigatures:" target="-1" id="KcB-kA-TuK"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Baseline" id="OaQ-X3-Vso">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Baseline" id="ijk-EB-dga">
+ <items>
+ <menuItem title="Use Default" id="3Om-Ey-2VK">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="unscript:" target="-1" id="0vZ-95-Ywn"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Superscript" id="Rqc-34-cIF">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="superscript:" target="-1" id="3qV-fo-wpU"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Subscript" id="I0S-gh-46l">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="subscript:" target="-1" id="Q6W-4W-IGz"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Raise" id="2h7-ER-AoG">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="raiseBaseline:" target="-1" id="4sk-31-7Q9"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Lower" id="1tx-W0-xDw">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="lowerBaseline:" target="-1" id="OF1-bc-KW4"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="Ndw-q3-faq"/>
+ <menuItem title="Show Colors" keyEquivalent="C" id="bgn-CT-cEk">
+ <connections>
+ <action selector="orderFrontColorPanel:" target="-1" id="mSX-Xz-DV3"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="iMs-zA-UFJ"/>
+ <menuItem title="Copy Style" keyEquivalent="c" id="5Vv-lz-BsD">
+ <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+ <connections>
+ <action selector="copyFont:" target="-1" id="GJO-xA-L4q"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Paste Style" keyEquivalent="v" id="vKC-jM-MkH">
+ <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+ <connections>
+ <action selector="pasteFont:" target="-1" id="JfD-CL-leO"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Text" id="Fal-I4-PZk">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Text" id="d9c-me-L2H">
+ <items>
+ <menuItem title="Align Left" keyEquivalent="{" id="ZM1-6Q-yy1">
+ <connections>
+ <action selector="alignLeft:" target="-1" id="zUv-R1-uAa"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Center" keyEquivalent="|" id="VIY-Ag-zcb">
+ <connections>
+ <action selector="alignCenter:" target="-1" id="spX-mk-kcS"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Justify" id="J5U-5w-g23">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="alignJustified:" target="-1" id="ljL-7U-jND"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Align Right" keyEquivalent="}" id="wb2-vD-lq4">
+ <connections>
+ <action selector="alignRight:" target="-1" id="r48-bG-YeY"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="4s2-GY-VfK"/>
+ <menuItem title="Writing Direction" id="H1b-Si-o9J">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Writing Direction" id="8mr-sm-Yjd">
+ <items>
+ <menuItem title="Paragraph" enabled="NO" id="ZvO-Gk-QUH">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ </menuItem>
+ <menuItem id="YGs-j5-SAR">
+ <string key="title">        Default</string>
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="makeBaseWritingDirectionNatural:" target="-1" id="qtV-5e-UBP"/>
+ </connections>
+ </menuItem>
+ <menuItem id="Lbh-J2-qVU">
+ <string key="title">        Left to Right</string>
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="makeBaseWritingDirectionLeftToRight:" target="-1" id="S0X-9S-QSf"/>
+ </connections>
+ </menuItem>
+ <menuItem id="jFq-tB-4Kx">
+ <string key="title">        Right to Left</string>
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="makeBaseWritingDirectionRightToLeft:" target="-1" id="5fk-qB-AqJ"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="swp-gr-a21"/>
+ <menuItem title="Selection" enabled="NO" id="cqv-fj-IhA">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ </menuItem>
+ <menuItem id="Nop-cj-93Q">
+ <string key="title">        Default</string>
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="makeTextWritingDirectionNatural:" target="-1" id="lPI-Se-ZHp"/>
+ </connections>
+ </menuItem>
+ <menuItem id="BgM-ve-c93">
+ <string key="title">        Left to Right</string>
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="makeTextWritingDirectionLeftToRight:" target="-1" id="caW-Bv-w94"/>
+ </connections>
+ </menuItem>
+ <menuItem id="RB4-Sm-HuC">
+ <string key="title">        Right to Left</string>
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="makeTextWritingDirectionRightToLeft:" target="-1" id="EXD-6r-ZUu"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="fKy-g9-1gm"/>
+ <menuItem title="Show Ruler" id="vLm-3I-IUL">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleRuler:" target="-1" id="FOx-HJ-KwY"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Copy Ruler" keyEquivalent="c" id="MkV-Pr-PK5">
+ <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
+ <connections>
+ <action selector="copyRuler:" target="-1" id="71i-fW-3W2"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Paste Ruler" keyEquivalent="v" id="LVM-kO-fVI">
+ <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
+ <connections>
+ <action selector="pasteRuler:" target="-1" id="cSh-wd-qM2"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="View" id="H8h-7b-M4v">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="View" id="HyV-fh-RgO">
+ <items>
+ <menuItem title="Show Toolbar" keyEquivalent="t" id="snW-S8-Cw5">
+ <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+ <connections>
+ <action selector="toggleToolbarShown:" target="-1" id="BXY-wc-z0C"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Customize Toolbar…" id="1UK-8n-QPP">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="runToolbarCustomizationPalette:" target="-1" id="pQI-g3-MTW"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Window" id="aUF-d1-5bR">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
+ <items>
+ <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
+ <connections>
+ <action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Zoom" id="R4o-n2-Eq4">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
+ <menuItem title="Bring All to Front" id="LE2-aR-0XJ">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Debug" id="l0a-uE-jbj">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <menu key="submenu" title="Debug" id="6qp-h8-RvU">
+ <items>
+ <menuItem title="Show Operations" id="gU2-5P-xos">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="showOperations:" target="Voe-Tx-rLC" id="C9D-9o-I9c"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Paste Text as Markup" id="bxK-wl-oNd">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="pasteAsMarkup:" target="-1" id="Ejb-zz-08R"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Use WK2 by default" id="AiO-8z-Uwi">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleUseWK2ByDefault:" target="Voe-Tx-rLC" id="GoJ-wy-wd2"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ </items>
+ </menu>
+ <window title="WebView Operations" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="XRZ-ss-zpK" userLabel="Panel" customClass="NSPanel">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" utility="YES" nonactivatingPanel="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="272" y="172" width="565" height="366"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
+ <view key="contentView" id="64n-CD-rIB">
+ <rect key="frame" x="0.0" y="0.0" width="565" height="366"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </view>
+ <connections>
+ <outlet property="delegate" destination="Voe-Tx-rLC" id="h7Q-j9-6JW"/>
+ </connections>
+ <point key="canvasLocation" x="392.5" y="403"/>
+ </window>
+ </objects>
+</document>
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterWK1WebDocumentControllerh"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/WK1WebDocumentController.h (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/WK1WebDocumentController.h         (rev 0)
+++ trunk/Tools/WebEditingTester/WK1WebDocumentController.h        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,31 @@
</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 "WebDocumentController.h"
+
+@interface WK1WebDocumentController : WebDocumentController<WebDocument>
+
+@end
+
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterWK1WebDocumentControllerm"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/WK1WebDocumentController.m (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/WK1WebDocumentController.m         (rev 0)
+++ trunk/Tools/WebEditingTester/WK1WebDocumentController.m        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,75 @@
</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 "WK1WebDocumentController.h"
+
+#import <WebKit/WebKit.h>
+#import <WebKit/WebPreferences.h>
+#import <WebKit/WebPreferencesPrivate.h>
+#import <WebKit/WebPreferenceKeysPrivate.h>
+#import <WebKit/WebViewPrivate.h>
+
+@implementation WK1WebDocumentController {
+ WebView *_webView;
+}
+
+- (void)awakeFromNib
+{
+ _webView = [[WebView alloc] initWithFrame:[containerView bounds] frameName:nil groupName:@"WebEditingTester"];
+ [_webView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
+
+ [_webView setEditable:YES];
+ [_webView setUIDelegate:self];
+
+ [[WebPreferences standardPreferences] setFullScreenEnabled:YES];
+ [[WebPreferences standardPreferences] setDeveloperExtrasEnabled:YES];
+ [[WebPreferences standardPreferences] setImageControlsEnabled:YES];
+ [[WebPreferences standardPreferences] setServiceControlsEnabled:YES];
+
+ [self.window setTitle:@"WebEditor [WK1]"];
+ [containerView addSubview:_webView];
+}
+
+- (void)loadContent
+{
+ [[_webView mainFrame] loadHTMLString:[self defaultEditingSource] baseURL:nil];
+}
+
+- (void)dealloc
+{
+ [_webView setUIDelegate:nil];
+ [_webView release];
+
+ [super dealloc];
+}
+
+- (IBAction)pasteAsMarkup:(id)sender
+{
+ // FIXME: This is probably incorrect, should use WebArchive
+ NSString *markup = [[NSPasteboard generalPasteboard] stringForType:NSStringPboardType];
+ [_webView replaceSelectionWithMarkupString:markup ? markup : @""];
+}
+
+@end
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterWK2WebDocumentControllerh"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/WK2WebDocumentController.h (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/WK2WebDocumentController.h         (rev 0)
+++ trunk/Tools/WebEditingTester/WK2WebDocumentController.h        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,35 @@
</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 "WebDocumentController.h"
+
+@class WKWebViewConfiguration;
+
+@interface WK2WebDocumentController : WebDocumentController<WebDocument>
+
+- (instancetype)initWithConfiguration:(WKWebViewConfiguration *)configuration;
+
+@end
+
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterWK2WebDocumentControllerm"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/WK2WebDocumentController.m (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/WK2WebDocumentController.m         (rev 0)
+++ trunk/Tools/WebEditingTester/WK2WebDocumentController.m        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,85 @@
</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 "WK2WebDocumentController.h"
+
+#import <WebKit/WKFrameInfo.h>
+#import <WebKit/WKNavigationDelegate.h>
+#import <WebKit/WKPreferencesPrivate.h>
+#import <WebKit/WKUIDelegate.h>
+#import <WebKit/WKWebView.h>
+#import <WebKit/WKWebViewConfigurationPrivate.h>
+#import <WebKit/WKWebViewPrivate.h>
+#import <WebKit/_WKWebsiteDataStore.h>
+
+@interface WK2WebDocumentController () <WKUIDelegate>
+@end
+
+@implementation WK2WebDocumentController {
+ WKWebViewConfiguration *_configuration;
+ WKWebView *_webView;
+}
+
+- (instancetype)initWithConfiguration:(WKWebViewConfiguration *)configuration
+{
+ if (!(self = [super initWithWindowNibName:@"WebDocument"]))
+ return nil;
+ _configuration = [configuration copy];
+
+ return self;
+
+}
+
+- (IBAction)pasteAsMarkup:(id)sender
+{
+ NSLog(@"To be implemented");
+}
+
+- (void)awakeFromNib
+{
+ _webView = [[WKWebView alloc] initWithFrame:[containerView bounds] configuration:_configuration];
+ [_webView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
+ [_webView _setEditable:YES];
+ [_webView setUIDelegate:self];
+
+ [containerView addSubview:_webView];
+ [self.window setTitle:@"WebEditor [WK2]"];
+}
+
+- (void)dealloc
+{
+ [_webView setUIDelegate:nil];
+ [_webView release];
+ [_configuration release];
+
+ [super dealloc];
+}
+
+- (void)loadContent
+{
+ [_webView loadHTMLString:[self defaultEditingSource] baseURL:nil];
+}
+
+@end
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterWebDocumentxib"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/WebDocument.xib (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/WebDocument.xib         (rev 0)
+++ trunk/Tools/WebEditingTester/WebDocument.xib        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="8034" systemVersion="14D87" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+ <dependencies>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="8034"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="WebDocumentController">
+ <connections>
+ <outlet property="containerView" destination="xWm-c8-kTR" id="xua-2M-DAl"/>
+ <outlet property="window" destination="xOd-HO-29H" id="JIz-fz-R2o"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+ <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" animationBehavior="default" id="xOd-HO-29H" userLabel="Window">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="133" y="235" width="507" height="413"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
+ <value key="minSize" type="size" width="94" height="86"/>
+ <view key="contentView" id="gIp-Ho-8D9">
+ <rect key="frame" x="0.0" y="0.0" width="507" height="413"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <customView translatesAutoresizingMaskIntoConstraints="NO" id="xWm-c8-kTR">
+ <rect key="frame" x="0.0" y="0.0" width="507" height="413"/>
+ </customView>
+ </subviews>
+ <constraints>
+ <constraint firstItem="xWm-c8-kTR" firstAttribute="top" secondItem="gIp-Ho-8D9" secondAttribute="top" id="0bJ-GX-Ftr"/>
+ <constraint firstAttribute="bottom" secondItem="xWm-c8-kTR" secondAttribute="bottom" id="JYw-LP-aQG"/>
+ <constraint firstItem="xWm-c8-kTR" firstAttribute="leading" secondItem="gIp-Ho-8D9" secondAttribute="leading" id="Lko-SY-7ZO"/>
+ <constraint firstAttribute="trailing" secondItem="xWm-c8-kTR" secondAttribute="trailing" id="e9O-Wq-iuR"/>
+ </constraints>
+ </view>
+ <connections>
+ <outlet property="delegate" destination="-2" id="0bl-1N-x8E"/>
+ </connections>
+ </window>
+ </objects>
+</document>
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterWebDocumentControllerh"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/WebDocumentController.h (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/WebDocumentController.h         (rev 0)
+++ trunk/Tools/WebEditingTester/WebDocumentController.h        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,41 @@
</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 <Cocoa/Cocoa.h>
+
+@protocol WebDocument
+- (IBAction)pasteAsMarkup:(id)sender;
+@end
+
+@interface WebDocumentController : NSWindowController
+{
+ IBOutlet NSView *containerView;
+}
+- (NSString *)defaultEditingSource;
+- (void)applicationTerminating;
+- (void)loadContent;
+
+@end
+
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterWebDocumentControllerm"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/WebDocumentController.m (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/WebDocumentController.m         (rev 0)
+++ trunk/Tools/WebEditingTester/WebDocumentController.m        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,55 @@
</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 "WebDocumentController.h"
+
+@implementation WebDocumentController
+
+- (id)initWithWindow:(NSWindow *)window
+{
+ self = [super initWithWindow:window];
+ return self;
+}
+
+- (void)windowDidLoad
+{
+ [super windowDidLoad];
+}
+
+- (const NSString *)defaultEditingSource
+{
+ const static NSString *source = @"<html><body></body></html>";
+ return source;
+}
+
+- (void)applicationTerminating
+{
+}
+
+- (void)loadContent
+{
+}
+
+@end
</ins></span></pre></div>
<a id="trunkToolsWebEditingTesterWebEditingTesterxcodeprojprojectpbxproj"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj         (rev 0)
+++ trunk/Tools/WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,315 @@
</span><ins>+// !$*UTF8*$!
+{
+        archiveVersion = 1;
+        classes = {
+        };
+        objectVersion = 46;
+        objects = {
+
+/* Begin PBXBuildFile section */
+                C53E7D0D1A9546E600818F19 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C53E7D0B1A9546E600818F19 /* MainMenu.xib */; };
+                C53E7D0E1A9546E600818F19 /* WebDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = C53E7D0C1A9546E600818F19 /* WebDocument.xib */; };
+                C558CDB31A92D6900059A907 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C558CDB21A92D6900059A907 /* AppDelegate.m */; };
+                C558CDB51A92D6900059A907 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C558CDB41A92D6900059A907 /* main.m */; };
+                C558CDB81A92D6900059A907 /* WebDocumentController.m in Sources */ = {isa = PBXBuildFile; fileRef = C558CDB71A92D6900059A907 /* WebDocumentController.m */; };
+                C59F9B971A93C8E00041A959 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C59F9B961A93C8E00041A959 /* Cocoa.framework */; };
+                C59F9B991A93C8E90041A959 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C59F9B981A93C8E90041A959 /* WebKit.framework */; };
+                C59F9B9F1A93CB630041A959 /* WK1WebDocumentController.m in Sources */ = {isa = PBXBuildFile; fileRef = C59F9B9C1A93CB630041A959 /* WK1WebDocumentController.m */; };
+                C59F9BA01A93CB630041A959 /* WK2WebDocumentController.m in Sources */ = {isa = PBXBuildFile; fileRef = C59F9B9E1A93CB630041A959 /* WK2WebDocumentController.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+                C53E7D0B1A9546E600818F19 /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = "<group>"; };
+                C53E7D0C1A9546E600818F19 /* WebDocument.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WebDocument.xib; sourceTree = "<group>"; };
+                C558CDAC1A92D6900059A907 /* WebEditingTester.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WebEditingTester.app; sourceTree = BUILT_PRODUCTS_DIR; };
+                C558CDB01A92D6900059A907 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+                C558CDB11A92D6900059A907 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+                C558CDB21A92D6900059A907 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+                C558CDB41A92D6900059A907 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+                C558CDB61A92D6900059A907 /* WebDocumentController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebDocumentController.h; sourceTree = "<group>"; };
+                C558CDB71A92D6900059A907 /* WebDocumentController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WebDocumentController.m; sourceTree = "<group>"; };
+                C59F9B961A93C8E00041A959 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
+                C59F9B981A93C8E90041A959 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
+                C59F9B9B1A93CB630041A959 /* WK1WebDocumentController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WK1WebDocumentController.h; sourceTree = "<group>"; };
+                C59F9B9C1A93CB630041A959 /* WK1WebDocumentController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WK1WebDocumentController.m; sourceTree = "<group>"; };
+                C59F9B9D1A93CB630041A959 /* WK2WebDocumentController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WK2WebDocumentController.h; sourceTree = "<group>"; };
+                C59F9B9E1A93CB630041A959 /* WK2WebDocumentController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WK2WebDocumentController.m; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+                C558CDA91A92D6900059A907 /* Frameworks */ = {
+                        isa = PBXFrameworksBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                C59F9B991A93C8E90041A959 /* WebKit.framework in Frameworks */,
+                                C59F9B971A93C8E00041A959 /* Cocoa.framework in Frameworks */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+                C558CDA31A92D6900059A907 = {
+                        isa = PBXGroup;
+                        children = (
+                                C558CDAE1A92D6900059A907 /* WebEditingTester */,
+                                C59F9B9A1A93C9030041A959 /* Resources */,
+                                C558CDAF1A92D6900059A907 /* Supporting Files */,
+                                C558CDD51A93C8830059A907 /* Frameworks */,
+                                C558CDAD1A92D6900059A907 /* Products */,
+                        );
+                        sourceTree = "<group>";
+                };
+                C558CDAD1A92D6900059A907 /* Products */ = {
+                        isa = PBXGroup;
+                        children = (
+                                C558CDAC1A92D6900059A907 /* WebEditingTester.app */,
+                        );
+                        name = Products;
+                        sourceTree = "<group>";
+                };
+                C558CDAE1A92D6900059A907 /* WebEditingTester */ = {
+                        isa = PBXGroup;
+                        children = (
+                                C558CDB11A92D6900059A907 /* AppDelegate.h */,
+                                C558CDB21A92D6900059A907 /* AppDelegate.m */,
+                                C59F9B9B1A93CB630041A959 /* WK1WebDocumentController.h */,
+                                C59F9B9C1A93CB630041A959 /* WK1WebDocumentController.m */,
+                                C59F9B9D1A93CB630041A959 /* WK2WebDocumentController.h */,
+                                C59F9B9E1A93CB630041A959 /* WK2WebDocumentController.m */,
+                                C558CDB61A92D6900059A907 /* WebDocumentController.h */,
+                                C558CDB71A92D6900059A907 /* WebDocumentController.m */,
+                        );
+                        name = WebEditingTester;
+                        sourceTree = "<group>";
+                };
+                C558CDAF1A92D6900059A907 /* Supporting Files */ = {
+                        isa = PBXGroup;
+                        children = (
+                                C558CDB01A92D6900059A907 /* Info.plist */,
+                                C558CDB41A92D6900059A907 /* main.m */,
+                        );
+                        name = "Supporting Files";
+                        sourceTree = "<group>";
+                };
+                C558CDD51A93C8830059A907 /* Frameworks */ = {
+                        isa = PBXGroup;
+                        children = (
+                                C59F9B981A93C8E90041A959 /* WebKit.framework */,
+                                C59F9B961A93C8E00041A959 /* Cocoa.framework */,
+                        );
+                        name = Frameworks;
+                        sourceTree = "<group>";
+                };
+                C59F9B9A1A93C9030041A959 /* Resources */ = {
+                        isa = PBXGroup;
+                        children = (
+                                C53E7D0B1A9546E600818F19 /* MainMenu.xib */,
+                                C53E7D0C1A9546E600818F19 /* WebDocument.xib */,
+                        );
+                        name = Resources;
+                        sourceTree = "<group>";
+                };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+                C558CDAB1A92D6900059A907 /* WebEditingTester */ = {
+                        isa = PBXNativeTarget;
+                        buildConfigurationList = C558CDCF1A92D6900059A907 /* Build configuration list for PBXNativeTarget "WebEditingTester" */;
+                        buildPhases = (
+                                C558CDA81A92D6900059A907 /* Sources */,
+                                C558CDA91A92D6900059A907 /* Frameworks */,
+                                C558CDAA1A92D6900059A907 /* Resources */,
+                        );
+                        buildRules = (
+                        );
+                        dependencies = (
+                        );
+                        name = WebEditingTester;
+                        productName = WebEditingTester;
+                        productReference = C558CDAC1A92D6900059A907 /* WebEditingTester.app */;
+                        productType = "com.apple.product-type.application";
+                };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+                C558CDA41A92D6900059A907 /* Project object */ = {
+                        isa = PBXProject;
+                        attributes = {
+                                LastUpgradeCheck = 0700;
+                                ORGANIZATIONNAME = "Enrica Casucci";
+                                TargetAttributes = {
+                                        C558CDAB1A92D6900059A907 = {
+                                                CreatedOnToolsVersion = 7.0;
+                                        };
+                                };
+                        };
+                        buildConfigurationList = C558CDA71A92D6900059A907 /* Build configuration list for PBXProject "WebEditingTester" */;
+                        compatibilityVersion = "Xcode 3.2";
+                        developmentRegion = English;
+                        hasScannedForEncodings = 0;
+                        knownRegions = (
+                                en,
+                                Base,
+                        );
+                        mainGroup = C558CDA31A92D6900059A907;
+                        productRefGroup = C558CDAD1A92D6900059A907 /* Products */;
+                        projectDirPath = "";
+                        projectRoot = "";
+                        targets = (
+                                C558CDAB1A92D6900059A907 /* WebEditingTester */,
+                        );
+                };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+                C558CDAA1A92D6900059A907 /* Resources */ = {
+                        isa = PBXResourcesBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                C53E7D0E1A9546E600818F19 /* WebDocument.xib in Resources */,
+                                C53E7D0D1A9546E600818F19 /* MainMenu.xib in Resources */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+                C558CDA81A92D6900059A907 /* Sources */ = {
+                        isa = PBXSourcesBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                C558CDB81A92D6900059A907 /* WebDocumentController.m in Sources */,
+                                C59F9BA01A93CB630041A959 /* WK2WebDocumentController.m in Sources */,
+                                C558CDB51A92D6900059A907 /* main.m in Sources */,
+                                C558CDB31A92D6900059A907 /* AppDelegate.m in Sources */,
+                                C59F9B9F1A93CB630041A959 /* WK1WebDocumentController.m in Sources */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+                C558CDCD1A92D6900059A907 /* Debug */ = {
+                        isa = XCBuildConfiguration;
+                        buildSettings = {
+                                ALWAYS_SEARCH_USER_PATHS = NO;
+                                CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                                CLANG_CXX_LIBRARY = "libc++";
+                                CLANG_ENABLE_MODULES = YES;
+                                CLANG_ENABLE_OBJC_ARC = NO;
+                                CLANG_WARN_BOOL_CONVERSION = YES;
+                                CLANG_WARN_CONSTANT_CONVERSION = YES;
+                                CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                                CLANG_WARN_EMPTY_BODY = YES;
+                                CLANG_WARN_ENUM_CONVERSION = YES;
+                                CLANG_WARN_INT_CONVERSION = YES;
+                                CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                                CLANG_WARN_UNREACHABLE_CODE = YES;
+                                CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                                CODE_SIGN_IDENTITY = "";
+                                COPY_PHASE_STRIP = NO;
+                                ENABLE_STRICT_OBJC_MSGSEND = YES;
+                                GCC_C_LANGUAGE_STANDARD = gnu99;
+                                GCC_DYNAMIC_NO_PIC = NO;
+                                GCC_OPTIMIZATION_LEVEL = 0;
+                                GCC_PREPROCESSOR_DEFINITIONS = (
+                                        "DEBUG=1",
+                                        "$(inherited)",
+                                );
+                                GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+                                GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                                GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                                GCC_WARN_UNDECLARED_SELECTOR = YES;
+                                GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                                GCC_WARN_UNUSED_FUNCTION = YES;
+                                GCC_WARN_UNUSED_VARIABLE = YES;
+                                MACOSX_DEPLOYMENT_TARGET = 10.10;
+                                MTL_ENABLE_DEBUG_INFO = YES;
+                                ONLY_ACTIVE_ARCH = YES;
+                                SDKROOT = macosx;
+                        };
+                        name = Debug;
+                };
+                C558CDCE1A92D6900059A907 /* Release */ = {
+                        isa = XCBuildConfiguration;
+                        buildSettings = {
+                                ALWAYS_SEARCH_USER_PATHS = NO;
+                                CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                                CLANG_CXX_LIBRARY = "libc++";
+                                CLANG_ENABLE_MODULES = YES;
+                                CLANG_ENABLE_OBJC_ARC = NO;
+                                CLANG_WARN_BOOL_CONVERSION = YES;
+                                CLANG_WARN_CONSTANT_CONVERSION = YES;
+                                CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                                CLANG_WARN_EMPTY_BODY = YES;
+                                CLANG_WARN_ENUM_CONVERSION = YES;
+                                CLANG_WARN_INT_CONVERSION = YES;
+                                CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                                CLANG_WARN_UNREACHABLE_CODE = YES;
+                                CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                                CODE_SIGN_IDENTITY = "";
+                                COPY_PHASE_STRIP = NO;
+                                DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                                ENABLE_NS_ASSERTIONS = NO;
+                                ENABLE_STRICT_OBJC_MSGSEND = YES;
+                                GCC_C_LANGUAGE_STANDARD = gnu99;
+                                GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                                GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                                GCC_WARN_UNDECLARED_SELECTOR = YES;
+                                GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                                GCC_WARN_UNUSED_FUNCTION = YES;
+                                GCC_WARN_UNUSED_VARIABLE = YES;
+                                MACOSX_DEPLOYMENT_TARGET = 10.10;
+                                MTL_ENABLE_DEBUG_INFO = NO;
+                                SDKROOT = macosx;
+                        };
+                        name = Release;
+                };
+                C558CDD01A92D6900059A907 /* Debug */ = {
+                        isa = XCBuildConfiguration;
+                        buildSettings = {
+                                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+                                COMBINE_HIDPI_IMAGES = YES;
+                                INFOPLIST_FILE = "$(SRCROOT)/Info.plist";
+                                LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
+                                PRODUCT_NAME = "$(TARGET_NAME)";
+                        };
+                        name = Debug;
+                };
+                C558CDD11A92D6900059A907 /* Release */ = {
+                        isa = XCBuildConfiguration;
+                        buildSettings = {
+                                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+                                COMBINE_HIDPI_IMAGES = YES;
+                                INFOPLIST_FILE = "$(SRCROOT)/Info.plist";
+                                LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
+                                PRODUCT_NAME = "$(TARGET_NAME)";
+                        };
+                        name = Release;
+                };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+                C558CDA71A92D6900059A907 /* Build configuration list for PBXProject "WebEditingTester" */ = {
+                        isa = XCConfigurationList;
+                        buildConfigurations = (
+                                C558CDCD1A92D6900059A907 /* Debug */,
+                                C558CDCE1A92D6900059A907 /* Release */,
+                        );
+                        defaultConfigurationIsVisible = 0;
+                        defaultConfigurationName = Release;
+                };
+                C558CDCF1A92D6900059A907 /* Build configuration list for PBXNativeTarget "WebEditingTester" */ = {
+                        isa = XCConfigurationList;
+                        buildConfigurations = (
+                                C558CDD01A92D6900059A907 /* Debug */,
+                                C558CDD11A92D6900059A907 /* Release */,
+                        );
+                        defaultConfigurationIsVisible = 0;
+                        defaultConfigurationName = Release;
+                };
+/* End XCConfigurationList section */
+        };
+        rootObject = C558CDA41A92D6900059A907 /* Project object */;
+}
</ins></span></pre></div>
<a id="trunkToolsWebEditingTestermainm"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebEditingTester/main.m (0 => 180348)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebEditingTester/main.m         (rev 0)
+++ trunk/Tools/WebEditingTester/main.m        2015-02-19 18:41:24 UTC (rev 180348)
</span><span class="lines">@@ -0,0 +1,31 @@
</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 <Cocoa/Cocoa.h>
+
+int main(int argc, const char * argv[])
+{
+ return NSApplicationMain(argc, argv);
+}
</ins></span></pre>
</div>
</div>
</body>
</html>