<!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>[162729] 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/162729">162729</a></dd>
<dt>Author</dt> <dd>dfarler@apple.com</dd>
<dt>Date</dt> <dd>2014-01-24 15:20:08 -0800 (Fri, 24 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Make WebKitTestRunner work with iOS
https://bugs.webkit.org/show_bug.cgi?id=127448

Reviewed by Simon Fraser.

Combined patch from Simon below with some additional xcconfig cleanups,
rebasing and stubbing out a couple of new functions that popped up
since then.

2013-12-03  Simon Fraser  &lt;simon.fraser@apple.com&gt;

        &lt;rdar://problem/15515469&gt; Get WebKitTestRunner working on iOS

        Get WebKitTestRunner limping on iOS. Main parts:
        - Stub out lots of accessibility-related functions.
        - Stub out EventSender
        - Create target to make a bundled app that runs in the simulator,
          and copy the injected bundle library into it.
        - Make a UIWindow and WKView to load tests in

        It runs, load tests, and dumps results to output. More work will be
        required once we can execute it via the webkitpy scripts.

* WebKitTestRunner/Configurations/Base.xcconfig:
* WebKitTestRunner/Configurations/InjectedBundle.xcconfig:
* WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig:
* WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
* WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm: Added.
(WTR::AccessibilityController::addNotificationListener):
(WTR::AccessibilityController::removeNotificationListener):
(WTR::AccessibilityController::platformName):
(WTR::AccessibilityController::logAccessibilityEvents):
(WTR::AccessibilityController::resetToConsistentState):
(WTR::findAccessibleObjectById):
(WTR::AccessibilityController::accessibleElementById):
* WebKitTestRunner/InjectedBundle/ios/AccessibilityNotificationHandler.h: Added.
* WebKitTestRunner/InjectedBundle/ios/AccessibilityTextMarkerIOS.mm: Copied from Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h.
(WTR::AccessibilityTextMarker::isEqual):
* WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: Added.
(WTR::AccessibilityUIElement::AccessibilityUIElement):
(WTR::AccessibilityUIElement::~AccessibilityUIElement):
(WTR::AccessibilityUIElement::isEqual):
(WTR::AccessibilityUIElement::getLinkedUIElements):
(WTR::AccessibilityUIElement::getDocumentLinks):
(WTR::AccessibilityUIElement::getChildren):
(WTR::AccessibilityUIElement::getChildrenWithRange):
(WTR::AccessibilityUIElement::childrenCount):
(WTR::AccessibilityUIElement::elementAtPoint):
(WTR::AccessibilityUIElement::indexOfChild):
(WTR::AccessibilityUIElement::childAtIndex):
(WTR::AccessibilityUIElement::linkedUIElementAtIndex):
(WTR::AccessibilityUIElement::ariaOwnsElementAtIndex):
(WTR::AccessibilityUIElement::ariaFlowToElementAtIndex):
(WTR::AccessibilityUIElement::disclosedRowAtIndex):
(WTR::AccessibilityUIElement::rowAtIndex):
(WTR::AccessibilityUIElement::selectedChildAtIndex):
(WTR::AccessibilityUIElement::selectedChildrenCount):
(WTR::AccessibilityUIElement::selectedRowAtIndex):
(WTR::AccessibilityUIElement::titleUIElement):
(WTR::AccessibilityUIElement::parentElement):
(WTR::AccessibilityUIElement::disclosedByRow):
(WTR::AccessibilityUIElement::attributesOfLinkedUIElements):
(WTR::AccessibilityUIElement::attributesOfDocumentLinks):
(WTR::AccessibilityUIElement::attributesOfChildren):
(WTR::AccessibilityUIElement::allAttributes):
(WTR::AccessibilityUIElement::stringAttributeValue):
(WTR::AccessibilityUIElement::numberAttributeValue):
(WTR::AccessibilityUIElement::uiElementArrayAttributeValue):
(WTR::AccessibilityUIElement::uiElementAttributeValue):
(WTR::AccessibilityUIElement::boolAttributeValue):
(WTR::AccessibilityUIElement::isAttributeSettable):
(WTR::AccessibilityUIElement::isAttributeSupported):
(WTR::AccessibilityUIElement::parameterizedAttributeNames):
(WTR::AccessibilityUIElement::role):
(WTR::AccessibilityUIElement::subrole):
(WTR::AccessibilityUIElement::roleDescription):
(WTR::AccessibilityUIElement::title):
(WTR::AccessibilityUIElement::description):
(WTR::AccessibilityUIElement::orientation):
(WTR::AccessibilityUIElement::stringValue):
(WTR::AccessibilityUIElement::language):
(WTR::AccessibilityUIElement::helpText):
(WTR::AccessibilityUIElement::x):
(WTR::AccessibilityUIElement::y):
(WTR::AccessibilityUIElement::width):
(WTR::AccessibilityUIElement::height):
(WTR::AccessibilityUIElement::clickPointX):
(WTR::AccessibilityUIElement::clickPointY):
(WTR::AccessibilityUIElement::intValue):
(WTR::AccessibilityUIElement::minValue):
(WTR::AccessibilityUIElement::maxValue):
(WTR::AccessibilityUIElement::valueDescription):
(WTR::AccessibilityUIElement::insertionPointLineNumber):
(WTR::AccessibilityUIElement::isPressActionSupported):
(WTR::AccessibilityUIElement::isIncrementActionSupported):
(WTR::AccessibilityUIElement::isDecrementActionSupported):
(WTR::AccessibilityUIElement::isEnabled):
(WTR::AccessibilityUIElement::isRequired):
(WTR::AccessibilityUIElement::isFocused):
(WTR::AccessibilityUIElement::isSelected):
(WTR::AccessibilityUIElement::isSelectedOptionActive):
(WTR::AccessibilityUIElement::isIndeterminate):
(WTR::AccessibilityUIElement::isExpanded):
(WTR::AccessibilityUIElement::isChecked):
(WTR::AccessibilityUIElement::hierarchicalLevel):
(WTR::AccessibilityUIElement::classList):
(WTR::AccessibilityUIElement::speak):
(WTR::AccessibilityUIElement::ariaIsGrabbed):
(WTR::AccessibilityUIElement::ariaDropEffects):
(WTR::AccessibilityUIElement::lineForIndex):
(WTR::AccessibilityUIElement::rangeForLine):
(WTR::AccessibilityUIElement::rangeForPosition):
(WTR::AccessibilityUIElement::boundsForRange):
(WTR::AccessibilityUIElement::stringForRange):
(WTR::AccessibilityUIElement::attributedStringForRange):
(WTR::AccessibilityUIElement::attributedStringRangeIsMisspelled):
(WTR::uiElementCountForSearchPredicate):
(WTR::AccessibilityUIElement::uiElementCountForSearchPredicate):
(WTR::AccessibilityUIElement::uiElementForSearchPredicate):
(WTR::AccessibilityUIElement::attributesOfColumnHeaders):
(WTR::AccessibilityUIElement::attributesOfRowHeaders):
(WTR::AccessibilityUIElement::attributesOfColumns):
(WTR::AccessibilityUIElement::attributesOfRows):
(WTR::AccessibilityUIElement::attributesOfVisibleCells):
(WTR::AccessibilityUIElement::attributesOfHeader):
(WTR::AccessibilityUIElement::rowCount):
(WTR::AccessibilityUIElement::columnCount):
(WTR::AccessibilityUIElement::indexInTable):
(WTR::AccessibilityUIElement::rowIndexRange):
(WTR::AccessibilityUIElement::columnIndexRange):
(WTR::AccessibilityUIElement::cellForColumnAndRow):
(WTR::AccessibilityUIElement::horizontalScrollbar):
(WTR::AccessibilityUIElement::verticalScrollbar):
(WTR::AccessibilityUIElement::scrollToMakeVisible):
(WTR::AccessibilityUIElement::selectedTextRange):
(WTR::AccessibilityUIElement::setSelectedTextRange):
(WTR::AccessibilityUIElement::increment):
(WTR::AccessibilityUIElement::decrement):
(WTR::AccessibilityUIElement::showMenu):
(WTR::AccessibilityUIElement::press):
(WTR::AccessibilityUIElement::setSelectedChild):
(WTR::AccessibilityUIElement::accessibilityValue):
(WTR::AccessibilityUIElement::documentEncoding):
(WTR::AccessibilityUIElement::documentURI):
(WTR::AccessibilityUIElement::url):
(WTR::AccessibilityUIElement::addNotificationListener):
(WTR::AccessibilityUIElement::removeNotificationListener):
(WTR::AccessibilityUIElement::isFocusable):
(WTR::AccessibilityUIElement::isSelectable):
(WTR::AccessibilityUIElement::isMultiSelectable):
(WTR::AccessibilityUIElement::isVisible):
(WTR::AccessibilityUIElement::isOffScreen):
(WTR::AccessibilityUIElement::isCollapsed):
(WTR::AccessibilityUIElement::isIgnored):
(WTR::AccessibilityUIElement::hasPopup):
(WTR::AccessibilityUIElement::takeFocus):
(WTR::AccessibilityUIElement::takeSelection):
(WTR::AccessibilityUIElement::addSelection):
(WTR::AccessibilityUIElement::removeSelection):
(WTR::AccessibilityUIElement::textMarkerRangeForElement):
(WTR::AccessibilityUIElement::textMarkerRangeLength):
(WTR::AccessibilityUIElement::previousTextMarker):
(WTR::AccessibilityUIElement::nextTextMarker):
(WTR::AccessibilityUIElement::stringForTextMarkerRange):
(WTR::AccessibilityUIElement::textMarkerRangeForMarkers):
(WTR::AccessibilityUIElement::startTextMarkerForTextMarkerRange):
(WTR::AccessibilityUIElement::endTextMarkerForTextMarkerRange):
(WTR::AccessibilityUIElement::endTextMarkerForBounds):
(WTR::AccessibilityUIElement::startTextMarkerForBounds):
(WTR::AccessibilityUIElement::textMarkerForPoint):
(WTR::AccessibilityUIElement::accessibilityElementForTextMarker):
(WTR::AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute):
(WTR::AccessibilityUIElement::indexForTextMarker):
(WTR::AccessibilityUIElement::isTextMarkerValid):
(WTR::AccessibilityUIElement::textMarkerForIndex):
(WTR::AccessibilityUIElement::startTextMarker):
(WTR::AccessibilityUIElement::endTextMarker):
(WTR::AccessibilityUIElement::mathPostscriptsDescription):
(WTR::AccessibilityUIElement::mathPrescriptsDescription):
(WTR::AccessibilityUIElement::pathDescription):
(WTR::AccessibilityUIElement::supportedActions):
* WebKitTestRunner/InjectedBundle/ios/ActivateFontsIOS.mm: Copied from Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h.
(WTR::activateFonts):
* WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm: Added.
(WTR::EventSenderProxy::EventSenderProxy):
(WTR::EventSenderProxy::~EventSenderProxy):
(WTR::EventSenderProxy::updateClickCountForButton):
(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):
(WTR::EventSenderProxy::leapForward):
(WTR::EventSenderProxy::keyDown):
(WTR::EventSenderProxy::mouseScrollBy):
(WTR::EventSenderProxy::continuousMouseScrollBy):
(WTR::EventSenderProxy::addTouchPoint):
(WTR::EventSenderProxy::updateTouchPoint):
(WTR::EventSenderProxy::setTouchModifier):
(WTR::EventSenderProxy::setTouchPointRadius):
(WTR::EventSenderProxy::touchStart):
(WTR::EventSenderProxy::touchMove):
(WTR::EventSenderProxy::touchEnd):
(WTR::EventSenderProxy::touchCancel):
(WTR::EventSenderProxy::clearTouchPoints):
(WTR::EventSenderProxy::releaseTouchPoint):
(WTR::EventSenderProxy::cancelTouchPoint):
* WebKitTestRunner/InjectedBundle/ios/InjectedBundleIOS.mm: Copied from Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h.
(WTR::InjectedBundle::platformInitialize):
* WebKitTestRunner/InjectedBundle/ios/InjectedBundlePageIOS.mm: Copied from Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h.
(WTR::InjectedBundlePage::platformDidStartProvisionalLoadForFrame):
* WebKitTestRunner/Makefile:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::initialize):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::invoke):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
* WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
* WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.h: Added.
* WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.m: Added.
(-[AppDelegate application:didFinishLaunchingWithOptions:]):
(-[AppDelegate applicationWillResignActive:]):
(-[AppDelegate applicationDidEnterBackground:]):
(-[AppDelegate applicationWillEnterForeground:]):
(-[AppDelegate applicationDidBecomeActive:]):
(-[AppDelegate applicationWillTerminate:]):
* WebKitTestRunner/WebKitTestRunnerApp/Images.xcassets/AppIcon.appiconset/Contents.json: Added.
* WebKitTestRunner/WebKitTestRunnerApp/Images.xcassets/LaunchImage.launchimage/Contents.json: Added.
* WebKitTestRunner/WebKitTestRunnerApp/WebKitTestRunnerApp-Info.plist: Added.
* WebKitTestRunner/WebKitTestRunnerApp/WebKitTestRunnerApp-Prefix.pch: Added.
* WebKitTestRunner/WebKitTestRunnerApp/en.lproj/InfoPlist.strings: Added.
* WebKitTestRunner/WebKitTestRunnerApp/main.m: Added.
(main):
* WebKitTestRunner/WebKitTestRunnerAppTests-Info.plist: Added.
* WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests-Info.plist: Added.
* WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests.m: Added.
(-[WebKitTestRunnerAppTests setUp]):
(-[WebKitTestRunnerAppTests tearDown]):
(-[WebKitTestRunnerAppTests testExample]):
* WebKitTestRunner/WebKitTestRunnerAppTests/en.lproj/InfoPlist.strings: Added.
* WebKitTestRunner/WebKitTestRunnerPrefix.h:
* WebKitTestRunner/cg/TestInvocationCG.cpp:
* WebKitTestRunner/iOS.xcconfig: Added.
* WebKitTestRunner/ios/PlatformWebViewIOS.mm: Added.
(-[TestRunnerWKView initWithFrame:contextRef:pageGroupRef:relatedToPage:useTiledDrawing:]):
(-[TestRunnerWKView _shouldUseTiledDrawingArea]):
(-[WebKitTestRunnerWindow isKeyWindow]):
(-[WebKitTestRunnerWindow setFrameOrigin:]):
(-[WebKitTestRunnerWindow setFrame:]):
(-[WebKitTestRunnerWindow frameRespectingFakeOrigin]):
(-[WebKitTestRunnerWindow backingScaleFactor]):
(WTR::PlatformWebView::PlatformWebView):
(WTR::PlatformWebView::resizeTo):
(WTR::PlatformWebView::~PlatformWebView):
(WTR::PlatformWebView::page):
(WTR::PlatformWebView::focus):
(WTR::PlatformWebView::windowFrame):
(WTR::PlatformWebView::setWindowFrame):
(WTR::PlatformWebView::didInitializeClients):
(WTR::PlatformWebView::addChromeInputField):
(WTR::PlatformWebView::removeChromeInputField):
(WTR::PlatformWebView::makeWebViewFirstResponder):
(WTR::PlatformWebView::windowSnapshotImage):
(WTR::PlatformWebView::viewSupportsOptions):
* WebKitTestRunner/ios/TestControllerIOS.mm: Added.
(WTR::TestController::notifyDone):
(WTR::TestController::platformInitialize):
(WTR::TestController::platformDestroy):
(WTR::TestController::initializeInjectedBundlePath):
(WTR::TestController::initializeTestPluginDirectory):
(WTR::TestController::platformRunUntil):
(WTR::TestController::platformInitializeContext):
(WTR::TestController::runModal):
(WTR::TestController::platformLibraryPathForTesting):
* WebKitTestRunner/ios/WebArchiveDumpSupportIOS.mm: Copied from Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h.
(createCFURLResponseFromResponseData):
(supportedNonImageMIMETypes):
* WebKitTestRunner/ios/mainIOS.mm: Copied from Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h.
(-[WebKitTestRunnerApp _runTestController]):
(-[WebKitTestRunnerApp applicationDidFinishLaunching:]):
(main):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsMakefile">trunk/Tools/Makefile</a></li>
<li><a href="#trunkToolsWebKitTestRunnerConfigurationsBasexcconfig">trunk/Tools/WebKitTestRunner/Configurations/Base.xcconfig</a></li>
<li><a href="#trunkToolsWebKitTestRunnerConfigurationsInjectedBundlexcconfig">trunk/Tools/WebKitTestRunner/Configurations/InjectedBundle.xcconfig</a></li>
<li><a href="#trunkToolsWebKitTestRunnerConfigurationsWebKitTestRunnerxcconfig">trunk/Tools/WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleEventSendingControllercpp">trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerMakefile">trunk/Tools/WebKitTestRunner/Makefile</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestControllercpp">trunk/Tools/WebKitTestRunner/TestController.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestControllerh">trunk/Tools/WebKitTestRunner/TestController.h</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestInvocationcpp">trunk/Tools/WebKitTestRunner/TestInvocation.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerWebKitTestRunnerxcodeprojprojectpbxproj">trunk/Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkToolsWebKitTestRunnerWebKitTestRunnerPrefixh">trunk/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h</a></li>
<li><a href="#trunkToolsWebKitTestRunnercgTestInvocationCGcpp">trunk/Tools/WebKitTestRunner/cg/TestInvocationCG.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/Tools/WebKitTestRunner/InjectedBundle/ios/</li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleiosAccessibilityControllerIOSmm">trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleiosAccessibilityNotificationHandlerh">trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityNotificationHandler.h</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleiosAccessibilityTextMarkerIOSmm">trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityTextMarkerIOS.mm</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleiosAccessibilityUIElementIOSmm">trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleiosActivateFontsIOSmm">trunk/Tools/WebKitTestRunner/InjectedBundle/ios/ActivateFontsIOS.mm</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleiosEventSenderProxyIOSmm">trunk/Tools/WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleiosInjectedBundleIOSmm">trunk/Tools/WebKitTestRunner/InjectedBundle/ios/InjectedBundleIOS.mm</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleiosInjectedBundlePageIOSmm">trunk/Tools/WebKitTestRunner/InjectedBundle/ios/InjectedBundlePageIOS.mm</a></li>
<li>trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/</li>
<li><a href="#trunkToolsWebKitTestRunnerWebKitTestRunnerAppAppDelegateh">trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.h</a></li>
<li><a href="#trunkToolsWebKitTestRunnerWebKitTestRunnerAppAppDelegatem">trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.m</a></li>
<li><a href="#trunkToolsWebKitTestRunnerWebKitTestRunnerAppWebKitTestRunnerAppInfoplist">trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/WebKitTestRunnerApp-Info.plist</a></li>
<li>trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/en.lproj/</li>
<li><a href="#trunkToolsWebKitTestRunnerWebKitTestRunnerAppenlprojInfoPliststrings">trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/en.lproj/InfoPlist.strings</a></li>
<li>trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/</li>
<li><a href="#trunkToolsWebKitTestRunnerWebKitTestRunnerAppTestsWebKitTestRunnerAppTestsInfoplist">trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests-Info.plist</a></li>
<li><a href="#trunkToolsWebKitTestRunnerWebKitTestRunnerAppTestsWebKitTestRunnerAppTestsm">trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests.m</a></li>
<li>trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/en.lproj/</li>
<li><a href="#trunkToolsWebKitTestRunnerWebKitTestRunnerAppTestsenlprojInfoPliststrings">trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/en.lproj/InfoPlist.strings</a></li>
<li><a href="#trunkToolsWebKitTestRunnerWebKitTestRunnerAppTestsInfoplist">trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests-Info.plist</a></li>
<li><a href="#trunkToolsWebKitTestRunneriOSxcconfig">trunk/Tools/WebKitTestRunner/iOS.xcconfig</a></li>
<li>trunk/Tools/WebKitTestRunner/ios/</li>
<li><a href="#trunkToolsWebKitTestRunneriosPlatformWebViewIOSmm">trunk/Tools/WebKitTestRunner/ios/PlatformWebViewIOS.mm</a></li>
<li><a href="#trunkToolsWebKitTestRunneriosTestControllerIOSmm">trunk/Tools/WebKitTestRunner/ios/TestControllerIOS.mm</a></li>
<li><a href="#trunkToolsWebKitTestRunneriosWebArchiveDumpSupportIOSmm">trunk/Tools/WebKitTestRunner/ios/WebArchiveDumpSupportIOS.mm</a></li>
<li><a href="#trunkToolsWebKitTestRunneriosmainIOSmm">trunk/Tools/WebKitTestRunner/ios/mainIOS.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/ChangeLog        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -1,3 +1,286 @@
</span><ins>+2014-01-23  David Farler  &lt;dfarler@apple.com&gt;
+
+        Make WebKitTestRunner work with iOS
+        https://bugs.webkit.org/show_bug.cgi?id=127448
+
+        Reviewed by Simon Fraser.
+
+        Combined patch from Simon below with some additional xcconfig cleanups,
+        rebasing and stubbing out a couple of new functions that popped up
+        since then.
+
+        2013-12-03  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+                &lt;rdar://problem/15515469&gt; Get WebKitTestRunner working on iOS
+
+                Get WebKitTestRunner limping on iOS. Main parts:
+                - Stub out lots of accessibility-related functions.
+                - Stub out EventSender
+                - Create target to make a bundled app that runs in the simulator,
+                  and copy the injected bundle library into it.
+                - Make a UIWindow and WKView to load tests in
+
+                It runs, load tests, and dumps results to output. More work will be
+                required once we can execute it via the webkitpy scripts.
+
+        * WebKitTestRunner/Configurations/Base.xcconfig:
+        * WebKitTestRunner/Configurations/InjectedBundle.xcconfig:
+        * WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig:
+        * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
+        * WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm: Added.
+        (WTR::AccessibilityController::addNotificationListener):
+        (WTR::AccessibilityController::removeNotificationListener):
+        (WTR::AccessibilityController::platformName):
+        (WTR::AccessibilityController::logAccessibilityEvents):
+        (WTR::AccessibilityController::resetToConsistentState):
+        (WTR::findAccessibleObjectById):
+        (WTR::AccessibilityController::accessibleElementById):
+        * WebKitTestRunner/InjectedBundle/ios/AccessibilityNotificationHandler.h: Added.
+        * WebKitTestRunner/InjectedBundle/ios/AccessibilityTextMarkerIOS.mm: Copied from Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h.
+        (WTR::AccessibilityTextMarker::isEqual):
+        * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: Added.
+        (WTR::AccessibilityUIElement::AccessibilityUIElement):
+        (WTR::AccessibilityUIElement::~AccessibilityUIElement):
+        (WTR::AccessibilityUIElement::isEqual):
+        (WTR::AccessibilityUIElement::getLinkedUIElements):
+        (WTR::AccessibilityUIElement::getDocumentLinks):
+        (WTR::AccessibilityUIElement::getChildren):
+        (WTR::AccessibilityUIElement::getChildrenWithRange):
+        (WTR::AccessibilityUIElement::childrenCount):
+        (WTR::AccessibilityUIElement::elementAtPoint):
+        (WTR::AccessibilityUIElement::indexOfChild):
+        (WTR::AccessibilityUIElement::childAtIndex):
+        (WTR::AccessibilityUIElement::linkedUIElementAtIndex):
+        (WTR::AccessibilityUIElement::ariaOwnsElementAtIndex):
+        (WTR::AccessibilityUIElement::ariaFlowToElementAtIndex):
+        (WTR::AccessibilityUIElement::disclosedRowAtIndex):
+        (WTR::AccessibilityUIElement::rowAtIndex):
+        (WTR::AccessibilityUIElement::selectedChildAtIndex):
+        (WTR::AccessibilityUIElement::selectedChildrenCount):
+        (WTR::AccessibilityUIElement::selectedRowAtIndex):
+        (WTR::AccessibilityUIElement::titleUIElement):
+        (WTR::AccessibilityUIElement::parentElement):
+        (WTR::AccessibilityUIElement::disclosedByRow):
+        (WTR::AccessibilityUIElement::attributesOfLinkedUIElements):
+        (WTR::AccessibilityUIElement::attributesOfDocumentLinks):
+        (WTR::AccessibilityUIElement::attributesOfChildren):
+        (WTR::AccessibilityUIElement::allAttributes):
+        (WTR::AccessibilityUIElement::stringAttributeValue):
+        (WTR::AccessibilityUIElement::numberAttributeValue):
+        (WTR::AccessibilityUIElement::uiElementArrayAttributeValue):
+        (WTR::AccessibilityUIElement::uiElementAttributeValue):
+        (WTR::AccessibilityUIElement::boolAttributeValue):
+        (WTR::AccessibilityUIElement::isAttributeSettable):
+        (WTR::AccessibilityUIElement::isAttributeSupported):
+        (WTR::AccessibilityUIElement::parameterizedAttributeNames):
+        (WTR::AccessibilityUIElement::role):
+        (WTR::AccessibilityUIElement::subrole):
+        (WTR::AccessibilityUIElement::roleDescription):
+        (WTR::AccessibilityUIElement::title):
+        (WTR::AccessibilityUIElement::description):
+        (WTR::AccessibilityUIElement::orientation):
+        (WTR::AccessibilityUIElement::stringValue):
+        (WTR::AccessibilityUIElement::language):
+        (WTR::AccessibilityUIElement::helpText):
+        (WTR::AccessibilityUIElement::x):
+        (WTR::AccessibilityUIElement::y):
+        (WTR::AccessibilityUIElement::width):
+        (WTR::AccessibilityUIElement::height):
+        (WTR::AccessibilityUIElement::clickPointX):
+        (WTR::AccessibilityUIElement::clickPointY):
+        (WTR::AccessibilityUIElement::intValue):
+        (WTR::AccessibilityUIElement::minValue):
+        (WTR::AccessibilityUIElement::maxValue):
+        (WTR::AccessibilityUIElement::valueDescription):
+        (WTR::AccessibilityUIElement::insertionPointLineNumber):
+        (WTR::AccessibilityUIElement::isPressActionSupported):
+        (WTR::AccessibilityUIElement::isIncrementActionSupported):
+        (WTR::AccessibilityUIElement::isDecrementActionSupported):
+        (WTR::AccessibilityUIElement::isEnabled):
+        (WTR::AccessibilityUIElement::isRequired):
+        (WTR::AccessibilityUIElement::isFocused):
+        (WTR::AccessibilityUIElement::isSelected):
+        (WTR::AccessibilityUIElement::isSelectedOptionActive):
+        (WTR::AccessibilityUIElement::isIndeterminate):
+        (WTR::AccessibilityUIElement::isExpanded):
+        (WTR::AccessibilityUIElement::isChecked):
+        (WTR::AccessibilityUIElement::hierarchicalLevel):
+        (WTR::AccessibilityUIElement::classList):
+        (WTR::AccessibilityUIElement::speak):
+        (WTR::AccessibilityUIElement::ariaIsGrabbed):
+        (WTR::AccessibilityUIElement::ariaDropEffects):
+        (WTR::AccessibilityUIElement::lineForIndex):
+        (WTR::AccessibilityUIElement::rangeForLine):
+        (WTR::AccessibilityUIElement::rangeForPosition):
+        (WTR::AccessibilityUIElement::boundsForRange):
+        (WTR::AccessibilityUIElement::stringForRange):
+        (WTR::AccessibilityUIElement::attributedStringForRange):
+        (WTR::AccessibilityUIElement::attributedStringRangeIsMisspelled):
+        (WTR::uiElementCountForSearchPredicate):
+        (WTR::AccessibilityUIElement::uiElementCountForSearchPredicate):
+        (WTR::AccessibilityUIElement::uiElementForSearchPredicate):
+        (WTR::AccessibilityUIElement::attributesOfColumnHeaders):
+        (WTR::AccessibilityUIElement::attributesOfRowHeaders):
+        (WTR::AccessibilityUIElement::attributesOfColumns):
+        (WTR::AccessibilityUIElement::attributesOfRows):
+        (WTR::AccessibilityUIElement::attributesOfVisibleCells):
+        (WTR::AccessibilityUIElement::attributesOfHeader):
+        (WTR::AccessibilityUIElement::rowCount):
+        (WTR::AccessibilityUIElement::columnCount):
+        (WTR::AccessibilityUIElement::indexInTable):
+        (WTR::AccessibilityUIElement::rowIndexRange):
+        (WTR::AccessibilityUIElement::columnIndexRange):
+        (WTR::AccessibilityUIElement::cellForColumnAndRow):
+        (WTR::AccessibilityUIElement::horizontalScrollbar):
+        (WTR::AccessibilityUIElement::verticalScrollbar):
+        (WTR::AccessibilityUIElement::scrollToMakeVisible):
+        (WTR::AccessibilityUIElement::selectedTextRange):
+        (WTR::AccessibilityUIElement::setSelectedTextRange):
+        (WTR::AccessibilityUIElement::increment):
+        (WTR::AccessibilityUIElement::decrement):
+        (WTR::AccessibilityUIElement::showMenu):
+        (WTR::AccessibilityUIElement::press):
+        (WTR::AccessibilityUIElement::setSelectedChild):
+        (WTR::AccessibilityUIElement::accessibilityValue):
+        (WTR::AccessibilityUIElement::documentEncoding):
+        (WTR::AccessibilityUIElement::documentURI):
+        (WTR::AccessibilityUIElement::url):
+        (WTR::AccessibilityUIElement::addNotificationListener):
+        (WTR::AccessibilityUIElement::removeNotificationListener):
+        (WTR::AccessibilityUIElement::isFocusable):
+        (WTR::AccessibilityUIElement::isSelectable):
+        (WTR::AccessibilityUIElement::isMultiSelectable):
+        (WTR::AccessibilityUIElement::isVisible):
+        (WTR::AccessibilityUIElement::isOffScreen):
+        (WTR::AccessibilityUIElement::isCollapsed):
+        (WTR::AccessibilityUIElement::isIgnored):
+        (WTR::AccessibilityUIElement::hasPopup):
+        (WTR::AccessibilityUIElement::takeFocus):
+        (WTR::AccessibilityUIElement::takeSelection):
+        (WTR::AccessibilityUIElement::addSelection):
+        (WTR::AccessibilityUIElement::removeSelection):
+        (WTR::AccessibilityUIElement::textMarkerRangeForElement):
+        (WTR::AccessibilityUIElement::textMarkerRangeLength):
+        (WTR::AccessibilityUIElement::previousTextMarker):
+        (WTR::AccessibilityUIElement::nextTextMarker):
+        (WTR::AccessibilityUIElement::stringForTextMarkerRange):
+        (WTR::AccessibilityUIElement::textMarkerRangeForMarkers):
+        (WTR::AccessibilityUIElement::startTextMarkerForTextMarkerRange):
+        (WTR::AccessibilityUIElement::endTextMarkerForTextMarkerRange):
+        (WTR::AccessibilityUIElement::endTextMarkerForBounds):
+        (WTR::AccessibilityUIElement::startTextMarkerForBounds):
+        (WTR::AccessibilityUIElement::textMarkerForPoint):
+        (WTR::AccessibilityUIElement::accessibilityElementForTextMarker):
+        (WTR::AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute):
+        (WTR::AccessibilityUIElement::indexForTextMarker):
+        (WTR::AccessibilityUIElement::isTextMarkerValid):
+        (WTR::AccessibilityUIElement::textMarkerForIndex):
+        (WTR::AccessibilityUIElement::startTextMarker):
+        (WTR::AccessibilityUIElement::endTextMarker):
+        (WTR::AccessibilityUIElement::mathPostscriptsDescription):
+        (WTR::AccessibilityUIElement::mathPrescriptsDescription):
+        (WTR::AccessibilityUIElement::pathDescription):
+        (WTR::AccessibilityUIElement::supportedActions):
+        * WebKitTestRunner/InjectedBundle/ios/ActivateFontsIOS.mm: Copied from Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h.
+        (WTR::activateFonts):
+        * WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm: Added.
+        (WTR::EventSenderProxy::EventSenderProxy):
+        (WTR::EventSenderProxy::~EventSenderProxy):
+        (WTR::EventSenderProxy::updateClickCountForButton):
+        (WTR::EventSenderProxy::mouseDown):
+        (WTR::EventSenderProxy::mouseUp):
+        (WTR::EventSenderProxy::mouseMoveTo):
+        (WTR::EventSenderProxy::leapForward):
+        (WTR::EventSenderProxy::keyDown):
+        (WTR::EventSenderProxy::mouseScrollBy):
+        (WTR::EventSenderProxy::continuousMouseScrollBy):
+        (WTR::EventSenderProxy::addTouchPoint):
+        (WTR::EventSenderProxy::updateTouchPoint):
+        (WTR::EventSenderProxy::setTouchModifier):
+        (WTR::EventSenderProxy::setTouchPointRadius):
+        (WTR::EventSenderProxy::touchStart):
+        (WTR::EventSenderProxy::touchMove):
+        (WTR::EventSenderProxy::touchEnd):
+        (WTR::EventSenderProxy::touchCancel):
+        (WTR::EventSenderProxy::clearTouchPoints):
+        (WTR::EventSenderProxy::releaseTouchPoint):
+        (WTR::EventSenderProxy::cancelTouchPoint):
+        * WebKitTestRunner/InjectedBundle/ios/InjectedBundleIOS.mm: Copied from Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h.
+        (WTR::InjectedBundle::platformInitialize):
+        * WebKitTestRunner/InjectedBundle/ios/InjectedBundlePageIOS.mm: Copied from Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h.
+        (WTR::InjectedBundlePage::platformDidStartProvisionalLoadForFrame):
+        * WebKitTestRunner/Makefile:
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::initialize):
+        * WebKitTestRunner/TestController.h:
+        * WebKitTestRunner/TestInvocation.cpp:
+        (WTR::TestInvocation::invoke):
+        (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
+        * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
+        * WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.h: Added.
+        * WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.m: Added.
+        (-[AppDelegate application:didFinishLaunchingWithOptions:]):
+        (-[AppDelegate applicationWillResignActive:]):
+        (-[AppDelegate applicationDidEnterBackground:]):
+        (-[AppDelegate applicationWillEnterForeground:]):
+        (-[AppDelegate applicationDidBecomeActive:]):
+        (-[AppDelegate applicationWillTerminate:]):
+        * WebKitTestRunner/WebKitTestRunnerApp/Images.xcassets/AppIcon.appiconset/Contents.json: Added.
+        * WebKitTestRunner/WebKitTestRunnerApp/Images.xcassets/LaunchImage.launchimage/Contents.json: Added.
+        * WebKitTestRunner/WebKitTestRunnerApp/WebKitTestRunnerApp-Info.plist: Added.
+        * WebKitTestRunner/WebKitTestRunnerApp/WebKitTestRunnerApp-Prefix.pch: Added.
+        * WebKitTestRunner/WebKitTestRunnerApp/en.lproj/InfoPlist.strings: Added.
+        * WebKitTestRunner/WebKitTestRunnerApp/main.m: Added.
+        (main):
+        * WebKitTestRunner/WebKitTestRunnerAppTests-Info.plist: Added.
+        * WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests-Info.plist: Added.
+        * WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests.m: Added.
+        (-[WebKitTestRunnerAppTests setUp]):
+        (-[WebKitTestRunnerAppTests tearDown]):
+        (-[WebKitTestRunnerAppTests testExample]):
+        * WebKitTestRunner/WebKitTestRunnerAppTests/en.lproj/InfoPlist.strings: Added.
+        * WebKitTestRunner/WebKitTestRunnerPrefix.h:
+        * WebKitTestRunner/cg/TestInvocationCG.cpp:
+        * WebKitTestRunner/iOS.xcconfig: Added.
+        * WebKitTestRunner/ios/PlatformWebViewIOS.mm: Added.
+        (-[TestRunnerWKView initWithFrame:contextRef:pageGroupRef:relatedToPage:useTiledDrawing:]):
+        (-[TestRunnerWKView _shouldUseTiledDrawingArea]):
+        (-[WebKitTestRunnerWindow isKeyWindow]):
+        (-[WebKitTestRunnerWindow setFrameOrigin:]):
+        (-[WebKitTestRunnerWindow setFrame:]):
+        (-[WebKitTestRunnerWindow frameRespectingFakeOrigin]):
+        (-[WebKitTestRunnerWindow backingScaleFactor]):
+        (WTR::PlatformWebView::PlatformWebView):
+        (WTR::PlatformWebView::resizeTo):
+        (WTR::PlatformWebView::~PlatformWebView):
+        (WTR::PlatformWebView::page):
+        (WTR::PlatformWebView::focus):
+        (WTR::PlatformWebView::windowFrame):
+        (WTR::PlatformWebView::setWindowFrame):
+        (WTR::PlatformWebView::didInitializeClients):
+        (WTR::PlatformWebView::addChromeInputField):
+        (WTR::PlatformWebView::removeChromeInputField):
+        (WTR::PlatformWebView::makeWebViewFirstResponder):
+        (WTR::PlatformWebView::windowSnapshotImage):
+        (WTR::PlatformWebView::viewSupportsOptions):
+        * WebKitTestRunner/ios/TestControllerIOS.mm: Added.
+        (WTR::TestController::notifyDone):
+        (WTR::TestController::platformInitialize):
+        (WTR::TestController::platformDestroy):
+        (WTR::TestController::initializeInjectedBundlePath):
+        (WTR::TestController::initializeTestPluginDirectory):
+        (WTR::TestController::platformRunUntil):
+        (WTR::TestController::platformInitializeContext):
+        (WTR::TestController::runModal):
+        (WTR::TestController::platformLibraryPathForTesting):
+        * WebKitTestRunner/ios/WebArchiveDumpSupportIOS.mm: Copied from Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h.
+        (createCFURLResponseFromResponseData):
+        (supportedNonImageMIMETypes):
+        * WebKitTestRunner/ios/mainIOS.mm: Copied from Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h.
+        (-[WebKitTestRunnerApp _runTestController]):
+        (-[WebKitTestRunnerApp applicationDidFinishLaunching:]):
+        (main):
+
</ins><span class="cx"> 2014-01-24  Enrique Ocaña González  &lt;eocanha@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] Put cache files in XDG_CACHE_HOME
</span></span></pre></div>
<a id="trunkToolsMakefile"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Makefile (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Makefile        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/Makefile        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -3,7 +3,7 @@
</span><span class="cx"> ifneq (,$(findstring iphone,$(SDKROOT)))
</span><span class="cx">         # FIXME: Build projects ../Source/ThirdParty/gtest/xcode, TestWebKitAPI for both device and simulator
</span><span class="cx">         # and build project DumpRenderTree for simulator.
</span><del>-        MODULES =
</del><ins>+        MODULES = WebKitTestRunner
</ins><span class="cx"> endif
</span><span class="cx"> 
</span><span class="cx"> all:
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerConfigurationsBasexcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/Configurations/Base.xcconfig (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/Configurations/Base.xcconfig        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/WebKitTestRunner/Configurations/Base.xcconfig        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -21,6 +21,8 @@
</span><span class="cx"> // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><span class="cx"> // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx"> 
</span><ins>+#include &quot;iOS.xcconfig&quot;
+
</ins><span class="cx"> CLANG_CXX_LANGUAGE_STANDARD = gnu++0x;
</span><span class="cx"> CLANG_CXX_LIBRARY = libc++;
</span><span class="cx"> CLANG_WARN_CXX0X_EXTENSIONS = NO;
</span><span class="lines">@@ -37,6 +39,8 @@
</span><span class="cx"> GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO
</span><span class="cx"> GCC_WARN_UNUSED_FUNCTION = YES
</span><span class="cx"> GCC_WARN_UNUSED_VARIABLE = YES
</span><ins>+GCC_WARN_64_TO_32_BIT_CONVERSION[arch=arm64] = NO;
+GCC_WARN_64_TO_32_BIT_CONVERSION[arch=x86_64] = NO;
</ins><span class="cx"> WARNING_CFLAGS = -Wall -W -Wno-unused-parameter -Wundef
</span><span class="cx"> LINKER_DISPLAYS_MANGLED_NAMES = YES;
</span><span class="cx"> GCC_PREFIX_HEADER = WebKitTestRunnerPrefix.h
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerConfigurationsInjectedBundlexcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/Configurations/InjectedBundle.xcconfig (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/Configurations/InjectedBundle.xcconfig        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/WebKitTestRunner/Configurations/InjectedBundle.xcconfig        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -28,4 +28,14 @@
</span><span class="cx"> 
</span><span class="cx"> INSTALL_PATH = $(SYSTEM_LIBRARY_DIR)/Frameworks/WebKit.framework/Versions/A/Resources;
</span><span class="cx"> SKIP_INSTALL = NO;
</span><del>-OTHER_LDFLAGS = $(inherited) -l$(WEBKIT_SYSTEM_INTERFACE_LIBRARY);
</del><ins>+
+OTHER_LDFLAGS_BASE = $(inherited) -l$(WEBKIT_SYSTEM_INTERFACE_LIBRARY) -framework QuartzCore;
+OTHER_LDFLAGS = $(OTHER_LDFLAGS_$(PLATFORM_NAME));
+OTHER_LDFLAGS_iphoneos = $(OTHER_LDFLAGS_BASE) -framework CFNetwork -framework CoreFoundation -framework CoreGraphics -framework Foundation -framework UIKit;
+OTHER_LDFLAGS_iphonesimulator = $(OTHER_LDFLAGS_iphoneos);
+OTHER_LDFLAGS_macosx = $(OTHER_LDFLAGS_BASE) -framework Carbon -framework Cocoa;
+
+EXCLUDED_SOURCE_FILE_NAMES = $(EXCLUDED_SOURCE_FILE_NAMES_$(PLATFORM_NAME));
+EXCLUDED_SOURCE_FILE_NAMES_iphoneos = AccessibilityControllerMac.mm AccessibilityTextMarkerMac.mm AccessibilityUIElementMac.mm ActivateFonts.mm InjectedBundleMac.mm InjectedBundlePageMac.mm WebArchiveDumpSupportMac.mm;
+EXCLUDED_SOURCE_FILE_NAMES_iphonesimulator = $(EXCLUDED_SOURCE_FILE_NAMES_iphoneos);
+EXCLUDED_SOURCE_FILE_NAMES_macosx = *IOS.*;
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerConfigurationsWebKitTestRunnerxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -26,5 +26,16 @@
</span><span class="cx"> PRODUCT_NAME = WebKitTestRunner
</span><span class="cx"> GCC_ENABLE_OBJC_EXCEPTIONS = YES
</span><span class="cx"> 
</span><ins>+OTHER_LDFLAGS_BASE = -l$(WEBKIT_SYSTEM_INTERFACE_LIBRARY) -framework WebKit2;
+OTHER_LDFLAGS = $(OTHER_LDFLAGS_$(PLATFORM_NAME));
+OTHER_LDFLAGS_iphoneos = $(OTHER_LDFLAGS_BASE) -framework JavaScriptCore -framework CoreGraphics -framework ImageIO -framework UIKit;
+OTHER_LDFLAGS_iphonesimulator = $(OTHER_LDFLAGS_iphoneos);
+OTHER_LDFLAGS_macosx = $(OTHER_LDFLAGS_BASE) -framework Carbon -framework Cocoa;
+
</ins><span class="cx"> INSTALL_PATH = $(SYSTEM_LIBRARY_DIR)/Frameworks/WebKit.framework/Versions/A/Resources;
</span><span class="cx"> SKIP_INSTALL = NO;
</span><ins>+
+EXCLUDED_SOURCE_FILE_NAMES = $(EXCLUDED_SOURCE_FILE_NAMES_$(PLATFORM_NAME));
+EXCLUDED_SOURCE_FILE_NAMES_iphoneos = EventSenderProxy.mm main.mm PlatformWebViewMac.mm TestControllerMac.mm mac/*;
+EXCLUDED_SOURCE_FILE_NAMES_iphonesimulator = $(EXCLUDED_SOURCE_FILE_NAMES_iphoneos);
+EXCLUDED_SOURCE_FILE_NAMES_macosx = AccessibilityUIElementIPhone.mm;
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleEventSendingControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKContextMenuItemRef&gt; m_item;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-
</del><ins>+#if ENABLE(CONTEXT_MENUS)
</ins><span class="cx"> static JSValueRef menuItemClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
</span><span class="cx"> {
</span><span class="cx">     MenuItemPrivateData* privateData = static_cast&lt;MenuItemPrivateData*&gt;(JSObjectGetPrivate(thisObject));
</span><span class="lines">@@ -104,6 +104,7 @@
</span><span class="cx"> 
</span><span class="cx">     return menuItemClass;
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> static WKEventModifiers parseModifier(JSStringRef modifier)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleiosAccessibilityControllerIOSmm"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,86 @@
</span><ins>+/*
+ * Copyright (C) 2014 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;config.h&quot;
+#import &quot;AccessibilityCommonMac.h&quot;
+#import &quot;AccessibilityController.h&quot;
+#import &quot;AccessibilityNotificationHandler.h&quot;
+#import &quot;InjectedBundle.h&quot;
+#import &quot;InjectedBundlePage.h&quot;
+
+#import &lt;JavaScriptCore/JSRetainPtr.h&gt;
+#import &lt;JavaScriptCore/JSStringRef.h&gt;
+#import &lt;JavaScriptCore/JSStringRefCF.h&gt;
+#import &lt;WebKit2/WKBundle.h&gt;
+#import &lt;WebKit2/WKBundlePage.h&gt;
+#import &lt;WebKit2/WKBundlePagePrivate.h&gt;
+
+namespace WTR {
+
+bool AccessibilityController::addNotificationListener(JSValueRef functionCallback)
+{
+    return false;
+}
+
+bool AccessibilityController::removeNotificationListener()
+{
+    return false;
+}
+
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityController::platformName()
+{
+    JSRetainPtr&lt;JSStringRef&gt; platformName(Adopt, JSStringCreateWithUTF8CString(&quot;ios&quot;));
+    return platformName;
+}
+
+void AccessibilityController::logAccessibilityEvents()
+{
+}
+
+void AccessibilityController::resetToConsistentState()
+{
+    if (m_globalNotificationHandler)
+        removeNotificationListener();
+}
+
+static id findAccessibleObjectById(id obj, NSString *idAttribute)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityController::accessibleElementById(JSStringRef idAttribute)
+{
+    WKBundlePageRef page = InjectedBundle::shared().page()-&gt;page();
+    id root = static_cast&lt;PlatformUIElement&gt;(WKAccessibilityRootObject(page));
+
+    id result = findAccessibleObjectById(root, [NSString stringWithJSStringRef:idAttribute]);
+    if (result)
+        return AccessibilityUIElement::create(result);
+
+    return 0;
+}
+
+} // namespace WTR
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleiosAccessibilityNotificationHandlerh"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityNotificationHandler.h (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityNotificationHandler.h                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityNotificationHandler.h        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+/*
+ * Copyright (C) 2011 Google 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:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * 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.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; 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 THE COPYRIGHT
+ * OWNER OR 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.
+ */
+
+#ifndef AccessibilityNotificationHandler_h
+#define AccessibilityNotificationHandler_h
+
+#import &lt;JavaScriptCore/JSObjectRef.h&gt;
+
+@interface AccessibilityNotificationHandler : NSObject {
+    id m_platformElement;
+    JSValueRef m_notificationFunctionCallback;
+}
+
+- (id)init;
+- (void)setPlatformElement:(id)platformElement;
+- (void)setCallback:(JSValueRef)callback;
+- (void)startObserving;
+- (void)stopObserving;
+
+@end
+
+#endif // AccessibilityNotificationHandler_h
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleiosAccessibilityTextMarkerIOSmmfromrev162728trunkToolsWebKitTestRunnerWebKitTestRunnerPrefixh"></a>
<div class="copfile"><h4>Copied: trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityTextMarkerIOS.mm (from rev 162728, trunk/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h) (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityTextMarkerIOS.mm                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityTextMarkerIOS.mm        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+/*
+ * Copyright (C) 2014 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;AccessibilityTextMarker.h&quot;
+
+namespace WTR {
+
+bool AccessibilityTextMarker::isEqual(AccessibilityTextMarker* other)
+{
+    return [(id)platformTextMarker() isEqual:(id)other-&gt;platformTextMarker()];
+}
+
+} // namespace WTR
+
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleiosAccessibilityUIElementIOSmm"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,778 @@
</span><ins>+/*
+ * Copyright (C) 2014 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;config.h&quot;
+#import &quot;AccessibilityNotificationHandler.h&quot;
+#import &quot;AccessibilityUIElement.h&quot;
+#import &quot;InjectedBundle.h&quot;
+#import &quot;InjectedBundlePage.h&quot;
+#import &lt;UIKit/UIKit.h&gt;
+
+namespace WTR {
+
+AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement element)
+    : m_element(element)
+{
+    // FIXME: ap@webkit.org says ObjC objects need to be CFRetained/CFRelease to be GC-compliant on the mac.
+    [m_element retain];
+}
+
+AccessibilityUIElement::AccessibilityUIElement(const AccessibilityUIElement&amp; other)
+    : JSWrappable()
+    , m_element(other.m_element)
+{
+    [m_element retain];
+}
+
+AccessibilityUIElement::~AccessibilityUIElement()
+{
+    [m_element release];
+}
+
+bool AccessibilityUIElement::isEqual(AccessibilityUIElement* otherElement)
+{
+    if (!otherElement)
+        return false;
+    return platformUIElement() == otherElement-&gt;platformUIElement();
+}
+
+void AccessibilityUIElement::getLinkedUIElements(Vector&lt;RefPtr&lt;AccessibilityUIElement&gt; &gt;&amp; elementVector)
+{
+}
+
+void AccessibilityUIElement::getDocumentLinks(Vector&lt;RefPtr&lt;AccessibilityUIElement&gt; &gt;&amp; elementVector)
+{
+}
+
+void AccessibilityUIElement::getChildren(Vector&lt;RefPtr&lt;AccessibilityUIElement&gt; &gt;&amp; elementVector)
+{
+    NSInteger childCount = [m_element accessibilityElementCount];
+    for (NSInteger k = 0; k &lt; childCount; ++k)
+        elementVector.append(AccessibilityUIElement::create([m_element accessibilityElementAtIndex:k]));
+}
+
+void AccessibilityUIElement::getChildrenWithRange(Vector&lt;RefPtr&lt;AccessibilityUIElement&gt; &gt;&amp; elementVector, unsigned location, unsigned length)
+{
+    NSUInteger childCount = [m_element accessibilityElementCount];
+    for (NSUInteger k = location; k &lt; childCount &amp;&amp; k &lt; (location+length); ++k)
+        elementVector.append(AccessibilityUIElement::create([m_element accessibilityElementAtIndex:k]));
+}
+
+int AccessibilityUIElement::childrenCount()
+{
+    Vector&lt;RefPtr&lt;AccessibilityUIElement&gt;&gt; children;
+    getChildren(children);
+
+    return children.size();
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::elementAtPoint(int x, int y)
+{
+    return 0;
+}
+
+unsigned AccessibilityUIElement::indexOfChild(AccessibilityUIElement* element)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::childAtIndex(unsigned index)
+{
+    Vector&lt;RefPtr&lt;AccessibilityUIElement&gt; &gt; children;
+    getChildrenWithRange(children, index, 1);
+
+    if (children.size() == 1)
+        return children[0];
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::linkedUIElementAtIndex(unsigned index)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::ariaOwnsElementAtIndex(unsigned index)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::ariaFlowToElementAtIndex(unsigned index)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::disclosedRowAtIndex(unsigned index)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::rowAtIndex(unsigned index)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::selectedChildAtIndex(unsigned index) const
+{
+    return 0;
+}
+
+unsigned AccessibilityUIElement::selectedChildrenCount() const
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::selectedRowAtIndex(unsigned index)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::titleUIElement()
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::parentElement()
+{
+    return nil;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::disclosedByRow()
+{
+    return 0;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::attributesOfLinkedUIElements()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::attributesOfDocumentLinks()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::attributesOfChildren()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::allAttributes()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::stringAttributeValue(JSStringRef attribute)
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+double AccessibilityUIElement::numberAttributeValue(JSStringRef attribute)
+{
+    return 0;
+}
+
+JSValueRef AccessibilityUIElement::uiElementArrayAttributeValue(JSStringRef attribute) const
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::uiElementAttributeValue(JSStringRef attribute) const
+{
+    return 0;
+}
+
+bool AccessibilityUIElement::boolAttributeValue(JSStringRef attribute)
+{
+    return false;
+}
+
+bool AccessibilityUIElement::isAttributeSettable(JSStringRef attribute)
+{
+    return false;
+}
+
+bool AccessibilityUIElement::isAttributeSupported(JSStringRef attribute)
+{
+    return false;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::parameterizedAttributeNames()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::role()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::subrole()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::roleDescription()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::title()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::description()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::orientation() const
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::stringValue()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::language()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::helpText() const
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+double AccessibilityUIElement::x()
+{
+    CGRect frame = [m_element accessibilityFrame];
+    return frame.origin.x;
+}
+
+double AccessibilityUIElement::y()
+{
+    CGRect frame = [m_element accessibilityFrame];
+    return frame.origin.y;
+}
+
+double AccessibilityUIElement::width()
+{
+    CGRect frame = [m_element accessibilityFrame];
+    return frame.size.width;
+}
+
+double AccessibilityUIElement::height()
+{
+    CGRect frame = [m_element accessibilityFrame];
+    return frame.size.height;
+}
+
+double AccessibilityUIElement::clickPointX()
+{
+    return 0;
+}
+
+double AccessibilityUIElement::clickPointY()
+{
+    return 0;
+}
+
+double AccessibilityUIElement::intValue() const
+{
+    return 0;
+}
+
+double AccessibilityUIElement::minValue()
+{
+    return 0;
+}
+
+double AccessibilityUIElement::maxValue()
+{
+    return 0;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::valueDescription()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+int AccessibilityUIElement::insertionPointLineNumber()
+{
+    return -1;
+}
+
+bool AccessibilityUIElement::isPressActionSupported()
+{
+    return false;
+}
+
+bool AccessibilityUIElement::isIncrementActionSupported()
+{
+    return false;
+}
+
+bool AccessibilityUIElement::isDecrementActionSupported()
+{
+    return false;
+}
+
+bool AccessibilityUIElement::isEnabled()
+{
+    return false;
+}
+
+bool AccessibilityUIElement::isRequired() const
+{
+    return false;
+}
+
+bool AccessibilityUIElement::isFocused() const
+{
+    // FIXME: implement
+    return false;
+}
+
+bool AccessibilityUIElement::isSelected() const
+{
+    UIAccessibilityTraits traits = [m_element accessibilityTraits];
+    return (traits &amp; UIAccessibilityTraitSelected);
+}
+
+bool AccessibilityUIElement::isSelectedOptionActive() const
+{
+    // FIXME: implement
+    return false;
+}
+
+bool AccessibilityUIElement::isIndeterminate() const
+{
+    // FIXME: implement
+    return false;
+}
+
+bool AccessibilityUIElement::isExpanded() const
+{
+    return false;
+}
+
+bool AccessibilityUIElement::isChecked() const
+{
+    return false;
+}
+
+int AccessibilityUIElement::hierarchicalLevel() const
+{
+    return 0;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::classList() const
+{
+    return nullptr;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::speak()
+{
+    return nullptr;
+}
+
+bool AccessibilityUIElement::ariaIsGrabbed() const
+{
+    return false;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::ariaDropEffects() const
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+// parameterized attributes
+int AccessibilityUIElement::lineForIndex(int index)
+{
+    return -1;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::rangeForLine(int line)
+{
+    return 0;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::rangeForPosition(int x, int y)
+{
+    return 0;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::boundsForRange(unsigned location, unsigned length)
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::stringForRange(unsigned location, unsigned length)
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::attributedStringForRange(unsigned location, unsigned length)
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+bool AccessibilityUIElement::attributedStringRangeIsMisspelled(unsigned location, unsigned length)
+{
+    return false;
+}
+
+unsigned uiElementCountForSearchPredicate(JSContextRef, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly)
+{
+    return 0;
+}
+
+unsigned AccessibilityUIElement::uiElementCountForSearchPredicate(JSContextRef context, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::uiElementForSearchPredicate(JSContextRef context, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly)
+{
+    return 0;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::attributesOfColumnHeaders()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::attributesOfRowHeaders()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::attributesOfColumns()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::attributesOfRows()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::attributesOfVisibleCells()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::attributesOfHeader()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+int AccessibilityUIElement::rowCount()
+{
+    return -1;
+}
+
+int AccessibilityUIElement::columnCount()
+{
+    return -1;
+}
+
+int AccessibilityUIElement::indexInTable()
+{
+    return -1;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::rowIndexRange()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::columnIndexRange()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::cellForColumnAndRow(unsigned col, unsigned row)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::horizontalScrollbar() const
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::verticalScrollbar() const
+{
+    return 0;
+}
+
+void AccessibilityUIElement::scrollToMakeVisible()
+{
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::selectedTextRange()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+void AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned length)
+{
+}
+
+void AccessibilityUIElement::increment()
+{
+    [m_element accessibilityIncrement];
+}
+
+void AccessibilityUIElement::decrement()
+{
+    [m_element accessibilityDecrement];
+}
+
+void AccessibilityUIElement::showMenu()
+{
+}
+
+void AccessibilityUIElement::press()
+{
+}
+
+void AccessibilityUIElement::setSelectedChild(AccessibilityUIElement* element) const
+{
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::accessibilityValue() const
+{
+    // FIXME: implement
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::documentEncoding()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::documentURI()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::url()
+{
+    return JSStringCreateWithCharacters(0, 0);
+}
+
+bool AccessibilityUIElement::addNotificationListener(JSValueRef functionCallback)
+{
+    return false;
+}
+
+bool AccessibilityUIElement::removeNotificationListener()
+{
+    return false;
+}
+
+bool AccessibilityUIElement::isFocusable() const
+{
+    return false;
+}
+
+bool AccessibilityUIElement::isSelectable() const
+{
+    // FIXME: implement
+    return false;
+}
+
+bool AccessibilityUIElement::isMultiSelectable() const
+{
+    // FIXME: implement
+    return false;
+}
+
+bool AccessibilityUIElement::isVisible() const
+{
+    // FIXME: implement
+    return false;
+}
+
+bool AccessibilityUIElement::isOffScreen() const
+{
+    // FIXME: implement
+    return false;
+}
+
+bool AccessibilityUIElement::isCollapsed() const
+{
+    // FIXME: implement
+    return false;
+}
+
+bool AccessibilityUIElement::isIgnored() const
+{
+    return false;
+}
+
+bool AccessibilityUIElement::hasPopup() const
+{
+    return false;
+}
+
+void AccessibilityUIElement::takeFocus()
+{
+    // FIXME: implement
+}
+
+void AccessibilityUIElement::takeSelection()
+{
+    // FIXME: implement
+}
+
+void AccessibilityUIElement::addSelection()
+{
+    // FIXME: implement
+}
+
+void AccessibilityUIElement::removeSelection()
+{
+    // FIXME: implement
+}
+
+// Text markers
+PassRefPtr&lt;AccessibilityTextMarkerRange&gt; AccessibilityUIElement::textMarkerRangeForElement(AccessibilityUIElement* element)
+{
+    return 0;
+}
+
+int AccessibilityUIElement::textMarkerRangeLength(AccessibilityTextMarkerRange* range)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityTextMarker&gt; AccessibilityUIElement::previousTextMarker(AccessibilityTextMarker* textMarker)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityTextMarker&gt; AccessibilityUIElement::nextTextMarker(AccessibilityTextMarker* textMarker)
+{
+    return 0;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::stringForTextMarkerRange(AccessibilityTextMarkerRange* markerRange)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityTextMarkerRange&gt; AccessibilityUIElement::textMarkerRangeForMarkers(AccessibilityTextMarker* startMarker, AccessibilityTextMarker* endMarker)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityTextMarker&gt; AccessibilityUIElement::startTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange* range)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityTextMarker&gt; AccessibilityUIElement::endTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange* range)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityTextMarker&gt; AccessibilityUIElement::endTextMarkerForBounds(int x, int y, int width, int height)
+{
+    return nullptr;
+}
+
+PassRefPtr&lt;AccessibilityTextMarker&gt; AccessibilityUIElement::startTextMarkerForBounds(int x, int y, int width, int height)
+{
+    return nullptr;
+}
+
+PassRefPtr&lt;AccessibilityTextMarker&gt; AccessibilityUIElement::textMarkerForPoint(int x, int y)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityUIElement&gt; AccessibilityUIElement::accessibilityElementForTextMarker(AccessibilityTextMarker* marker)
+{
+    return 0;
+}
+
+bool AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute(JSStringRef attribute, AccessibilityTextMarkerRange* range)
+{
+    return false;
+}
+
+int AccessibilityUIElement::indexForTextMarker(AccessibilityTextMarker* marker)
+{
+    return -1;
+}
+
+bool AccessibilityUIElement::isTextMarkerValid(AccessibilityTextMarker* textMarker)
+{
+    return false;
+}
+
+PassRefPtr&lt;AccessibilityTextMarker&gt; AccessibilityUIElement::textMarkerForIndex(int textIndex)
+{
+    return 0;
+}
+
+PassRefPtr&lt;AccessibilityTextMarker&gt; AccessibilityUIElement::startTextMarker()
+{
+    return nullptr;
+}
+
+PassRefPtr&lt;AccessibilityTextMarker&gt; AccessibilityUIElement::endTextMarker()
+{
+    return nullptr;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::mathPostscriptsDescription() const
+{
+    return 0;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::mathPrescriptsDescription() const
+{
+    return 0;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::pathDescription() const
+{
+    return 0;
+}
+
+JSRetainPtr&lt;JSStringRef&gt; AccessibilityUIElement::supportedActions() const
+{
+    return 0;
+}
+
+} // namespace WTR
+
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleiosActivateFontsIOSmmfromrev162728trunkToolsWebKitTestRunnerWebKitTestRunnerPrefixh"></a>
<div class="copfile"><h4>Copied: trunk/Tools/WebKitTestRunner/InjectedBundle/ios/ActivateFontsIOS.mm (from rev 162728, trunk/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h) (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/ios/ActivateFontsIOS.mm                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/ios/ActivateFontsIOS.mm        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;ActivateFonts.h&quot;
+
+namespace WTR {
+
+void activateFonts()
+{
+    // Write me.
+}
+
+}
+
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleiosEventSenderProxyIOSmm"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,163 @@
</span><ins>+/*
+ * Copyright (C) 2014 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;config.h&quot;
+#import &quot;EventSenderProxy.h&quot;
+
+#import &quot;PlatformWebView.h&quot;
+#import &quot;StringFunctions.h&quot;
+#import &quot;TestController.h&quot;
+#import &lt;wtf/RetainPtr.h&gt;
+#import &lt;WebKit2/WKString.h&gt;
+
+namespace WTR {
+
+EventSenderProxy::EventSenderProxy(TestController* testController)
+    : m_testController(testController)
+    , m_time(0)
+    , m_position()
+    , m_leftMouseButtonDown(false)
+    , m_clickCount(0)
+    , m_clickTime(0)
+    , m_clickPosition()
+    , m_clickButton(kWKEventMouseButtonNoButton)
+    , eventNumber(0)
+{
+    UNUSED_PARAM(m_testController);
+    UNUSED_PARAM(m_leftMouseButtonDown);
+    UNUSED_PARAM(eventNumber);
+}
+
+EventSenderProxy::~EventSenderProxy()
+{
+}
+
+void EventSenderProxy::updateClickCountForButton(int button)
+{
+    if (m_time - m_clickTime &lt; 1 &amp;&amp; m_position == m_clickPosition &amp;&amp; button == m_clickButton) {
+        ++m_clickCount;
+        m_clickTime = m_time;
+        return;
+    }
+
+    m_clickCount = 1;
+    m_clickTime = m_time;
+    m_clickPosition = m_position;
+    m_clickButton = button;
+}
+
+void EventSenderProxy::mouseDown(unsigned buttonNumber, WKEventModifiers modifiers)
+{
+    // Write me.
+}
+
+void EventSenderProxy::mouseUp(unsigned buttonNumber, WKEventModifiers modifiers)
+{
+    // Write me.
+}
+
+void EventSenderProxy::mouseMoveTo(double x, double y)
+{
+    // Write me.
+}
+
+void EventSenderProxy::leapForward(int milliseconds)
+{
+    m_time += milliseconds / 1000.0;
+}
+
+void EventSenderProxy::keyDown(WKStringRef key, WKEventModifiers modifiers, unsigned keyLocation)
+{
+    // Write me.
+}
+
+void EventSenderProxy::mouseScrollBy(int x, int y)
+{
+    // Write me.
+}
+
+void EventSenderProxy::continuousMouseScrollBy(int x, int y, bool paged)
+{
+    // Write me.
+}
+
+#if ENABLE(TOUCH_EVENTS)
+void EventSenderProxy::addTouchPoint(int x, int y)
+{
+    // Write me.
+}
+
+void EventSenderProxy::updateTouchPoint(int index, int x, int y)
+{
+    // Write me.
+}
+
+void EventSenderProxy::setTouchModifier(WKEventModifiers, bool enable)
+{
+    // Write me.
+}
+
+void EventSenderProxy::setTouchPointRadius(int radiusX, int radiusY)
+{
+    // Write me.
+}
+
+void EventSenderProxy::touchStart()
+{
+    // Write me.
+}
+
+void EventSenderProxy::touchMove()
+{
+    // Write me.
+}
+
+void EventSenderProxy::touchEnd()
+{
+    // Write me.
+}
+
+void EventSenderProxy::touchCancel()
+{
+    // Write me.
+}
+
+void EventSenderProxy::clearTouchPoints()
+{
+    // Write me.
+}
+
+void EventSenderProxy::releaseTouchPoint(int index)
+{
+    // Write me.
+}
+
+void EventSenderProxy::cancelTouchPoint(int index)
+{
+    // Write me.
+}
+#endif
+
+} // namespace WTR
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleiosInjectedBundleIOSmmfromrev162728trunkToolsWebKitTestRunnerWebKitTestRunnerPrefixh"></a>
<div class="copfile"><h4>Copied: trunk/Tools/WebKitTestRunner/InjectedBundle/ios/InjectedBundleIOS.mm (from rev 162728, trunk/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h) (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/ios/InjectedBundleIOS.mm                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/ios/InjectedBundleIOS.mm        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+/*
+ * Copyright (C) 2014 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;InjectedBundle.h&quot;
+
+#import &lt;Foundation/Foundation.h&gt;
+
+@interface NSURLRequest (PrivateThingsWeShouldntReallyUse)
++(void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString *)host;
+@end
+
+namespace WTR {
+
+void InjectedBundle::platformInitialize(WKTypeRef)
+{
+    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
+        nil];
+
+    [[NSUserDefaults standardUserDefaults] setVolatileDomain:dict forName:NSArgumentDomain];
+
+    [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:@&quot;localhost&quot;];
+    [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:@&quot;127.0.0.1&quot;];
+}
+
+} // namespace WTR
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleiosInjectedBundlePageIOSmmfromrev162728trunkToolsWebKitTestRunnerWebKitTestRunnerPrefixh"></a>
<div class="copfile"><h4>Copied: trunk/Tools/WebKitTestRunner/InjectedBundle/ios/InjectedBundlePageIOS.mm (from rev 162728, trunk/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h) (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/ios/InjectedBundlePageIOS.mm                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/ios/InjectedBundlePageIOS.mm        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+/*
+ * Copyright (C) 2014 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;config.h&quot;
+#import &quot;InjectedBundlePage.h&quot;
+
+#import &quot;StringFunctions.h&quot;
+#import &lt;WebKit2/WKBundleFrame.h&gt;
+#import &lt;WebKit2/WKURLCF.h&gt;
+#import &lt;WebKitSystemInterface.h&gt;
+#import &lt;wtf/RetainPtr.h&gt;
+#import &lt;wtf/text/StringBuilder.h&gt;
+#import &lt;wtf/text/WTFString.h&gt;
+
+namespace WTR {
+
+using namespace WTF;
+
+void InjectedBundlePage::platformDidStartProvisionalLoadForFrame(WKBundleFrameRef)
+{
+}
+
+} // namespace WTR
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerMakefile"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/Makefile (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/Makefile        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/WebKitTestRunner/Makefile        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -5,6 +5,10 @@
</span><span class="cx"> 
</span><span class="cx"> ifeq &quot;$(BUILD_WEBKITTESTRUNNER)&quot; &quot;YES&quot;
</span><span class="cx"> 
</span><ins>+ifneq (,$(findstring iphone,$(SDKROOT)))
+        OTHER_OPTIONS += -target WebKitTestRunnerApp
+endif
+
</ins><span class="cx"> SCRIPTS_PATH = ../Scripts
</span><span class="cx"> include ../../Makefile.shared
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestController.cpp        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -311,7 +311,7 @@
</span><span class="cx">     m_context.adopt(WKContextCreateWithInjectedBundlePath(injectedBundlePath()));
</span><span class="cx">     m_geolocationProvider = adoptPtr(new GeolocationProviderMock(m_context.get()));
</span><span class="cx"> 
</span><del>-#if PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt; 1080
</del><ins>+#if PLATFORM(IOS) || (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt; 1080)
</ins><span class="cx">     WKContextSetUsesNetworkProcess(m_context.get(), true);
</span><span class="cx">     WKContextSetProcessModel(m_context.get(), kWKProcessModelMultipleSecondaryProcesses);
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestController.h (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestController.h        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/WebKitTestRunner/TestController.h        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -26,9 +26,9 @@
</span><span class="cx"> #ifndef TestController_h
</span><span class="cx"> #define TestController_h
</span><span class="cx"> 
</span><ins>+#include &quot;GeolocationProviderMock.h&quot;
</ins><span class="cx"> #include &quot;WebNotificationProvider.h&quot;
</span><span class="cx"> #include &quot;WorkQueueManager.h&quot;
</span><del>-#include &lt;GeolocationProviderMock.h&gt;
</del><span class="cx"> #include &lt;WebKit2/WKRetainPtr.h&gt;
</span><span class="cx"> #include &lt;string&gt;
</span><span class="cx"> #include &lt;vector&gt;
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestInvocationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestInvocation.cpp (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestInvocation.cpp        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/WebKitTestRunner/TestInvocation.cpp        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -42,7 +42,9 @@
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx"> #include &lt;Carbon/Carbon.h&gt;
</span><ins>+#endif
</ins><span class="cx"> #include &lt;WebKit2/WKPagePrivateMac.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -129,7 +131,7 @@
</span><span class="cx">     return strstr(pathOrURL, &quot;loading/&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if ENABLE(INSPECTOR)
</del><ins>+#if ENABLE(INSPECTOR) &amp;&amp; !PLATFORM(IOS)
</ins><span class="cx"> static bool shouldOpenWebInspector(const char* pathOrURL)
</span><span class="cx"> {
</span><span class="cx">     return strstr(pathOrURL, &quot;inspector/&quot;) || strstr(pathOrURL, &quot;inspector\\&quot;);
</span><span class="lines">@@ -226,7 +228,7 @@
</span><span class="cx">     if (m_error)
</span><span class="cx">         goto end;
</span><span class="cx"> 
</span><del>-#if ENABLE(INSPECTOR)
</del><ins>+#if ENABLE(INSPECTOR) &amp;&amp; !PLATFORM(IOS)
</ins><span class="cx">     if (shouldOpenWebInspector(m_pathOrURL.c_str()))
</span><span class="cx">         WKInspectorShow(WKPageGetInspector(TestController::shared().mainWebView()-&gt;page()));
</span><span class="cx"> #endif // ENABLE(INSPECTOR)        
</span><span class="lines">@@ -251,7 +253,7 @@
</span><span class="cx">     dumpResults();
</span><span class="cx"> 
</span><span class="cx"> end:
</span><del>-#if ENABLE(INSPECTOR)
</del><ins>+#if ENABLE(INSPECTOR) &amp;&amp; !PLATFORM(IOS)
</ins><span class="cx">     if (m_gotInitialResponse)
</span><span class="cx">         WKInspectorClose(WKPageGetInspector(TestController::shared().mainWebView()-&gt;page()));
</span><span class="cx"> #endif // ENABLE(INSPECTOR)
</span><span class="lines">@@ -676,7 +678,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (WKStringIsEqualToUTF8CString(messageName, &quot;SecureEventInputIsEnabled&quot;)) {
</span><del>-#if PLATFORM(MAC)
</del><ins>+#if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS)
</ins><span class="cx">         WKRetainPtr&lt;WKBooleanRef&gt; result(AdoptWK, WKBooleanCreate(IsSecureEventInputEnabled()));
</span><span class="cx"> #else
</span><span class="cx">         WKRetainPtr&lt;WKBooleanRef&gt; result(AdoptWK, WKBooleanCreate(false));
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWebKitTestRunnerxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -37,6 +37,39 @@
</span><span class="cx">                 29A8FCDD145F0337009045A6 /* JSAccessibilityTextMarkerRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29A8FCE1345E7021006AA5A6 /* JSAccessibilityTextMarkerRange.cpp */; };
</span><span class="cx">                 29A8FCE2145F037B009045A6 /* AccessibilityTextMarkerRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29A8FCE1145F037B009045A6 /* AccessibilityTextMarkerRange.cpp */; };
</span><span class="cx">                 29A8FCE5145F0464009045A6 /* AccessibilityTextMarkerRangeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29A8FCE4145F0464009045A6 /* AccessibilityTextMarkerRangeMac.mm */; };
</span><ins>+                2E63ED8A1891AD7E002A7AFC /* AccessibilityControllerIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E63ED751891ACE9002A7AFC /* AccessibilityControllerIOS.mm */; };
+                2E63ED8B1891AD7E002A7AFC /* AccessibilityTextMarkerIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E63ED771891ACE9002A7AFC /* AccessibilityTextMarkerIOS.mm */; };
+                2E63ED8D1891AD7E002A7AFC /* ActivateFontsIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E63ED791891ACE9002A7AFC /* ActivateFontsIOS.mm */; };
+                2E63ED8E1891AD7E002A7AFC /* EventSenderProxyIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E63ED7A1891ACE9002A7AFC /* EventSenderProxyIOS.mm */; };
+                2E63ED8F1891AD7E002A7AFC /* InjectedBundleIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E63ED7B1891ACE9002A7AFC /* InjectedBundleIOS.mm */; };
+                2E63ED901891AD7E002A7AFC /* InjectedBundlePageIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E63ED7C1891ACE9002A7AFC /* InjectedBundlePageIOS.mm */; };
+                2E63ED911891ADAD002A7AFC /* PlatformWebViewIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2EE52D131890A9FB0010ED21 /* PlatformWebViewIOS.mm */; };
+                2E63ED921891ADAD002A7AFC /* TestControllerIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2EE52D141890A9FB0010ED21 /* TestControllerIOS.mm */; };
+                2E63ED941891ADAD002A7AFC /* mainIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2EE52D161890A9FB0010ED21 /* mainIOS.mm */; };
+                2E63ED951891ADC7002A7AFC /* CyclicRedundancyCheck.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5322FB4113FDA0CD0041ABCC /* CyclicRedundancyCheck.cpp */; };
+                2E63ED961891ADC7002A7AFC /* GeolocationProviderMock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D758E5160BECDC00268472 /* GeolocationProviderMock.cpp */; };
+                2E63ED971891ADC7002A7AFC /* PixelDumpSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5322FB4413FDA0EA0041ABCC /* PixelDumpSupport.cpp */; };
+                2E63ED981891ADC7002A7AFC /* TestController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC793430118F7F19005EA8E2 /* TestController.cpp */; };
+                2E63ED991891ADC7002A7AFC /* TestInvocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD7D2F711921278006DB7EE /* TestInvocation.cpp */; };
+                2E63ED9A1891ADC7002A7AFC /* WebNotificationProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3164C8EF15D1ADA100EF1FE0 /* WebNotificationProvider.cpp */; };
+                2E63ED9B1891ADC7002A7AFC /* WorkQueueManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4429FC5E1627089600F66D8B /* WorkQueueManager.cpp */; };
+                2E63ED9C1891ADC7002A7AFC /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EE52CF21890A9A80010ED21 /* AppDelegate.m */; };
+                2E63ED9E1891AEC1002A7AFC /* WebArchiveDumpSupportIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2EE52D151890A9FB0010ED21 /* WebArchiveDumpSupportIOS.mm */; };
+                2E63EDA11891B291002A7AFC /* AccessibilityUIElementIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E63ED781891ACE9002A7AFC /* AccessibilityUIElementIOS.mm */; };
+                2E63EDA51891BD8E002A7AFC /* TestInvocationCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC9192041333E4F8003011DC /* TestInvocationCG.cpp */; };
+                2E63EDA61891BDC0002A7AFC /* TestRunner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC9981711D3F51E0017BCA2 /* TestRunner.cpp */; };
+                2E749BEF1891E939007FC175 /* Options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 841CC00D181185BF0042E9B6 /* Options.cpp */; };
+                2E749BF21891EBFA007FC175 /* EventSenderProxyIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E63ED7A1891ACE9002A7AFC /* EventSenderProxyIOS.mm */; };
+                2EE52CE31890A9A80010ED21 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EE52CE21890A9A80010ED21 /* Foundation.framework */; };
+                2EE52CE51890A9A80010ED21 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EE52CE41890A9A80010ED21 /* CoreGraphics.framework */; };
+                2EE52CE71890A9A80010ED21 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EE52CE61890A9A80010ED21 /* UIKit.framework */; };
+                2EE52CED1890A9A80010ED21 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2EE52CEB1890A9A80010ED21 /* InfoPlist.strings */; };
+                2EE52CFC1890A9A90010ED21 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EE52CFB1890A9A90010ED21 /* XCTest.framework */; };
+                2EE52CFD1890A9A90010ED21 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EE52CE21890A9A80010ED21 /* Foundation.framework */; };
+                2EE52CFE1890A9A90010ED21 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EE52CE61890A9A80010ED21 /* UIKit.framework */; };
+                2EE52D061890A9A90010ED21 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2EE52D041890A9A90010ED21 /* InfoPlist.strings */; };
+                2EE52D081890A9A90010ED21 /* WebKitTestRunnerAppTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EE52D071890A9A90010ED21 /* WebKitTestRunnerAppTests.m */; };
+                2EE52D111890A9BB0010ED21 /* WebKitTestRunnerInjectedBundle.bundle in Resources */ = {isa = PBXBuildFile; fileRef = BC25186211D15D54002EBC01 /* WebKitTestRunnerInjectedBundle.bundle */; };
</ins><span class="cx">                 3164C8F015D1ADA100EF1FE0 /* WebNotificationProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3164C8EF15D1ADA100EF1FE0 /* WebNotificationProvider.cpp */; };
</span><span class="cx">                 4429FC5F1627089600F66D8B /* WorkQueueManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4429FC5E1627089600F66D8B /* WorkQueueManager.cpp */; };
</span><span class="cx">                 5322FB4313FDA0CD0041ABCC /* CyclicRedundancyCheck.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5322FB4113FDA0CD0041ABCC /* CyclicRedundancyCheck.cpp */; };
</span><span class="lines">@@ -64,13 +97,11 @@
</span><span class="cx">                 A664BC7613A5F3A9009A7B25 /* libWebCoreTestSupport.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 41230E16138C78BF00BCCFCA /* libWebCoreTestSupport.dylib */; };
</span><span class="cx">                 BC14E4DB120E02D000826C0C /* GCController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC14E4D9120E02D000826C0C /* GCController.cpp */; };
</span><span class="cx">                 BC14E4EA120E03D800826C0C /* JSGCController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC14E4E8120E03D800826C0C /* JSGCController.cpp */; };
</span><del>-                BC25193E11D15D8B002EBC01 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC7934A411906584005EA8E2 /* Cocoa.framework */; };
</del><span class="cx">                 BC25193F11D15D8B002EBC01 /* WebKit2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC7934AB1190658C005EA8E2 /* WebKit2.framework */; };
</span><span class="cx">                 BC25194011D15D8B002EBC01 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCDA2B991191051F00C3BC47 /* JavaScriptCore.framework */; };
</span><span class="cx">                 BC251A3E11D16831002EBC01 /* InjectedBundleMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC25184611D15767002EBC01 /* InjectedBundleMain.cpp */; };
</span><span class="cx">                 BC793400118F7C84005EA8E2 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC7933FF118F7C84005EA8E2 /* main.mm */; };
</span><span class="cx">                 BC793431118F7F19005EA8E2 /* TestController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC793430118F7F19005EA8E2 /* TestController.cpp */; };
</span><del>-                BC7934A511906584005EA8E2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC7934A411906584005EA8E2 /* Cocoa.framework */; };
</del><span class="cx">                 BC7934AC1190658C005EA8E2 /* WebKit2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC7934AB1190658C005EA8E2 /* WebKit2.framework */; };
</span><span class="cx">                 BC7934E811906846005EA8E2 /* PlatformWebViewMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC7934E711906846005EA8E2 /* PlatformWebViewMac.mm */; };
</span><span class="cx">                 BC8C795C11D2785D004535A1 /* TestControllerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC8C795B11D2785D004535A1 /* TestControllerMac.mm */; };
</span><span class="lines">@@ -82,18 +113,30 @@
</span><span class="cx">                 BC952F1F11F3C652003398B4 /* JSTestRunner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC952F1D11F3C652003398B4 /* JSTestRunner.cpp */; };
</span><span class="cx">                 BCC997A411D3C8F60017BCA2 /* InjectedBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC997A011D3C8F60017BCA2 /* InjectedBundle.cpp */; };
</span><span class="cx">                 BCC997A511D3C8F60017BCA2 /* InjectedBundlePage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC997A211D3C8F60017BCA2 /* InjectedBundlePage.cpp */; };
</span><del>-                BCC9981811D3F51E0017BCA2 /* TestRunner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC9981711D3F51E0017BCA2 /* TestRunner.cpp */; };
</del><span class="cx">                 BCD7D2F811921278006DB7EE /* TestInvocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD7D2F711921278006DB7EE /* TestInvocation.cpp */; };
</span><span class="cx">                 BCDA2B9A1191051F00C3BC47 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCDA2B991191051F00C3BC47 /* JavaScriptCore.framework */; };
</span><span class="cx">                 C0CE720B1247C93300BC0EC4 /* TestRunnerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = C0CE720A1247C93300BC0EC4 /* TestRunnerMac.mm */; };
</span><span class="cx">                 E132AA3A17CD5F1000611DF0 /* WebKitTestRunnerDraggingInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = E132AA3817CD5F1000611DF0 /* WebKitTestRunnerDraggingInfo.mm */; };
</span><span class="cx">                 E132AA3D17CE776F00611DF0 /* WebKitTestRunnerEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = E132AA3B17CE776F00611DF0 /* WebKitTestRunnerEvent.mm */; };
</span><del>-                E1BA671E1742DA6A00C20251 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1BA671D1742DA5A00C20251 /* Carbon.framework */; };
</del><span class="cx">                 E1C642C317CBCC7300D66A3C /* PoseAsClass.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1C642C117CBCC7300D66A3C /* PoseAsClass.mm */; };
</span><span class="cx">                 E1C642C617CBCD4C00D66A3C /* WebKitTestRunnerPasteboard.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1C642C417CBCD4C00D66A3C /* WebKitTestRunnerPasteboard.mm */; };
</span><span class="cx"> /* End PBXBuildFile section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXContainerItemProxy section */
</span><ins>+                2E63ED881891AD47002A7AFC /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+                        proxyType = 1;
+                        remoteGlobalIDString = BC25186111D15D54002EBC01;
+                        remoteInfo = WebKitTestRunnerInjectedBundle;
+                };
+                2EE52CFF1890A9A90010ED21 /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+                        proxyType = 1;
+                        remoteGlobalIDString = 2EE52CDF1890A9A80010ED21;
+                        remoteInfo = WebKitTestRunnerApp;
+                };
</ins><span class="cx">                 BC25194111D15D94002EBC01 /* PBXContainerItemProxy */ = {
</span><span class="cx">                         isa = PBXContainerItemProxy;
</span><span class="cx">                         containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
</span><span class="lines">@@ -120,8 +163,8 @@
</span><span class="cx">                 29210EA8144CAB8800835BB5 /* AccessibilityController.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AccessibilityController.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 29210EA9144CACB200835BB5 /* AccessibilityUIElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityUIElement.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 29210EAA144CACB200835BB5 /* AccessibilityUIElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityUIElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                29210EAB144CACB200835BB5 /* AccessibilityUIElementMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityUIElementMac.mm; path = mac/AccessibilityUIElementMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
-                29210EAB144CACB200835BB6 /* AccessibilityCommonMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityCommonMac.mm; path = mac/AccessibilityCommonMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                29210EAB144CACB200835BB5 /* AccessibilityUIElementMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AccessibilityUIElementMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                29210EAB144CACB200835BB6 /* AccessibilityCommonMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AccessibilityCommonMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 29210EB1144CACD400835BB5 /* AccessibilityTextMarker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityTextMarker.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 29210EB2144CACD400835BB5 /* AccessibilityTextMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityTextMarker.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 29210EB3144CACD400835BB5 /* AccessibilityTextMarkerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityTextMarkerMac.mm; path = mac/AccessibilityTextMarkerMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -136,7 +179,32 @@
</span><span class="cx">                 29A8FCE1145F037B009045A6 /* AccessibilityTextMarkerRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityTextMarkerRange.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 29A8FCE1345E7021006AA5A6 /* JSAccessibilityTextMarkerRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSAccessibilityTextMarkerRange.cpp; path = DerivedSources/WebKitTestRunner/JSAccessibilityTextMarkerRange.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
</span><span class="cx">                 29A8FCE1345E7021006AA5A7 /* JSAccessibilityTextMarkerRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSAccessibilityTextMarkerRange.h; path = DerivedSources/WebKitTestRunner/JSAccessibilityTextMarkerRange.h; sourceTree = BUILT_PRODUCTS_DIR; };
</span><del>-                29A8FCE4145F0464009045A6 /* AccessibilityTextMarkerRangeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityTextMarkerRangeMac.mm; path = mac/AccessibilityTextMarkerRangeMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                29A8FCE4145F0464009045A6 /* AccessibilityTextMarkerRangeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AccessibilityTextMarkerRangeMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2E63ED751891ACE9002A7AFC /* AccessibilityControllerIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AccessibilityControllerIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2E63ED761891ACE9002A7AFC /* AccessibilityNotificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityNotificationHandler.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2E63ED771891ACE9002A7AFC /* AccessibilityTextMarkerIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AccessibilityTextMarkerIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2E63ED781891ACE9002A7AFC /* AccessibilityUIElementIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AccessibilityUIElementIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2E63ED791891ACE9002A7AFC /* ActivateFontsIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ActivateFontsIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2E63ED7A1891ACE9002A7AFC /* EventSenderProxyIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EventSenderProxyIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2E63ED7B1891ACE9002A7AFC /* InjectedBundleIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InjectedBundleIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2E63ED7C1891ACE9002A7AFC /* InjectedBundlePageIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InjectedBundlePageIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2EE52CE01890A9A80010ED21 /* WebKitTestRunnerApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WebKitTestRunnerApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
+                2EE52CE21890A9A80010ED21 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+                2EE52CE41890A9A80010ED21 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+                2EE52CE61890A9A80010ED21 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
+                2EE52CEA1890A9A80010ED21 /* WebKitTestRunnerApp-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = &quot;WebKitTestRunnerApp-Info.plist&quot;; path = &quot;WebKitTestRunnerApp/WebKitTestRunnerApp-Info.plist&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2EE52CEC1890A9A80010ED21 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2EE52CF11890A9A80010ED21 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2EE52CF21890A9A80010ED21 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2EE52CFA1890A9A80010ED21 /* WebKitTestRunnerAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WebKitTestRunnerAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+                2EE52CFB1890A9A90010ED21 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
+                2EE52D031890A9A90010ED21 /* WebKitTestRunnerAppTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = &quot;WebKitTestRunnerAppTests-Info.plist&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2EE52D051890A9A90010ED21 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2EE52D071890A9A90010ED21 /* WebKitTestRunnerAppTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WebKitTestRunnerAppTests.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2EE52D131890A9FB0010ED21 /* PlatformWebViewIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformWebViewIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2EE52D141890A9FB0010ED21 /* TestControllerIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TestControllerIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2EE52D151890A9FB0010ED21 /* WebArchiveDumpSupportIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebArchiveDumpSupportIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2EE52D161890A9FB0010ED21 /* mainIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = mainIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 3110BE0F15BA011400D216AC /* WebNotificationProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebNotificationProvider.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 3164C8EF15D1ADA100EF1FE0 /* WebNotificationProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationProvider.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 378D442213346D00006A777B /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -172,7 +240,7 @@
</span><span class="cx">                 6510A78111EC643800410867 /* WebKitWeightWatcher900.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher900.ttf; path = fonts/WebKitWeightWatcher900.ttf; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 65EB859D11EC67CC0034D300 /* ActivateFonts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ActivateFonts.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 65EB859F11EC67CC0034D300 /* ActivateFonts.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ActivateFonts.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                8034C6611487636400AC32E9 /* AccessibilityControllerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityControllerMac.mm; path = mac/AccessibilityControllerMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                8034C6611487636400AC32E9 /* AccessibilityControllerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AccessibilityControllerMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 8097338814874A5A008156D9 /* AccessibilityNotificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AccessibilityNotificationHandler.h; path = mac/AccessibilityNotificationHandler.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 8097338914874A5A008156D9 /* AccessibilityNotificationHandler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityNotificationHandler.mm; path = mac/AccessibilityNotificationHandler.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 841CC00D181185BF0042E9B6 /* Options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Options.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -238,14 +306,32 @@
</span><span class="cx"> /* End PBXFileReference section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXFrameworksBuildPhase section */
</span><ins>+                2EE52CDD1890A9A80010ED21 /* Frameworks */ = {
+                        isa = PBXFrameworksBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                2EE52CE51890A9A80010ED21 /* CoreGraphics.framework in Frameworks */,
+                                2EE52CE71890A9A80010ED21 /* UIKit.framework in Frameworks */,
+                                2EE52CE31890A9A80010ED21 /* Foundation.framework in Frameworks */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
+                2EE52CF71890A9A80010ED21 /* Frameworks */ = {
+                        isa = PBXFrameworksBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                2EE52CFC1890A9A90010ED21 /* XCTest.framework in Frameworks */,
+                                2EE52CFE1890A9A90010ED21 /* UIKit.framework in Frameworks */,
+                                2EE52CFD1890A9A90010ED21 /* Foundation.framework in Frameworks */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
</ins><span class="cx">                 8DD76F9B0486AA7600D96B5E /* Frameworks */ = {
</span><span class="cx">                         isa = PBXFrameworksBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><del>-                                BC7934A511906584005EA8E2 /* Cocoa.framework in Frameworks */,
</del><span class="cx">                                 BCDA2B9A1191051F00C3BC47 /* JavaScriptCore.framework in Frameworks */,
</span><span class="cx">                                 0F5169CB1445222D00E0A9D7 /* WebKit.framework in Frameworks */,
</span><del>-                                E1BA671E1742DA6A00C20251 /* Carbon.framework in Frameworks */,
</del><span class="cx">                                 BC7934AC1190658C005EA8E2 /* WebKit2.framework in Frameworks */,
</span><span class="cx">                         );
</span><span class="cx">                         runOnlyForDeploymentPostprocessing = 0;
</span><span class="lines">@@ -254,7 +340,6 @@
</span><span class="cx">                         isa = PBXFrameworksBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><del>-                                BC25193E11D15D8B002EBC01 /* Cocoa.framework in Frameworks */,
</del><span class="cx">                                 BC25194011D15D8B002EBC01 /* JavaScriptCore.framework in Frameworks */,
</span><span class="cx">                                 A664BC7613A5F3A9009A7B25 /* libWebCoreTestSupport.dylib in Frameworks */,
</span><span class="cx">                                 0F5169CC1445222D00E0A9D7 /* WebKit.framework in Frameworks */,
</span><span class="lines">@@ -269,12 +354,16 @@
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="cx">                                 BC952EC511F3C10F003398B4 /* DerivedSources.make */,
</span><ins>+                                2EE52CEA1890A9A80010ED21 /* WebKitTestRunnerApp-Info.plist */,
</ins><span class="cx">                                 BC99CBF11207642D00FDEE76 /* Shared */,
</span><span class="cx">                                 08FB7795FE84155DC02AAC07 /* TestRunner */,
</span><span class="cx">                                 BC25183511D1571D002EBC01 /* InjectedBundle */,
</span><span class="cx">                                 BC793401118F7C8A005EA8E2 /* Configurations */,
</span><span class="cx">                                 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */,
</span><span class="cx">                                 BC25194411D15DBE002EBC01 /* Resources */,
</span><ins>+                                2EE52CE81890A9A80010ED21 /* WebKitTestRunnerApp */,
+                                2EE52D011890A9A90010ED21 /* WebKitTestRunnerAppTests */,
+                                2EE52CE11890A9A80010ED21 /* Frameworks */,
</ins><span class="cx">                                 1AB674ADFE9D54B511CA2CBB /* Products */,
</span><span class="cx">                         );
</span><span class="cx">                         name = WebKitTestRunner;
</span><span class="lines">@@ -283,6 +372,7 @@
</span><span class="cx">                 08FB7795FE84155DC02AAC07 /* TestRunner */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                2EE52D121890A9FB0010ED21 /* ios */,
</ins><span class="cx">                                 841CC00D181185BF0042E9B6 /* Options.cpp */,
</span><span class="cx">                                 841CC00E181185BF0042E9B6 /* Options.h */,
</span><span class="cx">                                 BC9192021333E4CD003011DC /* cg */,
</span><span class="lines">@@ -327,6 +417,8 @@
</span><span class="cx">                         children = (
</span><span class="cx">                                 8DD76FA10486AA7600D96B5E /* WebKitTestRunner */,
</span><span class="cx">                                 BC25186211D15D54002EBC01 /* WebKitTestRunnerInjectedBundle.bundle */,
</span><ins>+                                2EE52CE01890A9A80010ED21 /* WebKitTestRunnerApp.app */,
+                                2EE52CFA1890A9A80010ED21 /* WebKitTestRunnerAppTests.xctest */,
</ins><span class="cx">                         );
</span><span class="cx">                         name = Products;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -334,10 +426,8 @@
</span><span class="cx">                 29A8FCE0145F035D009045A6 /* Accessibility */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><del>-                                29210EAB144CACB200835BB6 /* AccessibilityCommonMac.mm */,
</del><span class="cx">                                 29210EA2144CAAA500835BB5 /* AccessibilityController.cpp */,
</span><span class="cx">                                 29210EA3144CAAA500835BB5 /* AccessibilityController.h */,
</span><del>-                                8034C6611487636400AC32E9 /* AccessibilityControllerMac.mm */,
</del><span class="cx">                                 8097338814874A5A008156D9 /* AccessibilityNotificationHandler.h */,
</span><span class="cx">                                 8097338914874A5A008156D9 /* AccessibilityNotificationHandler.mm */,
</span><span class="cx">                                 29210EB1144CACD400835BB5 /* AccessibilityTextMarker.cpp */,
</span><span class="lines">@@ -345,14 +435,77 @@
</span><span class="cx">                                 29210EB3144CACD400835BB5 /* AccessibilityTextMarkerMac.mm */,
</span><span class="cx">                                 29A8FCE1145F037B009045A6 /* AccessibilityTextMarkerRange.cpp */,
</span><span class="cx">                                 29A8FCDF145F0358009045A6 /* AccessibilityTextMarkerRange.h */,
</span><del>-                                29A8FCE4145F0464009045A6 /* AccessibilityTextMarkerRangeMac.mm */,
</del><span class="cx">                                 29210EA9144CACB200835BB5 /* AccessibilityUIElement.cpp */,
</span><span class="cx">                                 29210EAA144CACB200835BB5 /* AccessibilityUIElement.h */,
</span><del>-                                29210EAB144CACB200835BB5 /* AccessibilityUIElementMac.mm */,
</del><span class="cx">                         );
</span><span class="cx">                         name = Accessibility;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="cx">                 };
</span><ins>+                2E63ED741891ACE9002A7AFC /* ios */ = {
+                        isa = PBXGroup;
+                        children = (
+                                2E63ED751891ACE9002A7AFC /* AccessibilityControllerIOS.mm */,
+                                2E63ED761891ACE9002A7AFC /* AccessibilityNotificationHandler.h */,
+                                2E63ED771891ACE9002A7AFC /* AccessibilityTextMarkerIOS.mm */,
+                                2E63ED781891ACE9002A7AFC /* AccessibilityUIElementIOS.mm */,
+                                2E63ED791891ACE9002A7AFC /* ActivateFontsIOS.mm */,
+                                2E63ED7A1891ACE9002A7AFC /* EventSenderProxyIOS.mm */,
+                                2E63ED7B1891ACE9002A7AFC /* InjectedBundleIOS.mm */,
+                                2E63ED7C1891ACE9002A7AFC /* InjectedBundlePageIOS.mm */,
+                        );
+                        path = ios;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+                2EE52CE11890A9A80010ED21 /* Frameworks */ = {
+                        isa = PBXGroup;
+                        children = (
+                                2EE52CE21890A9A80010ED21 /* Foundation.framework */,
+                                2EE52CE41890A9A80010ED21 /* CoreGraphics.framework */,
+                                2EE52CE61890A9A80010ED21 /* UIKit.framework */,
+                                2EE52CFB1890A9A90010ED21 /* XCTest.framework */,
+                        );
+                        name = Frameworks;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+                2EE52CE81890A9A80010ED21 /* WebKitTestRunnerApp */ = {
+                        isa = PBXGroup;
+                        children = (
+                                2EE52CF11890A9A80010ED21 /* AppDelegate.h */,
+                                2EE52CF21890A9A80010ED21 /* AppDelegate.m */,
+                        );
+                        path = WebKitTestRunnerApp;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+                2EE52D011890A9A90010ED21 /* WebKitTestRunnerAppTests */ = {
+                        isa = PBXGroup;
+                        children = (
+                                2EE52D071890A9A90010ED21 /* WebKitTestRunnerAppTests.m */,
+                                2EE52D021890A9A90010ED21 /* Supporting Files */,
+                        );
+                        path = WebKitTestRunnerAppTests;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+                2EE52D021890A9A90010ED21 /* Supporting Files */ = {
+                        isa = PBXGroup;
+                        children = (
+                                2EE52D031890A9A90010ED21 /* WebKitTestRunnerAppTests-Info.plist */,
+                                2EE52D041890A9A90010ED21 /* InfoPlist.strings */,
+                        );
+                        name = &quot;Supporting Files&quot;;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+                2EE52D121890A9FB0010ED21 /* ios */ = {
+                        isa = PBXGroup;
+                        children = (
+                                2EE52CEB1890A9A80010ED21 /* InfoPlist.strings */,
+                                2EE52D131890A9FB0010ED21 /* PlatformWebViewIOS.mm */,
+                                2EE52D141890A9FB0010ED21 /* TestControllerIOS.mm */,
+                                2EE52D151890A9FB0010ED21 /* WebArchiveDumpSupportIOS.mm */,
+                                2EE52D161890A9FB0010ED21 /* mainIOS.mm */,
+                        );
+                        path = ios;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
</ins><span class="cx">                 5C45C31017398E370079714E /* cf */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="lines">@@ -365,6 +518,10 @@
</span><span class="cx">                 65EB859E11EC67CC0034D300 /* mac */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                29210EAB144CACB200835BB6 /* AccessibilityCommonMac.mm */,
+                                8034C6611487636400AC32E9 /* AccessibilityControllerMac.mm */,
+                                29A8FCE4145F0464009045A6 /* AccessibilityTextMarkerRangeMac.mm */,
+                                29210EAB144CACB200835BB5 /* AccessibilityUIElementMac.mm */,
</ins><span class="cx">                                 5C45C30E17398E290079714E /* WebArchiveDumpSupportMac.mm */,
</span><span class="cx">                                 65EB859F11EC67CC0034D300 /* ActivateFonts.mm */,
</span><span class="cx">                                 BC8DAD771316D7B900EC96FC /* InjectedBundleMac.mm */,
</span><span class="lines">@@ -393,6 +550,7 @@
</span><span class="cx">                 BC25183511D1571D002EBC01 /* InjectedBundle */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                2E63ED741891ACE9002A7AFC /* ios */,
</ins><span class="cx">                                 5C45C31017398E370079714E /* cf */,
</span><span class="cx">                                 BC952C0A11F3B939003398B4 /* Bindings */,
</span><span class="cx">                                 BC14E4E0120E02F900826C0C /* Controllers */,
</span><span class="lines">@@ -519,6 +677,42 @@
</span><span class="cx"> /* End PBXGroup section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXNativeTarget section */
</span><ins>+                2EE52CDF1890A9A80010ED21 /* WebKitTestRunnerApp */ = {
+                        isa = PBXNativeTarget;
+                        buildConfigurationList = 2EE52D0F1890A9A90010ED21 /* Build configuration list for PBXNativeTarget &quot;WebKitTestRunnerApp&quot; */;
+                        buildPhases = (
+                                2EE52CDC1890A9A80010ED21 /* Sources */,
+                                2EE52CDD1890A9A80010ED21 /* Frameworks */,
+                                2EE52CDE1890A9A80010ED21 /* Resources */,
+                        );
+                        buildRules = (
+                        );
+                        dependencies = (
+                                2E63ED891891AD47002A7AFC /* PBXTargetDependency */,
+                        );
+                        name = WebKitTestRunnerApp;
+                        productName = WebKitTestRunnerApp;
+                        productReference = 2EE52CE01890A9A80010ED21 /* WebKitTestRunnerApp.app */;
+                        productType = &quot;com.apple.product-type.application&quot;;
+                };
+                2EE52CF91890A9A80010ED21 /* WebKitTestRunnerAppTests */ = {
+                        isa = PBXNativeTarget;
+                        buildConfigurationList = 2EE52D101890A9A90010ED21 /* Build configuration list for PBXNativeTarget &quot;WebKitTestRunnerAppTests&quot; */;
+                        buildPhases = (
+                                2EE52CF61890A9A80010ED21 /* Sources */,
+                                2EE52CF71890A9A80010ED21 /* Frameworks */,
+                                2EE52CF81890A9A80010ED21 /* Resources */,
+                        );
+                        buildRules = (
+                        );
+                        dependencies = (
+                                2EE52D001890A9A90010ED21 /* PBXTargetDependency */,
+                        );
+                        name = WebKitTestRunnerAppTests;
+                        productName = WebKitTestRunnerAppTests;
+                        productReference = 2EE52CFA1890A9A80010ED21 /* WebKitTestRunnerAppTests.xctest */;
+                        productType = &quot;com.apple.product-type.bundle.unit-test&quot;;
+                };
</ins><span class="cx">                 8DD76F960486AA7600D96B5E /* WebKitTestRunner */ = {
</span><span class="cx">                         isa = PBXNativeTarget;
</span><span class="cx">                         buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget &quot;WebKitTestRunner&quot; */;
</span><span class="lines">@@ -561,6 +755,11 @@
</span><span class="cx">                 08FB7793FE84155DC02AAC07 /* Project object */ = {
</span><span class="cx">                         isa = PBXProject;
</span><span class="cx">                         attributes = {
</span><ins>+                                TargetAttributes = {
+                                        2EE52CF91890A9A80010ED21 = {
+                                                TestTargetID = 2EE52CDF1890A9A80010ED21;
+                                        };
+                                };
</ins><span class="cx">                         };
</span><span class="cx">                         buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject &quot;WebKitTestRunner&quot; */;
</span><span class="cx">                         compatibilityVersion = &quot;Xcode 3.1&quot;;
</span><span class="lines">@@ -571,6 +770,7 @@
</span><span class="cx">                                 Japanese,
</span><span class="cx">                                 French,
</span><span class="cx">                                 German,
</span><ins>+                                en,
</ins><span class="cx">                         );
</span><span class="cx">                         mainGroup = 08FB7794FE84155DC02AAC07 /* WebKitTestRunner */;
</span><span class="cx">                         projectDirPath = &quot;&quot;;
</span><span class="lines">@@ -579,11 +779,30 @@
</span><span class="cx">                                 8DD76F960486AA7600D96B5E /* WebKitTestRunner */,
</span><span class="cx">                                 BC25186111D15D54002EBC01 /* WebKitTestRunnerInjectedBundle */,
</span><span class="cx">                                 BC952D7711F3BF5D003398B4 /* Derived Sources */,
</span><ins>+                                2EE52CDF1890A9A80010ED21 /* WebKitTestRunnerApp */,
+                                2EE52CF91890A9A80010ED21 /* WebKitTestRunnerAppTests */,
</ins><span class="cx">                         );
</span><span class="cx">                 };
</span><span class="cx"> /* End PBXProject section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXResourcesBuildPhase section */
</span><ins>+                2EE52CDE1890A9A80010ED21 /* Resources */ = {
+                        isa = PBXResourcesBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                2EE52CED1890A9A80010ED21 /* InfoPlist.strings in Resources */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
+                2EE52CF81890A9A80010ED21 /* Resources */ = {
+                        isa = PBXResourcesBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                2EE52D111890A9BB0010ED21 /* WebKitTestRunnerInjectedBundle.bundle in Resources */,
+                                2EE52D061890A9A90010ED21 /* InfoPlist.strings in Resources */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
</ins><span class="cx">                 BC25185E11D15D54002EBC01 /* Resources */ = {
</span><span class="cx">                         isa = PBXResourcesBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="lines">@@ -622,6 +841,35 @@
</span><span class="cx"> /* End PBXShellScriptBuildPhase section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXSourcesBuildPhase section */
</span><ins>+                2EE52CDC1890A9A80010ED21 /* Sources */ = {
+                        isa = PBXSourcesBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                2E63ED951891ADC7002A7AFC /* CyclicRedundancyCheck.cpp in Sources */,
+                                2E749BF21891EBFA007FC175 /* EventSenderProxyIOS.mm in Sources */,
+                                2E63ED961891ADC7002A7AFC /* GeolocationProviderMock.cpp in Sources */,
+                                2E63ED941891ADAD002A7AFC /* mainIOS.mm in Sources */,
+                                2E63ED971891ADC7002A7AFC /* PixelDumpSupport.cpp in Sources */,
+                                2E63ED981891ADC7002A7AFC /* TestController.cpp in Sources */,
+                                2E63ED921891ADAD002A7AFC /* TestControllerIOS.mm in Sources */,
+                                2E63ED991891ADC7002A7AFC /* TestInvocation.cpp in Sources */,
+                                2E63EDA51891BD8E002A7AFC /* TestInvocationCG.cpp in Sources */,
+                                2E63ED9A1891ADC7002A7AFC /* WebNotificationProvider.cpp in Sources */,
+                                2E63ED9B1891ADC7002A7AFC /* WorkQueueManager.cpp in Sources */,
+                                2E749BEF1891E939007FC175 /* Options.cpp in Sources */,
+                                2E63ED9C1891ADC7002A7AFC /* AppDelegate.m in Sources */,
+                                2E63ED911891ADAD002A7AFC /* PlatformWebViewIOS.mm in Sources */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
+                2EE52CF61890A9A80010ED21 /* Sources */ = {
+                        isa = PBXSourcesBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                2EE52D081890A9A90010ED21 /* WebKitTestRunnerAppTests.m in Sources */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
</ins><span class="cx">                 8DD76F990486AA7600D96B5E /* Sources */ = {
</span><span class="cx">                         isa = PBXSourcesBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="lines">@@ -650,6 +898,15 @@
</span><span class="cx">                         isa = PBXSourcesBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><ins>+                                2E63EDA61891BDC0002A7AFC /* TestRunner.cpp in Sources */,
+                                2E63EDA11891B291002A7AFC /* AccessibilityUIElementIOS.mm in Sources */,
+                                2E63ED9E1891AEC1002A7AFC /* WebArchiveDumpSupportIOS.mm in Sources */,
+                                2E63ED8A1891AD7E002A7AFC /* AccessibilityControllerIOS.mm in Sources */,
+                                2E63ED8B1891AD7E002A7AFC /* AccessibilityTextMarkerIOS.mm in Sources */,
+                                2E63ED8D1891AD7E002A7AFC /* ActivateFontsIOS.mm in Sources */,
+                                2E63ED8E1891AD7E002A7AFC /* EventSenderProxyIOS.mm in Sources */,
+                                2E63ED8F1891AD7E002A7AFC /* InjectedBundleIOS.mm in Sources */,
+                                2E63ED901891AD7E002A7AFC /* InjectedBundlePageIOS.mm in Sources */,
</ins><span class="cx">                                 29210EDA144CC3EA00835BB6 /* AccessibilityCommonMac.mm in Sources */,
</span><span class="cx">                                 29210EB0144CACBD00835BB5 /* AccessibilityController.cpp in Sources */,
</span><span class="cx">                                 8034C6621487636400AC32E9 /* AccessibilityControllerMac.mm in Sources */,
</span><span class="lines">@@ -677,7 +934,6 @@
</span><span class="cx">                                 BC952F1F11F3C652003398B4 /* JSTestRunner.cpp in Sources */,
</span><span class="cx">                                 5641E2D014335E95008307E5 /* JSTextInputController.cpp in Sources */,
</span><span class="cx">                                 BC952C0D11F3B965003398B4 /* JSWrapper.cpp in Sources */,
</span><del>-                                BCC9981811D3F51E0017BCA2 /* TestRunner.cpp in Sources */,
</del><span class="cx">                                 5C45C30F17398E290079714E /* WebArchiveDumpSupportMac.mm in Sources */,
</span><span class="cx">                                 5C45C31317398E480079714E /* WebArchiveDumpSupport.cpp in Sources */,
</span><span class="cx">                                 C0CE720B1247C93300BC0EC4 /* TestRunnerMac.mm in Sources */,
</span><span class="lines">@@ -688,6 +944,16 @@
</span><span class="cx"> /* End PBXSourcesBuildPhase section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXTargetDependency section */
</span><ins>+                2E63ED891891AD47002A7AFC /* PBXTargetDependency */ = {
+                        isa = PBXTargetDependency;
+                        target = BC25186111D15D54002EBC01 /* WebKitTestRunnerInjectedBundle */;
+                        targetProxy = 2E63ED881891AD47002A7AFC /* PBXContainerItemProxy */;
+                };
+                2EE52D001890A9A90010ED21 /* PBXTargetDependency */ = {
+                        isa = PBXTargetDependency;
+                        target = 2EE52CDF1890A9A80010ED21 /* WebKitTestRunnerApp */;
+                        targetProxy = 2EE52CFF1890A9A90010ED21 /* PBXContainerItemProxy */;
+                };
</ins><span class="cx">                 BC25194211D15D94002EBC01 /* PBXTargetDependency */ = {
</span><span class="cx">                         isa = PBXTargetDependency;
</span><span class="cx">                         target = BC25186111D15D54002EBC01 /* WebKitTestRunnerInjectedBundle */;
</span><span class="lines">@@ -700,6 +966,26 @@
</span><span class="cx">                 };
</span><span class="cx"> /* End PBXTargetDependency section */
</span><span class="cx"> 
</span><ins>+/* Begin PBXVariantGroup section */
+                2EE52CEB1890A9A80010ED21 /* InfoPlist.strings */ = {
+                        isa = PBXVariantGroup;
+                        children = (
+                                2EE52CEC1890A9A80010ED21 /* en */,
+                        );
+                        name = InfoPlist.strings;
+                        path = ../WebKitTestRunnerApp;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+                2EE52D041890A9A90010ED21 /* InfoPlist.strings */ = {
+                        isa = PBXVariantGroup;
+                        children = (
+                                2EE52D051890A9A90010ED21 /* en */,
+                        );
+                        name = InfoPlist.strings;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+/* End PBXVariantGroup section */
+
</ins><span class="cx"> /* Begin XCBuildConfiguration section */
</span><span class="cx">                 1DEB927508733DD40010E9CD /* Debug */ = {
</span><span class="cx">                         isa = XCBuildConfiguration;
</span><span class="lines">@@ -731,6 +1017,187 @@
</span><span class="cx">                         };
</span><span class="cx">                         name = Release;
</span><span class="cx">                 };
</span><ins>+                2EE52D091890A9A90010ED21 /* Debug */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = BC251A1811D16795002EBC01 /* WebKitTestRunner.xcconfig */;
+                        buildSettings = {
+                                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+                                ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+                                GCC_DYNAMIC_NO_PIC = NO;
+                                GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+                                INFOPLIST_FILE = &quot;WebKitTestRunnerApp/WebKitTestRunnerApp-Info.plist&quot;;
+                                IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+                                PRODUCT_NAME = &quot;$(TARGET_NAME)&quot;;
+                                TARGETED_DEVICE_FAMILY = &quot;1,2&quot;;
+                                WRAPPER_EXTENSION = app;
+                        };
+                        name = Debug;
+                };
+                2EE52D0A1890A9A90010ED21 /* Release */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = BC251A1811D16795002EBC01 /* WebKitTestRunner.xcconfig */;
+                        buildSettings = {
+                                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+                                ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+                                INFOPLIST_FILE = &quot;WebKitTestRunnerApp/WebKitTestRunnerApp-Info.plist&quot;;
+                                IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+                                PRODUCT_NAME = &quot;$(TARGET_NAME)&quot;;
+                                TARGETED_DEVICE_FAMILY = &quot;1,2&quot;;
+                                WRAPPER_EXTENSION = app;
+                        };
+                        name = Release;
+                };
+                2EE52D0B1890A9A90010ED21 /* Production */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = BC251A1811D16795002EBC01 /* WebKitTestRunner.xcconfig */;
+                        buildSettings = {
+                                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+                                ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+                                INFOPLIST_FILE = &quot;WebKitTestRunnerApp/WebKitTestRunnerApp-Info.plist&quot;;
+                                IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+                                PRODUCT_NAME = &quot;$(TARGET_NAME)&quot;;
+                                TARGETED_DEVICE_FAMILY = &quot;1,2&quot;;
+                                WRAPPER_EXTENSION = app;
+                        };
+                        name = Production;
+                };
+                2EE52D0C1890A9A90010ED21 /* Debug */ = {
+                        isa = XCBuildConfiguration;
+                        buildSettings = {
+                                ALWAYS_SEARCH_USER_PATHS = NO;
+                                ARCHS = &quot;$(ARCHS_STANDARD_INCLUDING_64_BIT)&quot;;
+                                BUNDLE_LOADER = &quot;$(BUILT_PRODUCTS_DIR)/WebKitTestRunnerApp.app/WebKitTestRunnerApp&quot;;
+                                CLANG_CXX_LANGUAGE_STANDARD = &quot;gnu++0x&quot;;
+                                CLANG_CXX_LIBRARY = &quot;libc++&quot;;
+                                CLANG_ENABLE_MODULES = YES;
+                                CLANG_ENABLE_OBJC_ARC = YES;
+                                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__DUPLICATE_METHOD_MATCH = YES;
+                                COPY_PHASE_STRIP = NO;
+                                FRAMEWORK_SEARCH_PATHS = (
+                                        &quot;$(SDKROOT)/Developer/Library/Frameworks&quot;,
+                                        &quot;$(inherited)&quot;,
+                                        &quot;$(DEVELOPER_FRAMEWORKS_DIR)&quot;,
+                                );
+                                GCC_C_LANGUAGE_STANDARD = gnu99;
+                                GCC_DYNAMIC_NO_PIC = NO;
+                                GCC_PRECOMPILE_PREFIX_HEADER = YES;
+                                GCC_PREFIX_HEADER = &quot;WebKitTestRunnerApp/WebKitTestRunnerApp-Prefix.pch&quot;;
+                                GCC_PREPROCESSOR_DEFINITIONS = (
+                                        &quot;DEBUG=1&quot;,
+                                        &quot;$(inherited)&quot;,
+                                );
+                                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;
+                                GCC_WARN_UNUSED_FUNCTION = YES;
+                                GCC_WARN_UNUSED_VARIABLE = YES;
+                                INFOPLIST_FILE = &quot;WebKitTestRunnerAppTests/WebKitTestRunnerAppTests-Info.plist&quot;;
+                                IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+                                ONLY_ACTIVE_ARCH = YES;
+                                PRODUCT_NAME = &quot;$(TARGET_NAME)&quot;;
+                                SDKROOT = iphoneos;
+                                TEST_HOST = &quot;$(BUNDLE_LOADER)&quot;;
+                                WRAPPER_EXTENSION = xctest;
+                        };
+                        name = Debug;
+                };
+                2EE52D0D1890A9A90010ED21 /* Release */ = {
+                        isa = XCBuildConfiguration;
+                        buildSettings = {
+                                ALWAYS_SEARCH_USER_PATHS = NO;
+                                ARCHS = &quot;$(ARCHS_STANDARD_INCLUDING_64_BIT)&quot;;
+                                BUNDLE_LOADER = &quot;$(BUILT_PRODUCTS_DIR)/WebKitTestRunnerApp.app/WebKitTestRunnerApp&quot;;
+                                CLANG_CXX_LANGUAGE_STANDARD = &quot;gnu++0x&quot;;
+                                CLANG_CXX_LIBRARY = &quot;libc++&quot;;
+                                CLANG_ENABLE_MODULES = YES;
+                                CLANG_ENABLE_OBJC_ARC = YES;
+                                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__DUPLICATE_METHOD_MATCH = YES;
+                                COPY_PHASE_STRIP = YES;
+                                ENABLE_NS_ASSERTIONS = NO;
+                                FRAMEWORK_SEARCH_PATHS = (
+                                        &quot;$(SDKROOT)/Developer/Library/Frameworks&quot;,
+                                        &quot;$(inherited)&quot;,
+                                        &quot;$(DEVELOPER_FRAMEWORKS_DIR)&quot;,
+                                );
+                                GCC_C_LANGUAGE_STANDARD = gnu99;
+                                GCC_PRECOMPILE_PREFIX_HEADER = YES;
+                                GCC_PREFIX_HEADER = &quot;WebKitTestRunnerApp/WebKitTestRunnerApp-Prefix.pch&quot;;
+                                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;
+                                GCC_WARN_UNUSED_FUNCTION = YES;
+                                GCC_WARN_UNUSED_VARIABLE = YES;
+                                INFOPLIST_FILE = &quot;WebKitTestRunnerAppTests/WebKitTestRunnerAppTests-Info.plist&quot;;
+                                IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+                                PRODUCT_NAME = &quot;$(TARGET_NAME)&quot;;
+                                SDKROOT = iphoneos;
+                                TEST_HOST = &quot;$(BUNDLE_LOADER)&quot;;
+                                VALIDATE_PRODUCT = YES;
+                                WRAPPER_EXTENSION = xctest;
+                        };
+                        name = Release;
+                };
+                2EE52D0E1890A9A90010ED21 /* Production */ = {
+                        isa = XCBuildConfiguration;
+                        buildSettings = {
+                                ALWAYS_SEARCH_USER_PATHS = NO;
+                                ARCHS = &quot;$(ARCHS_STANDARD_INCLUDING_64_BIT)&quot;;
+                                BUNDLE_LOADER = &quot;$(BUILT_PRODUCTS_DIR)/WebKitTestRunnerApp.app/WebKitTestRunnerApp&quot;;
+                                CLANG_CXX_LANGUAGE_STANDARD = &quot;gnu++0x&quot;;
+                                CLANG_CXX_LIBRARY = &quot;libc++&quot;;
+                                CLANG_ENABLE_MODULES = YES;
+                                CLANG_ENABLE_OBJC_ARC = YES;
+                                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__DUPLICATE_METHOD_MATCH = YES;
+                                COPY_PHASE_STRIP = YES;
+                                ENABLE_NS_ASSERTIONS = NO;
+                                FRAMEWORK_SEARCH_PATHS = (
+                                        &quot;$(SDKROOT)/Developer/Library/Frameworks&quot;,
+                                        &quot;$(inherited)&quot;,
+                                        &quot;$(DEVELOPER_FRAMEWORKS_DIR)&quot;,
+                                );
+                                GCC_C_LANGUAGE_STANDARD = gnu99;
+                                GCC_PRECOMPILE_PREFIX_HEADER = YES;
+                                GCC_PREFIX_HEADER = &quot;WebKitTestRunnerApp/WebKitTestRunnerApp-Prefix.pch&quot;;
+                                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;
+                                GCC_WARN_UNUSED_FUNCTION = YES;
+                                GCC_WARN_UNUSED_VARIABLE = YES;
+                                INFOPLIST_FILE = &quot;WebKitTestRunnerAppTests/WebKitTestRunnerAppTests-Info.plist&quot;;
+                                IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+                                PRODUCT_NAME = &quot;$(TARGET_NAME)&quot;;
+                                SDKROOT = iphoneos;
+                                TEST_HOST = &quot;$(BUNDLE_LOADER)&quot;;
+                                VALIDATE_PRODUCT = YES;
+                                WRAPPER_EXTENSION = xctest;
+                        };
+                        name = Production;
+                };
</ins><span class="cx">                 BC25186411D15D55002EBC01 /* Debug */ = {
</span><span class="cx">                         isa = XCBuildConfiguration;
</span><span class="cx">                         baseConfigurationReference = BC25197111D15E61002EBC01 /* InjectedBundle.xcconfig */;
</span><span class="lines">@@ -810,6 +1277,26 @@
</span><span class="cx">                         defaultConfigurationIsVisible = 0;
</span><span class="cx">                         defaultConfigurationName = Production;
</span><span class="cx">                 };
</span><ins>+                2EE52D0F1890A9A90010ED21 /* Build configuration list for PBXNativeTarget &quot;WebKitTestRunnerApp&quot; */ = {
+                        isa = XCConfigurationList;
+                        buildConfigurations = (
+                                2EE52D091890A9A90010ED21 /* Debug */,
+                                2EE52D0A1890A9A90010ED21 /* Release */,
+                                2EE52D0B1890A9A90010ED21 /* Production */,
+                        );
+                        defaultConfigurationIsVisible = 0;
+                        defaultConfigurationName = Production;
+                };
+                2EE52D101890A9A90010ED21 /* Build configuration list for PBXNativeTarget &quot;WebKitTestRunnerAppTests&quot; */ = {
+                        isa = XCConfigurationList;
+                        buildConfigurations = (
+                                2EE52D0C1890A9A90010ED21 /* Debug */,
+                                2EE52D0D1890A9A90010ED21 /* Release */,
+                                2EE52D0E1890A9A90010ED21 /* Production */,
+                        );
+                        defaultConfigurationIsVisible = 0;
+                        defaultConfigurationName = Production;
+                };
</ins><span class="cx">                 BC25186611D15D55002EBC01 /* Build configuration list for PBXNativeTarget &quot;WebKitTestRunnerInjectedBundle&quot; */ = {
</span><span class="cx">                         isa = XCConfigurationList;
</span><span class="cx">                         buildConfigurations = (
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWebKitTestRunnerAppAppDelegateh"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.h (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.h                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.h        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+//
+//  AppDelegate.h
+//  WebKitTestRunnerApp
+//
+//  Created by David Farler on 1/22/14.
+//
+//
+
+#import &lt;UIKit/UIKit.h&gt;
+
+@interface AppDelegate : UIResponder &lt;UIApplicationDelegate&gt;
+
+@property (strong, nonatomic) UIWindow *window;
+
+@end
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWebKitTestRunnerAppAppDelegatem"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.m (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.m                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.m        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+//
+//  AppDelegate.m
+//  WebKitTestRunnerApp
+//
+//  Created by David Farler on 1/22/14.
+//
+//
+
+#import &quot;AppDelegate.h&quot;
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
+    // Override point for customization after application launch.
+    self.window.backgroundColor = [UIColor whiteColor];
+    [self.window makeKeyAndVisible];
+    return YES;
+}
+
+- (void)applicationWillResignActive:(UIApplication *)application
+{
+    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+}
+
+- (void)applicationDidEnterBackground:(UIApplication *)application
+{
+    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
+    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+}
+
+- (void)applicationWillEnterForeground:(UIApplication *)application
+{
+    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+}
+
+- (void)applicationDidBecomeActive:(UIApplication *)application
+{
+    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+}
+
+- (void)applicationWillTerminate:(UIApplication *)application
+{
+    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+}
+
+@end
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWebKitTestRunnerAppWebKitTestRunnerAppInfoplist"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/WebKitTestRunnerApp-Info.plist (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/WebKitTestRunnerApp-Info.plist                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/WebKitTestRunnerApp-Info.plist        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;
+&lt;plist version=&quot;1.0&quot;&gt;
+&lt;dict&gt;
+        &lt;key&gt;CFBundleDevelopmentRegion&lt;/key&gt;
+        &lt;string&gt;en&lt;/string&gt;
+        &lt;key&gt;CFBundleDisplayName&lt;/key&gt;
+        &lt;string&gt;${PRODUCT_NAME}&lt;/string&gt;
+        &lt;key&gt;CFBundleExecutable&lt;/key&gt;
+        &lt;string&gt;${EXECUTABLE_NAME}&lt;/string&gt;
+        &lt;key&gt;CFBundleIdentifier&lt;/key&gt;
+        &lt;string&gt;org.webkit.${PRODUCT_NAME:rfc1034identifier}&lt;/string&gt;
+        &lt;key&gt;CFBundleInfoDictionaryVersion&lt;/key&gt;
+        &lt;string&gt;6.0&lt;/string&gt;
+        &lt;key&gt;CFBundleName&lt;/key&gt;
+        &lt;string&gt;${PRODUCT_NAME}&lt;/string&gt;
+        &lt;key&gt;CFBundlePackageType&lt;/key&gt;
+        &lt;string&gt;APPL&lt;/string&gt;
+        &lt;key&gt;CFBundleShortVersionString&lt;/key&gt;
+        &lt;string&gt;1.0&lt;/string&gt;
+        &lt;key&gt;CFBundleSignature&lt;/key&gt;
+        &lt;string&gt;????&lt;/string&gt;
+        &lt;key&gt;CFBundleVersion&lt;/key&gt;
+        &lt;string&gt;1.0&lt;/string&gt;
+        &lt;key&gt;LSRequiresIPhoneOS&lt;/key&gt;
+        &lt;true/&gt;
+        &lt;key&gt;UIRequiredDeviceCapabilities&lt;/key&gt;
+        &lt;array&gt;
+                &lt;string&gt;armv7&lt;/string&gt;
+        &lt;/array&gt;
+        &lt;key&gt;UISupportedInterfaceOrientations&lt;/key&gt;
+        &lt;array&gt;
+                &lt;string&gt;UIInterfaceOrientationPortrait&lt;/string&gt;
+                &lt;string&gt;UIInterfaceOrientationLandscapeLeft&lt;/string&gt;
+                &lt;string&gt;UIInterfaceOrientationLandscapeRight&lt;/string&gt;
+        &lt;/array&gt;
+        &lt;key&gt;UISupportedInterfaceOrientations~ipad&lt;/key&gt;
+        &lt;array&gt;
+                &lt;string&gt;UIInterfaceOrientationPortrait&lt;/string&gt;
+                &lt;string&gt;UIInterfaceOrientationPortraitUpsideDown&lt;/string&gt;
+                &lt;string&gt;UIInterfaceOrientationLandscapeLeft&lt;/string&gt;
+                &lt;string&gt;UIInterfaceOrientationLandscapeRight&lt;/string&gt;
+        &lt;/array&gt;
+&lt;/dict&gt;
+&lt;/plist&gt;
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWebKitTestRunnerAppenlprojInfoPliststrings"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/en.lproj/InfoPlist.strings (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/en.lproj/InfoPlist.strings                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/WebKitTestRunnerApp/en.lproj/InfoPlist.strings        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+/* Localized versions of Info.plist keys */
+
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWebKitTestRunnerAppTestsWebKitTestRunnerAppTestsInfoplist"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests-Info.plist (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests-Info.plist                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests-Info.plist        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;
+&lt;plist version=&quot;1.0&quot;&gt;
+&lt;dict&gt;
+        &lt;key&gt;CFBundleDevelopmentRegion&lt;/key&gt;
+        &lt;string&gt;en&lt;/string&gt;
+        &lt;key&gt;CFBundleExecutable&lt;/key&gt;
+        &lt;string&gt;${EXECUTABLE_NAME}&lt;/string&gt;
+        &lt;key&gt;CFBundleIdentifier&lt;/key&gt;
+        &lt;string&gt;org.webkit.${PRODUCT_NAME:rfc1034identifier}&lt;/string&gt;
+        &lt;key&gt;CFBundleInfoDictionaryVersion&lt;/key&gt;
+        &lt;string&gt;6.0&lt;/string&gt;
+        &lt;key&gt;CFBundlePackageType&lt;/key&gt;
+        &lt;string&gt;BNDL&lt;/string&gt;
+        &lt;key&gt;CFBundleShortVersionString&lt;/key&gt;
+        &lt;string&gt;1.0&lt;/string&gt;
+        &lt;key&gt;CFBundleSignature&lt;/key&gt;
+        &lt;string&gt;????&lt;/string&gt;
+        &lt;key&gt;CFBundleVersion&lt;/key&gt;
+        &lt;string&gt;1&lt;/string&gt;
+&lt;/dict&gt;
+&lt;/plist&gt;
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWebKitTestRunnerAppTestsWebKitTestRunnerAppTestsm"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests.m (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests.m                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests.m        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+//
+//  WebKitTestRunnerAppTests.m
+//  WebKitTestRunnerAppTests
+//
+//  Created by David Farler on 1/22/14.
+//
+//
+
+#import &lt;XCTest/XCTest.h&gt;
+
+@interface WebKitTestRunnerAppTests : XCTestCase
+
+@end
+
+@implementation WebKitTestRunnerAppTests
+
+- (void)setUp
+{
+    [super setUp];
+    // Put setup code here. This method is called before the invocation of each test method in the class.
+}
+
+- (void)tearDown
+{
+    // Put teardown code here. This method is called after the invocation of each test method in the class.
+    [super tearDown];
+}
+
+- (void)testExample
+{
+    XCTFail(@&quot;No implementation for \&quot;%s\&quot;&quot;, __PRETTY_FUNCTION__);
+}
+
+@end
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWebKitTestRunnerAppTestsenlprojInfoPliststrings"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/en.lproj/InfoPlist.strings (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/en.lproj/InfoPlist.strings                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests/en.lproj/InfoPlist.strings        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+/* Localized versions of Info.plist keys */
+
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWebKitTestRunnerAppTestsInfoplist"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests-Info.plist (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests-Info.plist                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/WebKitTestRunnerAppTests-Info.plist        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;
+&lt;plist version=&quot;1.0&quot;&gt;
+&lt;dict&gt;
+        &lt;key&gt;CFBundleDevelopmentRegion&lt;/key&gt;
+        &lt;string&gt;en&lt;/string&gt;
+        &lt;key&gt;CFBundleExecutable&lt;/key&gt;
+        &lt;string&gt;${EXECUTABLE_NAME}&lt;/string&gt;
+        &lt;key&gt;CFBundleIdentifier&lt;/key&gt;
+        &lt;string&gt;org.webkit.${PRODUCT_NAME:rfc1034identifier}&lt;/string&gt;
+        &lt;key&gt;CFBundleInfoDictionaryVersion&lt;/key&gt;
+        &lt;string&gt;6.0&lt;/string&gt;
+        &lt;key&gt;CFBundlePackageType&lt;/key&gt;
+        &lt;string&gt;BNDL&lt;/string&gt;
+        &lt;key&gt;CFBundleShortVersionString&lt;/key&gt;
+        &lt;string&gt;1.0&lt;/string&gt;
+        &lt;key&gt;CFBundleSignature&lt;/key&gt;
+        &lt;string&gt;????&lt;/string&gt;
+        &lt;key&gt;CFBundleVersion&lt;/key&gt;
+        &lt;string&gt;1&lt;/string&gt;
+&lt;/dict&gt;
+&lt;/plist&gt;
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWebKitTestRunnerPrefixh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #ifdef __OBJC__
</span><del>-#include &lt;Cocoa/Cocoa.h&gt;
</del><ins>+#import &lt;Foundation/Foundation.h&gt;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if defined(BUILDING_GTK__)
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnercgTestInvocationCGcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/cg/TestInvocationCG.cpp (162728 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/cg/TestInvocationCG.cpp        2014-01-24 23:14:10 UTC (rev 162728)
+++ trunk/Tools/WebKitTestRunner/cg/TestInvocationCG.cpp        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -35,10 +35,15 @@
</span><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/StringExtras.h&gt;
</span><span class="cx"> 
</span><del>-#if PLATFORM(MAC)
</del><ins>+#if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS)
</ins><span class="cx"> #include &lt;LaunchServices/UTCoreTypes.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+// FIXME: get kUTTypePNG from MobileCoreServices on iOS
+static const CFStringRef kUTTypePNG = CFSTR(&quot;public.png&quot;);
+#endif
+
</ins><span class="cx"> namespace WTR {
</span><span class="cx"> 
</span><span class="cx"> enum FlipGraphicsContextOrNot {
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunneriOSxcconfig"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/iOS.xcconfig (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/iOS.xcconfig                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/iOS.xcconfig        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+#include &quot;&lt;DEVELOPER_DIR&gt;/AppleInternal/XcodeConfig/AspenFamily.xcconfig&quot;
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunneriosPlatformWebViewIOSmm"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/ios/PlatformWebViewIOS.mm (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/ios/PlatformWebViewIOS.mm                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/ios/PlatformWebViewIOS.mm        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,224 @@
</span><ins>+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;PlatformWebView.h&quot;
+#include &quot;TestController.h&quot;
+
+#import &lt;WebKit2/WKImageCG.h&gt;
+#import &lt;WebKit2/WKViewPrivate.h&gt;
+#import &lt;WebKit2/WKPreferencesPrivate.h&gt;
+#import &lt;wtf/RetainPtr.h&gt;
+
+@interface WebKitTestRunnerWindow : UIWindow {
+    WTR::PlatformWebView* _platformWebView;
+    CGPoint _fakeOrigin;
+}
+@property (nonatomic, assign) WTR::PlatformWebView* platformWebView;
+@end
+
+@interface TestRunnerWKView : WKView {
+    BOOL _useTiledDrawing;
+}
+
+- (id)initWithFrame:(CGRect)frame contextRef:(WKContextRef)contextRef pageGroupRef:(WKPageGroupRef)pageGroupRef relatedToPage:(WKPageRef)relatedPage useTiledDrawing:(BOOL)useTiledDrawing;
+
+@property (nonatomic, assign) BOOL useTiledDrawing;
+@end
+
+@implementation TestRunnerWKView
+
+@synthesize useTiledDrawing = _useTiledDrawing;
+
+- (id)initWithFrame:(CGRect)frame contextRef:(WKContextRef)contextRef pageGroupRef:(WKPageGroupRef)pageGroupRef relatedToPage:(WKPageRef)relatedPage useTiledDrawing:(BOOL)useTiledDrawing
+{
+    _useTiledDrawing = useTiledDrawing;
+    return [super initWithFrame:frame contextRef:contextRef pageGroupRef:pageGroupRef];
+}
+
+- (BOOL)_shouldUseTiledDrawingArea
+{
+    return _useTiledDrawing;
+}
+
+@end
+
+@implementation WebKitTestRunnerWindow
+@synthesize platformWebView = _platformWebView;
+
+- (BOOL)isKeyWindow
+{
+    return _platformWebView ? _platformWebView-&gt;windowIsKey() : YES;
+}
+
+- (void)setFrameOrigin:(CGPoint)point
+{
+    _fakeOrigin = point;
+}
+
+// FIXME: these frame gyrations cause the window to go half offscreen.
+- (void)setFrame:(CGRect)windowFrame
+{
+    CGRect currentFrame = [super frame];
+
+    _fakeOrigin = windowFrame.origin;
+
+    [super setFrame:CGRectMake(currentFrame.origin.x, currentFrame.origin.y, windowFrame.size.width, windowFrame.size.height)];
+}
+
+- (CGRect)frameRespectingFakeOrigin
+{
+    CGRect currentFrame = [self frame];
+    return CGRectMake(_fakeOrigin.x, _fakeOrigin.y, currentFrame.size.width, currentFrame.size.height);
+}
+
+- (CGFloat)backingScaleFactor
+{
+    return 1;
+}
+
+@end
+
+@interface UIWindow (Details)
+
+- (void)_setWindowResolution:(CGFloat)resolution displayIfChanged:(BOOL)displayIfChanged;
+
+@end
+
+namespace WTR {
+
+PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef, WKPageRef relatedPage, WKDictionaryRef options)
+    : m_windowIsKey(true)
+    , m_options(options)
+{
+    WKRetainPtr&lt;WKStringRef&gt; useTiledDrawingKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;TiledDrawing&quot;));
+    WKTypeRef useTiledDrawingValue = options ? WKDictionaryGetItemForKey(options, useTiledDrawingKey.get()) : NULL;
+    bool useTiledDrawing = useTiledDrawingValue &amp;&amp; WKBooleanGetValue(static_cast&lt;WKBooleanRef&gt;(useTiledDrawingValue));
+
+    CGRect rect = CGRectMake(0, 0, TestController::viewWidth, TestController::viewHeight);
+    m_view = [[TestRunnerWKView alloc] initWithFrame:rect contextRef:contextRef pageGroupRef:pageGroupRef relatedToPage:relatedPage useTiledDrawing:useTiledDrawing];
+
+    WKPreferencesSetCompositingBordersVisible(WKPageGroupGetPreferences(pageGroupRef), YES);
+    WKPreferencesSetCompositingRepaintCountersVisible(WKPageGroupGetPreferences(pageGroupRef), YES);
+
+    CGRect windowRect = rect;
+    m_window = [[WebKitTestRunnerWindow alloc] initWithFrame:windowRect];
+    m_window.platformWebView = this;
+
+    [m_window addSubview:m_view];
+    [m_window makeKeyAndVisible];
+}
+
+void PlatformWebView::resizeTo(unsigned width, unsigned height)
+{
+    CGRect windowFrame = [m_window frame];
+    windowFrame.size.width = width;
+    windowFrame.size.height = height;
+    [m_window setFrame:windowFrame];
+    [m_view setFrame:CGRectMake(0, 0, width, height)];
+}
+
+PlatformWebView::~PlatformWebView()
+{
+    m_window.platformWebView = 0;
+//    [m_window close];
+    [m_view release];
+    [m_window release];
+}
+
+WKPageRef PlatformWebView::page()
+{
+    return [m_view pageRef];
+}
+
+void PlatformWebView::focus()
+{
+//    [m_window makeFirstResponder:m_view]; // FIXME: iOS equivalent?
+    setWindowIsKey(true);
+}
+
+WKRect PlatformWebView::windowFrame()
+{
+    CGRect frame = [m_window frameRespectingFakeOrigin];
+
+    WKRect wkFrame;
+    wkFrame.origin.x = frame.origin.x;
+    wkFrame.origin.y = frame.origin.y;
+    wkFrame.size.width = frame.size.width;
+    wkFrame.size.height = frame.size.height;
+    return wkFrame;
+}
+
+void PlatformWebView::setWindowFrame(WKRect frame)
+{
+    [m_window setFrame:CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height)];
+}
+
+void PlatformWebView::didInitializeClients()
+{
+    // Set a temporary 1x1 window frame to force a WindowAndViewFramesChanged notification. &lt;rdar://problem/13380145&gt;
+    WKRect wkFrame = windowFrame();
+    [m_window setFrame:CGRectMake(0, 0, 1, 1)];
+    setWindowFrame(wkFrame);
+}
+
+void PlatformWebView::addChromeInputField()
+{
+    UITextField* textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
+    textField.tag = 1;
+    [m_window addSubview:textField];
+    [textField release];
+}
+
+void PlatformWebView::removeChromeInputField()
+{
+    UITextField* textField = (UITextField*)[m_window viewWithTag:1];
+    if (textField) {
+        [textField removeFromSuperview];
+        makeWebViewFirstResponder();
+        [textField release];
+    }
+}
+
+void PlatformWebView::makeWebViewFirstResponder()
+{
+//    [m_window makeFirstResponder:m_view];
+}
+
+WKRetainPtr&lt;WKImageRef&gt; PlatformWebView::windowSnapshotImage()
+{
+    return 0; // FIXME for iOS?
+}
+
+bool PlatformWebView::viewSupportsOptions(WKDictionaryRef options) const
+{
+    WKRetainPtr&lt;WKStringRef&gt; useTiledDrawingKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;TiledDrawing&quot;));
+    WKTypeRef useTiledDrawingValue = WKDictionaryGetItemForKey(options, useTiledDrawingKey.get());
+    bool useTiledDrawing = useTiledDrawingValue &amp;&amp; WKBooleanGetValue(static_cast&lt;WKBooleanRef&gt;(useTiledDrawingValue));
+
+    return useTiledDrawing == [(TestRunnerWKView *)m_view useTiledDrawing];
+}
+
+} // namespace WTR
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunneriosTestControllerIOSmm"></a>
<div class="addfile"><h4>Added: trunk/Tools/WebKitTestRunner/ios/TestControllerIOS.mm (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/ios/TestControllerIOS.mm                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/ios/TestControllerIOS.mm        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,88 @@
</span><ins>+/*
+ * Copyright (C) 2014 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;config.h&quot;
+#import &quot;TestController.h&quot;
+
+#import &quot;PlatformWebView.h&quot;
+#import &lt;WebKit2/WKStringCF.h&gt;
+#include &lt;wtf/MainThread.h&gt;
+
+namespace WTR {
+
+void TestController::notifyDone()
+{
+}
+
+void TestController::platformInitialize()
+{
+}
+
+void TestController::platformDestroy()
+{
+}
+
+void TestController::initializeInjectedBundlePath()
+{
+    NSString *nsBundlePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@&quot;WebKitTestRunnerInjectedBundle.bundle&quot;];
+    m_injectedBundlePath.adopt(WKStringCreateWithCFString((CFStringRef)nsBundlePath));
+}
+
+void TestController::initializeTestPluginDirectory()
+{
+    m_testPluginDirectory.adopt(WKStringCreateWithCFString((CFStringRef)[[NSBundle mainBundle] bundlePath]));
+}
+
+void TestController::platformRunUntil(bool&amp; done, double timeout)
+{
+    NSDate *endDate = (timeout &gt; 0) ? [NSDate dateWithTimeIntervalSinceNow:timeout] : [NSDate distantFuture];
+
+    while (!done &amp;&amp; [endDate compare:[NSDate date]] == NSOrderedDescending)
+        [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:endDate];
+}
+
+void TestController::platformInitializeContext()
+{
+}
+
+void TestController::runModal(PlatformWebView* view)
+{
+    UIWindow *window = [view-&gt;platformView() window];
+    if (!window)
+        return;
+    // FIXME: how to perform on iOS?
+//    [[UIApplication sharedApplication] runModalForWindow:window];
+}
+
+const char* TestController::platformLibraryPathForTesting()
+{
+    return [[@&quot;~/Library/Application Support/WebKitTestRunner&quot; stringByExpandingTildeInPath] UTF8String];
+}
+
+void TestController::setHidden(bool) {
+    // FIXME: implement for iOS
+}
+
+} // namespace WTR
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunneriosWebArchiveDumpSupportIOSmmfromrev162728trunkToolsWebKitTestRunnerWebKitTestRunnerPrefixh"></a>
<div class="copfile"><h4>Copied: trunk/Tools/WebKitTestRunner/ios/WebArchiveDumpSupportIOS.mm (from rev 162728, trunk/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h) (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/ios/WebArchiveDumpSupportIOS.mm                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/ios/WebArchiveDumpSupportIOS.mm        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+/*
+f* Copyright (C) 2014 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;config.h&quot;
+#import &quot;WebArchiveDumpSupport.h&quot;
+
+#if PLATFORM(IOS)
+
+CFURLResponseRef createCFURLResponseFromResponseData(CFDataRef /*responseData*/)
+{
+    return 0;
+}
+
+CFArrayRef supportedNonImageMIMETypes()
+{
+    return 0;
+}
+
+#endif // PLATFORM(IOS)
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunneriosmainIOSmmfromrev162728trunkToolsWebKitTestRunnerWebKitTestRunnerPrefixh"></a>
<div class="copfile"><h4>Copied: trunk/Tools/WebKitTestRunner/ios/mainIOS.mm (from rev 162728, trunk/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h) (0 => 162729)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/ios/mainIOS.mm                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/ios/mainIOS.mm        2014-01-24 23:20:08 UTC (rev 162729)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+/*
+ * Copyright (C) 2014 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;config.h&quot;
+
+#import &quot;TestController.h&quot;
+
+
+static int _argc;
+static const char **_argv;
+
+@interface WebKitTestRunnerApp : UIApplication
+@end
+
+@implementation WebKitTestRunnerApp
+
+- (void)_runTestController
+{
+    WTR::TestController controller(_argc, _argv);
+}
+
+- (void)applicationDidFinishLaunching:(NSNotification *)notification
+{
+    [self performSelectorOnMainThread:@selector(_runTestController) withObject:nil waitUntilDone:NO];
+}
+
+@end
+
+int main(int argc, const char* argv[])
+{
+    _argc = argc;
+    _argv = argv;
+
+    UIApplicationMain(argc, (char**)argv, NSStringFromClass([WebKitTestRunnerApp class]), nil);
+    return 0;
+}
</ins></span></pre>
</div>
</div>

</body>
</html>