<!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>[178197] trunk/LayoutTests</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/178197">178197</a></dd>
<dt>Author</dt> <dd>dbates@webkit.org</dd>
<dt>Date</dt> <dd>2015-01-09 14:14:09 -0800 (Fri, 09 Jan 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>[iOS] Add iOS-specific tests and consolidate iOS-specific accessibility tests

Copied iOS-specific tests from directory LayoutTests/platform/ios-sim-deprecated/iphone
to LayoutTests/platform/ios-simulator/ios and fixed references to external JavaScript
scripts and external style sheets. Moved iOS-specific tests in directories LayoutTests/platform/ios-sim/accessibility
and LayoutTests/platform/ios-simulator/ios-accessibility into LayoutTests/platform/ios-simulator/ios/accessibility.

I will remove directory LayoutTests/platform/ios-sim-deprecated, including
LayoutTests/platform/ios-sim-deprecated/iphone, in a subsequent commit.

* platform/ios-simulator-wk2/TestExpectations:
* platform/ios-simulator/TestExpectations:
* platform/ios-simulator/ios/accessibility/press-fires-touch-events-expected.txt: Renamed from LayoutTests/platform/ios-simulator/ios-accessibility/press-fires-touch-events-expected.txt.
* platform/ios-simulator/ios/accessibility/press-fires-touch-events.html: Renamed from LayoutTests/platform/ios-simulator/ios-accessibility/press-fires-touch-events.html.
* platform/ios-simulator/ios/accessibility/set-value-expected.txt: Copied from LayoutTests/platform/ios-sim/accessibility/set-value-expected.txt.
* platform/ios-simulator/ios/accessibility/set-value.html: Renamed from LayoutTests/platform/ios-sim/accessibility/set-value.html.
* platform/ios-simulator/ios/compositing/overlap-page-scale-expected.txt: Added.
[...]</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorTestExpectations">trunk/LayoutTests/platform/ios-simulator/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2TestExpectations">trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/LayoutTests/platform/ios-simulator/ios/</li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/accessibility/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosaccessibilitypressfirestoucheventsexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/accessibility/press-fires-touch-events-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosaccessibilitypressfirestoucheventshtml">trunk/LayoutTests/platform/ios-simulator/ios/accessibility/press-fires-touch-events.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosaccessibilitysetvalueexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/accessibility/set-value-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosaccessibilitysetvaluehtml">trunk/LayoutTests/platform/ios-simulator/ios/accessibility/set-value.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/compositing/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatorioscompositingoverlappagescaleexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/compositing/overlap-page-scale-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorioscompositingoverlappagescalehtml">trunk/LayoutTests/platform/ios-simulator/ios/compositing/overlap-page-scale.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/css/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatorioscssconstructWebKitCSSMatrixexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitCSSMatrix-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorioscssconstructWebKitCSSMatrixhtml">trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitCSSMatrix.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorioscssconstructWebKitPointexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitPoint-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorioscssconstructWebKitPointhtml">trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitPoint.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/css/resources/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatorioscssresourcesTEMPLATEhtml">trunk/LayoutTests/platform/ios-simulator/ios/css/resources/TEMPLATE.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorioscssresourcesconstructWebKitCSSMatrixjs">trunk/LayoutTests/platform/ios-simulator/ios/css/resources/construct-WebKitCSSMatrix.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorioscssresourcesconstructWebKitPointjs">trunk/LayoutTests/platform/ios-simulator/ios/css/resources/construct-WebKitPoint.js</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/</li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/borders/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastbordersthinlozengeexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/borders/thin-lozenge-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastbordersthinlozengehtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/borders/thin-lozenge.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcanvasimage_subSampling_scaleexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/image_subSampling_scale-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcanvasimage_subSampling_scalehtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/image_subSampling_scale.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/resources/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcanvasresourcesimage_subSampling_scalejpg">trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/resources/image_subSampling_scale.jpg</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesdocumentelementFromPointexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/document-elementFromPoint-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesdocumentelementFromPointhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/document-elementFromPoint.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinateselementclientrectsexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/element-client-rects-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinateselementclientrectshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/element-client-rects.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesinnerwindowsizesexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesinnerwindowsizesquirksexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes-quirks-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesinnerwindowsizesquirkshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes-quirks.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesinnerwindowsizeshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesmouseeventexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesmouseeventzoomedexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event-zoomed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesmouseeventzoomedhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event-zoomed.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesmouseeventhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatespageoffsetsexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/page-offsets-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatespageoffsetshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/page-offsets.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesrangeclientrectsexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/range-client-rects-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesrangeclientrectshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/range-client-rects.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/resources/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesresourceshelpersjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/resources/helpers.js</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestsTEMPLATEhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/TEMPLATE.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestselementclientrectsjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/element-client-rects.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestsinnerwindowsizesjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/inner-window-sizes.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestsmouseeventzoomedjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/mouse-event-zoomed.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestsmouseeventjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/mouse-event.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestspageoffsetsjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/page-offsets.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestsrangeclientrectsjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/range-client-rects.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscriptteststoucheventzoomedjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/touch-event-zoomed.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscriptteststoucheventjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/touch-event.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatestoucheventexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatestoucheventzoomedexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event-zoomed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatestoucheventzoomedhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event-zoomed.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcoordinatestoucheventhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/css/</li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/css/script-tests/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcssscripttestsTEMPLATEhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/css/script-tests/TEMPLATE.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcssscripttestswebkitoverflowscrollingparsingjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/css/script-tests/webkit-overflow-scrolling-parsing.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcsswebkitoverflowscrollingparsingexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/css/webkit-overflow-scrolling-parsing-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastcsswebkitoverflowscrollingparsinghtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/css/webkit-overflow-scrolling-parsing.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/events/</li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchdocumentcreatetouchlistiosexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/document-create-touch-list-ios-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchdocumentcreatetouchlistioshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/document-create-touch-list-ios.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchgestureeventbasicexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/gesture-event-basic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchgestureeventbasichtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/gesture-event-basic.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchinputtouchtargethtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/input-touch-target.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchinsertedfragmenttouchtargetexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/inserted-fragment-touch-target-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchinsertedfragmenttouchtargethtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/inserted-fragment-touch-target.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchmisctouchhelpersjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/misc-touch-helpers.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchmovedtouchtargetexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/moved-touch-target-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchmovedtouchtargethtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/moved-touch-target.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchmultitouchsomewithouthandlershtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/multi-touch-some-without-handlers.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchontouchstartactiveselectorhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/ontouchstart-active-selector.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchremovedfragmenttouchtargetexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-fragment-touch-target-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchremovedfragmenttouchtargethtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-fragment-touch-target.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchremovedtouchtargetexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-touch-target-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchremovedtouchtargethtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-touch-target.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchscripttestsTEMPLATEhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/TEMPLATE.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchscripttestsdocumentcreatetouchlistiosjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/document-create-touch-list-ios.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchscripttestsinputtouchtargetjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/input-touch-target.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchscripttestsmultitouchsomewithouthandlersjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/multi-touch-some-without-handlers.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchscriptteststextnodetouchtargetjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/text-node-touch-target.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchscriptteststextareatouchtargetjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/textarea-touch-target.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchscriptteststoucheventframesjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/touch-event-frames.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchscriptteststoucheventpageXYjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/touch-event-pageXY.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchscripttestszoomedtoucheventpageXYjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/zoomed-touch-event-pageXY.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchtextnodetouchtargethtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/text-node-touch-target.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchtextareatouchtargethtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/textarea-touch-target.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchtoucheventframesexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-frames-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchtoucheventframeshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-frames.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchtoucheventpageXYexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-pageXY-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchtoucheventpageXYhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-pageXY.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchzoomedtoucheventpageXYexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/zoomed-touch-event-pageXY-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasteventstouchzoomedtoucheventpageXYhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/zoomed-touch-event-pageXY.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedabsoluteoverfixedexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/absolute-over-fixed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedabsoluteoverfixedhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/absolute-over-fixed.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedautopositionfixedexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/auto-position-fixed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedautopositionfixedhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/auto-position-fixed.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedfixedintransformexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/fixed-in-transform-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedfixedintransformhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/fixed-in-transform.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedfourbarsexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/four-bars-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedfourbarshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/four-bars.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedframewithfixedexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/frame-with-fixed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedframewithfixedhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/frame-with-fixed.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedoverlayfixedexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/overlay-fixed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedoverlayfixedhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/overlay-fixed.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/resources/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastfixedresourcessubframehtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/resources/subframe.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/flexbox/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastflexboxverticalboxformcontrolsexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/flexbox/vertical-box-form-controls-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastflexboxverticalboxformcontrolshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/flexbox/vertical-box-form-controls.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsautocapitalizeattributeexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/autocapitalize-attribute-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsautocapitalizeattributehtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/autocapitalize-attribute.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsborderlessinputgradientexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/borderless-input-gradient-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsborderlessinputgradienthtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/borderless-input-gradient.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsdateinputdecorationsexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/date-input-decorations-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsdateinputdecorationshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/date-input-decorations.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsformcontrolsonbackgroundsexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/form-controls-on-backgrounds-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsformcontrolsonbackgroundshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/form-controls-on-backgrounds.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsrangeinputcontainertouchesexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-container-touches-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsrangeinputcontainertoucheshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-container-touches.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsrangeinputreadonlyanddisabledhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-readonly-and-disabled.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsrangeinputtouchesexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-touches-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsrangeinputtoucheshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-touches.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsshortsliderexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/short-slider-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastformsshortsliderhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/short-slider.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/history/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasthistorypagecachegeolocationexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/history/page-cache-geolocation-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasthistorypagecachegeolocationhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/history/page-cache-geolocation.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/history/resources/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasthistoryresourcespagecachehelperhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/history/resources/page-cache-helper.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/history/script-tests/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasthistoryscripttestsTEMPLATEhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/history/script-tests/TEMPLATE.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasthistoryscripttestspagecachegeolocationjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/history/script-tests/page-cache-geolocation.js</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/html/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasthtmltextareaautosizingdisableexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/html/textarea-auto-sizing-disable-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasthtmltextareaautosizingdisablehtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/html/textarea-auto-sizing-disable.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/js/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastjsclearTimeoutcrashexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/js/clearTimeout-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastjsclearTimeoutcrashhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/js/clearTimeout-crash.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/loader/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastloadersubresourcewillSendRequestnullpreventsloadeventexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/loader/subresource-willSendRequest-null-prevents-load-event-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastloadersubresourcewillSendRequestnullpreventsloadeventhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/loader/subresource-willSendRequest-null-prevents-load-event.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/media/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastmediamedianosrcattributeparsingexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/media/media-no-src-attribute-parsing-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastmediamedianosrcattributeparsinghtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/media/media-no-src-attribute-parsing.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastmediavideoinlineexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/media/video-inline-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastmediavideoinlinehtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/media/video-inline.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastparserblocknestingcapiphoneexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/block-nesting-cap-iphone-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastparserblocknestingcapiphonehtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/block-nesting-cap-iphone.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/resources/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfastparserresourcesblocknestingcapjs">trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/resources/block-nesting-cap.js</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/text/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextapplelogoexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/apple-logo-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextapplelogohtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/apple-logo.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextcombiningenclosingkeycapexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/combining-enclosing-keycap-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextcombiningenclosingkeycaphtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/combining-enclosing-keycap.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextdatadetectorsphonedisabledexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone-disabled-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextdatadetectorsphonedisabledhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone-disabled.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextdatadetectorsphoneexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextdatadetectorsphonehtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/resources/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextdatadetectorsresourcesphonedisabledhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/resources/phone-disabled.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextdatadetectorsresourcesphonehtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/resources/phone.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextemojicomplextextexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-complextext-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextemojicomplextexthtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-complextext.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextemojitextexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-text-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextemojitexthtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-text.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextlinebreakingwithkerningexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/line-breaking-with-kerning-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextlinebreakingwithkerninghtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/line-breaking-with-kerning.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextmidwordbreakbeforecombiningmarkexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/mid-word-break-before-combining-mark-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextmidwordbreakbeforecombiningmarkhtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/mid-word-break-before-combining-mark.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextopticalFontexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFont-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextopticalFonthtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFont.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextopticalFontWithTextStyleexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithTextStyle-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextopticalFontWithTextStylehtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithTextStyle.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextopticalFontWithWeightexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithWeight-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextopticalFontWithWeighthtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithWeight.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttexttextStylesWithSizesexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/textStylesWithSizes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttexttextStylesWithSizeshtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/textStylesWithSizes.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextunderlinescalingexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/underline-scaling-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfasttextunderlinescalinghtml">trunk/LayoutTests/platform/ios-simulator/ios/fast/text/underline-scaling.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fixed/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedabsoluteinsidefixedexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fixed/absolute-inside-fixed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedabsoluteinsidefixedhtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/absolute-inside-fixed.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixedbackforwardexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-back-forward-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixedbackforwardhtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-back-forward.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixedpositionoutofviewexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixedpositionoutofviewnegativezindexexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view-negative-zindex-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixedpositionoutofviewnegativezindexhtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view-negative-zindex.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixedpositionoutofviewhtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixposcanvasassertionexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-canvas-assertion-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixposcanvasassertionhtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-canvas-assertion.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixposremoveexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-remove-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixposremovehtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-remove.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixpostoggleexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-toggle-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixpostogglehtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-toggle.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixposunloadcachedexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-cached-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixposunloadcachedhtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-cached.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixposunloaduncachedcrashexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-uncached-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfixposunloaduncachedcrashhtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-uncached-crash.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfourbarsexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fixed/four-bars-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedfourbarshtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/four-bars.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixednestedfixedexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fixed/nested-fixed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixednestedfixedhtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/nested-fixed.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedpercentageinsidefixedexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/fixed/percentage-inside-fixed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedpercentageinsidefixedhtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/percentage-inside-fixed.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/fixed/resources/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedresourcesfixposunloadfinalhtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/resources/fixpos-unload-final.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosfixedresourcesjumpbackhtml">trunk/LayoutTests/platform/ios-simulator/ios/fixed/resources/jump-back.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosgetComputedStyletextdecorationletterpressexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/getComputedStyle-text-decoration-letterpress-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosgetComputedStyletextdecorationletterpresshtml">trunk/LayoutTests/platform/ios-simulator/ios/getComputedStyle-text-decoration-letterpress.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/limits/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatorioslimitsnoimagelimitexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/limits/no-image-limit-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorioslimitsnoimagelimithtml">trunk/LayoutTests/platform/ios-simulator/ios/limits/no-image-limit.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/limits/resources/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatorioslimitsresourcesimagepng">trunk/LayoutTests/platform/ios-simulator/ios/limits/resources/image.png</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/plugin/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriospluginyoutubeflashpluginiframeexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriospluginyoutubeflashpluginiframenoheightorwidthexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-no-height-or-width-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriospluginyoutubeflashpluginiframenoheightorwidthhtml">trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-no-height-or-width.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriospluginyoutubeflashpluginiframehtml">trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/resources/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosresourcesgetComputedStyletextdecorationletterpressjs">trunk/LayoutTests/platform/ios-simulator/ios/resources/getComputedStyle-text-decoration-letterpress.js</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/scrolling/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingclippingancestorwithacceleratedscrollingancestorexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/clipping-ancestor-with-accelerated-scrolling-ancestor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingclippingancestorwithacceleratedscrollingancestorhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/clipping-ancestor-with-accelerated-scrolling-ancestor.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingiframeinsideoverflowclippingexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/iframe-inside-overflow-clipping-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingiframeinsideoverflowclippinghtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/iframe-inside-overflow-clipping.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingoverflowclipwithacceleratedscrollingancestorexpectedhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-clip-with-accelerated-scrolling-ancestor-expected.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingoverflowclipwithacceleratedscrollingancestorhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-clip-with-accelerated-scrolling-ancestor.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingoverflowdivscrollingexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-div-scrolling-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingoverflowdivscrollinghtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-div-scrolling.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrollinheritedexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-inherited-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrollinheritedhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-inherited.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrolltouchexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-touch-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrolltouchhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-touch.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrollingancestorclipexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrollingancestorclipsizeexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-size-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrollingancestorclipsizehtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-size.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrollingancestorcliphtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingremoveoverflowcrashexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/remove-overflow-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingremoveoverflowcrashhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/remove-overflow-crash.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/scrolling/resources/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingresourcesjumpbackhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/resources/jump-back.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/scrolling/script-tests/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscripttestsTEMPLATEhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/script-tests/TEMPLATE.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscripttestsoverflowdivscrollingjs">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/script-tests/overflow-div-scrolling.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscrolleventfromscrollToexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-event-from-scrollTo-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscrolleventfromscrollTohtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-event-from-scrollTo.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscrolleventsbackforwardafterpageshowexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward-after-pageshow-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscrolleventsbackforwardafterpageshowhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward-after-pageshow.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscrolleventsbackforwardexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscrolleventsbackforwardhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscrollToatpageloadexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollTo-at-page-load-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscrollToatpageloadhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollTo-at-page-load.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscrollbarhidingexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollbar-hiding-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscrollbarhidinghtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollbar-hiding.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscrollingcontentcliptoviewportexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrolling-content-clip-to-viewport-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingscrollingcontentcliptoviewporthtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrolling-content-clip-to-viewport.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingtablecelltouchscrollingexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/table-cell-touch-scrolling-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingtablecelltouchscrollinghtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/table-cell-touch-scrolling.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingtextareascrolltouchexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/textarea-scroll-touch-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingtextareascrolltouchhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/textarea-scroll-touch.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingtouchscrollbackforwardexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-scroll-back-forward-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingtouchscrollbackforwardhtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-scroll-back-forward.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingtouchstackingexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-stacking-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosscrollingtouchstackinghtml">trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-stacking.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/storage/</li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/storage/domstorage/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosstoragedomstorage5mbquotaexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/storage/domstorage/5mb-quota-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriosstoragedomstorage5mbquotahtml">trunk/LayoutTests/platform/ios-simulator/ios/storage/domstorage/5mb-quota.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/touch/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriostouchconstructTouchexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-Touch-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriostouchconstructTouchhtml">trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-Touch.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriostouchconstructTouchListexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-TouchList-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriostouchconstructTouchListhtml">trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-TouchList.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriostouchresourcesTEMPLATEhtml">trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/TEMPLATE.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriostouchresourcesconstructTouchjs">trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/construct-Touch.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriostouchresourcesconstructTouchListjs">trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/construct-TouchList.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriostouchresourcestouchhandleronwindowjs">trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/touch-handler-on-window.js</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriostouchtouchhandleronwindowexpectedtxt">trunk/LayoutTests/platform/ios-simulator/ios/touch/touch-handler-on-window-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatoriostouchtouchhandleronwindowhtml">trunk/LayoutTests/platform/ios-simulator/ios/touch/touch-handler-on-window.html</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li>trunk/LayoutTests/platform/ios-sim/</li>
<li>trunk/LayoutTests/platform/ios-simulator/ios-accessibility/</li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (178196 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-01-09 22:13:06 UTC (rev 178196)
+++ trunk/LayoutTests/ChangeLog        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2015-01-09  Daniel Bates  &lt;dabates@apple.com&gt;
+
+        [iOS] Add iOS-specific tests and consolidate iOS-specific accessibility tests
+
+        Copied iOS-specific tests from directory LayoutTests/platform/ios-sim-deprecated/iphone
+        to LayoutTests/platform/ios-simulator/ios and fixed references to external JavaScript
+        scripts and external style sheets. Moved iOS-specific tests in directories LayoutTests/platform/ios-sim/accessibility
+        and LayoutTests/platform/ios-simulator/ios-accessibility into LayoutTests/platform/ios-simulator/ios/accessibility.
+
+        I will remove directory LayoutTests/platform/ios-sim-deprecated, including
+        LayoutTests/platform/ios-sim-deprecated/iphone, in a subsequent commit.
+
+        * platform/ios-simulator-wk2/TestExpectations:
+        * platform/ios-simulator/TestExpectations:
+        * platform/ios-simulator/ios/accessibility/press-fires-touch-events-expected.txt: Renamed from LayoutTests/platform/ios-simulator/ios-accessibility/press-fires-touch-events-expected.txt.
+        * platform/ios-simulator/ios/accessibility/press-fires-touch-events.html: Renamed from LayoutTests/platform/ios-simulator/ios-accessibility/press-fires-touch-events.html.
+        * platform/ios-simulator/ios/accessibility/set-value-expected.txt: Copied from LayoutTests/platform/ios-sim/accessibility/set-value-expected.txt.
+        * platform/ios-simulator/ios/accessibility/set-value.html: Renamed from LayoutTests/platform/ios-sim/accessibility/set-value.html.
+        * platform/ios-simulator/ios/compositing/overlap-page-scale-expected.txt: Added.
+        [...]
+
</ins><span class="cx"> 2015-01-09  Andreas Kling  &lt;akling@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Mark css3/background/background-repeat-space-content.html as ImgaeOnlyFailure
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator/TestExpectations (178196 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/TestExpectations        2015-01-09 22:13:06 UTC (rev 178196)
+++ trunk/LayoutTests/platform/ios-simulator/TestExpectations        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -2526,12 +2526,6 @@
</span><span class="cx"> fast/events/message-port-inactive-document.html
</span><span class="cx"> 
</span><span class="cx"> ###
</span><del>-# Temporarily skip all others tests
-# We'll un-skip each directory as we land updated/new expected results
-##
-platform
-
-###
</del><span class="cx"> # Mark as passing specific tests in folders that were skipped temporarily above.
</span><span class="cx"> ##
</span><span class="cx"> webkit.org/b/138970 fast/css/line-height-text-autosizing.html [ Pass ]
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosaccessibilitypressfirestoucheventsexpectedtxtfromrev178196trunkLayoutTestsplatformiossimulatoriosaccessibilitypressfirestoucheventsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/platform/ios-simulator/ios/accessibility/press-fires-touch-events-expected.txt (from rev 178196, trunk/LayoutTests/platform/ios-simulator/ios-accessibility/press-fires-touch-events-expected.txt) (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/accessibility/press-fires-touch-events-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/accessibility/press-fires-touch-events-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+button
+Ensure that if an element on handles touch events, the simulated accessibility press will still activate those elements.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Received touch start [object TouchEvent]
+Received touch ended [object TouchEvent]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosaccessibilitypressfirestoucheventshtmlfromrev178196trunkLayoutTestsplatformiossimulatoriosaccessibilitypressfirestoucheventshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/platform/ios-simulator/ios/accessibility/press-fires-touch-events.html (from rev 178196, trunk/LayoutTests/platform/ios-simulator/ios-accessibility/press-fires-touch-events.html) (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/accessibility/press-fires-touch-events.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/accessibility/press-fires-touch-events.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+var successfullyParsed = false;
+if (window.testRunner)
+   testRunner.dumpAsText();
+
+function touchEnd(event) {
+    debug(&quot;Received touch ended &quot; + event);
+    event.stopPropagation(); 
+    event.preventDefault();
+}
+
+function touchStart(event) {
+    debug(&quot;Received touch start &quot; + event);
+    event.stopPropagation(); 
+    event.preventDefault();
+}
+
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+&lt;div role=&quot;button&quot; id=&quot;button&quot; ontouchstart=&quot;touchStart(event);&quot; ontouchend=&quot;touchEnd(event);&quot;&gt;button&lt;/div&gt;
+
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+
+    description(&quot;Ensure that if an element on handles touch events, the simulated accessibility press will still activate those elements.&quot;);
+
+    if (window.accessibilityController) {
+        var button = accessibilityController.accessibleElementById(&quot;button&quot;);
+        button.press();
+    }
+
+    successfullyParsed = true;
+&lt;/script&gt;
+
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosaccessibilitysetvalueexpectedtxtfromrev178196trunkLayoutTestsplatformiossimaccessibilitysetvalueexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/platform/ios-simulator/ios/accessibility/set-value-expected.txt (from rev 178196, trunk/LayoutTests/platform/ios-sim/accessibility/set-value-expected.txt) (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/accessibility/set-value-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/accessibility/set-value-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+
+This makes sure that you can set the ax value through accessibility.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Initial value : AXValue: 
+Final value : AXValue: TEST
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosaccessibilitysetvaluehtmlfromrev178196trunkLayoutTestsplatformiossimaccessibilitysetvaluehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/platform/ios-simulator/ios/accessibility/set-value.html (from rev 178196, trunk/LayoutTests/platform/ios-sim/accessibility/set-value.html) (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/accessibility/set-value.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/accessibility/set-value.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+var successfullyParsed = false;
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+
+&lt;input type=&quot;text&quot; id=&quot;text&quot;&gt;
+
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+
+    description(&quot;This makes sure that you can set the ax value through accessibility.&quot;);
+
+    if (window.accessibilityController) {
+
+        var textField = accessibilityController.accessibleElementById(&quot;text&quot;);
+        debug(&quot;Initial value : &quot; + textField.iphoneValue);
+        textField.setValue(&quot;TEST&quot;);
+        debug(&quot;Final value : &quot; + textField.iphoneValue);
+    }
+
+    successfullyParsed = true;
+&lt;/script&gt;
+
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorioscompositingoverlappagescaleexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/compositing/overlap-page-scale-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/compositing/overlap-page-scale-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/compositing/overlap-page-scale-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+(GraphicsLayer
+  (bounds 1021.00 779.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 1021.00 779.00)
+      (children 2
+        (GraphicsLayer
+          (position 9.00 9.00)
+          (bounds 900.00 729.00)
+          (children 1
+            (GraphicsLayer
+              (position 50.00 614.00)
+              (bounds 800.00 140.00)
+            )
+          )
+        )
+        (GraphicsLayer
+          (position 9.00 9.00)
+          (bounds 900.00 729.00)
+          (children 1
+            (GraphicsLayer
+              (position 0.00 629.00)
+              (bounds 800.00 100.00)
+              (contentsOpaque 1)
+            )
+          )
+        )
+      )
+    )
+  )
+)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorioscompositingoverlappagescalehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/compositing/overlap-page-scale.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/compositing/overlap-page-scale.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/compositing/overlap-page-scale.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,63 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+  &lt;meta name=&quot;viewport&quot; content=&quot;initial-scale=0.783673465, minimum-scale=0.783673465, maximum-scale=0.783673465&quot;&gt;
+  &lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
+    #main {
+      width: 900px;
+      overflow: hidden;
+      border: 1px solid black;
+    }
+    
+    #hero {
+      position: relative;
+      width: 800px;
+      height: 754px;
+      margin: 0 auto;
+      background-color: #DDD;
+    }
+    
+    .bottom-shadow {
+      position: absolute;
+      bottom: 0;
+      left: 0;
+      height: 140px;
+      width: 800px;
+      background-color: rgba(255, 255, 255, 0.5);
+      -webkit-transform: translateZ(0);
+    }
+    
+    .content {
+      position: relative;
+      width: 800px;
+      height: 100px;
+      margin-top: -125px;
+      background-color: gray;
+    }
+    
+  &lt;/style&gt;
+  &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+    if (window.testRunner) {
+      testRunner.dumpAsText();
+      // testRunner.waitUntilDone();
+    }
+    function dumpLayers()
+    {
+      if (window.testRunner)
+        document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
+    }
+    window.addEventListener('load', dumpLayers, false);
+  &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+  &lt;div id=&quot;main&quot;&gt;
+    &lt;header id=&quot;hero&quot;&gt;
+      &lt;div class=&quot;bottom-shadow&quot;&gt;&lt;/div&gt;
+    &lt;/header&gt;
+    &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+&lt;pre id=&quot;layers&quot;&gt;Layers go here in DRT&lt;/pre&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorioscssconstructWebKitCSSMatrixexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitCSSMatrix-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitCSSMatrix-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitCSSMatrix-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+Test constructor for WebKitCSSMatrix. &lt;rdar://problem/6481690&gt;
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix) is 'matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)'
+PASS WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix(new WebKitCSSMatrix)) is 'matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)'
+PASS WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix('matrix3d(1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000)')) is 'matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorioscssconstructWebKitCSSMatrixhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitCSSMatrix.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitCSSMatrix.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitCSSMatrix.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.dumpAsText();
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;resources/construct-WebKitCSSMatrix.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorioscssconstructWebKitPointexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitPoint-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitPoint-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitPoint-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+Test constructor for WebKitPoint. &lt;rdar://problem/6481690&gt;
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS WebKitPoint.prototype.toString.call(new WebKitPoint) is '[object WebKitPoint]'
+PASS WebKitPoint.prototype.toString.call(new WebKitPoint(0)) is '[object WebKitPoint]'
+PASS WebKitPoint.prototype.toString.call(new WebKitPoint(1, 1)) is '[object WebKitPoint]'
+PASS WebKitPoint.prototype.toString.call(new WebKitPoint(1, 2, 3)) is '[object WebKitPoint]'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorioscssconstructWebKitPointhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitPoint.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitPoint.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/css/construct-WebKitPoint.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.dumpAsText();
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;resources/construct-WebKitPoint.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorioscssresourcesTEMPLATEhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/css/resources/TEMPLATE.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/css/resources/TEMPLATE.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/css/resources/TEMPLATE.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.dumpAsText();
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;YOUR_JS_FILE_HERE&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorioscssresourcesconstructWebKitCSSMatrixjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/css/resources/construct-WebKitCSSMatrix.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/css/resources/construct-WebKitCSSMatrix.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/css/resources/construct-WebKitCSSMatrix.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+description(
+'Test constructor for WebKitCSSMatrix.  &amp;lt;&lt;a href=&quot;rdar://problem/6481690&quot;&gt;rdar://problem/6481690&lt;/a&gt;&amp;gt;'
+);
+
+shouldBe(&quot;WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix)&quot;,
+         &quot;'matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)'&quot;);
+
+shouldBe(&quot;WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix(new WebKitCSSMatrix))&quot;,
+         &quot;'matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)'&quot;);
+
+shouldBe(&quot;WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix('matrix3d(1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000)'))&quot;,
+         &quot;'matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)'&quot;);
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorioscssresourcesconstructWebKitPointjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/css/resources/construct-WebKitPoint.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/css/resources/construct-WebKitPoint.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/css/resources/construct-WebKitPoint.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+description(
+'Test constructor for WebKitPoint.  &amp;lt;&lt;a href=&quot;rdar://problem/6481690&quot;&gt;rdar://problem/6481690&lt;/a&gt;&amp;gt;'
+);
+
+shouldBe(&quot;WebKitPoint.prototype.toString.call(new WebKitPoint)&quot;, &quot;'[object WebKitPoint]'&quot;);
+shouldBe(&quot;WebKitPoint.prototype.toString.call(new WebKitPoint(0))&quot;, &quot;'[object WebKitPoint]'&quot;);
+shouldBe(&quot;WebKitPoint.prototype.toString.call(new WebKitPoint(1, 1))&quot;, &quot;'[object WebKitPoint]'&quot;);
+shouldBe(&quot;WebKitPoint.prototype.toString.call(new WebKitPoint(1, 2, 3))&quot;, &quot;'[object WebKitPoint]'&quot;);
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastbordersthinlozengeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/borders/thin-lozenge-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/borders/thin-lozenge-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/borders/thin-lozenge-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x8
+  RenderBlock {HTML} at (0,0) size 800x8
+    RenderBody {BODY} at (8,8) size 784x0
+layer at (8,8) size 11x12
+  RenderBlock (positioned) {DIV} at (0,0) size 11x12 [bgcolor=#0000007F] [border: (1px solid #FFFFFF7F) none (1px solid #FFFFFF7F)]
+layer at (8,8) size 1x12
+  RenderBlock (positioned) {DIV} at (0,0) size 1x12 [bgcolor=#0000007F] [border: (1px solid #FFFFFF7F) none (1px solid #FFFFFF7F) none]
+layer at (8,8) size 11x12
+  RenderBlock (positioned) {DIV} at (0,0) size 11x12 [bgcolor=#0000007F] [border: (1px solid #FFFFFF7F) none]
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastbordersthinlozengehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/borders/thin-lozenge.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/borders/thin-lozenge.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/borders/thin-lozenge.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+
+  &lt;head&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;initial-scale=1.0&quot;&gt;
+
+    &lt;style type=&quot;text/css&quot;&gt;
+      .scroll-indicator {
+        -webkit-transform: translate(0, 0);
+      }
+
+      .scroll-indicator &gt; div {
+        position: absolute;
+        top: 0;
+        left: 0;
+        -webkit-transform: translate(0, 0);
+        -webkit-transform-origin: left top;
+      }
+
+      .scroll-indicator &gt; div {
+        width: 10px;
+        height: 10px;
+        background-color: rgba(0,0,0,0.5);
+        border: 1px solid rgba(255,255,255,0.5);
+      }
+
+      /* left cap */
+      .scroll-indicator &gt; div:nth-of-type(1) {
+        -webkit-border-top-left-radius: 5px;
+        -webkit-border-bottom-left-radius: 5px;
+        border-right-width: 0;
+      }
+
+      /* middle cap */
+      .scroll-indicator &gt; div:nth-of-type(2) {
+        width: 1px;
+        -webkit-transform: translateX(11px) scaleX(100);
+        border-left-width: 0;
+        border-right-width: 0;
+      }
+
+      /* right cap */
+      .scroll-indicator &gt; div:nth-of-type(3) {
+        -webkit-transform: translateX(111px);
+        -webkit-border-top-right-radius: 5px;
+        -webkit-border-bottom-right-radius: 5px;
+        border-left-width: 0;
+      }
+      
+    &lt;/style&gt;
+
+  &lt;/head&gt;
+
+  &lt;body&gt;
+
+    &lt;div class=&quot;scroll-indicator&quot;&gt;
+      &lt;div&gt;&lt;/div&gt;
+      &lt;div&gt;&lt;/div&gt;
+      &lt;div&gt;&lt;/div&gt;
+    &lt;/div&gt;
+
+  &lt;/body&gt;
+
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcanvasimage_subSampling_scaleexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/image_subSampling_scale-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/image_subSampling_scale-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/image_subSampling_scale-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+ PASS getPixel(62,62) is [0,0,0,255]
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcanvasimage_subSampling_scalehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/image_subSampling_scale.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/image_subSampling_scale.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/image_subSampling_scale.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;meta name=&quot;viewport&quot; content=&quot;width=980 initial-scale=0.5&quot;&gt;
+
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+function dataToArray(data) {
+    var result = new Array(data.length)
+    for (var i = 0; i &lt; data.length; i++)
+        result[i] = data[i];
+    return result;
+}
+
+function getPixel(x, y) {
+    var canvas = document.getElementById(&quot;cc&quot;);
+    var context = canvas.getContext('2d');
+    var data = context.getImageData(x,y,1,1);
+    if (!data) // getImageData failed, which should never happen
+        return [-1,-1,-1,-1];
+    return dataToArray(data.data);
+}
+
+function pixelShouldBe(x, y, colour) {
+    shouldBe(&quot;getPixel(&quot; + [x, y] +&quot;)&quot;, &quot;[&quot;+colour+&quot;]&quot;);
+}
+
+var draw = function() {
+  var ctx = document.getElementById('cc').getContext('2d');
+  var timg = new Image()
+  timg.onload = function() {
+    ctx.setFillColor(1, 1, 1, 1);
+    ctx.fillRect(0,0,256,256);
+    ctx.drawImage(timg, 0,0, 128, 128, 0, 0, 63, 63);
+    ctx.drawImage(timg, 0,0, 128, 128, 128, 0, 65,65);
+
+    pixelShouldBe(62, 62, [0, 0, 0, 255]);
+
+    // finish test
+    if (window.testRunner) {
+        testRunner.notifyDone();
+    }
+  };
+  timg.src = &quot;./resources/image_subSampling_scale.jpg&quot;;
+ };
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;canvas id=&quot;cc&quot; width=&quot;256&quot; height=&quot;128&quot;&gt;&lt;/canvas&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+draw();
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcanvasresourcesimage_subSampling_scalejpg"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/resources/image_subSampling_scale.jpg</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/platform/ios-simulator/ios/fast/canvas/resources/image_subSampling_scale.jpg
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesdocumentelementFromPointexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/document-elementFromPoint-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/document-elementFromPoint-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/document-elementFromPoint-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+Absolute
+Relative
+Fixed
+x        x
+Table Content
+In Columns
+Transformed
+In RTL overflow
+PASS: event at (109, 57) hit absolute at offset (29, 32)
+PASS: event at (161, 13) hit relative at offset (31, 28)
+PASS: event at (40, 297) hit table-content at offset (15, 18)
+PASS: event at (122, 407) hit transformed at offset (18, 15)
+PASS: event at (573, 480) hit inside-overflow at offset (2, 9)
+FAIL: event at (707, 174) expected to hit in-columns at (88, 13) but hit at (87, 13)
+FAIL: event at (241, 67) expected to hit fixed at (41, 17) but hit relative at (111, 82)
+FAIL: event at (244, 102) expected to hit fixed at (44, 52) but hit relative at (114, 117)
+FAIL: event at (388, 88) expected to hit fixed at (188, 38) but hit filler at (408, 188)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesdocumentelementFromPointhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/document-elementFromPoint.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/document-elementFromPoint.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/document-elementFromPoint.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,292 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta name=&quot;viewport&quot; content=&quot;initial-scale=1, minimum-scale=1, maximum-scale=1&quot;&gt;
+&lt;style&gt;
+* {
+    margin: 0;
+    padding: 0;
+}
+
+body {
+    height: 2048px;
+    width: 2048px;
+    cursor: crosshair; /* Debugging */
+}
+
+.box {
+    width: 200px;
+    height: 100px;
+    border: 10px solid gray;
+}
+
+.line {
+    width:150px;
+    height:20px;
+    background: gray;
+}
+
+.target {
+    background: lightGreen !important; /* Elements we click on are green */
+}
+
+#absolute {
+    position: absolute;
+    left: 100px;
+    top: 125px;
+}
+
+#relative {
+    position: relative;
+    left: 40px;
+    top: -50px;
+}
+
+#fixed {
+    position: fixed;
+    top: 50px;
+    left: 200px;
+    height: 50px;
+}
+
+#filler {
+    position: absolute;
+    top: 0;
+    width: 100%;
+    height: 100%;
+}
+
+table {
+    margin-top: 300px;
+    margin-left: 40px;
+    width: 400px;
+}
+
+th { height: 30px; }
+
+#table-content {
+    position: relative;
+    border: 10px solid gray;
+}
+
+#columns {
+    position: absolute;
+    width: 400px;
+    height: 200px;
+    top: 220px;
+    left: 500px;
+    border: 1px solid black;
+    -webkit-column-count: 3;
+}
+
+.column-line {
+    width: 100px;
+    height: 20px;
+    background: gray;
+}
+
+#transformed {
+    position: absolute;
+    top: 470px;
+    height: 120px;
+    width: 200px;
+    -webkit-transform: translate(100px, 50px) rotate(20deg);
+}
+
+#overflow {
+    overflow: hidden; /* No scrollbars */
+    position: absolute;
+    width: 300px;
+    height: 200px;
+    top: 450px;
+    left: 470px;
+    border: 1px solid black;
+    direction: rtl;
+}
+
+#overflow-contents {
+    height: 500px;
+    width: 120%;
+}
+
+#inside-overflow {
+    height: 550px;
+    width: 50%;
+}
+
+#results {
+    position: absolute;
+    left: 30px;
+    top: 750px;
+}
+
+#mouse-position {
+    position: absolute;
+    left: 30px;
+    top: 670px;
+    color: gray;
+}
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    
+&lt;!--
+  This test is modeled after &lt;LayoutTests/fast/events/offsetX-offsetY.html&gt;,
+  but it is designed to not depend on inline text content to position the
+  targets on which we click. iOS was failing that test due to text run
+  and line-height differences.
+--&gt;
+
+&lt;!-- Filler, to force scrolling --&gt;
+&lt;div id=&quot;filler&quot;&gt;&lt;/div&gt;
+
+&lt;!-- Absolute, Relative, and Fixed position --&gt;
+&lt;div id=&quot;absolute&quot; class=&quot;box target&quot;&gt;
+    &lt;span style=&quot;position:absolute;left:0;top:0&quot;&gt;Absolute&lt;/span&gt;
+    &lt;div id=&quot;relative&quot; class=&quot;box target&quot;&gt;Relative&lt;/div&gt;
+    &lt;div id=&quot;fixed&quot; class=&quot;box target&quot;&gt;Fixed&lt;/div&gt;
+&lt;/div&gt;
+
+&lt;!-- Table --&gt;
+&lt;table id=&quot;table&quot; border=&quot;2&quot; cellpadding=&quot;3&quot; cellpadding=&quot;2&quot;&gt;
+    &lt;tr&gt;&lt;th&gt;x&lt;/th&gt;&lt;th&gt;x&lt;/th&gt;&lt;/tr&gt;
+    &lt;tr&gt;
+        &lt;td&gt;&lt;div id=&quot;table-content&quot; class=&quot;line target&quot;&gt;Table Content&lt;/div&gt;&lt;/td&gt;
+        &lt;td&gt;
+            &lt;div class=&quot;line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;
+            &lt;div class=&quot;line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;
+            &lt;div class=&quot;line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;
+        &lt;/td&gt;
+    &lt;/tr&gt;
+&lt;/table&gt;
+
+&lt;!-- Columns --&gt;
+&lt;div id=&quot;columns&quot;&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;in-columns&quot; class=&quot;column-line target&quot;&gt;In Columns&lt;/div&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;column-line&quot;&gt;&lt;/div&gt;
+&lt;/div&gt;
+
+&lt;!-- Transformed --&gt;
+&lt;div id=&quot;transformed&quot; class=&quot;box target&quot;&gt;Transformed&lt;/div&gt;
+
+&lt;!-- Overflowed Content --&gt;
+&lt;div id=&quot;overflow&quot;&gt;
+    &lt;div id=&quot;overflow-contents&quot;&gt;
+        &lt;div class=&quot;line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;
+        &lt;div class=&quot;line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;
+        &lt;div class=&quot;line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;
+        &lt;div id=&quot;inside-overflow&quot; class=&quot;target&quot;&gt;In RTL overflow&lt;/div&gt;
+        &lt;div class=&quot;line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;!-- Debugging --&gt;
+&lt;div id=&quot;results&quot;&gt;&lt;/div&gt;
+&lt;div id=&quot;mouse-position&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+// Debug mode.
+if (!window.testRunner) {
+    document.body.onmousemove = function(e) {
+        var resultBox = document.getElementById('mouse-position');
+        var offsets = 'element id: ' + e.target.id + '&lt;br&gt; clientX: ' + e.clientX + ' clientY: ' + e.clientY + '&lt;br&gt;';
+        offsets += 'offsetX: ' + e.offsetX + ' offsetY: ' + e.offsetY;
+        resultBox.innerHTML = offsets;
+    }
+    document.body.ontouchstart = function(e) {
+        var touch = e.touches[0];
+        var resultBox = document.getElementById('mouse-position');
+        var clientRect = e.target.getBoundingClientRect();
+        var offsets = 'element id: ' + e.target.id + '&lt;br&gt;';
+        offsets += 'clientX: ' + touch.clientX + ' clientY: ' + touch.clientY + '&lt;br&gt;';
+        offsets += '~offsetX: ' + (clientRect.left - touch.clientX) + ' ~offsetY: ' + (clientRect.top - touch.clientY);
+        resultBox.innerHTML = offsets;
+        // Do not prevent default, so we can scroll.
+    }
+}
+
+function log(s) {
+    var resultsDiv = document.getElementById('results');
+    resultsDiv.innerHTML += s + '&lt;br&gt;';
+}
+
+function dispatchEvent(clientX, clientY, expectedElementID, expectedOffsetX, expectedOffsetY) {
+    var e = document.createEvent(&quot;MouseEvent&quot;);
+    e.initMouseEvent(&quot;click&quot;, true, true, window, 1, 1, 1, clientX, clientY, false, false, false, false, 0, document);
+    e.expectedElementID = expectedElementID;
+    e.expectedOffsetX = expectedOffsetX;
+    e.expectedOffsetY = expectedOffsetY;
+    var target = document.elementFromPoint(e.clientX, e.clientY);
+    target.dispatchEvent(e);   
+}
+
+function clicked(event) {
+    var element = event.target;
+    var result;
+    if (element.id === event.expectedElementID &amp;&amp; event.offsetX === event.expectedOffsetX &amp;&amp; event.offsetY === event.expectedOffsetY) {
+        result = 'PASS:';
+        result += ' event at (' + event.clientX + ', ' + event.clientY + ')';
+        result += ' hit ' + element.id;
+        result += ' at offset (' + event.offsetX + ', ' + event.offsetY + ')';
+    } else {
+        result = 'FAIL:';
+        result += ' event at (' + event.clientX + ', ' + event.clientY + ')';
+        result += ' expected to hit ' + event.expectedElementID;
+        result += ' at (' + event.expectedOffsetX + ', ' + event.expectedOffsetY + ')';
+        result += ' but hit ' + element.id + ' at (' + event.offsetX + ', ' + event.offsetY + ')';
+    }
+    log(result);
+}
+
+if (window.testRunner) {
+    window.testRunner.dumpAsText();
+    window.testRunner.waitUntilDone();
+}
+
+// Start the test.
+document.body.addEventListener('click', clicked, false);
+window.addEventListener('load', function() {
+    setTimeout(function() {
+        // Scroll body and inner overflow box.
+        window.scrollTo(20, 100);
+        var overflowContent = document.getElementById('overflow');
+        overflowContent.scrollLeft = 80;
+        overflowContent.scrollTop = 60;
+        setTimeout(function() {
+            // Dispatch events.
+            dispatchEvent(109, 57, 'absolute', 29, 32);
+            dispatchEvent(161, 13, 'relative', 31, 28);
+            dispatchEvent(40, 297, 'table-content', 15, 18);
+            dispatchEvent(122, 407, 'transformed', 18, 15);
+            dispatchEvent(573, 480, 'inside-overflow', 2, 9);
+            dispatchEvent(707, 174, 'in-columns', 88, 13);
+
+            // FIXME: Fixed position content not getting hit correctly.
+            // NOTE: This is flakey, but works when user driven in MobileSafari
+            // in the simulator if not the first page load.
+            // &lt;rdar://problem/9520772&gt; document.elementFromPoint sometimes fails with fixed position content
+            dispatchEvent(241, 67, 'fixed', 41, 17);
+            dispatchEvent(244, 102, 'fixed', 44, 52);
+            dispatchEvent(388, 88, 'fixed', 188, 38);
+
+            // End asynchronous test.
+            if (window.testRunner)
+                window.testRunner.notifyDone();
+        }, 0);
+    }, 0);
+}, false);
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinateselementclientrectsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/element-client-rects-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/element-client-rects-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/element-client-rects-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+This tests Element.getBoundingClientRects and getClientRects positions when unscaled, scaled, and panned.
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+unscaled
+PASS clientRect.left is 100
+PASS clientRect.right is 200
+PASS clientRect.top is 100
+PASS clientRect.bottom is 200
+PASS clientRect.width is 100
+PASS clientRect.height is 100
+PASS clientRect.left is 100
+PASS clientRect.right is 200
+PASS clientRect.top is 100
+PASS clientRect.bottom is 200
+PASS clientRect.width is 100
+PASS clientRect.height is 100
+
+scaled and panned
+PASS clientRect.left is 90
+PASS clientRect.right is 190
+PASS clientRect.top is 90
+PASS clientRect.bottom is 190
+PASS clientRect.width is 100
+PASS clientRect.height is 100
+PASS clientRect.left is 90
+PASS clientRect.right is 190
+PASS clientRect.top is 90
+PASS clientRect.bottom is 190
+PASS clientRect.width is 100
+PASS clientRect.height is 100
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinateselementclientrectshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/element-client-rects.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/element-client-rects.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/element-client-rects.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/helpers.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;* { margin: 0; padding: 0; }&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;box&quot; style=&quot;background:blue;width:100px;height:100px;position:absolute;top:100px;left:100px&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;!-- Filler to allow scrolling --&gt;
+&lt;div style=&quot;width:1500px;height:1500px;&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/element-client-rects.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesinnerwindowsizesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+This tests &quot;scroll&quot; offsets when unscaled, scaled, and panned.
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+unscaled
+PASS window.innerWidth is 800
+PASS window.innerHeight is 600
+PASS document.documentElement.clientWidth is 800
+PASS document.documentElement.clientHeight is 600
+
+scaled and panned
+PASS window.innerWidth is 400
+PASS window.innerHeight is 300
+PASS document.documentElement.clientWidth is 400
+PASS document.documentElement.clientHeight is 300
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesinnerwindowsizesquirksexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes-quirks-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes-quirks-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes-quirks-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+This tests &quot;scroll&quot; offsets when unscaled, scaled, and panned.
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+unscaled
+PASS window.innerWidth is 800
+PASS window.innerHeight is 600
+PASS document.body.clientWidth is 800
+PASS document.body.clientHeight is 600
+
+scaled and panned
+PASS window.innerWidth is 400
+PASS window.innerHeight is 300
+PASS document.body.clientWidth is 400
+PASS document.body.clientHeight is 300
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesinnerwindowsizesquirkshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes-quirks.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes-quirks.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes-quirks.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!--
+  This document is intended to be in quirks mode, and differ from the TEMPLATE.html.
+--&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/helpers.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;* { margin: 0; padding: 0; }&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;box&quot; style=&quot;background:blue;width:100px;height:100px;position:absolute;top:100px;left:100px&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;!-- Filler to allow scrolling --&gt;
+&lt;div style=&quot;width:1500px;height:1500px;&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+description('This tests &quot;scroll&quot; offsets when unscaled, scaled, and panned.');
+
+const scale = 2;
+const panX = 10;
+const panY = 10;
+
+debug('unscaled');
+setExpectedWindowSize(800, 600);
+verifyWindowSizeQuirks();
+
+debug('');
+debug('scaled and panned');
+setInitialScaleAndPanBy(scale, panX, panY);
+setExpectedWindowSize(800/scale, 600/scale);
+verifyWindowSizeQuirks();
+
+var successfullyParsed = true;
+endTest();
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesinnerwindowsizeshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/inner-window-sizes.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/helpers.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;* { margin: 0; padding: 0; }&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;box&quot; style=&quot;background:blue;width:100px;height:100px;position:absolute;top:100px;left:100px&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;!-- Filler to allow scrolling --&gt;
+&lt;div style=&quot;width:1500px;height:1500px;&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/inner-window-sizes.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesmouseeventexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+This tests mouse event coordinates unscaled.
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+mousedown
+PASS eventOrTouch.pageX is 125
+PASS eventOrTouch.pageY is 175
+PASS eventOrTouch.clientX is 125
+PASS eventOrTouch.clientY is 175
+mouseup
+PASS eventOrTouch.pageX is 175
+PASS eventOrTouch.pageY is 125
+PASS eventOrTouch.clientX is 175
+PASS eventOrTouch.clientY is 125
+click
+PASS eventOrTouch.pageX is 175
+PASS eventOrTouch.pageY is 125
+PASS eventOrTouch.clientX is 175
+PASS eventOrTouch.clientY is 125
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesmouseeventzoomedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event-zoomed-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event-zoomed-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event-zoomed-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+This tests mouse event coordinates at scale 2 and scrolled slightly.
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+mousedown
+PASS eventOrTouch.pageX is 135
+PASS eventOrTouch.pageY is 185
+PASS eventOrTouch.clientX is 125
+PASS eventOrTouch.clientY is 175
+mouseup
+PASS eventOrTouch.pageX is 185
+PASS eventOrTouch.pageY is 135
+PASS eventOrTouch.clientX is 175
+PASS eventOrTouch.clientY is 125
+click
+PASS eventOrTouch.pageX is 185
+PASS eventOrTouch.pageY is 135
+PASS eventOrTouch.clientX is 175
+PASS eventOrTouch.clientY is 125
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesmouseeventzoomedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event-zoomed.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event-zoomed.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event-zoomed.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/helpers.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;* { margin: 0; padding: 0; }&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;box&quot; style=&quot;background:blue;width:100px;height:100px;position:absolute;top:100px;left:100px&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;!-- Filler to allow scrolling --&gt;
+&lt;div style=&quot;width:1500px;height:1500px;&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/mouse-event-zoomed.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesmouseeventhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/mouse-event.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/helpers.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;* { margin: 0; padding: 0; }&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;box&quot; style=&quot;background:blue;width:100px;height:100px;position:absolute;top:100px;left:100px&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;!-- Filler to allow scrolling --&gt;
+&lt;div style=&quot;width:1500px;height:1500px;&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/mouse-event.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatespageoffsetsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/page-offsets-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/page-offsets-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/page-offsets-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+This tests &quot;scroll&quot; offsets when unscaled, scaled, and panned.
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+unscaled
+PASS window.scrollX is 0
+PASS window.pageXOffset is 0
+PASS document.body.scrollLeft is 0
+PASS window.scrollY is 0
+PASS window.pageYOffset is 0
+PASS document.body.scrollTop is 0
+
+scaled and panned
+PASS window.scrollX is 10
+PASS window.pageXOffset is 10
+PASS document.body.scrollLeft is 10
+PASS window.scrollY is 10
+PASS window.pageYOffset is 10
+PASS document.body.scrollTop is 10
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatespageoffsetshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/page-offsets.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/page-offsets.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/page-offsets.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/helpers.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;* { margin: 0; padding: 0; }&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;box&quot; style=&quot;background:blue;width:100px;height:100px;position:absolute;top:100px;left:100px&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;!-- Filler to allow scrolling --&gt;
+&lt;div style=&quot;width:1500px;height:1500px;&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/page-offsets.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesrangeclientrectsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/range-client-rects-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/range-client-rects-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/range-client-rects-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+This tests Range.getBoundingClientRects and getClientRects positions when unscaled, scaled, and panned.
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+PASS range.getClientRects().length is 2
+unscaled
+PASS clientRect.left is 0
+PASS clientRect.right is 1500
+PASS clientRect.top is 0
+PASS clientRect.bottom is 1500
+PASS clientRect.width is 1500
+PASS clientRect.height is 1500
+PASS clientRect.left is 0
+PASS clientRect.right is 1500
+PASS clientRect.top is 0
+PASS clientRect.bottom is 1500
+PASS clientRect.width is 1500
+PASS clientRect.height is 1500
+PASS clientRect.left is 100
+PASS clientRect.right is 200
+PASS clientRect.top is 100
+PASS clientRect.bottom is 200
+PASS clientRect.width is 100
+PASS clientRect.height is 100
+
+scaled and panned
+PASS clientRect.left is -10
+PASS clientRect.right is 1490
+PASS clientRect.top is -10
+PASS clientRect.bottom is 1490
+PASS clientRect.width is 1500
+PASS clientRect.height is 1500
+PASS clientRect.left is -10
+PASS clientRect.right is 1490
+PASS clientRect.top is -10
+PASS clientRect.bottom is 1490
+PASS clientRect.width is 1500
+PASS clientRect.height is 1500
+PASS clientRect.left is 90
+PASS clientRect.right is 190
+PASS clientRect.top is 90
+PASS clientRect.bottom is 190
+PASS clientRect.width is 100
+PASS clientRect.height is 100
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesrangeclientrectshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/range-client-rects.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/range-client-rects.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/range-client-rects.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/helpers.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;* { margin: 0; padding: 0; }&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;box&quot; style=&quot;background:blue;width:100px;height:100px;position:absolute;top:100px;left:100px&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;!-- Filler to allow scrolling --&gt;
+&lt;div style=&quot;width:1500px;height:1500px;&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/range-client-rects.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesresourceshelpersjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/resources/helpers.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/resources/helpers.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/resources/helpers.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,110 @@
</span><ins>+// To verify event / touch coordinates.
+
+var expectedPageX, expectedPageY, expectedClientX, expectedClientY;
+function setExpectedValues(pageX, pageY, clientX, clientY) {
+    expectedPageX = pageX;
+    expectedPageY = pageY;
+    expectedClientX = clientX;
+    expectedClientY = clientY;
+}
+
+var eventOrTouch;
+function verifyCoordinates(o) {
+    eventOrTouch = o;
+    shouldBe('eventOrTouch.pageX', expectedPageX.toString());
+    shouldBe('eventOrTouch.pageY', expectedPageY.toString());
+    shouldBe('eventOrTouch.clientX', expectedClientX.toString());
+    shouldBe('eventOrTouch.clientY', expectedClientY.toString());
+}
+
+// To verify client rect positions.
+
+var expectedLeft, expectedRight, expectedTop, expectedBottom, expectedWidth, expectedHeight;
+function setExpectedClientRectValues(left, right, top, bottom, width, height) {
+    expectedLeft = left;
+    expectedRight = right;
+    expectedTop = top;
+    expectedBottom = bottom;
+    expectedWidth = width;
+    expectedHeight = width;
+}
+
+var clientRect;
+function verifyClientRect(o) {
+    clientRect = o;
+    shouldBe('clientRect.left', expectedLeft.toString());
+    shouldBe('clientRect.right', expectedRight.toString());
+    shouldBe('clientRect.top', expectedTop.toString());
+    shouldBe('clientRect.bottom', expectedBottom.toString());
+    shouldBe('clientRect.width', expectedWidth.toString());
+    shouldBe('clientRect.height', expectedHeight.toString());
+}
+
+// To verify page scroll offsets.
+
+var expectedScrollX, expectedScrollY;
+function setExpectedScrollOffsets(x, y) {
+    expectedScrollX = x;
+    expectedScrollY = y;
+}
+
+function verifyScrollOffsets() {
+    shouldBe('window.scrollX', expectedScrollX.toString());
+    shouldBe('window.pageXOffset', expectedScrollX.toString());
+    shouldBe('document.body.scrollLeft', expectedScrollX.toString());
+    shouldBe('window.scrollY', expectedScrollY.toString());
+    shouldBe('window.pageYOffset', expectedScrollY.toString());
+    shouldBe('document.body.scrollTop', expectedScrollY.toString());
+}
+
+// To verify visible window sizes.
+
+var expectedWindowWidth, expectedWindowHeight
+function setExpectedWindowSize(width, height) {
+    expectedWindowWidth = width;
+    expectedWindowHeight = height;
+}
+
+// From Element.cpp:
+//   - When in strict mode, clientWidth/Height for the document element should return the width/height of the containing frame.
+//   - When in quirks mode, clientWidth/Height for the body element should return the width/height of the containing frame.
+
+function verifyWindowSize() {
+    shouldBe('window.innerWidth', expectedWindowWidth.toString());
+    shouldBe('window.innerHeight', expectedWindowHeight.toString());
+    shouldBe('document.documentElement.clientWidth', expectedWindowWidth.toString());
+    shouldBe('document.documentElement.clientHeight', expectedWindowHeight.toString());
+}
+
+function verifyWindowSizeQuirks() {
+    shouldBe('window.innerWidth', expectedWindowWidth.toString());
+    shouldBe('window.innerHeight', expectedWindowHeight.toString());
+    shouldBe('document.body.clientWidth', expectedWindowWidth.toString());
+    shouldBe('document.body.clientHeight', expectedWindowHeight.toString());
+}
+
+// Asynchronous tests. (Viewport scaling, Touch events, etc).
+
+if (window.testRunner)
+    testRunner.waitUntilDone();
+
+function endTest() {
+    if (window.testRunner) {
+        successfullyParsed = true;
+        isSuccessfullyParsed();
+        testRunner.notifyDone();
+    }
+}
+
+// Zoom and pan the page.
+
+function setInitialScaleAndPanBy(zoomScale, panX, panY) {
+    // Scale with: &lt;meta name=&quot;viewport&quot; content=&quot;initial-scale=2&quot;&gt;.
+    var meta = document.createElement('meta');
+    meta.setAttribute('name', 'viewport');
+    meta.setAttribute('content', 'initial-scale=' + zoomScale);
+    document.head.appendChild(meta);
+
+    // Scrolling is Panning with a &quot;porthole&quot;.
+    window.scrollBy(panX, panY);
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestsTEMPLATEhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/TEMPLATE.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/TEMPLATE.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/TEMPLATE.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/helpers.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;* { margin: 0; padding: 0; }&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;box&quot; style=&quot;background:blue;width:100px;height:100px;position:absolute;top:100px;left:100px&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;!-- Filler to allow scrolling --&gt;
+&lt;div style=&quot;width:1500px;height:1500px;&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;YOUR_JS_FILE_HERE&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestselementclientrectsjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/element-client-rects.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/element-client-rects.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/element-client-rects.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+description(&quot;This tests Element.getBoundingClientRects and getClientRects positions when unscaled, scaled, and panned.&quot;);
+
+const scale = 2;
+const panX = 10;
+const panY = 10;
+
+var box = document.getElementById('box');
+
+debug('unscaled');
+setExpectedClientRectValues(100, 200, 100, 200, 100, 100);
+verifyClientRect(box.getBoundingClientRect());
+verifyClientRect(box.getClientRects()[0]);
+
+debug('');
+debug('scaled and panned');
+setInitialScaleAndPanBy(scale, panX, panY);
+setExpectedClientRectValues(100-panX, 200-panX, 100-panY, 200-panY, 100, 100);
+verifyClientRect(box.getBoundingClientRect());
+verifyClientRect(box.getClientRects()[0]);
+
+var successfullyParsed = true;
+endTest();
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestsinnerwindowsizesjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/inner-window-sizes.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/inner-window-sizes.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/inner-window-sizes.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+description('This tests &quot;scroll&quot; offsets when unscaled, scaled, and panned.');
+
+const scale = 2;
+const panX = 10;
+const panY = 10;
+
+debug('unscaled');
+setExpectedWindowSize(800, 600);
+verifyWindowSize();
+
+debug('');
+debug('scaled and panned');
+setInitialScaleAndPanBy(scale, panX, panY);
+setExpectedWindowSize(800/scale, 600/scale);
+verifyWindowSize();
+
+var successfullyParsed = true;
+endTest();
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestsmouseeventzoomedjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/mouse-event-zoomed.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/mouse-event-zoomed.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/mouse-event-zoomed.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+description(&quot;This tests mouse event coordinates at scale 2 and scrolled slightly.&quot;);
+
+var box = document.getElementById('box');
+box.onmousedown = function(event) { debug('mousedown'); verifyCoordinates(event); }
+box.onmouseup = function(event) { debug('mouseup'); verifyCoordinates(event); }
+box.onclick = function(event) { debug('click'); verifyCoordinates(event); endTest(); }
+
+const scale = 2;
+const panX = 10;
+const panY = 10;
+
+function sendMouseSequence() {
+    if (!window.eventSender) {
+         debug(&quot;This test requires DumpRenderTree to send mouse events.&quot;);
+         return;
+    }
+
+    setExpectedValues(125+panX, 175+panY, 125, 175);
+    eventSender.mouseMoveTo(125*scale, 175*scale);
+    eventSender.mouseDown();
+    setExpectedValues(175+panX, 125+panY, 175, 125);
+    eventSender.mouseMoveTo(175*scale, 125*scale);
+    eventSender.mouseUp();
+}
+
+setInitialScaleAndPanBy(scale, panX, panY);
+sendMouseSequence();
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestsmouseeventjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/mouse-event.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/mouse-event.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/mouse-event.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+description(&quot;This tests mouse event coordinates unscaled.&quot;);
+
+var box = document.getElementById('box');
+box.onmousedown = function(event) { debug('mousedown'); verifyCoordinates(event); }
+box.onmouseup = function(event) { debug('mouseup'); verifyCoordinates(event); }
+box.onclick = function(event) { debug('click'); verifyCoordinates(event); endTest(); }
+
+function sendMouseSequence() {
+    if (!window.eventSender) {
+         debug(&quot;This test requires DumpRenderTree to send mouse events.&quot;);
+         return;
+    }
+
+    setExpectedValues(125, 175, 125, 175);
+    eventSender.mouseMoveTo(125, 175);
+    eventSender.mouseDown();
+    setExpectedValues(175, 125, 175, 125);
+    eventSender.mouseMoveTo(175, 125);
+    eventSender.mouseUp();
+}
+
+sendMouseSequence();
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestspageoffsetsjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/page-offsets.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/page-offsets.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/page-offsets.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+description('This tests &quot;scroll&quot; offsets when unscaled, scaled, and panned.');
+
+const scale = 2;
+const panX = 10;
+const panY = 10;
+
+debug('unscaled');
+setExpectedScrollOffsets(0, 0);
+verifyScrollOffsets();
+
+debug('');
+debug('scaled and panned');
+setInitialScaleAndPanBy(scale, panX, panY);
+setExpectedScrollOffsets(panX, panY);
+verifyScrollOffsets();
+
+var successfullyParsed = true;
+endTest();
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscripttestsrangeclientrectsjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/range-client-rects.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/range-client-rects.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/range-client-rects.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+description(&quot;This tests Range.getBoundingClientRects and getClientRects positions when unscaled, scaled, and panned.&quot;);
+
+const scale = 2;
+const panX = 10;
+const panY = 10;
+
+var box = document.getElementById('box');
+function setDisplayOnDescriptionAndConsole(display) {
+    document.getElementById('description').style.display = display;
+    document.getElementById('console').style.display = display;
+}
+
+setDisplayOnDescriptionAndConsole('none');
+
+// Selection includes the 100x100 &quot;box&quot; and 1500x1500 &quot;filler&quot; divs.
+// The entire Range's bounds are the filler's, since the &quot;box&quot; is
+// positioned absolutely inside it. The first client rect of the
+// Range is the box.
+document.execCommand(&quot;SelectAll&quot;);
+var range = window.getSelection().getRangeAt(0);
+shouldBe('range.getClientRects().length', '2');
+
+debug('unscaled');
+setExpectedClientRectValues(0, 1500, 0, 1500, 1500, 1500);
+verifyClientRect(range.getBoundingClientRect());
+verifyClientRect(range.getClientRects()[1]);
+setExpectedClientRectValues(100, 200, 100, 200, 100, 100);
+verifyClientRect(range.getClientRects()[0]);
+
+debug('');
+debug('scaled and panned');
+setInitialScaleAndPanBy(scale, panX, panY);
+setExpectedClientRectValues(0-panX, 1500-panX, 0-panY, 1500-panY, 1500, 1500);
+verifyClientRect(range.getBoundingClientRect());
+verifyClientRect(range.getClientRects()[1]);
+setExpectedClientRectValues(100-panX, 200-panX, 100-panY, 200-panY, 100, 100);
+verifyClientRect(range.getClientRects()[0]);
+
+setDisplayOnDescriptionAndConsole('block');
+
+var successfullyParsed = true;
+endTest();
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscriptteststoucheventzoomedjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/touch-event-zoomed.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/touch-event-zoomed.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/touch-event-zoomed.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+description(&quot;This tests touch event coordinates at scale 2 and scrolled slightly.&quot;);
+
+var box = document.getElementById('box');
+box.ontouchstart = function(event) { debug('touchstart'); verifyCoordinates(event.touches[0]); }
+box.ontouchmove = function(event) { debug('touchmove'); verifyCoordinates(event.touches[0]); }
+box.ontouchend = function(event) { debug('touchend - no touch to check'); endTest(); }
+
+const scale = 2;
+const panX = 10;
+const panY = 10;
+const FIRST_FINGER = 0;
+
+function sendTouchSequence() {
+    if (!window.eventSender) {
+        debug(&quot;This test requires DumpRenderTree to send touch events.&quot;);
+        return;
+    }
+
+    setExpectedValues(125+panX, 175+panY, 125, 175);
+    eventSender.addTouchPoint(125*scale, 175*scale);
+    eventSender.touchStart();
+
+    setExpectedValues(175+panX, 125+panY, 175, 125);
+    eventSender.updateTouchPoint(FIRST_FINGER, 175*scale, 125*scale);
+    eventSender.touchMove();
+
+    eventSender.releaseTouchPoint(FIRST_FINGER);
+    eventSender.touchEnd(); // The test will end with this release.
+}
+
+setInitialScaleAndPanBy(scale, panX, panY);
+sendTouchSequence();
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatesscriptteststoucheventjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/touch-event.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/touch-event.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/script-tests/touch-event.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+description(&quot;This tests touch event coordinates unscaled.&quot;);
+
+var box = document.getElementById('box');
+box.ontouchstart = function(event) { debug('touchstart'); verifyCoordinates(event.touches[0]); }
+box.ontouchmove = function(event) { debug('touchmove'); verifyCoordinates(event.touches[0]); }
+box.ontouchend = function(event) { debug('touchend - no touch to check'); endTest(); }
+
+const FIRST_FINGER = 0;
+function sendTouchSequence() {
+    if (!window.eventSender) {
+        debug(&quot;This test requires DumpRenderTree to send touch events.&quot;);
+        return;
+    }
+
+    setExpectedValues(125, 175, 125, 175);
+    eventSender.addTouchPoint(125, 175);
+    eventSender.touchStart();
+
+    setExpectedValues(175, 125, 175, 125);
+    eventSender.updateTouchPoint(FIRST_FINGER, 175, 125);
+    eventSender.touchMove();
+
+    eventSender.releaseTouchPoint(FIRST_FINGER);
+    eventSender.touchEnd(); // The test will end with this release.
+}
+
+sendTouchSequence();
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatestoucheventexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+This tests touch event coordinates unscaled.
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+touchstart
+PASS eventOrTouch.pageX is 125
+PASS eventOrTouch.pageY is 175
+PASS eventOrTouch.clientX is 125
+PASS eventOrTouch.clientY is 175
+touchmove
+PASS eventOrTouch.pageX is 175
+PASS eventOrTouch.pageY is 125
+PASS eventOrTouch.clientX is 175
+PASS eventOrTouch.clientY is 125
+touchend - no touch to check
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatestoucheventzoomedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event-zoomed-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event-zoomed-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event-zoomed-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+This tests touch event coordinates at scale 2 and scrolled slightly.
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+touchstart
+PASS eventOrTouch.pageX is 135
+PASS eventOrTouch.pageY is 185
+PASS eventOrTouch.clientX is 125
+PASS eventOrTouch.clientY is 175
+touchmove
+PASS eventOrTouch.pageX is 185
+PASS eventOrTouch.pageY is 135
+PASS eventOrTouch.clientX is 175
+PASS eventOrTouch.clientY is 125
+touchend - no touch to check
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatestoucheventzoomedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event-zoomed.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event-zoomed.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event-zoomed.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/helpers.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;* { margin: 0; padding: 0; }&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;box&quot; style=&quot;background:blue;width:100px;height:100px;position:absolute;top:100px;left:100px&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;!-- Filler to allow scrolling --&gt;
+&lt;div style=&quot;width:1500px;height:1500px;&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/touch-event-zoomed.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcoordinatestoucheventhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/coordinates/touch-event.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/helpers.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;* { margin: 0; padding: 0; }&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;box&quot; style=&quot;background:blue;width:100px;height:100px;position:absolute;top:100px;left:100px&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;!-- Filler to allow scrolling --&gt;
+&lt;div style=&quot;width:1500px;height:1500px;&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/touch-event.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcssscripttestsTEMPLATEhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/css/script-tests/TEMPLATE.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/css/script-tests/TEMPLATE.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/css/script-tests/TEMPLATE.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;YOUR_JS_FILE_HERE&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcssscripttestswebkitoverflowscrollingparsingjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/css/script-tests/webkit-overflow-scrolling-parsing.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/css/script-tests/webkit-overflow-scrolling-parsing.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/css/script-tests/webkit-overflow-scrolling-parsing.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+description(&quot;This tests checks parsing of the '-webkit-overflow-scrolling' property.&quot;);
+
+function test(declaration, property)
+{
+    var div = document.createElement(&quot;div&quot;);
+    div.setAttribute(&quot;style&quot;, declaration);
+    document.body.appendChild(div);
+    
+    var result = div.style.getPropertyValue(property);
+    document.body.removeChild(div);
+    return result;
+}
+
+shouldBe('test(&quot;-webkit-overflow-scrolling: auto&quot;, &quot;-webkit-overflow-scrolling&quot;)', '&quot;auto&quot;');
+shouldBe('test(&quot;-webkit-overflow-scrolling: banana&quot;, &quot;-webkit-overflow-scrolling&quot;)', 'null');
+shouldBe('test(&quot;-webkit-overflow-scrolling: touch&quot;, &quot;-webkit-overflow-scrolling&quot;)', '&quot;touch&quot;');
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcsswebkitoverflowscrollingparsingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/css/webkit-overflow-scrolling-parsing-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/css/webkit-overflow-scrolling-parsing-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/css/webkit-overflow-scrolling-parsing-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+This tests checks parsing of the '-webkit-overflow-scrolling' property.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS test(&quot;-webkit-overflow-scrolling: auto&quot;, &quot;-webkit-overflow-scrolling&quot;) is &quot;auto&quot;
+PASS test(&quot;-webkit-overflow-scrolling: banana&quot;, &quot;-webkit-overflow-scrolling&quot;) is null
+PASS test(&quot;-webkit-overflow-scrolling: touch&quot;, &quot;-webkit-overflow-scrolling&quot;) is &quot;touch&quot;
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastcsswebkitoverflowscrollingparsinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/css/webkit-overflow-scrolling-parsing.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/css/webkit-overflow-scrolling-parsing.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/css/webkit-overflow-scrolling-parsing.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/webkit-overflow-scrolling-parsing.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchdocumentcreatetouchlistiosexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/document-create-touch-list-ios-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/document-create-touch-list-ios-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/document-create-touch-list-ios-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+This tests support for the document.createTouchList and window.TouchEvent APIs.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS 'TouchEvent' in window is true
+PASS window.propertyIsEnumerable('TouchEvent') is false
+PASS new TouchEvent() threw exception TypeError: TouchEventConstructor is not a constructor (evaluating 'new TouchEvent()').
+PASS &quot;createTouchList&quot; in document is true
+PASS touchList is non-null.
+PASS touchList.length is 0
+PASS touchList.item(0) is null
+PASS touchList.item(1) is null
+FAIL An exception was thrown: Type error
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchdocumentcreatetouchlistioshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/document-create-touch-list-ios.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/document-create-touch-list-ios.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/document-create-touch-list-ios.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/document-create-touch-list-ios.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchgestureeventbasicexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/gesture-event-basic-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/gesture-event-basic-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/gesture-event-basic-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+This tests initializing GestureEvents
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+FAIL !('GestureEvent' in window) should be true. Was false.
+
+EVENT: gesturestart
+PASS event.type is type
+PASS event.bubbles is canBubble
+PASS event.cancelable is cancelable
+PASS event.view is view
+PASS event.detail is detail
+PASS event.ctrlKey is ctrlKey
+PASS event.altKey is altKey
+PASS event.shiftKey is shiftKey
+PASS event.metaKey is metaKey
+PASS event.target is target
+PASS event.scale is scale
+PASS event.rotation is rotation
+PASS event.screenX is undefined
+PASS event.screenY is undefined
+PASS event.clientX is undefined
+PASS event.clientY is undefined
+
+EVENT: gesturechange
+PASS event.type is type
+PASS event.bubbles is canBubble
+PASS event.cancelable is cancelable
+PASS event.view is view
+PASS event.detail is detail
+PASS event.ctrlKey is ctrlKey
+PASS event.altKey is altKey
+PASS event.shiftKey is shiftKey
+PASS event.metaKey is metaKey
+PASS event.target is target
+PASS event.scale is scale
+PASS event.rotation is rotation
+PASS event.screenX is undefined
+PASS event.screenY is undefined
+PASS event.clientX is undefined
+PASS event.clientY is undefined
+
+EVENT: gestureend
+PASS event.type is type
+PASS event.bubbles is canBubble
+PASS event.cancelable is cancelable
+PASS event.view is view
+PASS event.detail is detail
+PASS event.ctrlKey is ctrlKey
+PASS event.altKey is altKey
+PASS event.shiftKey is shiftKey
+PASS event.metaKey is metaKey
+PASS event.target is target
+PASS event.scale is scale
+PASS event.rotation is rotation
+PASS event.screenX is undefined
+PASS event.screenY is undefined
+PASS event.clientX is undefined
+PASS event.clientY is undefined
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchgestureeventbasichtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/gesture-event-basic.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/gesture-event-basic.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/gesture-event-basic.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,88 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script&gt;
+
+description(&quot;This tests initializing GestureEvents&quot;);
+
+// To use GestureEvents use createEvent and initGestureEvent.
+// NOTE: iOS Does not expose GestureEvent.
+shouldBeTrue(&quot;!('GestureEvent' in window)&quot;);
+
+// Global properties for events.
+var type; // Assigned before checking.
+var canBubble = false;
+var cancelable = true;
+var view = window;
+var detail = 1;
+var screenX = 2;
+var screenY = 3;
+var clientX = 4;
+var clientY = 5;
+var ctrlKey = false;
+var altKey = true;
+var shiftKey = false;
+var metaKey = true;
+var target = document.body;
+var scale = 1.5;
+var rotation = 10.5;
+
+function createGestureEvent(type) {
+    var event = document.createEvent(&quot;GestureEvent&quot;);
+    event.initGestureEvent(type,
+        canBubble, cancelable, view, detail,
+        screenX, screenY, clientX, clientY,
+        ctrlKey, altKey, shiftKey, metaKey,
+        target, scale, rotation);
+    return event;
+}
+
+function validateGestureEvent(t, event) {
+    debug(&quot;&quot;);
+    debug(&quot;EVENT: &quot; + t);
+    type = t;
+
+    // Check exposed properties against values that were set.
+    shouldBe(&quot;event.type&quot;, &quot;type&quot;);
+    shouldBe(&quot;event.bubbles&quot;, &quot;canBubble&quot;);
+    shouldBe(&quot;event.cancelable&quot;, &quot;cancelable&quot;);
+    shouldBe(&quot;event.view&quot;, &quot;view&quot;);
+    shouldBe(&quot;event.detail&quot;, &quot;detail&quot;);
+    shouldBe(&quot;event.ctrlKey&quot;, &quot;ctrlKey&quot;);
+    shouldBe(&quot;event.altKey&quot;, &quot;altKey&quot;);
+    shouldBe(&quot;event.shiftKey&quot;, &quot;shiftKey&quot;);
+    shouldBe(&quot;event.metaKey&quot;, &quot;metaKey&quot;);
+    shouldBe(&quot;event.target&quot;, &quot;target&quot;);
+    shouldBe(&quot;event.scale&quot;, &quot;scale&quot;);
+    shouldBe(&quot;event.rotation&quot;, &quot;rotation&quot;);
+
+    // Properties that aren't exposed but were in init.
+    shouldBe(&quot;event.screenX&quot;, &quot;undefined&quot;);
+    shouldBe(&quot;event.screenY&quot;, &quot;undefined&quot;);
+    shouldBe(&quot;event.clientX&quot;, &quot;undefined&quot;);
+    shouldBe(&quot;event.clientY&quot;, &quot;undefined&quot;);
+}
+
+target.addEventListener(&quot;gesturestart&quot;, function(event) { validateGestureEvent(&quot;gesturestart&quot;, event); }, false);
+target.addEventListener(&quot;gesturechange&quot;, function(event) { validateGestureEvent(&quot;gesturechange&quot;, event); }, false);
+target.addEventListener(&quot;gestureend&quot;, function(event) { validateGestureEvent(&quot;gestureend&quot;, event); }, false);
+
+try {
+    var e;
+    e = createGestureEvent(&quot;gesturestart&quot;);
+    target.dispatchEvent(e);
+    e = createGestureEvent(&quot;gesturechange&quot;);
+    target.dispatchEvent(e);    
+    e = createGestureEvent(&quot;gestureend&quot;);
+    target.dispatchEvent(e);
+} catch (e) {
+    testFailed(&quot;An exception was thrown: &quot; + e.message);
+}
+
+&lt;/script&gt;    
+&lt;script src=&quot;../../../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchinputtouchtargethtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/input-touch-target.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/input-touch-target.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/input-touch-target.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/input-touch-target.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchinsertedfragmenttouchtargetexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/inserted-fragment-touch-target-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/inserted-fragment-touch-target-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/inserted-fragment-touch-target-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+This is the touch target.
+Should see a single touch at 20,20
+[TouchEvent X: 20 Y: 20]
+PASSED
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchinsertedfragmenttouchtargethtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/inserted-fragment-touch-target.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/inserted-fragment-touch-target.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/inserted-fragment-touch-target.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,77 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;title&gt;Inserted Fragment Touch Target&lt;/title&gt;
+  &lt;style&gt;
+  body {
+      margin: 0;
+      padding: 0;
+  }
+
+  .container {
+      position: absolute;
+      top: 10px;
+      left: 10px;
+      width: 50px;
+      height: 50px;
+      border: 1px solid green;
+  }
+
+  .target {
+      width: 40px;
+      height: 40px;
+      background-color: red;
+  }
+
+  #results {
+    position: absolute;
+    top: 100px;
+  }
+  &lt;/style&gt;
+  &lt;script src=&quot;misc-touch-helpers.js&quot;&gt;&lt;/script&gt;
+  &lt;script&gt;
+
+    // While this isn't a particularly nice approach to the solution,
+    // it is a direct copy from the original bug report.
+    function createElementsFromString(input) {
+        var div = document.createElement(&quot;div&quot;);
+        div.innerHTML = input;
+        var children = div.children;
+        var fragment = document.createDocumentFragment();
+        for (var i = 0, length = children.length; i &lt; length; i++) {
+            fragment.appendChild(children[0])
+        }
+        return fragment.firstChild;
+    }
+
+    function targetTouched(event) {
+        logTouch(event);
+        debug(&quot;PASSED&quot;);
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }
+
+    function init() {
+        var target = createElementsFromString(&quot;&lt;div class='target'&gt;This is the &lt;strong&gt;touch target&lt;/strong&gt;.&lt;/div&gt;&quot;);
+        target.addEventListener(&quot;touchstart&quot;, targetTouched, false);
+        var container = document.querySelector(&quot;.container&quot;);
+        container.appendChild(target);
+        debug(&quot;Should see a single touch at 20,20&quot;);
+        tapSoon(20, 20);
+    }
+
+    if (window.testRunner) {
+        testRunner.dumpAsText();
+        testRunner.waitUntilDone();
+    }
+
+    window.addEventListener(&quot;load&quot;, init, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;div class=&quot;container&quot;&gt;
+  &lt;/div&gt;
+  &lt;div id=&quot;results&quot;&gt;
+  &lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchmisctouchhelpersjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/misc-touch-helpers.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/misc-touch-helpers.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/misc-touch-helpers.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+function tap(x, y) {
+    if (!window.eventSender)
+        return;
+
+    eventSender.addTouchPoint(x, y);
+    eventSender.touchStart();
+    eventSender.releaseTouchPoint(0);
+    eventSender.touchEnd();
+}
+
+function tapSoon(x, y) {
+    setTimeout(function () {
+        tap(x, y);
+    }, 10);
+}
+
+function logTouch(event) {
+    debug(&quot;[TouchEvent X: &quot; + event.touches[0].pageX + &quot; Y: &quot; + event.touches[0].pageY + &quot;]&quot;);
+}
+
+function debug(msg) {
+    var results = document.getElementById(&quot;results&quot;);
+    results.innerHTML += msg + &quot;&lt;br&gt;&quot;;
+}
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchmovedtouchtargetexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/moved-touch-target-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/moved-touch-target-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/moved-touch-target-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+Should see two touches. The first should be at 20,20
+[TouchEvent X: 20 Y: 20]
+Now move the element from one parent to another. Second touch should be at 110,20
+[TouchEvent X: 110 Y: 20]
+PASSED
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchmovedtouchtargethtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/moved-touch-target.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/moved-touch-target.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/moved-touch-target.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,86 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;title&gt;Moved Touch Target&lt;/title&gt;
+  &lt;style&gt;
+  body {
+      margin: 0;
+      padding: 0;
+  }
+
+  .container1 {
+      position: absolute;
+      top: 10px;
+      left: 10px;
+      width: 50px;
+      height: 50px;
+      border: 1px solid green;
+  }
+
+  .container2 {
+      position: absolute;
+      top: 10px;
+      left: 100px;
+      width: 50px;
+      height: 50px;
+      border: 1px solid blue;
+  }
+
+  .target {
+      width: 40px;
+      height: 40px;
+      background-color: red;
+  }
+
+  #results {
+    position: absolute;
+    top: 100px;
+  }
+  &lt;/style&gt;
+  &lt;script src=&quot;misc-touch-helpers.js&quot;&gt;&lt;/script&gt;
+  &lt;script&gt;
+
+    var expectedTouches = 2;
+
+    function targetTouched(event) {
+        logTouch(event);
+        expectedTouches--;
+        if (expectedTouches) {
+            debug(&quot;Now move the element from one parent to another. Second touch should be at 110,20&quot;);
+            var target = document.querySelector(&quot;.target&quot;);
+            var container2 = document.querySelector(&quot;.container2&quot;);
+            container2.appendChild(target);
+            tapSoon(110, 20);
+        } else {
+            debug(&quot;PASSED&quot;);
+            if (window.testRunner)
+                testRunner.notifyDone();
+        }
+    }
+
+    function init() {
+        var target = document.querySelector(&quot;.target&quot;);
+        target.addEventListener(&quot;touchstart&quot;, targetTouched, false);
+        debug(&quot;Should see two touches. The first should be at 20,20&quot;);
+        tapSoon(20, 20);
+    }
+
+    if (window.testRunner) {
+        testRunner.dumpAsText();
+        testRunner.waitUntilDone();
+    }
+
+    window.addEventListener(&quot;load&quot;, init, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;div class=&quot;container1&quot;&gt;
+    &lt;div class=&quot;target&quot;&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+  &lt;div class=&quot;container2&quot;&gt;
+  &lt;/div&gt;
+  &lt;div id=&quot;results&quot;&gt;
+  &lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchmultitouchsomewithouthandlershtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/multi-touch-some-without-handlers.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/multi-touch-some-without-handlers.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/multi-touch-some-without-handlers.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/multi-touch-some-without-handlers.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchontouchstartactiveselectorhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/ontouchstart-active-selector.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/ontouchstart-active-selector.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/ontouchstart-active-selector.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;
+    #touchMe {
+        background-color: blue;
+        width: 200px;
+        height: 200px;
+        top: 0;
+        left: 0;
+    }
+    #touchMe:active {
+        background-color: red;
+    }
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;touchMe&quot; ontouchstart=&quot;&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+
+description(&quot;This tests the :active selector on touchable elements&quot;);
+
+if (!window.eventSender)
+    debug(&quot;This test will FAIL outside of DRT, but you can test it manually by touching the blue square below. If it turns red when touched, the test is a PASS.&quot;);
+
+touchMe = document.getElementById(&quot;touchMe&quot;);
+
+shouldBe(&quot;getComputedStyle(touchMe).backgroundColor&quot;, &quot;'rgb(0, 0, 255)'&quot;);
+
+if (window.eventSender) {
+    eventSender.clearTouchPoints();
+    eventSender.addTouchPoint(touchMe.offsetLeft + 10, touchMe.offsetTop + 10);
+    eventSender.touchStart();
+}
+
+shouldBe(&quot;getComputedStyle(touchMe).backgroundColor&quot;, &quot;'rgb(255, 0, 0)'&quot;);
+
+if (window.eventSender) {
+    eventSender.clearTouchPoints();
+    eventSender.touchEnd();
+}
+
+shouldBe(&quot;getComputedStyle(touchMe).backgroundColor&quot;, &quot;'rgb(0, 0, 255)'&quot;);
+
+&lt;/script&gt;    
+&lt;script src=&quot;../../../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchremovedfragmenttouchtargetexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-fragment-touch-target-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-fragment-touch-target-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-fragment-touch-target-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+Should see a single touch at 20,20
+[TouchEvent X: 20 Y: 20]
+Now remove the element from its parent and attempt to touch it again. This touch should not register.
+PASSED. We did not see a second touch.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchremovedfragmenttouchtargethtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-fragment-touch-target.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-fragment-touch-target.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-fragment-touch-target.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,93 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;title&gt;Removed Document Fragment Touch Target&lt;/title&gt;
+  &lt;style&gt;
+  body {
+      margin: 0;
+      padding: 0;
+  }
+
+  .container {
+      position: absolute;
+      top: 10px;
+      left: 10px;
+      width: 50px;
+      height: 50px;
+      border: 1px solid green;
+  }
+
+  .target {
+      width: 40px;
+      height: 40px;
+      background-color: red;
+  }
+
+  #results {
+    position: absolute;
+    top: 100px;
+  }
+  &lt;/style&gt;
+  &lt;script src=&quot;misc-touch-helpers.js&quot;&gt;&lt;/script&gt;
+  &lt;script&gt;
+
+    var seenTouch = false;
+
+    // While this isn't a particularly nice approach to the solution,
+    // it is a direct copy from the original bug report.
+    function createElementsFromString(input) {
+        var div = document.createElement(&quot;div&quot;);
+        div.innerHTML = input;
+        var children = div.children;
+        var fragment = document.createDocumentFragment();
+        for (var i = 0, length = children.length; i &lt; length; i++) {
+            fragment.appendChild(children[0])
+        }
+        return fragment.firstChild;
+    }
+
+    function targetTouched(event) {
+        logTouch(event);
+        if (!seenTouch) {
+            seenTouch = true;
+            debug(&quot;Now remove the element from its parent and attempt to touch it again. This touch should not register.&quot;);
+            var target = document.querySelector(&quot;.target&quot;);
+            target.parentNode.removeChild(target);
+            tapSoon(20, 20);
+            // Wait 50ms to see if the touch was registered. If it was, then we'll be exiting below.
+            setTimeout(function () {
+                debug(&quot;PASSED. We did not see a second touch.&quot;);
+                if (window.testRunner)
+                    testRunner.notifyDone();
+            }, 50);
+        } else {
+            debug(&quot;FAILED. We saw a second touch.&quot;);
+            if (window.testRunner)
+                testRunner.notifyDone();
+        }
+    }
+
+    function init() {
+        var target = createElementsFromString(&quot;&lt;div class='target'&gt;This is the &lt;strong&gt;touch target&lt;/strong&gt;.&lt;/div&gt;&quot;);
+        target.addEventListener(&quot;touchstart&quot;, targetTouched, false);
+        var container = document.querySelector(&quot;.container&quot;);
+        container.appendChild(target);
+        debug(&quot;Should see a single touch at 20,20&quot;);
+        tapSoon(20, 20);
+    }
+
+    if (window.testRunner) {
+        testRunner.dumpAsText();
+        testRunner.waitUntilDone();
+    }
+
+    window.addEventListener(&quot;load&quot;, init, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;div class=&quot;container&quot;&gt;
+  &lt;/div&gt;
+  &lt;div id=&quot;results&quot;&gt;
+  &lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchremovedtouchtargetexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-touch-target-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-touch-target-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-touch-target-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+Should see only one touch at 20,20
+[TouchEvent X: 20 Y: 20]
+Now remove the element from its parent and attempt to touch it again. This touch should not register.
+PASSED. We did not see a second touch.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchremovedtouchtargethtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-touch-target.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-touch-target.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/removed-touch-target.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,80 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;title&gt;Remove a Touch Target&lt;/title&gt;
+  &lt;style&gt;
+  body {
+      margin: 0;
+      padding: 0;
+  }
+
+  .container {
+      position: absolute;
+      top: 10px;
+      left: 10px;
+      width: 50px;
+      height: 50px;
+      border: 1px solid green;
+  }
+
+  .target {
+      width: 40px;
+      height: 40px;
+      background-color: red;
+  }
+
+  #results {
+    position: absolute;
+    top: 100px;
+  }
+  &lt;/style&gt;
+  &lt;script src=&quot;misc-touch-helpers.js&quot;&gt;&lt;/script&gt;
+  &lt;script&gt;
+
+    var seenTouch = false;
+
+    function targetTouched(event) {
+        logTouch(event);
+        if (!seenTouch) {
+            seenTouch = true;
+            debug(&quot;Now remove the element from its parent and attempt to touch it again. This touch should not register.&quot;);
+            var target = document.querySelector(&quot;.target&quot;);
+            target.parentNode.removeChild(target);
+            tapSoon(20, 20);
+            // Wait 50ms to see if the touch was registered. If it was, then we'll be exiting below.
+            setTimeout(function () {
+                debug(&quot;PASSED. We did not see a second touch.&quot;);
+                if (window.testRunner)
+                    testRunner.notifyDone();
+            }, 50);
+        } else {
+            debug(&quot;FAILED. We saw a second touch.&quot;);
+            if (window.testRunner)
+                testRunner.notifyDone();
+        }
+    }
+
+    function init() {
+        var target = document.querySelector(&quot;.target&quot;);
+        target.addEventListener(&quot;touchstart&quot;, targetTouched, false);
+        debug(&quot;Should see only one touch at 20,20&quot;);
+        tapSoon(20, 20);
+    }
+
+    if (window.testRunner) {
+        testRunner.dumpAsText();
+        testRunner.waitUntilDone();
+    }
+
+    window.addEventListener(&quot;load&quot;, init, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;div class=&quot;container&quot;&gt;
+    &lt;div class=&quot;target&quot;&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+  &lt;div id=&quot;results&quot;&gt;
+  &lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchscripttestsTEMPLATEhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/TEMPLATE.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/TEMPLATE.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/TEMPLATE.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;YOUR_JS_FILE_HERE&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchscripttestsdocumentcreatetouchlistiosjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/document-create-touch-list-ios.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/document-create-touch-list-ios.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/document-create-touch-list-ios.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+description(&quot;This tests support for the document.createTouchList and window.TouchEvent APIs.&quot;);
+
+// To use TouchEvents use createEvent and initTouchEvent.
+shouldBeTrue(&quot;'TouchEvent' in window&quot;);
+shouldBeFalse(&quot;window.propertyIsEnumerable('TouchEvent')&quot;);
+shouldThrow('new TouchEvent()');
+
+shouldBeTrue('&quot;createTouchList&quot; in document');
+
+// Test createTouchList with no arguments.
+var touchList = document.createTouchList();
+shouldBeNonNull(&quot;touchList&quot;);
+shouldBe(&quot;touchList.length&quot;, &quot;0&quot;);
+shouldBeNull(&quot;touchList.item(0)&quot;);
+shouldBeNull(&quot;touchList.item(1)&quot;);
+
+// Test createTouchList with Touch objects as arguments.
+try {
+    var t = document.createTouch(window, document.body, 12341, 60, 65, 100, 105);
+    var t2 = document.createTouch(window, document.body, 12342, 50, 55, 115, 120);
+    var tl = document.createTouchList(t, t2);
+
+    var evt = document.createEvent(&quot;TouchEvent&quot;);
+    evt.initTouchEvent(tl, tl, tl, &quot;touchstart&quot;, window, 0, 0, 0, 0, true, false, false, false);
+
+    document.body.addEventListener(&quot;touchstart&quot;, function handleTouchStart(ev) {
+        ts = ev;
+        shouldBe(&quot;ts.touches.length&quot;, &quot;2&quot;);
+        shouldBe(&quot;ts.touches[0].identifier&quot;, &quot;12341&quot;);
+        shouldBe(&quot;ts.touches[0].clientX&quot;, &quot;60&quot;);
+        shouldBe(&quot;ts.touches[1].screenY&quot;, &quot;120&quot;);
+        shouldBe(&quot;ts.ctrlKey&quot;, &quot;true&quot;);
+    });
+
+    document.body.dispatchEvent(evt);
+} catch(e) {
+    testFailed(&quot;An exception was thrown: &quot; + e.message);
+}
+
+// Test createTouchList with invalid arguments which throws exceptions.
+try {
+    var tl = document.createTouchList(1, 2);
+} catch(e) {
+    testFailed(&quot;An exception was thrown: &quot; + e.message);
+}
+
+successfullyParsed = true;
+isSuccessfullyParsed();
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchscripttestsinputtouchtargetjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/input-touch-target.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/input-touch-target.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/input-touch-target.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+var target = document.createElement('input');
+target.setAttribute('type', 'text');
+target.id = &quot;target&quot;;
+target.setAttribute('style', &quot;position: absolute; top: 0; left: 0; font-size: 24px;&quot;);
+
+document.body.insertBefore(target, document.getElementById('console'));
+
+function touchStartHandler()
+{
+    shouldBeEqualToString('event.type', 'touchstart');
+    shouldBeEqualToString('event.touches[0].target.id', target.id);
+    shouldBeEqualToString('event.touches[0].target.nodeName', 'INPUT');
+
+    successfullyParsed = true;
+    isSuccessfullyParsed();
+}
+
+target.addEventListener(&quot;touchstart&quot;, touchStartHandler, false);
+
+description(&quot;Tests that input elements can receive touch events.&quot;);
+
+if (window.eventSender) {
+    eventSender.clearTouchPoints();
+    eventSender.addTouchPoint(10, 10);
+    eventSender.touchStart();
+    eventSender.touchEnd();
+} else
+    debug('This test requires DRT.');
+
+document.body.removeChild(target);
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchscripttestsmultitouchsomewithouthandlersjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/multi-touch-some-without-handlers.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/multi-touch-some-without-handlers.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/multi-touch-some-without-handlers.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,120 @@
</span><ins>+var div = document.createElement(&quot;div&quot;);
+div.id = &quot;touchtarget&quot;;
+div.style.width = &quot;100px&quot;;
+div.style.height = &quot;100px&quot;;
+div.style.backgroundColor = &quot;blue&quot;;
+
+var lastEvent = null;
+var touchEventsReceived = 0;
+var EXPECTED_TOUCH_EVENTS_TOTAL = 3;
+
+function touchEventCallback() {
+    if (window.eventSender) {
+        lastEvent = event;
+        verifyTouch(touchEventsReceived++);
+    } else {
+        debug(event.type);
+    }
+
+    if (window.testRunner &amp;&amp; touchEventsReceived == EXPECTED_TOUCH_EVENTS_TOTAL) {
+        // If we've got here, we can safely say we were successfully parsed :) We need to
+        // call the isSucccessfullyParsed function to output the correct TEST COMPLETE
+        // footer message.
+        successfullyParsed = true;
+        isSuccessfullyParsed();
+        testRunner.notifyDone();
+    }
+}
+
+div.addEventListener(&quot;touchstart&quot;, touchEventCallback, false);
+div.addEventListener(&quot;touchmove&quot;, touchEventCallback, false);
+div.addEventListener(&quot;touchend&quot;, touchEventCallback, false);
+document.body.insertBefore(div, document.body.firstChild);
+
+function verifyTouchEvent(type, totalTouchCount, changedTouchCount, targetTouchCount)
+{
+    shouldBeEqualToString(&quot;lastEvent.type&quot;, type);
+    shouldBe(&quot;lastEvent.touches.length&quot;, totalTouchCount.toString());
+    shouldBe(&quot;lastEvent.changedTouches.length&quot;, changedTouchCount.toString());
+    shouldBe(&quot;lastEvent.targetTouches.length&quot;, targetTouchCount.toString());
+}
+
+function verifyTouchPoint(list, point, x, y, id)
+{
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].pageX&quot;, x.toString());
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].pageY&quot;, y.toString());
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].clientX&quot;, x.toString());
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].clientY&quot;, y.toString());
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].identifier&quot;, id.toString());
+}
+
+function verifyTouch(which) {
+    switch (which) {
+        case 0:
+            verifyTouchEvent(&quot;touchstart&quot;, 2, 1, 1);
+            verifyTouchPoint(&quot;touches&quot;, 0, 10, 10, 0);
+            verifyTouchPoint(&quot;touches&quot;, 1, 200, 200, 1);
+            verifyTouchPoint(&quot;changedTouches&quot;, 0, 10, 10, 0);
+            verifyTouchPoint(&quot;targetTouches&quot;, 0, 10, 10, 0);
+            break;
+
+        case 1:
+            verifyTouchEvent(&quot;touchmove&quot;, 2, 1, 1);
+            verifyTouchPoint(&quot;touches&quot;, 0, 20, 30, 0);
+            verifyTouchPoint(&quot;touches&quot;, 1, 200, 200, 1);
+            verifyTouchPoint(&quot;changedTouches&quot;, 0, 20, 30, 0);
+            break;
+
+        // At this point touch 2 moved but no event was triggered
+        // on the target, since no touch in the target changed.
+
+        case 2:
+            verifyTouchEvent(&quot;touchend&quot;, 1, 1, 0);
+            verifyTouchPoint(&quot;touches&quot;, 0, 150, 150, 1);
+            verifyTouchPoint(&quot;changedTouches&quot;, 0, 20, 30, 0);
+            break;
+
+        default: testFailed(&quot;Wrong number of touch events! (&quot; + which + &quot;)&quot;);
+    }
+}
+
+function multiTouchSequence()
+{
+    debug(&quot;multi touch sequence&quot;);
+
+    debug(&quot;&quot;);
+    debug(&quot;Two touchpoints, 1 in the target, 1 on the body without a target&quot;);
+    eventSender.addTouchPoint(10, 10);
+    eventSender.addTouchPoint(200, 200)
+    eventSender.touchStart(); // Begin, Begin.
+
+    debug(&quot;&quot;);
+    debug(&quot;First touchpoint moved&quot;);
+    eventSender.markAllTouchesAsStationary();
+    eventSender.updateTouchPoint(0, 20, 30);
+    eventSender.touchMove(); // Moved, Stationary.
+
+    debug(&quot;&quot;);
+    debug(&quot;Second touchpoint moved&quot;);
+    eventSender.markAllTouchesAsStationary();
+    eventSender.updateTouchPoint(1, 150, 150);
+    eventSender.touchMove(); // Stationary, Moved.
+
+    debug(&quot;&quot;);
+    debug(&quot;First touchpoint is released&quot;);
+    eventSender.markAllTouchesAsStationary();
+    eventSender.releaseTouchPoint(0);
+    eventSender.touchEnd(); // Ended, Stationary.
+}
+
+if (window.eventSender) {
+    description(&quot;This tests multi touch event support where one of the touches has no touch event handler.&quot;);
+
+    lastEvent = null;
+    eventSender.clearTouchPoints();
+    multiTouchSequence();
+} else {
+    debug(&quot;This test requires DumpRenderTree.&quot;)
+}
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchscriptteststextnodetouchtargetjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/text-node-touch-target.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/text-node-touch-target.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/text-node-touch-target.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+var targetDiv = document.createElement(&quot;div&quot;);
+targetDiv.id = &quot;targetDiv&quot;;
+targetDiv.setAttribute('style', &quot;position: absolute; top: 0; left: 0; background-color: blue; font-size: 24px;&quot;);
+targetDiv.innerText = 'This is some text';
+
+document.body.insertBefore(targetDiv, document.getElementById('console'));
+
+function touchStartHandler()
+{
+    shouldBeEqualToString('event.type', 'touchstart');
+    shouldBeEqualToString('event.touches[0].target.id', targetDiv.id);
+    shouldBeEqualToString('event.touches[0].target.nodeName', 'DIV');
+
+    successfullyParsed = true;
+    isSuccessfullyParsed();
+}
+
+targetDiv.addEventListener(&quot;touchstart&quot;, touchStartHandler, false);
+
+description(&quot;Tests that the event target for a touch on a text node is the parent element, not the text node.&quot;);
+
+if (window.eventSender) {
+    eventSender.clearTouchPoints();
+    eventSender.addTouchPoint(10, 10);
+    eventSender.touchStart();
+    eventSender.touchEnd();
+} else
+    debug('This test requires DRT.');
+
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchscriptteststextareatouchtargetjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/textarea-touch-target.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/textarea-touch-target.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/textarea-touch-target.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+var target = document.createElement('textarea');
+target.id = &quot;target&quot;;
+target.setAttribute('style', &quot;position: absolute; top: 0; left: 0; font-size: 24px;&quot;);
+
+document.body.insertBefore(target, document.getElementById('console'));
+
+function touchStartHandler()
+{
+    shouldBeEqualToString('event.type', 'touchstart');
+    shouldBeEqualToString('event.touches[0].target.id', target.id);
+    shouldBeEqualToString('event.touches[0].target.nodeName', 'TEXTAREA');
+
+    successfullyParsed = true;
+    isSuccessfullyParsed();
+}
+
+target.addEventListener(&quot;touchstart&quot;, touchStartHandler, false);
+
+description(&quot;Tests that input elements can receive touch events.&quot;);
+
+if (window.eventSender) {
+    eventSender.clearTouchPoints();
+    eventSender.addTouchPoint(10, 10);
+    eventSender.touchStart();
+    eventSender.touchEnd();
+} else
+    debug('This test requires DRT.');
+
+document.body.removeChild(target);
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchscriptteststoucheventframesjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/touch-event-frames.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/touch-event-frames.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/touch-event-frames.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,121 @@
</span><ins>+var iframe = document.createElement(&quot;iframe&quot;);
+iframe.style.border = '1px solid black';
+iframe.style.position = 'absolute';
+iframe.style.left = '9px';
+iframe.style.top = '9px'; // with 1px border, puts the iframe at 10,10
+
+document.body.insertBefore(iframe, document.body.firstChild);
+
+var iframeDoc = iframe.contentDocument;
+var div = iframeDoc.createElement(&quot;div&quot;);
+div.id = &quot;touchtarget&quot;;
+div.style.width = &quot;100px&quot;;
+div.style.height = &quot;100px&quot;;
+div.style.backgroundColor = &quot;blue&quot;;
+
+document.getElementById('console').style.marginTop = '170px';
+
+var lastEvent = null;
+var touchEventsReceived = 0;
+var EXPECTED_TOUCH_EVENTS_TOTAL = 2;
+
+function touchEventCallback(event) {
+    if (window.eventSender) {
+        lastEvent = event;
+        verifyTouch(touchEventsReceived++);
+    } else {
+        debug(event.type);
+    }
+
+    if (window.testRunner &amp;&amp; touchEventsReceived == EXPECTED_TOUCH_EVENTS_TOTAL) {
+        // If we've got here, we can safely say we were successfully parsed :) We need to
+        // call the isSucccessfullyParsed function to output the correct TEST COMPLETE
+        // footer message.
+        successfullyParsed = true;
+        isSuccessfullyParsed();
+        testRunner.notifyDone();
+    }
+}
+
+function mouseEventCallback(event)
+{
+  lastEvent = event;
+  debug('Mouse event: ' + event.type);
+  shouldBe(&quot;lastEvent.pageX&quot;, &quot;12&quot;);
+  shouldBe(&quot;lastEvent.pageY&quot;, &quot;15&quot;);
+
+  shouldBe(&quot;lastEvent.screenX&quot;, &quot;22&quot;);
+  shouldBe(&quot;lastEvent.screenY&quot;, &quot;25&quot;);
+
+  shouldBe(&quot;lastEvent.clientX&quot;, &quot;12&quot;);
+  shouldBe(&quot;lastEvent.clientY&quot;, &quot;15&quot;);
+}
+
+div.addEventListener(&quot;mousedown&quot;, mouseEventCallback, false);
+div.addEventListener(&quot;touchstart&quot;, touchEventCallback, false);
+div.addEventListener(&quot;touchmove&quot;, touchEventCallback, false);
+div.addEventListener(&quot;touchend&quot;, touchEventCallback, false);
+iframeDoc.body.style.margin = '0';
+iframeDoc.body.appendChild(div);
+
+function verifyTouchEvent(type, totalTouchCount, changedTouchCount, targetTouchCount)
+{
+    shouldBeEqualToString(&quot;lastEvent.type&quot;, type);
+    shouldBe(&quot;lastEvent.touches.length&quot;, totalTouchCount.toString());
+    shouldBe(&quot;lastEvent.changedTouches.length&quot;, changedTouchCount.toString());
+    shouldBe(&quot;lastEvent.targetTouches.length&quot;, targetTouchCount.toString());
+}
+
+function verifyTouch(which) {
+    switch (which) {
+        case 0:
+           verifyTouchEvent(&quot;touchstart&quot;, 1, 1, 1);
+           shouldBeEqualToString(&quot;lastEvent.touches[0].target.id&quot;, &quot;touchtarget&quot;);
+
+           shouldBe(&quot;lastEvent.touches[0].pageX&quot;, '12');
+           shouldBe(&quot;lastEvent.touches[0].pageY&quot;, '15');
+
+           shouldBe(&quot;lastEvent.touches[0].clientX&quot;, '12');
+           shouldBe(&quot;lastEvent.touches[0].clientY&quot;, '15');
+
+           shouldBe(&quot;lastEvent.touches[0].screenX&quot;, '22');
+           shouldBe(&quot;lastEvent.touches[0].screenY&quot;, '25');
+
+           shouldBe(&quot;lastEvent.pageX&quot;, '12');
+           shouldBe(&quot;lastEvent.pageY&quot;, '15');
+        break;
+        case 1:
+            verifyTouchEvent(&quot;touchend&quot;, 0, 1, 0);
+        break;
+
+        default: testFailed(&quot;Wrong number of touch events! (&quot; + which + &quot;)&quot;);
+    }
+}
+
+function sendTouchSequence()
+{
+    eventSender.mouseMoveTo(22, 25);
+    eventSender.mouseDown();
+    eventSender.mouseUp();
+
+    eventSender.addTouchPoint(22, 25);
+    eventSender.touchStart();
+
+    eventSender.releaseTouchPoint(0);
+    eventSender.touchEnd();
+}
+
+if (window.testRunner)
+    testRunner.waitUntilDone();
+
+if (window.eventSender) {
+    description(&quot;This tests pageX and pageY coordinates on touch events and touches.&quot;);
+
+    lastEvent = null;
+    sendTouchSequence();
+
+} else {
+    debug(&quot;This test requires DumpRenderTree.  Tap on the blue rect to log.&quot;)
+}
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchscriptteststoucheventpageXYjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/touch-event-pageXY.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/touch-event-pageXY.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/touch-event-pageXY.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,121 @@
</span><ins>+var div = document.createElement(&quot;div&quot;);
+div.id = &quot;touchtarget&quot;;
+div.style.width = &quot;100px&quot;;
+div.style.height = &quot;100px&quot;;
+div.style.backgroundColor = &quot;blue&quot;;
+
+var lastEvent = null;
+var touchEventsReceived = 0;
+var EXPECTED_TOUCH_EVENTS_TOTAL = 4;
+
+function touchEventCallback() {
+    if (window.eventSender) {
+        lastEvent = event;
+        verifyTouch(touchEventsReceived++);
+    } else {
+        debug(event.type);
+    }
+
+    if (window.testRunner &amp;&amp; touchEventsReceived == EXPECTED_TOUCH_EVENTS_TOTAL) {
+        // If we've got here, we can safely say we were successfully parsed :) We need to
+        // call the isSucccessfullyParsed function to output the correct TEST COMPLETE
+        // footer message.
+        successfullyParsed = true;
+        isSuccessfullyParsed();
+        testRunner.notifyDone();
+    }
+}
+
+div.addEventListener(&quot;touchstart&quot;, touchEventCallback, false);
+div.addEventListener(&quot;touchmove&quot;, touchEventCallback, false);
+div.addEventListener(&quot;touchend&quot;, touchEventCallback, false);
+document.body.insertBefore(div, document.body.firstChild);
+
+function verifyTouchEvent(type, totalTouchCount, changedTouchCount, targetTouchCount)
+{
+    shouldBeEqualToString(&quot;lastEvent.type&quot;, type);
+    shouldBe(&quot;lastEvent.touches.length&quot;, totalTouchCount.toString());
+    shouldBe(&quot;lastEvent.changedTouches.length&quot;, changedTouchCount.toString());
+    shouldBe(&quot;lastEvent.targetTouches.length&quot;, targetTouchCount.toString());
+}
+
+function verifyTouchPoint(list, point, x, y, id)
+{
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].pageX&quot;, x.toString());
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].pageY&quot;, y.toString());
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].clientX&quot;, x.toString());
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].clientY&quot;, y.toString());
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].identifier&quot;, id.toString());
+}
+
+function verifyTouch(which) {
+    switch (which) {
+        case 0:
+           verifyTouchEvent(&quot;touchstart&quot;, 1, 1, 1);
+           shouldBeEqualToString(&quot;lastEvent.touches[0].target.id&quot;, &quot;touchtarget&quot;);
+
+           verifyTouchPoint(&quot;touches&quot;, 0, 8, 12, 0);
+           verifyTouchPoint(&quot;changedTouches&quot;, 0, 8, 12, 0);
+           verifyTouchPoint(&quot;targetTouches&quot;, 0, 8, 12, 0);
+
+           shouldBe(&quot;lastEvent.pageX&quot;, '8');
+           shouldBe(&quot;lastEvent.pageY&quot;, '12');
+        break;
+        case 1:
+           verifyTouchEvent(&quot;touchmove&quot;, 1, 1, 1);
+           verifyTouchPoint(&quot;touches&quot;, 0, 10, 15, 0);
+
+           shouldBe(&quot;lastEvent.pageX&quot;, '10');
+           shouldBe(&quot;lastEvent.pageY&quot;, '15');
+        break;
+        case 2:
+           verifyTouchEvent(&quot;touchstart&quot;, 2, 1, 2);
+           verifyTouchPoint(&quot;touches&quot;, 0, 10, 15, 0);
+           verifyTouchPoint(&quot;touches&quot;, 1, 40, 45, 1);
+
+           shouldBe(&quot;lastEvent.pageX&quot;, '25');
+           shouldBe(&quot;lastEvent.pageY&quot;, '30');
+        break;
+        case 3:
+            verifyTouchEvent(&quot;touchend&quot;, 1, 1, 1);
+
+            shouldBe(&quot;lastEvent.pageX&quot;, '40');
+            shouldBe(&quot;lastEvent.pageY&quot;, '45');
+        break;
+
+        default: testFailed(&quot;Wrong number of touch events! (&quot; + which + &quot;)&quot;);
+    }
+}
+
+function sendTouchSequence()
+{
+    eventSender.addTouchPoint(8, 12);
+    eventSender.touchStart();
+
+    debug('move');
+    eventSender.updateTouchPoint(0, 10, 15);
+    eventSender.touchMove();
+
+    debug('add second touch');
+    eventSender.addTouchPoint(40, 45);
+    eventSender.touchStart();
+
+    debug('end');
+    eventSender.releaseTouchPoint(0);
+    eventSender.touchEnd();
+}
+
+if (window.testRunner)
+    testRunner.waitUntilDone();
+
+if (window.eventSender) {
+    description(&quot;This tests pageX and pageY coordinates on touch events and touches.&quot;);
+
+    lastEvent = null;
+    sendTouchSequence();
+
+} else {
+    debug(&quot;This test requires DumpRenderTree.  Tap on the blue rect to log.&quot;)
+}
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchscripttestszoomedtoucheventpageXYjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/zoomed-touch-event-pageXY.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/zoomed-touch-event-pageXY.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/script-tests/zoomed-touch-event-pageXY.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,122 @@
</span><ins>+var div = document.createElement(&quot;div&quot;);
+div.id = &quot;touchtarget&quot;;
+div.style.width = &quot;100px&quot;;
+div.style.height = &quot;100px&quot;;
+div.style.backgroundColor = &quot;blue&quot;;
+
+var lastEvent = null;
+var touchEventsReceived = 0;
+var EXPECTED_TOUCH_EVENTS_TOTAL = 4;
+
+function touchEventCallback() {
+    if (window.eventSender) {
+        lastEvent = event;
+        verifyTouch(touchEventsReceived++);
+    } else {
+        debug(event.type);
+    }
+
+    if (window.testRunner &amp;&amp; touchEventsReceived == EXPECTED_TOUCH_EVENTS_TOTAL) {
+        // If we've got here, we can safely say we were successfully parsed :) We need to
+        // call the isSucccessfullyParsed function to output the correct TEST COMPLETE
+        // footer message.
+        successfullyParsed = true;
+        isSuccessfullyParsed();
+        testRunner.notifyDone();
+    }
+}
+
+div.addEventListener(&quot;touchstart&quot;, touchEventCallback, false);
+div.addEventListener(&quot;touchmove&quot;, touchEventCallback, false);
+div.addEventListener(&quot;touchend&quot;, touchEventCallback, false);
+document.body.insertBefore(div, document.body.firstChild);
+
+function verifyTouchEvent(type, totalTouchCount, changedTouchCount, targetTouchCount)
+{
+    shouldBeEqualToString(&quot;lastEvent.type&quot;, type);
+    shouldBe(&quot;lastEvent.touches.length&quot;, totalTouchCount.toString());
+    shouldBe(&quot;lastEvent.changedTouches.length&quot;, changedTouchCount.toString());
+    shouldBe(&quot;lastEvent.targetTouches.length&quot;, targetTouchCount.toString());
+}
+
+function verifyTouchPoint(list, point, x, y, id)
+{
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].pageX&quot;, x.toString());
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].pageY&quot;, y.toString());
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].clientX&quot;, x.toString());
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].clientY&quot;, y.toString());
+    shouldBe(&quot;lastEvent.&quot; + list + &quot;[&quot; + point + &quot;].identifier&quot;, id.toString());
+}
+
+function verifyTouch(which) {
+    switch (which) {
+        case 0:
+           verifyTouchEvent(&quot;touchstart&quot;, 1, 1, 1);
+           shouldBeEqualToString(&quot;lastEvent.touches[0].target.id&quot;, &quot;touchtarget&quot;);
+
+           verifyTouchPoint(&quot;touches&quot;, 0, 8, 12, 0);
+           verifyTouchPoint(&quot;changedTouches&quot;, 0, 8, 12, 0);
+           verifyTouchPoint(&quot;targetTouches&quot;, 0, 8, 12, 0);
+
+           shouldBe(&quot;lastEvent.pageX&quot;, '8');
+           shouldBe(&quot;lastEvent.pageY&quot;, '12');
+        break;
+        case 1:
+           verifyTouchEvent(&quot;touchmove&quot;, 1, 1, 1);
+           verifyTouchPoint(&quot;touches&quot;, 0, 10, 15, 0);
+
+           shouldBe(&quot;lastEvent.pageX&quot;, '10');
+           shouldBe(&quot;lastEvent.pageY&quot;, '15');
+        break;
+        case 2:
+           verifyTouchEvent(&quot;touchstart&quot;, 2, 1, 2);
+           verifyTouchPoint(&quot;touches&quot;, 0, 10, 15, 0);
+           verifyTouchPoint(&quot;touches&quot;, 1, 40, 45, 1);
+
+           shouldBe(&quot;lastEvent.pageX&quot;, '25');
+           shouldBe(&quot;lastEvent.pageY&quot;, '30');
+        break;
+        case 3:
+            verifyTouchEvent(&quot;touchend&quot;, 1, 1, 1);
+
+            shouldBe(&quot;lastEvent.pageX&quot;, '40');
+            shouldBe(&quot;lastEvent.pageY&quot;, '45');
+        break;
+
+        default: testFailed(&quot;Wrong number of touch events! (&quot; + which + &quot;)&quot;);
+    }
+}
+
+function sendTouchSequence()
+{
+    eventSender.addTouchPoint(8*2, 12*2);
+    eventSender.touchStart();
+
+    debug('move');
+    eventSender.updateTouchPoint(0, 10*2, 15*2);
+    eventSender.touchMove();
+
+    debug('add second touch');
+    eventSender.addTouchPoint(40*2, 45*2);
+    eventSender.touchStart();
+
+    debug('end');
+    eventSender.releaseTouchPoint(0);
+    eventSender.touchEnd();
+}
+
+if (window.testRunner)
+    testRunner.waitUntilDone();
+
+if (window.eventSender) {
+    description(&quot;This tests pageX and pageY coordinates on touch events and touches when zoomed to 2x scale.&quot;);
+
+    // Give some time for the viewport scale to set in.
+    setTimeout(function() {
+        lastEvent = null;
+        sendTouchSequence();
+    }, 100);
+
+} else {
+    debug(&quot;This test requires DumpRenderTree.  Tap on the blue rect to log.&quot;)
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchtextnodetouchtargethtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/text-node-touch-target.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/text-node-touch-target.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/text-node-touch-target.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/text-node-touch-target.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchtextareatouchtargethtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/textarea-touch-target.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/textarea-touch-target.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/textarea-touch-target.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/textarea-touch-target.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchtoucheventframesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-frames-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-frames-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-frames-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+
+This tests pageX and pageY coordinates on touch events and touches.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Mouse event: mousedown
+PASS lastEvent.pageX is 12
+PASS lastEvent.pageY is 15
+PASS lastEvent.screenX is 22
+PASS lastEvent.screenY is 25
+PASS lastEvent.clientX is 12
+PASS lastEvent.clientY is 15
+PASS lastEvent.type is &quot;touchstart&quot;
+PASS lastEvent.touches.length is 1
+PASS lastEvent.changedTouches.length is 1
+PASS lastEvent.targetTouches.length is 1
+PASS lastEvent.touches[0].target.id is &quot;touchtarget&quot;
+PASS lastEvent.touches[0].pageX is 12
+PASS lastEvent.touches[0].pageY is 15
+PASS lastEvent.touches[0].clientX is 12
+PASS lastEvent.touches[0].clientY is 15
+PASS lastEvent.touches[0].screenX is 22
+PASS lastEvent.touches[0].screenY is 25
+PASS lastEvent.pageX is 12
+PASS lastEvent.pageY is 15
+PASS lastEvent.type is &quot;touchend&quot;
+PASS lastEvent.touches.length is 0
+PASS lastEvent.changedTouches.length is 1
+PASS lastEvent.targetTouches.length is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchtoucheventframeshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-frames.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-frames.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-frames.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/touch-event-frames.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchtoucheventpageXYexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-pageXY-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-pageXY-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-pageXY-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+This tests pageX and pageY coordinates on touch events and touches.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS lastEvent.type is &quot;touchstart&quot;
+PASS lastEvent.touches.length is 1
+PASS lastEvent.changedTouches.length is 1
+PASS lastEvent.targetTouches.length is 1
+PASS lastEvent.touches[0].target.id is &quot;touchtarget&quot;
+PASS lastEvent.touches[0].pageX is 8
+PASS lastEvent.touches[0].pageY is 12
+PASS lastEvent.touches[0].clientX is 8
+PASS lastEvent.touches[0].clientY is 12
+PASS lastEvent.touches[0].identifier is 0
+PASS lastEvent.changedTouches[0].pageX is 8
+PASS lastEvent.changedTouches[0].pageY is 12
+PASS lastEvent.changedTouches[0].clientX is 8
+PASS lastEvent.changedTouches[0].clientY is 12
+PASS lastEvent.changedTouches[0].identifier is 0
+PASS lastEvent.targetTouches[0].pageX is 8
+PASS lastEvent.targetTouches[0].pageY is 12
+PASS lastEvent.targetTouches[0].clientX is 8
+PASS lastEvent.targetTouches[0].clientY is 12
+PASS lastEvent.targetTouches[0].identifier is 0
+PASS lastEvent.pageX is 8
+PASS lastEvent.pageY is 12
+move
+PASS lastEvent.type is &quot;touchmove&quot;
+PASS lastEvent.touches.length is 1
+PASS lastEvent.changedTouches.length is 1
+PASS lastEvent.targetTouches.length is 1
+PASS lastEvent.touches[0].pageX is 10
+PASS lastEvent.touches[0].pageY is 15
+PASS lastEvent.touches[0].clientX is 10
+PASS lastEvent.touches[0].clientY is 15
+PASS lastEvent.touches[0].identifier is 0
+PASS lastEvent.pageX is 10
+PASS lastEvent.pageY is 15
+add second touch
+PASS lastEvent.type is &quot;touchstart&quot;
+PASS lastEvent.touches.length is 2
+PASS lastEvent.changedTouches.length is 1
+PASS lastEvent.targetTouches.length is 2
+PASS lastEvent.touches[0].pageX is 10
+PASS lastEvent.touches[0].pageY is 15
+PASS lastEvent.touches[0].clientX is 10
+PASS lastEvent.touches[0].clientY is 15
+PASS lastEvent.touches[0].identifier is 0
+PASS lastEvent.touches[1].pageX is 40
+PASS lastEvent.touches[1].pageY is 45
+PASS lastEvent.touches[1].clientX is 40
+PASS lastEvent.touches[1].clientY is 45
+PASS lastEvent.touches[1].identifier is 1
+PASS lastEvent.pageX is 25
+PASS lastEvent.pageY is 30
+end
+PASS lastEvent.type is &quot;touchend&quot;
+PASS lastEvent.touches.length is 1
+PASS lastEvent.changedTouches.length is 1
+PASS lastEvent.targetTouches.length is 1
+PASS lastEvent.pageX is 40
+PASS lastEvent.pageY is 45
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchtoucheventpageXYhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-pageXY.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-pageXY.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/touch-event-pageXY.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/touch-event-pageXY.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchzoomedtoucheventpageXYexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/zoomed-touch-event-pageXY-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/zoomed-touch-event-pageXY-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/zoomed-touch-event-pageXY-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+This tests pageX and pageY coordinates on touch events and touches when zoomed to 2x scale.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS lastEvent.type is &quot;touchstart&quot;
+PASS lastEvent.touches.length is 1
+PASS lastEvent.changedTouches.length is 1
+PASS lastEvent.targetTouches.length is 1
+PASS lastEvent.touches[0].target.id is &quot;touchtarget&quot;
+PASS lastEvent.touches[0].pageX is 8
+PASS lastEvent.touches[0].pageY is 12
+PASS lastEvent.touches[0].clientX is 8
+PASS lastEvent.touches[0].clientY is 12
+PASS lastEvent.touches[0].identifier is 0
+PASS lastEvent.changedTouches[0].pageX is 8
+PASS lastEvent.changedTouches[0].pageY is 12
+PASS lastEvent.changedTouches[0].clientX is 8
+PASS lastEvent.changedTouches[0].clientY is 12
+PASS lastEvent.changedTouches[0].identifier is 0
+PASS lastEvent.targetTouches[0].pageX is 8
+PASS lastEvent.targetTouches[0].pageY is 12
+PASS lastEvent.targetTouches[0].clientX is 8
+PASS lastEvent.targetTouches[0].clientY is 12
+PASS lastEvent.targetTouches[0].identifier is 0
+PASS lastEvent.pageX is 8
+PASS lastEvent.pageY is 12
+move
+PASS lastEvent.type is &quot;touchmove&quot;
+PASS lastEvent.touches.length is 1
+PASS lastEvent.changedTouches.length is 1
+PASS lastEvent.targetTouches.length is 1
+PASS lastEvent.touches[0].pageX is 10
+PASS lastEvent.touches[0].pageY is 15
+PASS lastEvent.touches[0].clientX is 10
+PASS lastEvent.touches[0].clientY is 15
+PASS lastEvent.touches[0].identifier is 0
+PASS lastEvent.pageX is 10
+PASS lastEvent.pageY is 15
+add second touch
+PASS lastEvent.type is &quot;touchstart&quot;
+PASS lastEvent.touches.length is 2
+PASS lastEvent.changedTouches.length is 1
+PASS lastEvent.targetTouches.length is 2
+PASS lastEvent.touches[0].pageX is 10
+PASS lastEvent.touches[0].pageY is 15
+PASS lastEvent.touches[0].clientX is 10
+PASS lastEvent.touches[0].clientY is 15
+PASS lastEvent.touches[0].identifier is 0
+PASS lastEvent.touches[1].pageX is 40
+PASS lastEvent.touches[1].pageY is 45
+PASS lastEvent.touches[1].clientX is 40
+PASS lastEvent.touches[1].clientY is 45
+PASS lastEvent.touches[1].identifier is 1
+PASS lastEvent.pageX is 25
+PASS lastEvent.pageY is 30
+end
+PASS lastEvent.type is &quot;touchend&quot;
+PASS lastEvent.touches.length is 1
+PASS lastEvent.changedTouches.length is 1
+PASS lastEvent.targetTouches.length is 1
+PASS lastEvent.pageX is 40
+PASS lastEvent.pageY is 45
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasteventstouchzoomedtoucheventpageXYhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/zoomed-touch-event-pageXY.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/zoomed-touch-event-pageXY.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/events/touch/zoomed-touch-event-pageXY.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta name=&quot;viewport&quot; content=&quot;initial-scale=2&quot;&gt;
+&lt;script src=&quot;../../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/zoomed-touch-event-pageXY.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedabsoluteoverfixedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/absolute-over-fixed-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/absolute-over-fixed-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/absolute-over-fixed-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+layer at (0,0) size 800x2676
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x2676
+  RenderBlock {HTML} at (0,0) size 800x2676
+    RenderBody {BODY} at (8,8) size 784x2660
+      RenderBlock {DIV} at (5,0) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,205) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,410) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,615) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,820) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1025) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1230) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1435) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1640) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1845) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,2050) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,2255) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,2460) size 774x200 [bgcolor=#C0C0C0]
+layer at (100,60) size 304x304
+  RenderBlock (positioned) {DIV} at (100,60) size 304x304 [bgcolor=#008000CC] [border: (2px solid #000000)]
+    RenderText {#text} at (2,2) size 96x19
+      text run at (2,2) width 96: &quot;Take a survey!&quot;
+layer at (50,250) size 204x204
+  RenderBlock (positioned) {DIV} at (50,250) size 204x204 [bgcolor=#008080CC] [border: (2px solid #000000)]
+    RenderText {#text} at (2,2) size 180x19
+      text run at (2,2) width 180: &quot;This should go over the top.&quot;
+scrolled to 0,200
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedabsoluteoverfixedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/absolute-over-fixed.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/absolute-over-fixed.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/absolute-over-fixed.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+    &lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
+      .content {
+        background-color: silver;
+        height: 200px;
+        margin: 5px;
+      }
+      .fixed {
+        position: fixed;
+        width: 300px;
+        height: 300px;
+        top: 50px;
+        left: 0;
+        margin: 10px 100px;
+        background-color: rgba(0, 128, 0, 0.8);
+        border: 2px solid black;
+      }
+
+      .absolute {
+        position: absolute;
+        width: 200px;
+        height: 200px;
+        top: 250px;
+        left: 50px;
+        background-color: rgba(0, 128, 128, 0.8);
+        border: 2px solid black;
+      }
+    &lt;/style&gt;
+    &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+      if (window.testRunner)
+        testRunner.waitUntilDone();
+      function doTest()
+      {
+        window.setTimeout(function() {
+          window.scrollTo(50, 200);
+          if (window.testRunner)
+            testRunner.notifyDone();
+        }, 0);
+      }
+      window.addEventListener('load', doTest, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+  &lt;div class=&quot;fixed&quot;&gt;
+    Take a survey!
+  &lt;/div&gt;
+  
+  &lt;div class=&quot;absolute&quot;&gt;
+    This should go over the top.
+  &lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedautopositionfixedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/auto-position-fixed-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/auto-position-fixed-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/auto-position-fixed-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+layer at (0,0) size 1013x2061
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x2061
+  RenderBlock {HTML} at (0,0) size 800x2061
+    RenderBody {BODY} at (8,8) size 784x2045
+      RenderBlock {DIV} at (5,0) size 1000x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,410) size 1000x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,615) size 1000x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,820) size 1000x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1025) size 1000x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1230) size 1000x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1435) size 1000x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1640) size 1000x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1845) size 1000x200 [bgcolor=#C0C0C0]
+layer at (13,218) size 400x200
+  RenderBlock (positioned) {DIV} at (13,218) size 400x200 [bgcolor=#008000CC]
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedautopositionfixedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/auto-position-fixed.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/auto-position-fixed.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/auto-position-fixed.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+    &lt;style type=&quot;text/css&quot;&gt;
+      .content {
+        background-color: silver;
+        height: 200px;
+        width: 1000px;
+        margin: 5px;
+      }
+      
+      .fixed {
+        position: fixed;
+        width: 50%;
+        background-color: rgba(0, 128, 0, 0.8);
+      }
+    &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;fixed content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot; style=&quot;margin-top: 210px&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedfixedintransformexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/fixed-in-transform-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/fixed-in-transform-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/fixed-in-transform-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+layer at (0,0) size 800x2885
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x2885
+  RenderBlock {HTML} at (0,0) size 800x2885
+    RenderBody {BODY} at (8,8) size 784x2869
+      RenderBlock {DIV} at (5,209) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,414) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,619) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,824) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1029) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1234) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1439) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1644) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1849) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,2054) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,2259) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,2464) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,2669) size 774x200 [bgcolor=#C0C0C0]
+layer at (8,8) size 204x204
+  RenderBlock {DIV} at (0,0) size 204x204 [border: (2px solid #000000)]
+layer at (20,30) size 304x304
+  RenderBlock (positioned) {DIV} at (12,22) size 304x304 [bgcolor=#008000CC] [border: (2px solid #000000)]
+    RenderText {#text} at (2,2) size 96x19
+      text run at (2,2) width 96: &quot;Take a survey!&quot;
+scrolled to 0,200
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedfixedintransformhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/fixed-in-transform.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/fixed-in-transform.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/fixed-in-transform.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+    &lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
+      .content {
+        background-color: silver;
+        height: 200px;
+        margin: 5px;
+      }
+      
+      .fixed {
+        position: fixed;
+        width: 300px;
+        height: 300px;
+        top: 20px;
+        left: 10px;
+        background-color: rgba(0, 128, 0, 0.8);
+        border: 2px solid black;
+      }
+      
+      .transformed {
+        height: 200px;
+        width: 200px;
+        -webkit-transform: rotate(45deg);
+        border: 2px solid black;
+      }
+    &lt;/style&gt;
+    &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+      if (window.testRunner)
+        testRunner.waitUntilDone();
+      function doTest()
+      {
+        window.setTimeout(function() {
+          window.scrollTo(50, 200);
+          if (window.testRunner)
+            testRunner.notifyDone();
+        }, 0);
+      }
+      window.addEventListener('load', doTest, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+  &lt;div class=&quot;transformed&quot;&gt;
+    &lt;div class=&quot;fixed&quot;&gt;
+      Take a survey!
+    &lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedfourbarsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/four-bars-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/four-bars-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/four-bars-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+layer at (0,0) size 800x2676
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x2676
+  RenderBlock {HTML} at (0,0) size 800x2676
+    RenderBody {BODY} at (8,8) size 784x2660
+      RenderBlock {DIV} at (5,0) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,205) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,410) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,615) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,820) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1025) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1230) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1435) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1640) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1845) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,2050) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,2255) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,2460) size 774x200 [bgcolor=#C0C0C0]
+layer at (10,10) size 772x54
+  RenderBlock (positioned) {DIV} at (10,10) size 772x54 [bgcolor=#008000CC] [border: (2px solid #000000)]
+    RenderText {#text} at (2,2) size 120x19
+      text run at (2,2) width 120: &quot;This is the top bar.&quot;
+layer at (20,210) size 154x304
+  RenderBlock (positioned) {DIV} at (20,210) size 154x304 [bgcolor=#008000CC] [border: (2px solid #000000)]
+    RenderText {#text} at (2,2) size 121x19
+      text run at (2,2) width 121: &quot;This is the left bar.&quot;
+layer at (626,210) size 154x304
+  RenderBlock (positioned) {DIV} at (626,210) size 154x304 [bgcolor=#008000CC] [border: (2px solid #000000)]
+    RenderText {#text} at (2,2) size 130x19
+      text run at (2,2) width 130: &quot;This is the right bar.&quot;
+layer at (10,526) size 772x54
+  RenderBlock (positioned) {DIV} at (10,526) size 772x54 [bgcolor=#008000CC] [border: (2px solid #000000)]
+    RenderText {#text} at (2,2) size 145x19
+      text run at (2,2) width 145: &quot;This is the bottom bar.&quot;
+scrolled to 0,200
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedfourbarshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/four-bars.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/four-bars.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/four-bars.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+    &lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
+      .content {
+        background-color: silver;
+        height: 200px;
+        margin: 5px;
+      }
+      
+      .fixed {
+        position: fixed;
+        top: 0;
+        left: 0;
+        margin: 10px;
+        height: 50px;
+        background-color: rgba(0, 128, 0, 0.8);
+        border: 2px solid black;
+        -webkit-box-shadow: 0 0 20px black;
+      }
+      
+      .top, .bottom {
+        width: 96%;
+      }
+
+      .left {
+        top: 200px;
+        left: 10px;
+        width: 150px;
+        height: 300px;
+      }
+
+      .right {
+        top: 200px;
+        left: auto;
+        right: 10px;
+        width: 150px;
+        height: 300px;
+      }
+      
+      .bottom {
+        top: auto;
+        bottom: 10px;
+      }
+    &lt;/style&gt;
+    &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+      if (window.testRunner)
+        testRunner.waitUntilDone();
+      function doTest()
+      {
+        window.setTimeout(function() {
+          window.scrollTo(50, 200);
+          if (window.testRunner)
+            testRunner.notifyDone();
+        }, 0);
+      }
+      window.addEventListener('load', doTest, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+
+
+&lt;div class=&quot;fixed top&quot;&gt;
+  This is the top bar.
+&lt;/div&gt;
+&lt;div class=&quot;fixed left&quot;&gt;
+  This is the left bar.
+&lt;/div&gt;
+&lt;div class=&quot;fixed right&quot;&gt;
+  This is the right bar.
+&lt;/div&gt;
+&lt;div class=&quot;fixed bottom&quot;&gt;
+  This is the bottom bar.
+&lt;/div&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedframewithfixedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/frame-with-fixed-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/frame-with-fixed-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/frame-with-fixed-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+layer at (0,0) size 800x2225
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x2225
+  RenderBlock {HTML} at (0,0) size 800x2225
+    RenderBody {BODY} at (8,8) size 784x2209
+      RenderBlock (anonymous) at (0,0) size 784x159
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (5,164) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,369) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,574) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,779) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,984) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1189) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1394) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1599) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1804) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,2009) size 774x200 [bgcolor=#C0C0C0]
+layer at (8,8) size 304x154
+  RenderPartObject {IFRAME} at (0,0) size 304x154 [border: (2px inset #000000)]
+    layer at (0,0) size 300x831
+      RenderView at (0,0) size 300x150
+    layer at (0,0) size 300x831
+      RenderBlock {HTML} at (0,0) size 300x831
+        RenderBody {BODY} at (8,8) size 284x815
+          RenderBlock {DIV} at (5,0) size 274x200 [bgcolor=#C0C0C0]
+          RenderBlock {DIV} at (5,205) size 274x200 [bgcolor=#C0C0C0]
+          RenderBlock {DIV} at (5,410) size 274x200 [bgcolor=#C0C0C0]
+          RenderBlock {DIV} at (5,615) size 274x200 [bgcolor=#C0C0C0]
+    layer at (5,5) size 290x140
+      RenderBlock (positioned) {DIV} at (5,5) size 290x140 [bgcolor=#000000CC]
+        RenderBlock {DIV} at (29,100) size 232x500 [bgcolor=#FFFFFF]
+          RenderText {#text} at (0,0) size 57x19
+            text run at (0,0) width 57: &quot;Contents&quot;
+layer at (100,60) size 304x304
+  RenderBlock (positioned) {DIV} at (100,60) size 304x304 [bgcolor=#008000CC] [border: (2px solid #000000)]
+scrolled to 0,200
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedframewithfixedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/frame-with-fixed.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/frame-with-fixed.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/frame-with-fixed.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+    &lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
+      .content {
+        background-color: silver;
+        height: 200px;
+        margin: 5px;
+      }
+      
+      .fixed {
+        position: fixed;
+        width: 300px;
+        height: 300px;
+        top: 50px;
+        left: 0;
+        margin: 10px 100px;
+        background-color: rgba(0, 128, 0, 0.8);
+        border: 2px solid black;
+      }
+      
+    &lt;/style&gt;
+    &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+      if (window.testRunner)
+        testRunner.waitUntilDone();
+      function doTest()
+      {
+        window.setTimeout(function() {
+          window.scrollTo(50, 200);
+          if (window.testRunner) {
+            testRunner.notifyDone();
+          }
+        }, 0);
+      }
+      window.addEventListener('load', doTest, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+&lt;div class=&quot;fixed&quot;&gt;&lt;/div&gt;
+
+&lt;iframe src=&quot;resources/subframe.html&quot;&gt;&lt;/iframe&gt;
+
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedoverlayfixedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/overlay-fixed-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/overlay-fixed-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/overlay-fixed-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+layer at (0,0) size 800x2061
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x2061
+  RenderBlock {HTML} at (0,0) size 800x2061
+    RenderBody {BODY} at (8,8) size 784x2045
+      RenderBlock {DIV} at (5,0) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,205) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,410) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,615) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,820) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1025) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1230) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1435) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1640) size 774x200 [bgcolor=#C0C0C0]
+      RenderBlock {DIV} at (5,1845) size 774x200 [bgcolor=#C0C0C0]
+layer at (5,5) size 790x590
+  RenderBlock (positioned) {DIV} at (5,5) size 790x590 [bgcolor=#000000CC]
+    RenderBlock {DIV} at (79,100) size 632x500 [bgcolor=#FFFFFF]
+      RenderText {#text} at (0,0) size 57x19
+        text run at (0,0) width 57: &quot;Contents&quot;
+scrolled to 0,200
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedoverlayfixedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/overlay-fixed.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/overlay-fixed.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/overlay-fixed.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+    &lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
+      .content {
+        background-color: silver;
+        height: 200px;
+        margin: 5px;
+      }
+
+      .fixed {
+        position: fixed;
+        top: 0;
+        left: 0;
+        bottom: 0;
+        right: 0;
+        margin: 5px;
+        background-color: rgba(0, 0, 0, 0.8);
+      }
+      
+      .fixed &gt; .contents {
+        background-color: white;
+        width: 80%;
+        height: 500px;
+        margin: 100px auto;
+      }
+    &lt;/style&gt;
+    &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+      if (window.testRunner)
+        testRunner.waitUntilDone();
+      function doTest()
+      {
+        window.setTimeout(function() {
+          window.scrollTo(50, 200);
+          if (window.testRunner) {
+            testRunner.notifyDone();
+          }
+        }, 0);
+      }
+      window.addEventListener('load', doTest, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+
+&lt;div class=&quot;fixed&quot;&gt;
+  &lt;div class=&quot;contents&quot;&gt;
+    Contents
+  &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastfixedresourcessubframehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/resources/subframe.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/resources/subframe.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/fixed/resources/subframe.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+    &lt;style type=&quot;text/css&quot;&gt;
+      .content {
+        background-color: silver;
+        height: 200px;
+        margin: 5px;
+      }
+
+      .fixed {
+        position: fixed;
+        top: 0;
+        left: 0;
+        bottom: 0;
+        right: 0;
+        margin: 5px;
+        background-color: rgba(0, 0, 0, 0.8);
+      }
+      
+      .fixed &gt; .contents {
+        background-color: white;
+        width: 80%;
+        height: 500px;
+        margin: 100px auto;
+      }
+    &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+
+  &lt;div class=&quot;fixed&quot;&gt;
+    &lt;div class=&quot;contents&quot;&gt;
+      Contents
+    &lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastflexboxverticalboxformcontrolsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/flexbox/vertical-box-form-controls-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/flexbox/vertical-box-form-controls-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/flexbox/vertical-box-form-controls-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+
+
+
+
+Check if form controls in vertical flex box will stretch horizontally when rendered as box as opposed to inline-box. If you see any red, then the test has failed. iOS has extra requirements for buttons to be styled; they must either have a transparent background, or a background image.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Button
+PASS element.offsetHeight is 100
+PASS element.offsetWidth is 100
+Text input
+PASS element.offsetHeight is 100
+PASS element.offsetWidth is 100
+Textarea
+PASS element.offsetHeight is 100
+PASS element.offsetWidth is 100
+Submit
+PASS element.offsetHeight is 100
+PASS element.offsetWidth is 100
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastflexboxverticalboxformcontrolshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/flexbox/vertical-box-form-controls.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/flexbox/vertical-box-form-controls.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/flexbox/vertical-box-form-controls.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,80 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;
+div.box {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+}
+
+div.outer {
+  width: 100px;
+  height: 100px;
+  background-color: red;
+  box-orient: vertical;
+  -moz-box-orient: vertical;
+  -webkit-box-orient: vertical;
+}
+
+.inner {
+  display: -webkit-box;
+  display: -moz-box;
+  display: box;
+  box-align: stretch;
+  -moz-box-align: stretch;
+  -webkit-box-align: stretch;
+  margin: 0;
+  border: 0;
+  padding: 0;
+  height: 100px;
+  /* datauri for a 1x1 green pixel. */
+  background: url(data:image/gif;charset=binary;base64,R0lGODlhAQABAIAAAABxAAAAACH5BAQAAAAALAAAAAABAAEAAAICRAEAOw==);
+}
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div class=&quot;box outer&quot;&gt;
+&lt;button class=&quot;inner&quot; type=&quot;submit&quot; id=&quot;button&quot;&gt;&lt;/button&gt;
+&lt;/div&gt;
+&lt;div class=&quot;box outer&quot;&gt;
+&lt;input class=&quot;inner&quot; type=&quot;text&quot; value=&quot;&quot; id=&quot;inputText&quot;&gt;
+&lt;/div&gt;
+&lt;div class=&quot;box outer&quot;&gt;
+&lt;textarea class=&quot;inner&quot; id=&quot;textarea&quot;&gt;&lt;/textarea&gt;
+&lt;/div&gt;
+&lt;div class=&quot;box outer&quot;&gt;
+&lt;input class=&quot;inner&quot; type=&quot;submit&quot; value=&quot;&quot; id=&quot;submit&quot;&gt;
+&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+description(&quot;Check if form controls in vertical flex box will stretch horizontally when rendered as box as opposed to inline-box. If you see any red, then the test has failed. iOS has extra requirements for buttons to be styled; they must either have a transparent background, or a background image.&quot;);
+
+var element = null;
+
+debug(&quot;Button&quot;);
+element = document.getElementById(&quot;button&quot;);
+shouldBe(&quot;element.offsetHeight&quot;, &quot;100&quot;);
+shouldBe(&quot;element.offsetWidth&quot;, &quot;100&quot;);
+
+debug(&quot;Text input&quot;);
+element = document.getElementById(&quot;inputText&quot;);
+shouldBe(&quot;element.offsetHeight&quot;, &quot;100&quot;);
+shouldBe(&quot;element.offsetWidth&quot;, &quot;100&quot;);
+
+debug(&quot;Textarea&quot;);
+element = document.getElementById(&quot;textarea&quot;);
+shouldBe(&quot;element.offsetHeight&quot;, &quot;100&quot;);
+shouldBe(&quot;element.offsetWidth&quot;, &quot;100&quot;);
+
+debug(&quot;Submit&quot;);
+element = document.getElementById(&quot;submit&quot;);
+shouldBe(&quot;element.offsetHeight&quot;, &quot;100&quot;);
+shouldBe(&quot;element.offsetWidth&quot;, &quot;100&quot;);
+
+successfullyParsed = true;
+&lt;/script&gt;
+&lt;script src=&quot;../../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsautocapitalizeattributeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/autocapitalize-attribute-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/autocapitalize-attribute-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/autocapitalize-attribute-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,120 @@
</span><ins>+Test the &quot;autocapitalize&quot; attribute values and fallback values.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Testing inputs outside of a form.
+PASS i1.autocapitalize is &quot;&quot;
+PASS i1.getAttribute('autocapitalize') is null
+PASS i2.autocapitalize is &quot;&quot;
+PASS i2.getAttribute('autocapitalize') is &quot;&quot;
+PASS i3.autocapitalize is &quot;sentences&quot;
+PASS i3.getAttribute('autocapitalize') is &quot;on&quot;
+PASS i4.autocapitalize is &quot;none&quot;
+PASS i4.getAttribute('autocapitalize') is &quot;off&quot;
+PASS i5.autocapitalize is &quot;none&quot;
+PASS i5.getAttribute('autocapitalize') is &quot;none&quot;
+PASS i6.autocapitalize is &quot;words&quot;
+PASS i6.getAttribute('autocapitalize') is &quot;words&quot;
+PASS i7.autocapitalize is &quot;sentences&quot;
+PASS i7.getAttribute('autocapitalize') is &quot;sentences&quot;
+PASS i8.autocapitalize is &quot;characters&quot;
+PASS i8.getAttribute('autocapitalize') is &quot;characters&quot;
+PASS i9.autocapitalize is &quot;sentences&quot;
+PASS i9.getAttribute('autocapitalize') is &quot;unknown&quot;
+PASS i10.autocapitalize is &quot;words&quot;
+PASS i10.getAttribute('autocapitalize') is &quot;wOrDs&quot;
+
+Testing forms.
+PASS form1.autocapitalize is &quot;&quot;
+PASS form1.getAttribute('autocapitalize') is null
+PASS form2.autocapitalize is &quot;&quot;
+PASS form2.getAttribute('autocapitalize') is &quot;&quot;
+PASS form3.autocapitalize is &quot;sentences&quot;
+PASS form3.getAttribute('autocapitalize') is &quot;on&quot;
+PASS form4.autocapitalize is &quot;words&quot;
+PASS form4.getAttribute('autocapitalize') is &quot;wOrDs&quot;
+PASS form5.autocapitalize is &quot;characters&quot;
+PASS form5.getAttribute('autocapitalize') is &quot;characters&quot;
+
+Testing inputs inside of a form with a default of &quot;characters&quot;.
+PASS j1.autocapitalize is &quot;characters&quot;
+PASS j1.getAttribute('autocapitalize') is null
+PASS j2.autocapitalize is &quot;characters&quot;
+PASS j2.getAttribute('autocapitalize') is &quot;&quot;
+PASS j3.autocapitalize is &quot;sentences&quot;
+PASS j3.getAttribute('autocapitalize') is &quot;on&quot;
+PASS j4.autocapitalize is &quot;none&quot;
+PASS j4.getAttribute('autocapitalize') is &quot;off&quot;
+PASS j5.autocapitalize is &quot;none&quot;
+PASS j5.getAttribute('autocapitalize') is &quot;none&quot;
+PASS j6.autocapitalize is &quot;words&quot;
+PASS j6.getAttribute('autocapitalize') is &quot;words&quot;
+PASS j7.autocapitalize is &quot;sentences&quot;
+PASS j7.getAttribute('autocapitalize') is &quot;sentences&quot;
+PASS j8.autocapitalize is &quot;characters&quot;
+PASS j8.getAttribute('autocapitalize') is &quot;characters&quot;
+PASS j9.autocapitalize is &quot;sentences&quot;
+PASS j9.getAttribute('autocapitalize') is &quot;unknown&quot;
+PASS j10.autocapitalize is &quot;words&quot;
+PASS j10.getAttribute('autocapitalize') is &quot;wOrDs&quot;
+
+Testing inputs inside of a form with no default.
+PASS x1.autocapitalize is &quot;&quot;
+PASS x1.getAttribute('autocapitalize') is null
+PASS x2.autocapitalize is &quot;&quot;
+PASS x2.getAttribute('autocapitalize') is &quot;&quot;
+
+Testing textareas outside of a form.
+PASS text_i1.autocapitalize is &quot;&quot;
+PASS text_i1.getAttribute('autocapitalize') is null
+PASS text_i2.autocapitalize is &quot;&quot;
+PASS text_i2.getAttribute('autocapitalize') is &quot;&quot;
+PASS text_i3.autocapitalize is &quot;sentences&quot;
+PASS text_i3.getAttribute('autocapitalize') is &quot;on&quot;
+PASS text_i4.autocapitalize is &quot;none&quot;
+PASS text_i4.getAttribute('autocapitalize') is &quot;off&quot;
+PASS text_i5.autocapitalize is &quot;none&quot;
+PASS text_i5.getAttribute('autocapitalize') is &quot;none&quot;
+PASS text_i6.autocapitalize is &quot;words&quot;
+PASS text_i6.getAttribute('autocapitalize') is &quot;words&quot;
+PASS text_i7.autocapitalize is &quot;sentences&quot;
+PASS text_i7.getAttribute('autocapitalize') is &quot;sentences&quot;
+PASS text_i8.autocapitalize is &quot;characters&quot;
+PASS text_i8.getAttribute('autocapitalize') is &quot;characters&quot;
+PASS text_i9.autocapitalize is &quot;sentences&quot;
+PASS text_i9.getAttribute('autocapitalize') is &quot;unknown&quot;
+PASS text_i10.autocapitalize is &quot;words&quot;
+PASS text_i10.getAttribute('autocapitalize') is &quot;wOrDs&quot;
+
+Testing textareas inside of a form with a default of &quot;characters&quot;.
+PASS text_j1.autocapitalize is &quot;characters&quot;
+PASS text_j1.getAttribute('autocapitalize') is null
+PASS text_j2.autocapitalize is &quot;characters&quot;
+PASS text_j2.getAttribute('autocapitalize') is &quot;&quot;
+PASS text_j3.autocapitalize is &quot;sentences&quot;
+PASS text_j3.getAttribute('autocapitalize') is &quot;on&quot;
+PASS text_j4.autocapitalize is &quot;none&quot;
+PASS text_j4.getAttribute('autocapitalize') is &quot;off&quot;
+PASS text_j5.autocapitalize is &quot;none&quot;
+PASS text_j5.getAttribute('autocapitalize') is &quot;none&quot;
+PASS text_j6.autocapitalize is &quot;words&quot;
+PASS text_j6.getAttribute('autocapitalize') is &quot;words&quot;
+PASS text_j7.autocapitalize is &quot;sentences&quot;
+PASS text_j7.getAttribute('autocapitalize') is &quot;sentences&quot;
+PASS text_j8.autocapitalize is &quot;characters&quot;
+PASS text_j8.getAttribute('autocapitalize') is &quot;characters&quot;
+PASS text_j9.autocapitalize is &quot;sentences&quot;
+PASS text_j9.getAttribute('autocapitalize') is &quot;unknown&quot;
+PASS text_j10.autocapitalize is &quot;words&quot;
+PASS text_j10.getAttribute('autocapitalize') is &quot;wOrDs&quot;
+
+Testing textareas inside of a form with no default.
+PASS text_x1.autocapitalize is &quot;&quot;
+PASS text_x1.getAttribute('autocapitalize') is null
+PASS text_x2.autocapitalize is &quot;&quot;
+PASS text_x2.getAttribute('autocapitalize') is &quot;&quot;
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsautocapitalizeattributehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/autocapitalize-attribute.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/autocapitalize-attribute.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/autocapitalize-attribute.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,189 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;div style=&quot;display:none&quot;&gt;
+    &lt;input id=&quot;i1&quot;&gt;
+    &lt;input id=&quot;i2&quot; autocapitalize=&quot;&quot;&gt;
+    &lt;input id=&quot;i3&quot; autocapitalize=&quot;on&quot;&gt;
+    &lt;input id=&quot;i4&quot; autocapitalize=&quot;off&quot;&gt;
+    &lt;input id=&quot;i5&quot; autocapitalize=&quot;none&quot;&gt;
+    &lt;input id=&quot;i6&quot; autocapitalize=&quot;words&quot;&gt;
+    &lt;input id=&quot;i7&quot; autocapitalize=&quot;sentences&quot;&gt;
+    &lt;input id=&quot;i8&quot; autocapitalize=&quot;characters&quot;&gt;
+    &lt;input id=&quot;i9&quot; autocapitalize=&quot;unknown&quot;&gt;
+    &lt;input id=&quot;i10&quot; autocapitalize=&quot;wOrDs&quot;&gt;
+
+    &lt;textarea id=&quot;text_i1&quot;&gt;&lt;/textarea&gt;
+    &lt;textarea id=&quot;text_i2&quot; autocapitalize=&quot;&quot;&gt;&lt;/textarea&gt;
+    &lt;textarea id=&quot;text_i3&quot; autocapitalize=&quot;on&quot;&gt;&lt;/textarea&gt;
+    &lt;textarea id=&quot;text_i4&quot; autocapitalize=&quot;off&quot;&gt;&lt;/textarea&gt;
+    &lt;textarea id=&quot;text_i5&quot; autocapitalize=&quot;none&quot;&gt;&lt;/textarea&gt;
+    &lt;textarea id=&quot;text_i6&quot; autocapitalize=&quot;words&quot;&gt;&lt;/textarea&gt;
+    &lt;textarea id=&quot;text_i7&quot; autocapitalize=&quot;sentences&quot;&gt;&lt;/textarea&gt;
+    &lt;textarea id=&quot;text_i8&quot; autocapitalize=&quot;characters&quot;&gt;&lt;/textarea&gt;
+    &lt;textarea id=&quot;text_i9&quot; autocapitalize=&quot;unknown&quot;&gt;&lt;/textarea&gt;
+    &lt;textarea id=&quot;text_i10&quot; autocapitalize=&quot;wOrDs&quot;&gt;&lt;/textarea&gt;
+
+    &lt;form id=&quot;form1&quot;&gt;
+        &lt;input id=&quot;x1&quot;&gt;
+        &lt;input id=&quot;x2&quot; autocapitalize=&quot;&quot;&gt;
+        &lt;textarea id=&quot;text_x1&quot;&gt;&lt;/textarea&gt;
+        &lt;textarea id=&quot;text_x2&quot; autocapitalize=&quot;&quot;&gt;&lt;/textarea&gt;
+    &lt;/form&gt;
+    &lt;form id=&quot;form2&quot; autocapitalize=&quot;&quot;&gt;&lt;/form&gt;
+    &lt;form id=&quot;form3&quot; autocapitalize=&quot;on&quot;&gt;&lt;/form&gt;
+    &lt;form id=&quot;form4&quot; autocapitalize=&quot;wOrDs&quot;&gt;&lt;/form&gt;
+    &lt;form id=&quot;form5&quot; autocapitalize=&quot;characters&quot;&gt;
+        &lt;input id=&quot;j1&quot;&gt;
+        &lt;input id=&quot;j2&quot; autocapitalize=&quot;&quot;&gt;
+        &lt;input id=&quot;j3&quot; autocapitalize=&quot;on&quot;&gt;
+        &lt;input id=&quot;j4&quot; autocapitalize=&quot;off&quot;&gt;
+        &lt;input id=&quot;j5&quot; autocapitalize=&quot;none&quot;&gt;
+        &lt;input id=&quot;j6&quot; autocapitalize=&quot;words&quot;&gt;
+        &lt;input id=&quot;j7&quot; autocapitalize=&quot;sentences&quot;&gt;
+        &lt;input id=&quot;j8&quot; autocapitalize=&quot;characters&quot;&gt;
+        &lt;input id=&quot;j9&quot; autocapitalize=&quot;unknown&quot;&gt;
+        &lt;input id=&quot;j10&quot; autocapitalize=&quot;wOrDs&quot;&gt;
+        &lt;textarea id=&quot;text_j1&quot;&gt;&lt;/textarea&gt;
+        &lt;textarea id=&quot;text_j2&quot; autocapitalize=&quot;&quot;&gt;&lt;/textarea&gt;
+        &lt;textarea id=&quot;text_j3&quot; autocapitalize=&quot;on&quot;&gt;&lt;/textarea&gt;
+        &lt;textarea id=&quot;text_j4&quot; autocapitalize=&quot;off&quot;&gt;&lt;/textarea&gt;
+        &lt;textarea id=&quot;text_j5&quot; autocapitalize=&quot;none&quot;&gt;&lt;/textarea&gt;
+        &lt;textarea id=&quot;text_j6&quot; autocapitalize=&quot;words&quot;&gt;&lt;/textarea&gt;
+        &lt;textarea id=&quot;text_j7&quot; autocapitalize=&quot;sentences&quot;&gt;&lt;/textarea&gt;
+        &lt;textarea id=&quot;text_j8&quot; autocapitalize=&quot;characters&quot;&gt;&lt;/textarea&gt;
+        &lt;textarea id=&quot;text_j9&quot; autocapitalize=&quot;unknown&quot;&gt;&lt;/textarea&gt;
+        &lt;textarea id=&quot;text_j10&quot; autocapitalize=&quot;wOrDs&quot;&gt;&lt;/textarea&gt;
+    &lt;/form&gt;
+&lt;/div&gt;
+&lt;script&gt;
+description('Test the &quot;autocapitalize&quot; attribute values and fallback values.');
+
+debug('Testing inputs outside of a form.');
+shouldBe(&quot;i1.autocapitalize&quot;, '&quot;&quot;');
+shouldBe(&quot;i1.getAttribute('autocapitalize')&quot;, 'null');
+shouldBe(&quot;i2.autocapitalize&quot;, '&quot;&quot;');
+shouldBe(&quot;i2.getAttribute('autocapitalize')&quot;, '&quot;&quot;');
+shouldBe(&quot;i3.autocapitalize&quot;, '&quot;sentences&quot;'); // on =&gt; &quot;sentences&quot;.
+shouldBe(&quot;i3.getAttribute('autocapitalize')&quot;, '&quot;on&quot;');
+shouldBe(&quot;i4.autocapitalize&quot;, '&quot;none&quot;'); // off =&gt; &quot;none&quot;.
+shouldBe(&quot;i4.getAttribute('autocapitalize')&quot;, '&quot;off&quot;');
+shouldBe(&quot;i5.autocapitalize&quot;, '&quot;none&quot;');
+shouldBe(&quot;i5.getAttribute('autocapitalize')&quot;, '&quot;none&quot;');
+shouldBe(&quot;i6.autocapitalize&quot;, '&quot;words&quot;');
+shouldBe(&quot;i6.getAttribute('autocapitalize')&quot;, '&quot;words&quot;');
+shouldBe(&quot;i7.autocapitalize&quot;, '&quot;sentences&quot;');
+shouldBe(&quot;i7.getAttribute('autocapitalize')&quot;, '&quot;sentences&quot;');
+shouldBe(&quot;i8.autocapitalize&quot;, '&quot;characters&quot;');
+shouldBe(&quot;i8.getAttribute('autocapitalize')&quot;, '&quot;characters&quot;');
+shouldBe(&quot;i9.autocapitalize&quot;, '&quot;sentences&quot;'); // Unknown value falls back to sentences.
+shouldBe(&quot;i9.getAttribute('autocapitalize')&quot;, '&quot;unknown&quot;');
+shouldBe(&quot;i10.autocapitalize&quot;, '&quot;words&quot;');
+shouldBe(&quot;i10.getAttribute('autocapitalize')&quot;, '&quot;wOrDs&quot;');
+
+debug('');
+debug('Testing forms.');
+shouldBe(&quot;form1.autocapitalize&quot;, '&quot;&quot;');
+shouldBe(&quot;form1.getAttribute('autocapitalize')&quot;, 'null');
+shouldBe(&quot;form2.autocapitalize&quot;, '&quot;&quot;');
+shouldBe(&quot;form2.getAttribute('autocapitalize')&quot;, '&quot;&quot;');
+shouldBe(&quot;form3.autocapitalize&quot;, '&quot;sentences&quot;'); // on =&gt; &quot;sentences&quot;.
+shouldBe(&quot;form3.getAttribute('autocapitalize')&quot;, '&quot;on&quot;');
+shouldBe(&quot;form4.autocapitalize&quot;, '&quot;words&quot;');
+shouldBe(&quot;form4.getAttribute('autocapitalize')&quot;, '&quot;wOrDs&quot;');
+shouldBe(&quot;form5.autocapitalize&quot;, '&quot;characters&quot;');
+shouldBe(&quot;form5.getAttribute('autocapitalize')&quot;, '&quot;characters&quot;');
+
+debug('');
+debug('Testing inputs inside of a form with a default of &quot;characters&quot;.');
+shouldBe(&quot;j1.autocapitalize&quot;, '&quot;characters&quot;'); // Fallback to form, which is &quot;characters&quot;.
+shouldBe(&quot;j1.getAttribute('autocapitalize')&quot;, 'null');
+shouldBe(&quot;j2.autocapitalize&quot;, '&quot;characters&quot;'); // Fallback to form, which is &quot;characters&quot;.
+shouldBe(&quot;j2.getAttribute('autocapitalize')&quot;, '&quot;&quot;');
+shouldBe(&quot;j3.autocapitalize&quot;, '&quot;sentences&quot;'); // on =&gt; &quot;sentences&quot;.
+shouldBe(&quot;j3.getAttribute('autocapitalize')&quot;, '&quot;on&quot;');
+shouldBe(&quot;j4.autocapitalize&quot;, '&quot;none&quot;'); // off =&gt; &quot;none&quot;.
+shouldBe(&quot;j4.getAttribute('autocapitalize')&quot;, '&quot;off&quot;');
+shouldBe(&quot;j5.autocapitalize&quot;, '&quot;none&quot;');
+shouldBe(&quot;j5.getAttribute('autocapitalize')&quot;, '&quot;none&quot;');
+shouldBe(&quot;j6.autocapitalize&quot;, '&quot;words&quot;');
+shouldBe(&quot;j6.getAttribute('autocapitalize')&quot;, '&quot;words&quot;');
+shouldBe(&quot;j7.autocapitalize&quot;, '&quot;sentences&quot;');
+shouldBe(&quot;j7.getAttribute('autocapitalize')&quot;, '&quot;sentences&quot;');
+shouldBe(&quot;j8.autocapitalize&quot;, '&quot;characters&quot;');
+shouldBe(&quot;j8.getAttribute('autocapitalize')&quot;, '&quot;characters&quot;');
+shouldBe(&quot;j9.autocapitalize&quot;, '&quot;sentences&quot;'); // Unknown value falls back to sentences.
+shouldBe(&quot;j9.getAttribute('autocapitalize')&quot;, '&quot;unknown&quot;');
+shouldBe(&quot;j10.autocapitalize&quot;, '&quot;words&quot;');
+shouldBe(&quot;j10.getAttribute('autocapitalize')&quot;, '&quot;wOrDs&quot;');
+
+debug('');
+debug('Testing inputs inside of a form with no default.');
+shouldBe(&quot;x1.autocapitalize&quot;, '&quot;&quot;'); // Fallback to form, which is default.
+shouldBe(&quot;x1.getAttribute('autocapitalize')&quot;, 'null');
+shouldBe(&quot;x2.autocapitalize&quot;, '&quot;&quot;'); // Fallback to form, which is default.
+shouldBe(&quot;x2.getAttribute('autocapitalize')&quot;, '&quot;&quot;');
+
+debug('');
+debug('Testing textareas outside of a form.');
+shouldBe(&quot;text_i1.autocapitalize&quot;, '&quot;&quot;');
+shouldBe(&quot;text_i1.getAttribute('autocapitalize')&quot;, 'null');
+shouldBe(&quot;text_i2.autocapitalize&quot;, '&quot;&quot;');
+shouldBe(&quot;text_i2.getAttribute('autocapitalize')&quot;, '&quot;&quot;');
+shouldBe(&quot;text_i3.autocapitalize&quot;, '&quot;sentences&quot;'); // on =&gt; &quot;sentences&quot;.
+shouldBe(&quot;text_i3.getAttribute('autocapitalize')&quot;, '&quot;on&quot;');
+shouldBe(&quot;text_i4.autocapitalize&quot;, '&quot;none&quot;'); // off =&gt; &quot;none&quot;.
+shouldBe(&quot;text_i4.getAttribute('autocapitalize')&quot;, '&quot;off&quot;');
+shouldBe(&quot;text_i5.autocapitalize&quot;, '&quot;none&quot;');
+shouldBe(&quot;text_i5.getAttribute('autocapitalize')&quot;, '&quot;none&quot;');
+shouldBe(&quot;text_i6.autocapitalize&quot;, '&quot;words&quot;');
+shouldBe(&quot;text_i6.getAttribute('autocapitalize')&quot;, '&quot;words&quot;');
+shouldBe(&quot;text_i7.autocapitalize&quot;, '&quot;sentences&quot;');
+shouldBe(&quot;text_i7.getAttribute('autocapitalize')&quot;, '&quot;sentences&quot;');
+shouldBe(&quot;text_i8.autocapitalize&quot;, '&quot;characters&quot;');
+shouldBe(&quot;text_i8.getAttribute('autocapitalize')&quot;, '&quot;characters&quot;');
+shouldBe(&quot;text_i9.autocapitalize&quot;, '&quot;sentences&quot;'); // Unknown value falls back to sentences.
+shouldBe(&quot;text_i9.getAttribute('autocapitalize')&quot;, '&quot;unknown&quot;');
+shouldBe(&quot;text_i10.autocapitalize&quot;, '&quot;words&quot;');
+shouldBe(&quot;text_i10.getAttribute('autocapitalize')&quot;, '&quot;wOrDs&quot;');
+
+debug('');
+debug('Testing textareas inside of a form with a default of &quot;characters&quot;.');
+shouldBe(&quot;text_j1.autocapitalize&quot;, '&quot;characters&quot;'); // Fallback to form, which is &quot;characters&quot;.
+shouldBe(&quot;text_j1.getAttribute('autocapitalize')&quot;, 'null');
+shouldBe(&quot;text_j2.autocapitalize&quot;, '&quot;characters&quot;'); // Fallback to form, which is &quot;characters&quot;.
+shouldBe(&quot;text_j2.getAttribute('autocapitalize')&quot;, '&quot;&quot;');
+shouldBe(&quot;text_j3.autocapitalize&quot;, '&quot;sentences&quot;'); // on =&gt; &quot;sentences&quot;.
+shouldBe(&quot;text_j3.getAttribute('autocapitalize')&quot;, '&quot;on&quot;');
+shouldBe(&quot;text_j4.autocapitalize&quot;, '&quot;none&quot;'); // off =&gt; &quot;none&quot;.
+shouldBe(&quot;text_j4.getAttribute('autocapitalize')&quot;, '&quot;off&quot;');
+shouldBe(&quot;text_j5.autocapitalize&quot;, '&quot;none&quot;');
+shouldBe(&quot;text_j5.getAttribute('autocapitalize')&quot;, '&quot;none&quot;');
+shouldBe(&quot;text_j6.autocapitalize&quot;, '&quot;words&quot;');
+shouldBe(&quot;text_j6.getAttribute('autocapitalize')&quot;, '&quot;words&quot;');
+shouldBe(&quot;text_j7.autocapitalize&quot;, '&quot;sentences&quot;');
+shouldBe(&quot;text_j7.getAttribute('autocapitalize')&quot;, '&quot;sentences&quot;');
+shouldBe(&quot;text_j8.autocapitalize&quot;, '&quot;characters&quot;');
+shouldBe(&quot;text_j8.getAttribute('autocapitalize')&quot;, '&quot;characters&quot;');
+shouldBe(&quot;text_j9.autocapitalize&quot;, '&quot;sentences&quot;'); // Unknown value falls back to sentences.
+shouldBe(&quot;text_j9.getAttribute('autocapitalize')&quot;, '&quot;unknown&quot;');
+shouldBe(&quot;text_j10.autocapitalize&quot;, '&quot;words&quot;');
+shouldBe(&quot;text_j10.getAttribute('autocapitalize')&quot;, '&quot;wOrDs&quot;');
+
+debug('');
+debug('Testing textareas inside of a form with no default.');
+shouldBe(&quot;text_x1.autocapitalize&quot;, '&quot;&quot;'); // Fallback to form, which is default.
+shouldBe(&quot;text_x1.getAttribute('autocapitalize')&quot;, 'null');
+shouldBe(&quot;text_x2.autocapitalize&quot;, '&quot;&quot;'); // Fallback to form, which is default.
+shouldBe(&quot;text_x2.getAttribute('autocapitalize')&quot;, '&quot;&quot;');
+
+var successfullyParsed = true;
+&lt;/script&gt;
+&lt;script src=&quot;../../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsborderlessinputgradientexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/borderless-input-gradient-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/borderless-input-gradient-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/borderless-input-gradient-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderTextControl {INPUT} at (2,2) size 136x22 [bgcolor=#008000] [border: (1px solid #4C4C4C)]
+      RenderBR {BR} at (139,16) size 1x0
+      RenderTextControl {INPUT} at (2,27) size 134x20 [bgcolor=#008000]
+      RenderBR {BR} at (137,40) size 1x0
+      RenderTextControl {INPUT} at (2,50) size 134x20 [bgcolor=#008000]
+      RenderBR {BR} at (137,63) size 1x0
+      RenderTextControl {INPUT} at (2,73) size 136x21 [bgcolor=#008000] [border: none (1px solid #4C4C4C)]
+      RenderBR {BR} at (139,86) size 1x0
+      RenderTextControl {INPUT} at (2,97) size 136x22 [bgcolor=#008000] [border: (1px solid #00000000) (1px solid #4C4C4C)]
+      RenderBR {BR} at (139,111) size 1x0
+      RenderTextControl {INPUT} at (2,122) size 136x22 [bgcolor=#008000] [border: (1px solid #4C4C4C)]
+        RenderFlexibleBox {DIV} at (6,3) size 123x15
+          RenderBlock {DIV} at (0,7) size 0x0
+          RenderBlock {DIV} at (0,0) size 123x14
+          RenderBlock {DIV} at (122,7) size 1x0
+      RenderBR {BR} at (139,136) size 1x0
+      RenderTextControl {INPUT} at (2,147) size 134x20 [bgcolor=#008000]
+        RenderFlexibleBox {DIV} at (5,2) size 123x15
+          RenderBlock {DIV} at (0,7) size 0x0
+          RenderBlock {DIV} at (0,0) size 123x14
+          RenderBlock {DIV} at (122,7) size 1x0
+      RenderBR {BR} at (137,160) size 1x0
+      RenderTextControl {INPUT} at (2,170) size 134x20 [bgcolor=#008000]
+        RenderFlexibleBox {DIV} at (5,2) size 123x15
+          RenderBlock {DIV} at (0,7) size 0x0
+          RenderBlock {DIV} at (0,0) size 123x14
+          RenderBlock {DIV} at (122,7) size 1x0
+      RenderBR {BR} at (137,183) size 1x0
+      RenderTextControl {INPUT} at (2,193) size 136x21 [bgcolor=#008000] [border: none (1px solid #4C4C4C)]
+        RenderFlexibleBox {DIV} at (6,2) size 123x15
+          RenderBlock {DIV} at (0,7) size 0x0
+          RenderBlock {DIV} at (0,0) size 123x14
+          RenderBlock {DIV} at (122,7) size 1x0
+      RenderBR {BR} at (139,206) size 1x0
+      RenderTextControl {INPUT} at (2,217) size 136x22 [bgcolor=#008000] [border: (1px solid #00000000) (1px solid #4C4C4C)]
+        RenderFlexibleBox {DIV} at (6,3) size 123x15
+          RenderBlock {DIV} at (0,7) size 0x0
+          RenderBlock {DIV} at (0,0) size 123x14
+          RenderBlock {DIV} at (122,7) size 1x0
+      RenderBR {BR} at (139,231) size 1x0
+      RenderBR {BR} at (154,278) size 0x0
+      RenderBR {BR} at (152,314) size 0x0
+      RenderBR {BR} at (152,350) size 0x0
+      RenderBR {BR} at (154,387) size 0x0
+      RenderBR {BR} at (154,425) size 0x0
+layer at (17,13) size 122x14
+  RenderBlock {DIV} at (6,3) size 123x15
+layer at (16,37) size 122x14
+  RenderBlock {DIV} at (5,2) size 123x15
+layer at (16,60) size 122x14
+  RenderBlock {DIV} at (5,2) size 123x15
+layer at (17,83) size 122x14
+  RenderBlock {DIV} at (6,2) size 123x15
+layer at (17,108) size 122x14
+  RenderBlock {DIV} at (6,3) size 123x15
+layer at (17,133) size 122x14
+  RenderBlock {DIV} at (0,0) size 123x14
+layer at (16,157) size 122x14
+  RenderBlock {DIV} at (0,0) size 123x14
+layer at (16,180) size 122x14
+  RenderBlock {DIV} at (0,0) size 123x14
+layer at (17,203) size 122x14
+  RenderBlock {DIV} at (0,0) size 123x14
+layer at (17,228) size 122x14
+  RenderBlock {DIV} at (0,0) size 123x14
+layer at (10,250) size 150x34 clip at (11,251) size 148x32
+  RenderTextControl {TEXTAREA} at (2,242) size 150x34 [bgcolor=#008000] [border: (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (3,3) size 144x14
+layer at (10,288) size 148x32
+  RenderTextControl {TEXTAREA} at (2,280) size 148x32 [bgcolor=#008000]
+    RenderBlock {DIV} at (2,2) size 144x14
+layer at (10,324) size 148x32
+  RenderTextControl {TEXTAREA} at (2,316) size 148x32 [bgcolor=#008000]
+    RenderBlock {DIV} at (2,2) size 144x14
+layer at (10,360) size 150x33 clip at (11,360) size 148x32
+  RenderTextControl {TEXTAREA} at (2,352) size 150x33 [bgcolor=#008000] [border: none (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (3,2) size 144x14
+layer at (10,397) size 150x34 clip at (11,398) size 148x32
+  RenderTextControl {TEXTAREA} at (2,389) size 150x34 [bgcolor=#008000] [border: (1px solid #00000000) (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (3,3) size 144x14
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsborderlessinputgradienthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/borderless-input-gradient.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/borderless-input-gradient.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/borderless-input-gradient.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!--
+  Each set consists of a regular field, with its normal
+  border and styling, followed by a top borderless or
+  transparent border versions of the same field. On iOS
+  we expect these fields to not draw their theme'd gradient.
+--&gt;
+
+&lt;style&gt;
+input, textarea { background: green; }
+&lt;/style&gt;
+
+&lt;input&gt;&lt;br&gt;
+&lt;input style=&quot;border:none;&quot;&gt;&lt;br&gt;
+&lt;input style=&quot;border:0;&quot;&gt;&lt;br&gt;
+&lt;input style=&quot;border-top-width:0;&quot;&gt;&lt;br&gt;
+&lt;input style=&quot;border-top-color:transparent;&quot;&gt;&lt;br&gt;
+
+
+&lt;input type=&quot;search&quot;&gt;&lt;br&gt;
+&lt;input type=&quot;search&quot; style=&quot;border:none;&quot;&gt;&lt;br&gt;
+&lt;input type=&quot;search&quot; style=&quot;border:0;&quot;&gt;&lt;br&gt;
+&lt;input type=&quot;search&quot; style=&quot;border-top-width:0;&quot;&gt;&lt;br&gt;
+&lt;input type=&quot;search&quot; style=&quot;border-top-color:transparent;&quot;&gt;&lt;br&gt;
+
+&lt;textarea&gt;&lt;/textarea&gt;&lt;br&gt;
+&lt;textarea style=&quot;border:none;&quot;&gt;&lt;/textarea&gt;&lt;br&gt;
+&lt;textarea style=&quot;border:0;&quot;&gt;&lt;/textarea&gt;&lt;br&gt;
+&lt;textarea style=&quot;border-top-width:0;&quot;&gt;&lt;/textarea&gt;&lt;br&gt;
+&lt;textarea style=&quot;border-top-color:transparent;&quot;&gt;&lt;/textarea&gt;&lt;br&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsdateinputdecorationsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/date-input-decorations-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/date-input-decorations-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/date-input-decorations-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+CONSOLE MESSAGE: line 61: InvalidStateError: DOM Exception 11: An attempt was made to use an object that is not, or is no longer, usable.
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x595
+  RenderBlock {HTML} at (0,0) size 800x595
+    RenderBody {BODY} at (8,8) size 784x579
+      RenderBlock {FORM} at (0,0) size 784x579
+        RenderBlock {DIV} at (0,0) size 784x155
+          RenderBR {BR} at (101,2) size 0x19
+          RenderTextControl {INPUT} at (2,28) size 136x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+          RenderBR {BR} at (139,27) size 1x19
+          RenderBR {BR} at (154,51) size 0x19
+          RenderBR {BR} at (116,79) size 0x19
+          RenderBR {BR} at (82,107) size 0x19
+          RenderBlock {INPUT} at (2,141) size 13x8 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+            RenderBlock {DIV} at (6,3) size 1x1
+          RenderBR {BR} at (17,135) size 0x19
+        RenderBlock (anonymous) at (0,155) size 784x20
+          RenderBR {BR} at (0,0) size 0x19
+        RenderBlock {DIV} at (0,175) size 784x157
+          RenderBR {BR} at (212,0) size 0x19
+          RenderTextControl {INPUT} at (0,30) size 213x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+          RenderBR {BR} at (213,29) size 0x19
+          RenderBR {BR} at (212,53) size 0x19
+          RenderBR {BR} at (212,81) size 0x19
+          RenderBR {BR} at (212,109) size 0x19
+          RenderBlock {INPUT} at (0,143) size 213x8 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+            RenderBlock {DIV} at (6,3) size 201x1
+          RenderBR {BR} at (213,137) size 0x19
+        RenderBlock (anonymous) at (0,332) size 784x20
+          RenderBR {BR} at (0,0) size 0x19
+        RenderBlock {DIV} at (0,352) size 784x183
+          RenderBR {BR} at (236,1) size 0x19
+          RenderTextControl {INPUT} at (2,35) size 237x28 [color=#008000] [bgcolor=#FFFFFF] [border: (1px solid #008000)]
+          RenderBR {BR} at (241,38) size 0x19
+          RenderBR {BR} at (397,65) size 0x19
+          RenderBR {BR} at (277,98) size 0x19
+          RenderBR {BR} at (174,131) size 0x19
+          RenderBlock {INPUT} at (2,167) size 17x10 [color=#008000] [bgcolor=#FFFFFF] [border: (1px solid #008000)]
+            RenderBlock {DIV} at (8,4) size 1x0
+          RenderBR {BR} at (21,163) size 0x19
+        RenderBlock (anonymous) at (0,535) size 784x44
+          RenderBR {BR} at (0,0) size 0x19
+          RenderButton {INPUT} at (2,22) size 59x20 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (12,3) size 35x14
+              RenderText at (0,0) size 35x14
+                text run at (0,0) width 35: &quot;Submit&quot;
+          RenderText {#text} at (0,0) size 0x0
+layer at (10,10) size 97x22 clip at (11,11) size 95x20
+  RenderFlexibleBox {INPUT} at (2,2) size 97x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (6,4) size 63x14
+      RenderText {#text} at (0,0) size 63x14
+        text run at (0,0) width 63: &quot;Apr 27, 2011&quot;
+layer at (17,39) size 122x14
+  RenderBlock {DIV} at (6,3) size 123x15
+layer at (10,63) size 150x22 clip at (11,64) size 148x20
+  RenderFlexibleBox {INPUT} at (2,55) size 150x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (6,11) size 0x0
+layer at (10,91) size 112x22 clip at (11,92) size 110x20
+  RenderFlexibleBox {INPUT} at (2,83) size 112x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (6,11) size 0x0
+layer at (10,119) size 78x22 clip at (11,120) size 76x20
+  RenderFlexibleBox {INPUT} at (2,111) size 78x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (6,11) size 0x0
+layer at (8,187) size 212x22 clip at (9,188) size 210x20
+  RenderFlexibleBox {INPUT} at (0,4) size 212x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (6,11) size 0x0
+layer at (15,216) size 200x14
+  RenderBlock {DIV} at (6,3) size 201x15
+layer at (8,240) size 212x22 clip at (9,241) size 210x20
+  RenderFlexibleBox {INPUT} at (0,57) size 212x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (6,11) size 0x0
+layer at (8,268) size 212x22 clip at (9,269) size 210x20
+  RenderFlexibleBox {INPUT} at (0,85) size 212x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (6,11) size 0x0
+layer at (8,296) size 212x22 clip at (9,297) size 210x20
+  RenderFlexibleBox {INPUT} at (0,113) size 212x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (6,11) size 0x0
+layer at (10,362) size 232x29 clip at (11,363) size 230x27
+  RenderFlexibleBox {INPUT} at (2,2) size 232x29 [color=#008000] [bgcolor=#FFFFFF] [border: (1px solid #008000)]
+    RenderBlock {DIV} at (8,14) size 0x1
+layer at (19,399) size 220x18
+  RenderBlock {DIV} at (8,4) size 221x18
+layer at (10,426) size 393x29 clip at (11,427) size 391x27
+  RenderFlexibleBox {INPUT} at (2,66) size 393x29 [color=#008000] [bgcolor=#FFFFFF] [border: (1px solid #008000)]
+    RenderBlock {DIV} at (8,14) size 0x1
+layer at (10,459) size 273x29 clip at (11,460) size 271x27
+  RenderFlexibleBox {INPUT} at (2,99) size 273x29 [color=#008000] [bgcolor=#FFFFFF] [border: (1px solid #008000)]
+    RenderBlock {DIV} at (8,14) size 0x1
+layer at (10,492) size 170x29 clip at (11,493) size 168x27
+  RenderFlexibleBox {INPUT} at (2,132) size 170x29 [color=#008000] [bgcolor=#FFFFFF] [border: (1px solid #008000)]
+    RenderBlock {DIV} at (8,14) size 0x1
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsdateinputdecorationshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/date-input-decorations.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/date-input-decorations.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/date-input-decorations.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;title&gt;Date Input Test&lt;/title&gt;
+    &lt;style&gt;
+    .fixed-width input {
+        width: 200px;
+    }
+    .flavored input {
+        letter-spacing: 8px;
+        border-color: green;
+        color: green;
+        font-size: 15px;
+        font-family: georgia, serif;
+        font-weight: bold;
+    }
+    &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;form method=&quot;get&quot; action=&quot;#&quot;&gt;
+        &lt;div class=&quot;regular&quot;&gt;
+            &lt;input type=&quot;date&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;datetime&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;datetime-local&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;month&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;time&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;week&quot;&gt;&lt;br&gt;
+        &lt;/div&gt;
+        &lt;br&gt;
+        &lt;div class=&quot;fixed-width&quot;&gt;
+            &lt;input type=&quot;date&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;datetime&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;datetime-local&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;month&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;time&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;week&quot;&gt;&lt;br&gt;
+        &lt;/div&gt;
+        &lt;br&gt;
+        &lt;div class=&quot;flavored&quot;&gt;
+            &lt;input type=&quot;date&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;datetime&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;datetime-local&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;month&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;time&quot;&gt;&lt;br&gt;
+            &lt;input type=&quot;week&quot;&gt;&lt;br&gt;
+        &lt;/div&gt;
+        &lt;br&gt;
+        &lt;input type=&quot;submit&quot; value=&quot;Submit&quot;&gt;
+    &lt;/form&gt;
+    &lt;script&gt;
+    // Tue Apr 26 2011 18:56:20 GMT-0700 (PDT) which is Wed Apr 27 2011 01:56:20 GMT.
+    var date = new Date(1303869380391);
+    var dateAsNumber = +date;
+    var inputs = document.getElementsByTagName('input');
+    for (var i=0, len=inputs.length; i&lt;len; ++i) {
+        var input = inputs[i];
+        if (input.type === &quot;submit&quot;)
+            continue;
+        input.name = i;
+        if (&quot;valueAsNumber&quot; in input &amp;&amp; input.type !== &quot;month&quot;)
+            input.valueAsNumber = dateAsNumber;
+        else if (&quot;valueAsDate&quot; in input)
+            input.valueAsDate = date;
+    }
+    &lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsformcontrolsonbackgroundsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/form-controls-on-backgrounds-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/form-controls-on-backgrounds-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/form-controls-on-backgrounds-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,191 @@
</span><ins>+layer at (0,0) size 820x825
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x825
+  RenderBlock {HTML} at (0,0) size 800x825
+    RenderBody {BODY} at (0,0) size 800x825
+      RenderBlock {DIV} at (0,0) size 820x275
+        RenderBlock {DIV} at (10,10) size 800x25
+          RenderText {#text} at (0,1) size 34x19
+            text run at (0,1) width 34: &quot;Text:&quot;
+          RenderTextControl {INPUT} at (35,2) size 137x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+        RenderBlock {DIV} at (10,35) size 800x25
+          RenderText {#text} at (0,1) size 66x19
+            text run at (0,1) width 66: &quot;Password:&quot;
+          RenderTextControl {INPUT} at (67,2) size 137x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+        RenderBlock {DIV} at (10,60) size 800x24
+          RenderButton {INPUT} at (2,2) size 59x20 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (12,3) size 35x14
+              RenderText at (0,0) size 35x14
+                text run at (0,0) width 35: &quot;Submit&quot;
+          RenderText {#text} at (62,1) size 5x19
+            text run at (62,1) width 5: &quot; &quot;
+          RenderButton {BUTTON} at (68,2) size 67x20 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (12,3) size 43x14
+              RenderText {#text} at (0,0) size 43x14
+                text run at (0,0) width 43: &quot;Click Me&quot;
+        RenderBlock {DIV} at (10,84) size 800x86
+          RenderText {#text} at (0,0) size 55x19
+            text run at (0,0) width 55: &quot;Buttons:&quot;
+          RenderBR {BR} at (54,0) size 1x19
+          RenderBlock {INPUT} at (2,23) size 16x16 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+          RenderText {#text} at (20,22) size 65x19
+            text run at (20,22) width 65: &quot;Check me&quot;
+          RenderBR {BR} at (84,22) size 1x19
+          RenderBlock {INPUT} at (2,45) size 16x16 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+          RenderText {#text} at (20,44) size 66x19
+            text run at (20,44) width 66: &quot;Floor wax&quot;
+          RenderBR {BR} at (85,44) size 1x19
+          RenderBlock {INPUT} at (2,67) size 16x16 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+          RenderText {#text} at (20,66) size 101x19
+            text run at (20,66) width 101: &quot;Dessert topping&quot;
+        RenderBlock {DIV} at (10,170) size 800x24
+          RenderText {#text} at (0,1) size 40x19
+            text run at (0,1) width 40: &quot;Lists: &quot;
+          RenderMenuList {SELECT} at (41,2) size 87x20 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (6,3) size 74x14
+              RenderText at (0,0) size 54x14
+                text run at (0,0) width 54: &quot;Strawberry&quot;
+          RenderText {#text} at (129,1) size 5x19
+            text run at (129,1) width 5: &quot; &quot;
+          RenderMenuList {SELECT} at (135,2) size 87x20 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (6,3) size 74x14
+              RenderText at (0,0) size 0x14
+                text run at (0,0) width 0: &quot; &quot;
+          RenderText {#text} at (0,0) size 0x0
+        RenderBlock {DIV} at (10,194) size 800x71
+          RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,275) size 820x275 [color=#FFFFFF] [bgcolor=#000000]
+        RenderBlock {DIV} at (10,10) size 800x25
+          RenderText {#text} at (0,1) size 34x19
+            text run at (0,1) width 34: &quot;Text:&quot;
+          RenderTextControl {INPUT} at (35,2) size 137x22 [color=#000000] [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+        RenderBlock {DIV} at (10,35) size 800x25
+          RenderText {#text} at (0,1) size 66x19
+            text run at (0,1) width 66: &quot;Password:&quot;
+          RenderTextControl {INPUT} at (67,2) size 137x22 [color=#000000] [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+        RenderBlock {DIV} at (10,60) size 800x24
+          RenderButton {INPUT} at (2,2) size 59x20 [color=#000000] [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (12,3) size 35x14
+              RenderText at (0,0) size 35x14
+                text run at (0,0) width 35: &quot;Submit&quot;
+          RenderText {#text} at (62,1) size 5x19
+            text run at (62,1) width 5: &quot; &quot;
+          RenderButton {BUTTON} at (68,2) size 67x20 [color=#000000] [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (12,3) size 43x14
+              RenderText {#text} at (0,0) size 43x14
+                text run at (0,0) width 43: &quot;Click Me&quot;
+        RenderBlock {DIV} at (10,84) size 800x86
+          RenderText {#text} at (0,0) size 55x19
+            text run at (0,0) width 55: &quot;Buttons:&quot;
+          RenderBR {BR} at (54,0) size 1x19
+          RenderBlock {INPUT} at (2,23) size 16x16 [color=#000000] [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+          RenderText {#text} at (20,22) size 65x19
+            text run at (20,22) width 65: &quot;Check me&quot;
+          RenderBR {BR} at (84,22) size 1x19
+          RenderBlock {INPUT} at (2,45) size 16x16 [color=#000000] [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+          RenderText {#text} at (20,44) size 66x19
+            text run at (20,44) width 66: &quot;Floor wax&quot;
+          RenderBR {BR} at (85,44) size 1x19
+          RenderBlock {INPUT} at (2,67) size 16x16 [color=#000000] [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+          RenderText {#text} at (20,66) size 101x19
+            text run at (20,66) width 101: &quot;Dessert topping&quot;
+        RenderBlock {DIV} at (10,170) size 800x24
+          RenderText {#text} at (0,1) size 40x19
+            text run at (0,1) width 40: &quot;Lists: &quot;
+          RenderMenuList {SELECT} at (41,2) size 87x20 [color=#000000] [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (6,3) size 74x14
+              RenderText at (0,0) size 54x14
+                text run at (0,0) width 54: &quot;Strawberry&quot;
+          RenderText {#text} at (129,1) size 5x19
+            text run at (129,1) width 5: &quot; &quot;
+          RenderMenuList {SELECT} at (135,2) size 87x20 [color=#000000] [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (6,3) size 74x14
+              RenderText at (0,0) size 0x14
+                text run at (0,0) width 0: &quot; &quot;
+          RenderText {#text} at (0,0) size 0x0
+        RenderBlock {DIV} at (10,194) size 800x71
+          RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,550) size 820x275 [bgcolor=#808080]
+        RenderBlock {DIV} at (10,10) size 800x25
+          RenderText {#text} at (0,1) size 34x19
+            text run at (0,1) width 34: &quot;Text:&quot;
+          RenderTextControl {INPUT} at (35,2) size 137x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+        RenderBlock {DIV} at (10,35) size 800x25
+          RenderText {#text} at (0,1) size 66x19
+            text run at (0,1) width 66: &quot;Password:&quot;
+          RenderTextControl {INPUT} at (67,2) size 137x22 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+        RenderBlock {DIV} at (10,60) size 800x24
+          RenderButton {INPUT} at (2,2) size 59x20 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (12,3) size 35x14
+              RenderText at (0,0) size 35x14
+                text run at (0,0) width 35: &quot;Submit&quot;
+          RenderText {#text} at (62,1) size 5x19
+            text run at (62,1) width 5: &quot; &quot;
+          RenderButton {BUTTON} at (68,2) size 67x20 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (12,3) size 43x14
+              RenderText {#text} at (0,0) size 43x14
+                text run at (0,0) width 43: &quot;Click Me&quot;
+        RenderBlock {DIV} at (10,84) size 800x86
+          RenderText {#text} at (0,0) size 55x19
+            text run at (0,0) width 55: &quot;Buttons:&quot;
+          RenderBR {BR} at (54,0) size 1x19
+          RenderBlock {INPUT} at (2,23) size 16x16 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+          RenderText {#text} at (20,22) size 65x19
+            text run at (20,22) width 65: &quot;Check me&quot;
+          RenderBR {BR} at (84,22) size 1x19
+          RenderBlock {INPUT} at (2,45) size 16x16 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+          RenderText {#text} at (20,44) size 66x19
+            text run at (20,44) width 66: &quot;Floor wax&quot;
+          RenderBR {BR} at (85,44) size 1x19
+          RenderBlock {INPUT} at (2,67) size 16x16 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+          RenderText {#text} at (20,66) size 101x19
+            text run at (20,66) width 101: &quot;Dessert topping&quot;
+        RenderBlock {DIV} at (10,170) size 800x24
+          RenderText {#text} at (0,1) size 40x19
+            text run at (0,1) width 40: &quot;Lists: &quot;
+          RenderMenuList {SELECT} at (41,2) size 87x20 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (6,3) size 74x14
+              RenderText at (0,0) size 54x14
+                text run at (0,0) width 54: &quot;Strawberry&quot;
+          RenderText {#text} at (129,1) size 5x19
+            text run at (129,1) width 5: &quot; &quot;
+          RenderMenuList {SELECT} at (135,2) size 87x20 [bgcolor=#FFFFFF02] [border: (1px solid #4C4C4C)]
+            RenderBlock (anonymous) at (6,3) size 74x14
+              RenderText at (0,0) size 0x14
+                text run at (0,0) width 0: &quot; &quot;
+          RenderText {#text} at (0,0) size 0x0
+        RenderBlock {DIV} at (10,194) size 800x71
+          RenderText {#text} at (0,0) size 0x0
+layer at (52,15) size 122x14
+  RenderBlock {DIV} at (6,3) size 123x15
+layer at (84,40) size 122x14
+  RenderBlock {DIV} at (6,3) size 123x15
+layer at (12,196) size 272x62 clip at (13,197) size 270x60
+  RenderTextControl {TEXTAREA} at (2,2) size 272x62 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (3,3) size 266x28
+      RenderText {#text} at (3,0) size 44x28
+        text run at (3,0) width 44: &quot;Textarea&quot;
+        text run at (46,0) width 1: &quot; &quot;
+        text run at (3,14) width 19: &quot;      &quot;
+layer at (52,290) size 122x14
+  RenderBlock {DIV} at (6,3) size 123x15
+layer at (84,315) size 122x14
+  RenderBlock {DIV} at (6,3) size 123x15
+layer at (12,471) size 272x62 clip at (13,472) size 270x60
+  RenderTextControl {TEXTAREA} at (2,2) size 272x62 [color=#000000] [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (3,3) size 266x28
+      RenderText {#text} at (3,0) size 44x28
+        text run at (3,0) width 44: &quot;Textarea&quot;
+        text run at (46,0) width 1: &quot; &quot;
+        text run at (3,14) width 19: &quot;      &quot;
+layer at (52,565) size 122x14
+  RenderBlock {DIV} at (6,3) size 123x15
+layer at (84,590) size 122x14
+  RenderBlock {DIV} at (6,3) size 123x15
+layer at (12,746) size 272x62 clip at (13,747) size 270x60
+  RenderTextControl {TEXTAREA} at (2,2) size 272x62 [bgcolor=#FFFFFF] [border: (1px solid #4C4C4C)]
+    RenderBlock {DIV} at (3,3) size 266x28
+      RenderText {#text} at (3,0) size 44x28
+        text run at (3,0) width 44: &quot;Textarea&quot;
+        text run at (46,0) width 1: &quot; &quot;
+        text run at (3,14) width 19: &quot;      &quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsformcontrolsonbackgroundshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/form-controls-on-backgrounds.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/form-controls-on-backgrounds.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/form-controls-on-backgrounds.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,153 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+
+  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
+  &lt;style type=&quot;text/css&quot;&gt;
+    body {
+      margin: 0;
+    }
+    .wrapper {
+      display: block;
+      width: 100%;
+      padding: 10px;
+    }
+    
+    .black {
+      background-color: black;
+      color: white;
+    }
+
+    .gray {
+      background-color: gray;
+    }
+  &lt;/style&gt;
+
+&lt;/head&gt;
+&lt;body&gt;
+
+  &lt;div class=&quot;white wrapper&quot;&gt;
+    &lt;div&gt;Text:&lt;input type=&quot;text&quot;&gt;&lt;/input&gt;&lt;/div&gt;
+    &lt;div&gt;Password:&lt;input type=&quot;password&quot;&gt;&lt;/input&gt;&lt;/div&gt;
+    &lt;div&gt;&lt;input type=&quot;submit&quot;&gt;&lt;/input&gt; &lt;button&gt;Click Me&lt;/button&gt;&lt;/div&gt;
+
+    &lt;div&gt;Buttons:&lt;br&gt;
+    &lt;input type=&quot;checkbox&quot;&gt;Check me&lt;/input&gt;&lt;br&gt;
+    &lt;input type=&quot;radio&quot; name=&quot;foo&quot;&gt;Floor wax&lt;/input&gt;&lt;br&gt;
+    &lt;input type=&quot;radio&quot; name=&quot;foo&quot;&gt;Dessert topping&lt;/input&gt;
+    &lt;/div&gt;
+
+    &lt;div&gt;Lists:
+
+    &lt;select&gt;
+        &lt;option&gt;Strawberry&lt;/option&gt;
+        &lt;option&gt;Banana&lt;/option&gt;
+        &lt;option&gt;Chocolate&lt;/option&gt;
+        &lt;option&gt;Mint&lt;/option&gt;
+        &lt;option&gt;Lemon&lt;/option&gt;
+        &lt;option&gt;Orange&lt;/option&gt;
+        &lt;option&gt;Cinnamon&lt;/option&gt;
+    &lt;/select&gt;
+
+    &lt;select size=&quot;5&quot;&gt;
+        &lt;option&gt;Strawberry&lt;/option&gt;
+        &lt;option&gt;Banana&lt;/option&gt;
+        &lt;option&gt;Chocolate&lt;/option&gt;
+        &lt;option&gt;Mint&lt;/option&gt;
+        &lt;option&gt;Lemon&lt;/option&gt;
+        &lt;option&gt;Orange&lt;/option&gt;
+        &lt;option&gt;Cinnamon&lt;/option&gt;
+    &lt;/select&gt;
+    &lt;/div&gt;
+
+    &lt;div&gt;
+      &lt;textarea cols=&quot;40&quot; rows=&quot;4&quot;&gt;
+Textarea
+      &lt;/textarea&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div class=&quot;black wrapper&quot;&gt;
+    &lt;div&gt;Text:&lt;input type=&quot;text&quot;&gt;&lt;/input&gt;&lt;/div&gt;
+    &lt;div&gt;Password:&lt;input type=&quot;password&quot;&gt;&lt;/input&gt;&lt;/div&gt;
+    &lt;div&gt;&lt;input type=&quot;submit&quot;&gt;&lt;/input&gt; &lt;button&gt;Click Me&lt;/button&gt;&lt;/div&gt;
+
+    &lt;div&gt;Buttons:&lt;br&gt;
+    &lt;input type=&quot;checkbox&quot;&gt;Check me&lt;/input&gt;&lt;br&gt;
+    &lt;input type=&quot;radio&quot; name=&quot;foo&quot;&gt;Floor wax&lt;/input&gt;&lt;br&gt;
+    &lt;input type=&quot;radio&quot; name=&quot;foo&quot;&gt;Dessert topping&lt;/input&gt;
+    &lt;/div&gt;
+
+    &lt;div&gt;Lists:
+
+    &lt;select&gt;
+        &lt;option&gt;Strawberry&lt;/option&gt;
+        &lt;option&gt;Banana&lt;/option&gt;
+        &lt;option&gt;Chocolate&lt;/option&gt;
+        &lt;option&gt;Mint&lt;/option&gt;
+        &lt;option&gt;Lemon&lt;/option&gt;
+        &lt;option&gt;Orange&lt;/option&gt;
+        &lt;option&gt;Cinnamon&lt;/option&gt;
+    &lt;/select&gt;
+
+    &lt;select size=&quot;5&quot;&gt;
+        &lt;option&gt;Strawberry&lt;/option&gt;
+        &lt;option&gt;Banana&lt;/option&gt;
+        &lt;option&gt;Chocolate&lt;/option&gt;
+        &lt;option&gt;Mint&lt;/option&gt;
+        &lt;option&gt;Lemon&lt;/option&gt;
+        &lt;option&gt;Orange&lt;/option&gt;
+        &lt;option&gt;Cinnamon&lt;/option&gt;
+    &lt;/select&gt;
+    &lt;/div&gt;
+
+    &lt;div&gt;
+      &lt;textarea cols=&quot;40&quot; rows=&quot;4&quot;&gt;
+Textarea
+      &lt;/textarea&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div class=&quot;gray wrapper&quot;&gt;
+    &lt;div&gt;Text:&lt;input type=&quot;text&quot;&gt;&lt;/input&gt;&lt;/div&gt;
+    &lt;div&gt;Password:&lt;input type=&quot;password&quot;&gt;&lt;/input&gt;&lt;/div&gt;
+    &lt;div&gt;&lt;input type=&quot;submit&quot;&gt;&lt;/input&gt; &lt;button&gt;Click Me&lt;/button&gt;&lt;/div&gt;
+
+    &lt;div&gt;Buttons:&lt;br&gt;
+    &lt;input type=&quot;checkbox&quot;&gt;Check me&lt;/input&gt;&lt;br&gt;
+    &lt;input type=&quot;radio&quot; name=&quot;foo&quot;&gt;Floor wax&lt;/input&gt;&lt;br&gt;
+    &lt;input type=&quot;radio&quot; name=&quot;foo&quot;&gt;Dessert topping&lt;/input&gt;
+    &lt;/div&gt;
+
+    &lt;div&gt;Lists:
+
+    &lt;select&gt;
+        &lt;option&gt;Strawberry&lt;/option&gt;
+        &lt;option&gt;Banana&lt;/option&gt;
+        &lt;option&gt;Chocolate&lt;/option&gt;
+        &lt;option&gt;Mint&lt;/option&gt;
+        &lt;option&gt;Lemon&lt;/option&gt;
+        &lt;option&gt;Orange&lt;/option&gt;
+        &lt;option&gt;Cinnamon&lt;/option&gt;
+    &lt;/select&gt;
+
+    &lt;select size=&quot;5&quot;&gt;
+        &lt;option&gt;Strawberry&lt;/option&gt;
+        &lt;option&gt;Banana&lt;/option&gt;
+        &lt;option&gt;Chocolate&lt;/option&gt;
+        &lt;option&gt;Mint&lt;/option&gt;
+        &lt;option&gt;Lemon&lt;/option&gt;
+        &lt;option&gt;Orange&lt;/option&gt;
+        &lt;option&gt;Cinnamon&lt;/option&gt;
+    &lt;/select&gt;
+    &lt;/div&gt;
+
+    &lt;div&gt;
+      &lt;textarea cols=&quot;40&quot; rows=&quot;4&quot;&gt;
+Textarea
+      &lt;/textarea&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsrangeinputcontainertouchesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-container-touches-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-container-touches-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-container-touches-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+
+This tests touch events not on the slider thumb but on the slider are ignored by the thumb.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+First finger down on the slider's track.
+PASS #container touchstart
+Move that finger around. It should not do anything.
+Release the first finger.
+PASS #container touchend
+PASS sliderThumbMoved is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsrangeinputcontainertoucheshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-container-touches.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-container-touches.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-container-touches.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,99 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;style&gt;
+input[type=&quot;range&quot;] {
+  -webkit-appearance: none;
+  height: 100px;
+  width: 500px;
+  background: black;
+}
+
+input[type=&quot;range&quot;]::-webkit-slider-thumb {
+  -webkit-appearance: none;
+  background: blue;
+  width: 100px;
+  height: 100px;
+}
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;container&quot;&gt;&lt;input id=&quot;slider&quot; type=&quot;range&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var sliderThumbMoved = false;
+
+var container = document.getElementById(&quot;container&quot;);
+container.addEventListener(&quot;touchstart&quot;, function(event) {
+    testPassed(&quot;#container touchstart&quot;);
+}, false);
+container.addEventListener(&quot;touchend&quot;, function(event) {
+    testPassed(&quot;#container touchend&quot;);
+    endTest();
+}, false);
+
+var slider = document.getElementById(&quot;slider&quot;);
+slider.addEventListener(&quot;input&quot;, function(event) {
+    sliderThumbMoved = true;
+    testFailed(&quot;Slider Thumb should not have moved.&quot;);
+}, false);
+
+function endTest() {
+    if (window.testRunner) {
+        // We need to call the isSucccessfullyParsed function to output the correct TEST COMPLETE footer message.
+        shouldBeFalse(&quot;sliderThumbMoved&quot;);
+        successfullyParsed = true;
+        isSuccessfullyParsed();
+        testRunner.notifyDone();
+    }
+}
+
+
+const aGoodY = 70;
+const FIRST_FINGER = 1;
+
+function sendTouchSequence()
+{
+    // iOS &lt;input type=&quot;range&quot;&gt; uses identifier 0 as the &quot;NoIdentifier&quot;.
+    // So swallow touch point 0 and ignore it from now on. Currently
+    // a 0 identifier cannot happen on iOS.
+    eventSender.addTouchPoint(0, 0);
+
+    debug(&quot;First finger down on the slider's track.&quot;);
+    eventSender.addTouchPoint(100, aGoodY);
+    eventSender.touchStart();
+
+    debug(&quot;Move that finger around. It should not do anything.&quot;);
+    eventSender.updateTouchPoint(FIRST_FINGER, 50, aGoodY - 10); // Left a bit.
+    eventSender.touchMove();
+    eventSender.updateTouchPoint(FIRST_FINGER, 270, aGoodY); // On the thumb.
+    eventSender.touchMove();
+    eventSender.updateTouchPoint(FIRST_FINGER, 400, aGoodY); // Right a bit
+    eventSender.touchMove();
+
+    debug(&quot;Release the first finger.&quot;);
+    eventSender.releaseTouchPoint(FIRST_FINGER);
+    eventSender.touchEnd(); // The test will end with this release.
+}
+
+
+if (window.testRunner)
+    testRunner.waitUntilDone();
+
+if (window.eventSender) {
+    description(&quot;This tests touch events not on the slider thumb but on the slider are ignored by the thumb.&quot;);
+    sendTouchSequence();
+} else {
+    debug(&quot;This test requires DumpRenderTree to send touch events.&quot;)
+}
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsrangeinputreadonlyanddisabledhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-readonly-and-disabled.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-readonly-and-disabled.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-readonly-and-disabled.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,164 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;style&gt;
+input[type=&quot;range&quot;] {
+  -webkit-appearance: none;
+  width: 500px; height: 20px;
+  background: black;
+  margin-top: 100px;
+}
+
+input[type=&quot;range&quot;]::-webkit-slider-thumb {
+  -webkit-appearance: none;
+  background: blue;
+  width: 200px;
+  height: 200px;
+}
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;input id=&quot;slider&quot; type=&quot;range&quot; min=&quot;0&quot; max=&quot;100&quot; value=&quot;50&quot;&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+// Globals used by test evals.
+var changeEventCount = 0;
+var lastChangeEventCount = 0;
+var slider = document.getElementById(&quot;slider&quot;);
+slider.addEventListener(&quot;input&quot;, function(event) {
+    changeEventCount++;
+}, false);
+
+
+// Slider coordinates used throughout.
+const centerY = slider.offsetTop + slider.offsetHeight / 2;
+const centerX = slider.offsetLeft + slider.offsetWidth / 2;
+const leftEdgeX = slider.offsetLeft + 1;
+const rightEdgeX = slider.offsetLeft + slider.offsetWidth - 1;
+
+
+// Test configurations.
+var currentConfiguration = -1;
+const testConfigurations = [
+    { readOnly: false, disabled: false, name: &quot;Normal&quot;   },
+    { readOnly: true,  disabled: false, name: &quot;Readonly&quot; },
+    { readOnly: false, disabled: true,  name: &quot;Disabled&quot; },
+    { readOnly: true,  disabled: true,  name: &quot;Readonly and Disabled&quot; },
+];
+
+
+// Run the test!
+if (window.eventSender) {
+    description(&quot;This tests touch events on readonly and disabled sliders.&quot;);
+
+    if (window.testRunner)
+        testRunner.waitUntilDone();
+
+    // iOS &lt;input type=&quot;range&quot;&gt; uses identifier 0 as the &quot;NoIdentifier&quot;.
+    // So swallow touch point 0 and ignore it from now on. Currently
+    // a 0 identifier cannot happen on iOS.
+    eventSender.addTouchPoint(0, 0);
+
+    runAllTestConfigurations();
+} else
+    debug(&quot;This test requires DumpRenderTree to send touch events.&quot;)
+
+
+// Test runners.
+
+function runAllTestConfigurations() {
+    for (var i=0, len=testConfigurations.length; i&lt;len; ++i)
+        runTestConfiguration(testConfigurations[i]);
+
+    debug(&quot;&quot;);
+    successfullyParsed = true;
+    isSuccessfullyParsed();
+    testRunner.notifyDone();
+}
+
+function runTestConfiguration(configuration) {
+    var displayName = '(&amp;lt;input type=&quot;range&quot;';
+    if (configuration.readOnly)
+        displayName += ' readonly';
+    if (configuration.disabled)
+        displayName += ' disabled';
+    displayName += '&amp;gt;)';
+
+    const touchIdentifier = 1;
+    function startDrag() { eventSender.addTouchPoint(centerX, centerY); eventSender.touchStart(); }
+    function stopDrag() { eventSender.releaseTouchPoint(touchIdentifier); eventSender.touchEnd(); }
+    function dragToLeftEdge()  { eventSender.updateTouchPoint(touchIdentifier, leftEdgeX, centerY); eventSender.touchMove(); }
+    function dragToRightEdge() { eventSender.updateTouchPoint(touchIdentifier, rightEdgeX, centerY); eventSender.touchMove(); }
+    function dragSequence(sequence) { startDrag(); sequence(); stopDrag(); }
+
+
+    debug(&quot;&quot;);
+    debug(&quot;-------------------&quot;);
+    debug(&quot;Test Configuration: &quot; + configuration.name + &quot; - &quot; + displayName);
+    debug(&quot;-------------------&quot;);
+
+    debug(&quot;&quot;);
+    debug('- Reset slider to non-readonly and non-disabled to make sure it works.');
+    slider.readOnly = false;
+    slider.disabled = false;
+    slider.valueAsNumber = 50;
+    shouldBe('slider.value', '&quot;50&quot;');
+
+    debug(&quot;- Test drag sequence where readonly / disabled state may change during drag.&quot;);
+    dragSequence(function() {
+        // Drag from center, to right edge, to left edge.
+        lastChangeEventCount = changeEventCount;
+        dragToRightEdge();
+        shouldBe('slider.value', '&quot;100&quot;');
+        shouldBeGreaterThanOrEqual('changeEventCount', 'lastChangeEventCount + 1');
+        lastChangeEventCount = changeEventCount;
+        dragToLeftEdge();
+        shouldBe('slider.value', '&quot;0&quot;');
+        shouldBeGreaterThanOrEqual('changeEventCount', 'lastChangeEventCount + 1');
+
+        // While still dragging, toggle readonly / disabled.
+        debug(&quot;(toggled state to configuration)&quot;);
+        slider.readOnly = configuration.readOnly;
+        slider.disabled = configuration.disabled;
+
+        // Attempt to drag to right edge. Should not change for disabled / readonly fields.
+        lastChangeEventCount = changeEventCount;
+        dragToRightEdge();
+        if (slider.readOnly || slider.disabled) {
+            shouldBe('slider.value', '&quot;0&quot;');
+            shouldBe('lastChangeEventCount', 'changeEventCount');
+        } else {
+            shouldBe('slider.value', '&quot;100&quot;');
+            shouldBeGreaterThanOrEqual('changeEventCount', 'lastChangeEventCount + 1');
+        }
+    });
+
+    debug(&quot;- Reset value to middle for second sequence.&quot;);
+    slider.valueAsNumber = 50;
+    shouldBe('slider.value', '&quot;50&quot;');
+
+    debug(&quot;- Test drag sequence where readonly / disabled state is already set.&quot;);
+    dragSequence(function() {
+        // Drag from center, to right edge.
+        lastChangeEventCount = changeEventCount;
+        dragToRightEdge();
+        if (slider.readOnly || slider.disabled) {
+            shouldBe('slider.value', '&quot;50&quot;');
+            shouldBe('lastChangeEventCount', 'changeEventCount');
+        } else {
+            shouldBe('slider.value', '&quot;100&quot;');
+            shouldBeGreaterThanOrEqual('changeEventCount', 'lastChangeEventCount + 1');
+        }
+    });
+}
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsrangeinputtouchesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-touches-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-touches-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-touches-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+
+This tests touch events on a slider.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+First finger down on the slider's thumb.
+Move that finger to the slider's left edge.
+EXPECT SLIDER THUMB MOVE AND VALUE UPDATE
+PASS slider thumb moved
+PASS value changed
+Add a second finger on the slider's thumb.
+Move that second finger. It should not do anything.
+Move the first finger.
+EXPECT SLIDER THUMB MOVE AND VALUE UPDATE
+PASS slider thumb moved
+PASS value changed
+Release that second finger on the slider's thumb. It should not do anything.
+Move the first finger.
+EXPECT SLIDER THUMB MOVE AND VALUE UPDATE
+PASS slider thumb moved
+PASS value changed
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsrangeinputtoucheshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-touches.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-touches.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/range-input-touches.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,120 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;style&gt;
+input[type=&quot;range&quot;] {
+  -webkit-appearance: none;
+  width: 500px; height: 20px;
+  background: black;
+  margin-top: 100px;
+}
+
+input[type=&quot;range&quot;]::-webkit-slider-thumb {
+  -webkit-appearance: none;
+  background: blue;
+  width: 200px;
+  height: 200px;
+}
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;input id=&quot;slider&quot; type=&quot;range&quot;&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var sliderMovesCount = 0;
+var EXPECTED_SLIDER_MOVES = 3;
+
+var slider = document.getElementById(&quot;slider&quot;);
+var lastSliderValue = slider.value;
+slider.addEventListener(&quot;input&quot;, inputEventCallback, false);
+function inputEventCallback() {
+    testPassed(&quot;slider thumb moved&quot;);
+    sliderMovesCount++
+
+    // Ensure the value actually changed. For good measure.
+    if (lastSliderValue === slider.value)
+        testFailed(&quot;input event triggered but the value didn't change.&quot;);
+    else {
+        testPassed(&quot;value changed&quot;);
+        lastSliderValue = slider.value;
+    }
+
+    if (window.testRunner &amp;&amp; sliderMovesCount === EXPECTED_SLIDER_MOVES) {
+        // If we've got here, we can safely say we were successfully parsed :) We need to
+        // call the isSucccessfullyParsed function to output the correct TEST COMPLETE
+        // footer message.
+        successfullyParsed = true;
+        isSuccessfullyParsed();
+        testRunner.notifyDone();
+    }
+}
+
+const aGoodY = 120;
+const FIRST_FINGER = 1;
+const SECOND_FINGER = 2;
+
+function sendTouchSequence()
+{
+    // iOS &lt;input type=&quot;range&quot;&gt; uses identifier 0 as the &quot;NoIdentifier&quot;.
+    // So swallow touch point 0 and ignore it from now on. Currently
+    // a 0 identifier cannot happen on iOS.
+    eventSender.addTouchPoint(0, 0);
+
+    debug(&quot;First finger down on the slider's thumb.&quot;);
+    eventSender.addTouchPoint(250, aGoodY);
+    eventSender.touchStart();
+
+    debug(&quot;Move that finger to the slider's left edge.&quot;);
+    debug(&quot;EXPECT SLIDER THUMB MOVE AND VALUE UPDATE&quot;);
+    eventSender.updateTouchPoint(FIRST_FINGER, 10, aGoodY);
+    eventSender.touchMove();
+
+    debug(&quot;Add a second finger on the slider's thumb.&quot;);
+    eventSender.addTouchPoint(20, aGoodY);
+    eventSender.touchStart();
+
+    debug(&quot;Move that second finger. It should not do anything.&quot;);
+    eventSender.updateTouchPoint(SECOND_FINGER, 50, aGoodY + 5);
+    eventSender.touchMove();
+    eventSender.updateTouchPoint(SECOND_FINGER, 400, aGoodY);
+    eventSender.touchMove();
+    eventSender.updateTouchPoint(SECOND_FINGER, 50, aGoodY);
+    eventSender.touchMove();
+
+    debug(&quot;Move the first finger.&quot;);
+    debug(&quot;EXPECT SLIDER THUMB MOVE AND VALUE UPDATE&quot;);
+    eventSender.updateTouchPoint(FIRST_FINGER, 250, aGoodY);
+    eventSender.touchMove();
+
+    debug(&quot;Release that second finger on the slider's thumb. It should not do anything.&quot;);
+    eventSender.releaseTouchPoint(SECOND_FINGER);
+    eventSender.touchEnd();
+
+    debug(&quot;Move the first finger.&quot;);
+    debug(&quot;EXPECT SLIDER THUMB MOVE AND VALUE UPDATE&quot;);
+    eventSender.updateTouchPoint(FIRST_FINGER, 10, aGoodY);
+    eventSender.touchMove(); // The test will end with this move.
+}
+
+if (window.testRunner)
+    testRunner.waitUntilDone();
+
+if (window.eventSender) {
+    description(&quot;This tests touch events on a slider.&quot;);
+
+    lastEvent = null;
+    sendTouchSequence();
+} else {
+    debug(&quot;This test requires DumpRenderTree to send touch events.&quot;)
+}
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsshortsliderexpectedtxtfromrev178196trunkLayoutTestsplatformiossimaccessibilitysetvalueexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/short-slider-expected.txt (from rev 178196, trunk/LayoutTests/platform/ios-sim/accessibility/set-value-expected.txt) (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/short-slider-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/short-slider-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+
+Check that a short slider does not crash MobileSafari.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS No crash.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastformsshortsliderhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/short-slider.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/short-slider.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/forms/short-slider.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;input id=&quot;x&quot; type=&quot;file&quot;&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;!-- Various short heights. --&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:3px; height:0px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:3px; height:1px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:3px; height:2px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:3px; height:3px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:3px; height:4px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:3px; height:5px&quot;&gt;&lt;br&gt;&lt;br&gt;
+
+&lt;!-- Various short widths. --&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:0px; height:3px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:1px; height:3px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:2px; height:3px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:3px; height:3px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:4px; height:3px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:5px; height:3px&quot;&gt;&lt;br&gt;&lt;br&gt;
+
+&lt;!-- Some edge cases. --&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:0px; height:0px&quot;&gt;&lt;br&gt;&lt;br&gt;
+
+&lt;!-- Sizes that would actually draw the track. --&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:100px; height:0px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:100px; height:1px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:100px; height:2px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:100px; height:3px&quot;&gt;&lt;br&gt;&lt;br&gt;
+&lt;input type=&quot;range&quot; style=&quot;width:100px; height:4px&quot;&gt;&lt;br&gt;&lt;br&gt;
+
+&lt;script&gt;
+description(&quot;Check that a short slider does not crash MobileSafari.&quot;);
+testPassed(&quot;No crash.&quot;);
+successfullyParsed = true;
+&lt;/script&gt;
+&lt;script src=&quot;../../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasthistorypagecachegeolocationexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/history/page-cache-geolocation-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/history/page-cache-geolocation-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/history/page-cache-geolocation-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+Tests that a page that makes use of simple geolocation can use the page cache.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+[object Geolocation]
+pageshow - not from cache
+pagehide - entering cache
+pageshow - from cache
+PASS - Page did enter and was restored from the page cache
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasthistorypagecachegeolocationhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/history/page-cache-geolocation.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/history/page-cache-geolocation.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/history/page-cache-geolocation.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/page-cache-geolocation.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasthistoryresourcespagecachehelperhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/history/resources/page-cache-helper.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/history/resources/page-cache-helper.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/history/resources/page-cache-helper.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+This page should go back. If a test outputs the contents of this
+page, then the test page failed to enter the page cache.
+&lt;script&gt;
+  window.addEventListener(&quot;load&quot;, function() {
+    setTimeout(function() {
+      history.back();
+    }, 0);
+  }, false);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasthistoryscripttestsTEMPLATEhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/history/script-tests/TEMPLATE.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/history/script-tests/TEMPLATE.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/history/script-tests/TEMPLATE.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;YOUR_JS_FILE_HERE&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasthistoryscripttestspagecachegeolocationjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/history/script-tests/page-cache-geolocation.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/history/script-tests/page-cache-geolocation.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/history/script-tests/page-cache-geolocation.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+description('Tests that a page that makes use of simple geolocation can use the page cache.');
+
+window.addEventListener(&quot;pageshow&quot;, function(event) {
+    debug(&quot;pageshow - &quot; + (event.persisted ? &quot;&quot; : &quot;not &quot;) + &quot;from cache&quot;);
+    if (event.persisted) {
+        debug(&quot;PASS - Page did enter and was restored from the page cache&quot;);
+        finishJSTest();
+        window.testRunner.notifyDone();
+    }
+}, false);
+
+window.addEventListener(&quot;pagehide&quot;, function(event) {
+    debug(&quot;pagehide - &quot; + (event.persisted ? &quot;&quot; : &quot;not &quot;) + &quot;entering cache&quot;);
+    if (!event.persisted) {
+        debug(&quot;FAIL - Page did not enter the page cache.&quot;);
+        finishJSTest();
+        window.testRunner.notifyDone();
+    }
+}, false);
+
+window.addEventListener('load', function() {
+
+    // Enable the PageCache and make this an async test.
+    if (window.testRunner) {
+        window.testRunner.overridePreference(&quot;WebKitUsesPageCachePreferenceKey&quot;, 1);
+        window.testRunner.waitUntilDone();
+    }
+
+    // Access geolocation. It is enough to create the geolocation object.
+    debug(navigator.geolocation);
+
+    // Force a back navigation back to this page.
+    setTimeout(function() {
+        window.location.href = &quot;resources/page-cache-helper.html&quot;;
+    }, 0);
+
+}, false);
+
+var successfullyParsed = true;
+var jsTestIsAsync = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasthtmltextareaautosizingdisableexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/html/textarea-auto-sizing-disable-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/html/textarea-auto-sizing-disable-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/html/textarea-auto-sizing-disable-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+
+SUCCESS
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasthtmltextareaautosizingdisablehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/html/textarea-auto-sizing-disable.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/html/textarea-auto-sizing-disable.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/html/textarea-auto-sizing-disable.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+    &lt;title&gt;TextArea auto-sizing test&lt;/title&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;
+        
+        if (window.testRunner)
+            window.testRunner.waitUntilDone();
+                
+        function doTest() 
+        {
+            if (!window.testRunner)
+                return;
+
+            if (!window.eventSender)
+                return;
+
+            // Enable autosizing
+            testRunner.setTextAutosizingEnabled(true);
+            
+            var obj = document.getElementById('test');
+            var oldHeight = obj.offsetHeight;
+            
+            eventSender.mouseMoveTo(obj.offsetLeft+10, obj.offsetTop+20);
+            eventSender.mouseDown();
+            eventSender.mouseUp();
+        
+            eventSender.keyDown(&quot;\n&quot;)
+            eventSender.keyDown('A');
+            eventSender.keyDown('B');
+            eventSender.keyDown('\n');
+            
+            // Textarea heigth shouldn't change after we add new lines.
+            document.getElementById(&quot;result&quot;).innerHTML= obj.offsetHeight == oldHeight ? 'SUCCESS' : 'FAIL';
+            
+            testRunner.dumpAsText();
+            testRunner.notifyDone();
+        }
+    &lt;/script&gt;
+&lt;/head&gt;
+
+&lt;body onload=&quot;doTest()&quot;&gt;
+&lt;textarea id=&quot;test&quot; rows=&quot;12&quot; style=&quot;width:100%&quot;&gt;
+    a
+    b
+    c
+    d
+    e
+    f
+    g
+    h
+    i
+&lt;/textarea&gt;
+&lt;div id=&quot;result&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastjsclearTimeoutcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/js/clearTimeout-crash-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/js/clearTimeout-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/js/clearTimeout-crash-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+&lt;rdar://problem/6628098&gt; Assertion failure calling clearTimeout() with zero or a negative number
+
+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastjsclearTimeoutcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/js/clearTimeout-crash.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/js/clearTimeout-crash.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/js/clearTimeout-crash.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.dumpAsText();
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;&amp;lt;&lt;a href=&quot;rdar://problem/6628098&quot;&gt;rdar://problem/6628098&lt;/a&gt;&amp;gt; Assertion failure calling clearTimeout() with zero or a negative number&lt;/p&gt;
+&lt;p&gt;PASS&lt;/p&gt;
+&lt;script&gt;
+clearTimeout(-1);
+clearTimeout(0);
+clearTimeout(1);
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastloadersubresourcewillSendRequestnullpreventsloadeventexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/loader/subresource-willSendRequest-null-prevents-load-event-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/loader/subresource-willSendRequest-null-prevents-load-event-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/loader/subresource-willSendRequest-null-prevents-load-event-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+CONSOLE MESSAGE: line 12: PASS
+Ensure that a subresource load that is cancelled by a willSendRequest() delegate does not prevent the load event from firing. On success, 'PASS' will be logged to the console.
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastloadersubresourcewillSendRequestnullpreventsloadeventhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/loader/subresource-willSendRequest-null-prevents-load-event.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/loader/subresource-willSendRequest-null-prevents-load-event.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/loader/subresource-willSendRequest-null-prevents-load-event.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script&gt;
+    if (window.testRunner) {
+        testRunner.dumpAsText();
+        testRunner.waitUntilDone();
+        testRunner.setWillSendRequestReturnsNull(true);
+    }
+
+    window.addEventListener(&quot;load&quot;, function(event) {
+        console.log(&quot;PASS&quot;);
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;Ensure that a subresource load that is cancelled by a willSendRequest() delegate does not prevent the load event from firing. On success, 'PASS' will be logged to the console.&lt;/p&gt;
+&lt;img src=&quot;non-existant.jpg&quot;&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastmediamedianosrcattributeparsingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/media/media-no-src-attribute-parsing-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/media/media-no-src-attribute-parsing-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/media/media-no-src-attribute-parsing-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+CONSOLE MESSAGE: line 13: PASS
+Test that attributes on media elements are parsed even when the media isn't playable. This test uses the class attribute as a proxy for correct attribute parsing. On success, you should see 'PASS' logged to the console.
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastmediamedianosrcattributeparsinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/media/media-no-src-attribute-parsing.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/media/media-no-src-attribute-parsing.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/media/media-no-src-attribute-parsing.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;script&gt;
+        if (window.testRunner)
+            testRunner.dumpAsText();
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;p&gt;Test that attributes on media elements are parsed even when the media isn't playable. This test uses the class attribute as a proxy for correct attribute parsing. On success, you should see 'PASS' logged to the console.&lt;/p&gt;
+    &lt;video class=&quot;foo&quot;&gt;&lt;/video&gt;
+    &lt;script&gt;
+        console.log(document.getElementsByClassName(&quot;foo&quot;).length ? &quot;PASS&quot; : &quot;FAIL&quot;);
+    &lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastmediavideoinlineexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/media/video-inline-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/media/video-inline-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/media/video-inline-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+Testing iOS-specific media query for inline video. When run inside MobileSafari on iPhone, the query should evaluate as false (and the test will indicate that it has failed). In all other places, including the test framework and DRT, the query should evaluate as true.
+
+FAIL: &quot;(-webkit-video-playable-inline)&quot; evaluates to false
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastmediavideoinlinehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/media/video-inline.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/media/video-inline.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/media/video-inline.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+    &lt;title&gt;Test iOS-specific media query for inline video&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot;&gt;
+    &lt;script&gt;
+        if (window.testRunner)
+            testRunner.dumpAsText();
+  
+        function log(m) {
+            var results = document.getElementById('results');
+            results.innerHTML += m + '&lt;br&gt;';
+        }
+  
+        function testQuery(query, expected) {
+            var isTrue = window.styleMedia.matchMedium(query);
+
+            var message = '\&quot;' + query + '\&quot; evaluates to ' + (isTrue ? 'true' : 'false');
+            message = ((isTrue == expected) ? 'PASS: ' : 'FAIL: ') + message;
+            log(message);
+        }
+  
+        function runTests() {
+            testQuery('(-webkit-video-playable-inline)', true);
+        }
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;runTests()&quot;&gt;
+    &lt;p&gt;
+        Testing iOS-specific media query for inline video.
+        When run inside MobileSafari on iPhone, the query should evaluate
+        as false (and the test will indicate that it has failed).
+        In all other places, including the test framework and DRT, the
+        query should evaluate as true.
+    &lt;/p&gt;
+    &lt;div id=&quot;results&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastparserblocknestingcapiphoneexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/block-nesting-cap-iphone-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/block-nesting-cap-iphone-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/block-nesting-cap-iphone-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+Test that the HTML parser does not allow the nesting depth of &quot;block-level&quot; elements to exceed 768.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+FAIL d768.parentNode === d766 should be true. Was false.
+FAIL d768.parentNode === d766 should be true. Was false.
+PASS d768.previousSibling === d767 is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastparserblocknestingcapiphonehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/block-nesting-cap-iphone.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/block-nesting-cap-iphone.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/block-nesting-cap-iphone.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;resources/block-nesting-cap.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfastparserresourcesblocknestingcapjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/resources/block-nesting-cap.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/resources/block-nesting-cap.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/parser/resources/block-nesting-cap.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+description('Test that the HTML parser does not allow the nesting depth of &quot;block-level&quot; elements to exceed 768.');
+
+var depth = 772;
+var markup = &quot;&quot;;
+var i;
+for (i = 0; i &lt; depth; ++i)
+    markup += &quot;&lt;div id='d&quot; + i + &quot;'&gt;&quot;;
+var doc = document.implementation.createHTMLDocument();
+doc.body.innerHTML = markup;
+
+var d766 = doc.getElementById(&quot;d766&quot;);
+var d767 = doc.getElementById(&quot;d767&quot;);
+var d768 = doc.getElementById(&quot;d768&quot;);
+
+shouldBe(&quot;d768.parentNode === d766&quot;, &quot;true&quot;);
+shouldBe(&quot;d768.parentNode === d766&quot;, &quot;true&quot;);
+shouldBe(&quot;d768.previousSibling === d767&quot;, &quot;true&quot;);
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextapplelogoexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/apple-logo-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/apple-logo-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/apple-logo-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderInline {SPAN} at (0,0) size 13x19
+        RenderText {#text} at (0,5) size 13x19
+          text run at (0,5) width 13: &quot;\x{F8FF}&quot;
+      RenderText {#text} at (12,5) size 5x19
+        text run at (12,5) width 5: &quot; &quot;
+      RenderInline {SPAN} at (0,0) size 17x23
+        RenderText {#text} at (16,2) size 17x23
+          text run at (16,2) width 17: &quot;\x{F8FF}&quot;
+      RenderText {#text} at (32,5) size 5x19
+        text run at (32,5) width 5: &quot; &quot;
+      RenderInline {SPAN} at (0,0) size 14x19
+        RenderText {#text} at (36,5) size 14x19
+          text run at (36,5) width 14: &quot;\x{F8FF}&quot;
+      RenderText {#text} at (49,5) size 5x19
+        text run at (49,5) width 5: &quot; &quot;
+      RenderInline {SPAN} at (0,0) size 16x23
+        RenderText {#text} at (53,2) size 16x23
+          text run at (53,2) width 16: &quot;\x{F8FF}&quot;
+      RenderText {#text} at (68,5) size 5x19
+        text run at (68,5) width 5: &quot; &quot;
+      RenderInline {SPAN} at (0,0) size 17x23
+        RenderText {#text} at (72,2) size 17x23
+          text run at (72,2) width 17: &quot;\x{F8FF}&quot;
+      RenderText {#text} at (88,5) size 5x19
+        text run at (88,5) width 5: &quot; &quot;
+      RenderInline {SPAN} at (0,0) size 17x23
+        RenderText {#text} at (92,2) size 17x23
+          text run at (92,2) width 17: &quot;\x{F8FF}&quot;
+      RenderText {#text} at (108,5) size 5x19
+        text run at (108,5) width 5: &quot; &quot;
+      RenderInline {SPAN} at (0,0) size 17x23
+        RenderText {#text} at (112,2) size 17x23
+          text run at (112,2) width 17: &quot;\x{F8FF}&quot;
+      RenderText {#text} at (128,5) size 5x19
+        text run at (128,5) width 5: &quot; &quot;
+      RenderInline {SPAN} at (0,0) size 13x20
+        RenderText {#text} at (132,4) size 13x20
+          text run at (132,4) width 13: &quot;\x{F8FF}&quot;
+      RenderText {#text} at (144,5) size 5x19
+        text run at (144,5) width 5: &quot; &quot;
+      RenderInline {SPAN} at (0,0) size 17x25
+        RenderText {#text} at (148,0) size 17x25
+          text run at (148,0) width 17: &quot;\x{F8FF}&quot;
+      RenderText {#text} at (164,5) size 5x19
+        text run at (164,5) width 5: &quot; &quot;
+      RenderInline {SPAN} at (0,0) size 17x25
+        RenderText {#text} at (168,0) size 17x25
+          text run at (168,0) width 17: &quot;\x{F8FF}&quot;
+      RenderText {#text} at (184,5) size 5x19
+        text run at (184,5) width 5: &quot; &quot;
+      RenderInline {SPAN} at (0,0) size 17x25
+        RenderText {#text} at (188,0) size 17x25
+          text run at (188,0) width 17: &quot;\x{F8FF}&quot;
+      RenderText {#text} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextapplelogohtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/apple-logo.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/apple-logo.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/apple-logo.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+&lt;title&gt;Apples!!!!!!!!&lt;/title&gt;
+&lt;meta http-equiv='Content-Type' content='text/html; charset=utf-8'&gt;
+&lt;span&gt;&lt;/span&gt;
+&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;/span&gt;
+&lt;span style=&quot;font-family: 'Times New Roman';&quot;&gt;&lt;/span&gt;
+&lt;span style=&quot;font-size: 20px; font-family: 'Times New Roman'; font-weight: 300;&quot;&gt;&lt;/span&gt;
+&lt;span style=&quot;font-size: 20px; font: -apple-system-body; font-family: 'Times New Roman';&quot;&gt;&lt;/span&gt;
+&lt;span style=&quot;font-size: 20px; font: -apple-system-body; font-family: 'Times New Roman'; font-style: italic;&quot;&gt;&lt;/span&gt;
+&lt;span style=&quot;font: -apple-system-body; font-size: 20px; font-family: 'Times New Roman';&quot;&gt;&lt;/span&gt;
+&lt;span style=&quot;font-family: -apple-system-font;&quot;&gt;&lt;/span&gt;
+&lt;span style=&quot;font-size: 20px; font-family: -apple-system-font;&quot;&gt;&lt;/span&gt;
+&lt;span style=&quot;font-size: 20px; font-family: -apple-system-font; font-weight: bold&quot;&gt;&lt;/span&gt;
+&lt;span style=&quot;font-size: 20px; font-family: -apple-system-font; font-style: italic&quot;&gt;&lt;/span&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextcombiningenclosingkeycapexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/combining-enclosing-keycap-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/combining-enclosing-keycap-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/combining-enclosing-keycap-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+layer at (0,0) size 320x617
+  RenderView at (0,0) size 320x240
+layer at (0,0) size 320x617
+  RenderBlock {HTML} at (0,0) size 320x617
+    RenderBody {BODY} at (8,8) size 304x601
+      RenderBlock {P} at (0,0) size 304x24
+        RenderText {#text} at (0,0) size 273x23
+          text run at (0,0) width 273: &quot;\x{20E3}0\x{20E3}1\x{20E3}2\x{20E3}3\x{20E3}4\x{20E3}5\x{20E3}6\x{20E3}7\x{20E3}8\x{20E3}9\x{20E3}#\x{20E3}\x{20E3}&quot;
+      RenderBlock {P} at (0,44) size 304x24
+        RenderText {#text} at (0,0) size 64x23
+          text run at (0,0) width 64: &quot;abc\x{20E3}def&quot;
+      RenderBlock {P} at (0,88) size 304x24
+        RenderText {#text} at (0,0) size 78x23
+          text run at (0,0) width 78: &quot;ab#\x{20E3}def\x{20E3}&quot;
+      RenderBlock {P} at (0,132) size 304x29
+        RenderText {#text} at (0,16) size 85x12
+          text run at (0,16) width 85: &quot;ab#\x{20E3}def\x{20E3}&quot;
+      RenderBlock {P} at (0,181) size 304x24
+        RenderText {#text} at (0,12) size 78x12
+          text run at (0,12) width 78: &quot;ab#\x{20E3}def\x{20E3}&quot;
+      RenderBlock {P} at (0,225) size 304x24
+        RenderText {#text} at (0,0) size 78x23
+          text run at (0,0) width 78: &quot;ab#\x{20E3}def\x{20E3}&quot;
+      RenderBlock {P} at (0,269) size 304x24
+        RenderText {#text} at (0,0) size 52x23
+          text run at (0,0) width 52: &quot;\x{D83C}\x{DD97}b#\x{20E3}&quot;
+      RenderBlock {P} at (0,313) size 304x24
+        RenderText {#text} at (0,0) size 54x23
+          text run at (0,0) width 54: &quot;\x{D83C}\x{DD97}b#\x{20E3}&quot;
+      RenderBlock {P} at (0,357) size 304x24
+        RenderText {#text} at (0,0) size 47x23
+          text run at (0,0) width 47: &quot;\x{D83C}\x{DD97}b#\x{20E3}&quot;
+      RenderBlock {P} at (20,401) size 24x100
+        RenderText {#text} at (0,0) size 23x52
+          text run at (0,0) width 52: &quot;\x{D83C}\x{DD97}b#\x{20E3}&quot;
+      RenderBlock {P} at (20,501) size 28x100
+        RenderText {#text} at (8,0) size 12x54
+          text run at (8,0) width 54: &quot;\x{D83C}\x{DD97}b#\x{20E3}&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextcombiningenclosingkeycaphtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/combining-enclosing-keycap.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/combining-enclosing-keycap.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/combining-enclosing-keycap.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;meta name=viewport content=&quot;width=device-width&quot;&gt;
+&lt;body style=&quot;font-size: 20px;&quot;&gt;
+    &lt;p&gt;
+        &amp;#x20e3;0&amp;#x20e3;1&amp;#x20e3;2&amp;#x20e3;3&amp;#x20e3;4&amp;#x20e3;5&amp;#x20e3;6&amp;#x20e3;7&amp;#x20e3;8&amp;#x20e3;9&amp;#x20e3;#&amp;#x20e3;&amp;#x20e3;
+    &lt;/p&gt;
+    &lt;p&gt;
+        abc&amp;#x20e3;def
+    &lt;/p&gt;
+    &lt;p&gt;
+        ab#&amp;#x20e3;def&amp;#x20e3;
+    &lt;/p&gt;
+    &lt;p style=&quot;font-family: -webkit-pictograph;&quot;&gt;
+        ab#&amp;#x20e3;def&amp;#x20e3;
+    &lt;/p&gt;
+    &lt;p style=&quot;font-family: -webkit-pictograph, serif;&quot;&gt;
+        ab#&amp;#x20e3;def&amp;#x20e3;
+    &lt;/p&gt;
+    &lt;p style=&quot;font-family: serif, -webkit-pictograph;&quot;&gt;
+        ab#&amp;#x20e3;def&amp;#x20e3;
+    &lt;/p&gt;
+    &lt;p style=&quot;font-style: italic;&quot;&gt;
+        &amp;#x1f197;b#&amp;#x20e3;
+    &lt;/p&gt;
+    &lt;p style=&quot;font-weight: bold;&quot;&gt;
+        &amp;#x1f197;b#&amp;#x20e3;
+    &lt;/p&gt;
+    &lt;p style=&quot;font-variant: small-caps;&quot;&gt;
+        &amp;#x1f197;b#&amp;#x20e3;
+    &lt;/p&gt;
+    &lt;p style=&quot;-webkit-writing-mode: vertical-rl; height: 5em;&quot;&gt;
+        &amp;#x1f197;b#&amp;#x20e3;
+    &lt;/p&gt;
+    &lt;p style=&quot;-webkit-writing-mode: vertical-rl; font-family: -webkit-pictograph; height: 5em;&quot;&gt;
+        &amp;#x1f197;b#&amp;#x20e3;
+    &lt;/p&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextdatadetectorsphonedisabledexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone-disabled-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone-disabled-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone-disabled-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;rdar://problem/8909578&gt; Reintegrate iOS telephone parsing with new HTML5 parser
+
+disabled phone number detection:
+| &quot;
+    &quot;
+| &lt;iframe&gt;
+|   src=&quot;resources/phone-disabled.html&quot;
+|   &quot;
+    &quot;
+| &quot;
+
+
+&quot;
+
+FRAME 0:
+| &lt;head&gt;
+|   &quot;
+    &quot;
+|   &lt;title&gt;
+|     &quot;Phone Numbers in MobileSafari&quot;
+|   &quot;
+    &quot;
+|   &lt;meta&gt;
+|     content=&quot;telephone=no&quot;
+|     name=&quot;format-detection&quot;
+|   &quot;
+&quot;
+| &quot;
+&quot;
+| &lt;body&gt;
+|   &quot;
+&quot;
+|   &lt;p&gt;
+|     &quot;
+    This is a phone number, but it should NOT be linkified because the the meta tag format-detection forbids it:&quot;
+|     &lt;br&gt;
+|     &quot;
+1-866-MY-APPLE
+&quot;
+|   &quot;
+
+
+&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextdatadetectorsphonedisabledhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone-disabled.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone-disabled.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone-disabled.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;title&gt;Phone Numbers in MobileSafari&lt;/title&gt;
+    &lt;script src=&quot;../../../../../../resources/dump-as-markup.js&quot;&gt;&lt;/script&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;
+        if (window.testRunner) {
+            Markup.waitUntilDone();
+            testRunner.setTelephoneNumberParsingEnabled(true);
+        }
+
+        window.addEventListener('load', function() {
+            if (!window.testRunner)
+                return;
+
+            Markup.description('&lt;rdar://problem/8909578&gt; Reintegrate iOS telephone parsing with new HTML5 parser');
+            Markup.dump('body', 'disabled phone number detection');
+            testRunner.setTelephoneNumberParsingEnabled(false);
+
+            Markup.notifyDone();
+        }, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+    &lt;iframe src=&quot;resources/phone-disabled.html&quot;&gt;
+    &lt;/iframe&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextdatadetectorsphoneexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,127 @@
</span><ins>+&lt;rdar://problem/8909578&gt; Reintegrate iOS telephone parsing with new HTML5 parser
+
+phone number detection:
+| &quot;
+    &quot;
+| &lt;iframe&gt;
+|   src=&quot;resources/phone.html&quot;
+|   &quot;
+    &quot;
+| &quot;
+
+
+&quot;
+
+FRAME 0:
+| &lt;head&gt;
+|   &quot;
+    &quot;
+|   &lt;title&gt;
+|     &quot;Phone Numbers in MobileSafari&quot;
+|   &quot;
+&quot;
+| &quot;
+&quot;
+| &lt;body&gt;
+|   &quot;
+&quot;
+|   &lt;p&gt;
+|     &quot;
+    These phone numbers should be linkified:&quot;
+|     &lt;br&gt;
+|     &quot;
+&quot;
+|     &lt;a&gt;
+|       href=&quot;tel:1-866-MY-APPLE&quot;
+|       &quot;1-866-MY-APPLE&quot;
+|     &lt;br&gt;
+|     &quot;
+&quot;
+|     &lt;a&gt;
+|       href=&quot;tel:(312) 961 - 0509&quot;
+|       &quot;(312) 961 - 0509&quot;
+|     &lt;br&gt;
+|     &quot;
+&quot;
+|     &lt;a&gt;
+|       href=&quot;tel:01 42 84 90 00&quot;
+|       &quot;01 42 84 90 00&quot;
+|     &lt;br&gt;
+|     &quot;
+&quot;
+|     &lt;a&gt;
+|       href=&quot;tel:+33 (0)1 42 84 90 00&quot;
+|       &quot;+33 (0)1 42 84 90 00&quot;
+|     &lt;br&gt;
+|     &quot;
+&quot;
+|     &lt;a&gt;
+|       href=&quot;tel:(+33) 1 53 05 15 00&quot;
+|       &quot;(+33) 1 53 05 15 00&quot;
+|     &lt;br&gt;
+|     &quot;
+&quot;
+|     &lt;a&gt;
+|       href=&quot;tel:(0)1 55 54 45 45&quot;
+|       &quot;(0)1 55 54 45 45&quot;
+|     &lt;br&gt;
+|     &quot;
+&quot;
+|     &lt;a&gt;
+|       href=&quot;tel:010-1-800-MY-APPLE&quot;
+|       &quot;010-1-800-MY-APPLE&quot;
+|     &lt;br&gt;
+|     &quot;
+&quot;
+|     &lt;a&gt;
+|       href=&quot;tel:604 736 7331&quot;
+|       &quot;604 736 7331&quot;
+|     &lt;br&gt;
+|     &quot;
+&quot;
+|     &lt;a&gt;
+|       href=&quot;tel:08035384990&quot;
+|       &quot;08035384990&quot;
+|     &quot;に&quot;
+|     &lt;br&gt;
+|     &quot;
+&quot;
+|     &lt;a&gt;
+|       href=&quot;tel:00447782326380&quot;
+|       &quot;00447782326380&quot;
+|     &quot;
+&quot;
+|   &quot;
+&quot;
+|   &lt;p&gt;
+|     &quot;This is a phone number, but it should not be linkified because it's inside a &quot;
+|   &lt;pre&gt;
+|     &quot;pre&quot;
+|   &quot; tag: &quot;
+|   &lt;br&gt;
+|   &quot;
+    &quot;
+|   &lt;pre&gt;
+|     &quot;1-866-MY-APPLE&quot;
+|   &quot;
+&quot;
+|   &lt;p&gt;
+|   &quot;
+&quot;
+|   &lt;p&gt;
+|     &quot;
+    These are not phone numbers, so they should not get linkified:&quot;
+|     &lt;br&gt;
+|     &quot;
+KSY-24339-985&quot;
+|     &lt;br&gt;
+|     &quot;
+in 1.158970 seconds &quot;
+|     &lt;br&gt;
+|     &quot;
+rdar://1234567
+&quot;
+|   &quot;
+
+
+&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextdatadetectorsphonehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/phone.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;title&gt;Phone Numbers in MobileSafari&lt;/title&gt;
+    &lt;script src=&quot;../../../../../../resources/dump-as-markup.js&quot;&gt;&lt;/script&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;
+        if (window.testRunner) {
+            Markup.waitUntilDone();
+            testRunner.setTelephoneNumberParsingEnabled(true);
+        }
+
+        window.addEventListener('load', function() {
+            if (!window.testRunner)
+                return;
+
+            Markup.description('&lt;rdar://problem/8909578&gt; Reintegrate iOS telephone parsing with new HTML5 parser');
+            Markup.dump('body', 'phone number detection');
+            testRunner.setTelephoneNumberParsingEnabled(false);
+
+            Markup.notifyDone();
+        }, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+    &lt;iframe src=&quot;resources/phone.html&quot;&gt;
+    &lt;/iframe&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextdatadetectorsresourcesphonedisabledhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/resources/phone-disabled.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/resources/phone-disabled.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/resources/phone-disabled.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;title&gt;Phone Numbers in MobileSafari&lt;/title&gt;
+    &lt;meta name=&quot;format-detection&quot; content=&quot;telephone=no&quot; /&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;
+    This is a phone number, but it should NOT be linkified because the the meta tag format-detection forbids it:&lt;br /&gt;
+1-866-MY-APPLE
+&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextdatadetectorsresourcesphonehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/resources/phone.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/resources/phone.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/data-detectors/resources/phone.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;title&gt;Phone Numbers in MobileSafari&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;
+    These phone numbers should be linkified:&lt;br /&gt;
+1-866-MY-APPLE&lt;br/&gt;
+(312) 961 - 0509&lt;br/&gt;
+01 42 84 90 00&lt;br/&gt;
++33 (0)1 42 84 90 00&lt;br/&gt;
+(+33) 1 53 05 15 00&lt;br/&gt;
+(0)1 55 54 45 45&lt;br/&gt;
+010-1-800-MY-APPLE&lt;br/&gt;
+604 736 7331&lt;br /&gt;
+08035384990に&lt;br /&gt;
+00447782326380
+&lt;/p&gt;
+&lt;p&gt;This is a phone number, but it should not be linkified because it's inside a &lt;pre&gt;pre&lt;/pre&gt; tag: &lt;br /&gt;
+    &lt;pre&gt;1-866-MY-APPLE&lt;/pre&gt;
+&lt;/p&gt;
+&lt;p&gt;
+    These are not phone numbers, so they should not get linkified:&lt;br /&gt;
+KSY-24339-985&lt;br/&gt;
+in 1.158970 seconds &lt;br/&gt;
+rdar://1234567
+&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextemojicomplextextexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-complextext-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-complextext-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-complextext-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+layer at (0,0) size 376x542
+  RenderView at (0,0) size 320x240
+layer at (0,0) size 320x542
+  RenderBlock {HTML} at (0,0) size 320x542
+    RenderBody {BODY} at (8,16) size 304x518
+      RenderBlock {P} at (0,0) size 304x80
+        RenderText {#text} at (0,0) size 277x79
+          text run at (0,0) width 263: &quot;Test checks to make sure emoji icons are&quot;
+          text run at (0,20) width 277: &quot;displayed when placed along with complex&quot;
+          text run at (0,40) width 206: &quot;texts like Thai and Devanagari -&quot;
+          text run at (0,60) width 175: &quot;&lt;rdar://problem/7266253&gt;.&quot;
+      RenderBlock {P} at (0,96) size 304x25
+        RenderText {#text} at (0,1) size 137x19
+          text run at (0,1) width 137: &quot;\x{907}\x{92E}\x{94B}\x{91C}\x{940}\x{E227}\x{924}\x{947}\x{938}\x{94D}\x{924}&quot;
+      RenderBlock {P} at (0,121) size 304x24
+        RenderText {#text} at (0,4) size 94x19
+          text run at (0,4) width 94: &quot;\x{E0E}\x{E17}\x{E19}\x{E48}\x{E23}\x{E105}\x{E18}\x{E33}\x{E2B}\x{E30}&quot;
+      RenderBlock {P} at (0,145) size 304x28
+        RenderText {#text} at (0,1) size 152x21
+          text run at (0,1) width 152: &quot;\x{907}\x{92E}\x{94B}\x{91C}\x{940}\x{E101}\x{924}\x{947}\x{938}\x{94D}\x{924}&quot;
+      RenderBlock {P} at (0,173) size 304x27
+        RenderText {#text} at (0,4) size 103x21
+          text run at (0,4) width 103: &quot;\x{E0E}\x{E17}\x{E19}\x{E48}\x{E23}\x{E110}\x{E18}\x{E33}\x{E2B}\x{E30}&quot;
+      RenderBlock {P} at (0,200) size 304x38
+        RenderText {#text} at (0,3) size 195x28
+          text run at (0,3) width 195: &quot;\x{907}\x{92E}\x{94B}\x{91C}\x{940}\x{E109}\x{924}\x{947}\x{938}\x{94D}\x{924}&quot;
+      RenderBlock {P} at (0,238) size 304x34
+        RenderText {#text} at (0,5) size 130x28
+          text run at (0,5) width 130: &quot;\x{E0E}\x{E17}\x{E19}\x{E48}\x{E23}\x{E220}\x{E18}\x{E33}\x{E2B}\x{E30}&quot;
+      RenderBlock {P} at (0,272) size 304x55
+        RenderText {#text} at (0,3) size 282x41
+          text run at (0,3) width 282: &quot;\x{907}\x{92E}\x{94B}\x{91C}\x{940}\x{E215}\x{924}\x{947}\x{938}\x{94D}\x{924}&quot;
+      RenderBlock {P} at (0,327) size 304x51
+        RenderText {#text} at (0,7) size 184x41
+          text run at (0,7) width 184: &quot;\x{E0E}\x{E17}\x{E19}\x{E48}\x{E23}\x{E122}\x{E18}\x{E33}\x{E2B}\x{E30}&quot;
+      RenderBlock {P} at (0,378) size 304x73
+        RenderText {#text} at (0,5) size 369x54
+          text run at (0,5) width 369: &quot;\x{907}\x{92E}\x{94B}\x{91C}\x{940}\x{E22F}\x{924}\x{947}\x{938}\x{94D}\x{924}&quot;
+      RenderBlock {P} at (0,451) size 304x67
+        RenderText {#text} at (0,11) size 239x54
+          text run at (0,11) width 239: &quot;\x{E0E}\x{E17}\x{E19}\x{E48}\x{E23}\x{E231}\x{E18}\x{E33}\x{E2B}\x{E30}&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextemojicomplextexthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-complextext.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-complextext.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-complextext.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
+  &lt;meta http-equiv=&quot;Content-Style-Type&quot; content=&quot;text/css&quot;&gt;
+&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot; /&gt;
+  &lt;style type=&quot;text/css&quot;&gt;
+    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; }
+    p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font-size: 18px; }
+    p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font-size: 24px; }
+    p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font-size: 36px; }
+    p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font-size: 48px; }
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;
+Test checks to make sure emoji icons are displayed when placed along with complex texts like Thai and Devanagari - &amp;lt;rdar://problem/7266253&amp;gt;.
+
+&lt;p class=&quot;p1&quot;&gt;&amp;#x907;&amp;#x92E;&amp;#x94B;&amp;#x91C;&amp;#x940;&amp;#xE227;&amp;#x924;&amp;#x947;&amp;#x938;&amp;#x94D;&amp;#x924;&lt;/p&gt;
+&lt;p class=&quot;p1&quot;&gt;&amp;#xE0E;&amp;#xE17;&amp;#xE19;&amp;#xE48;&amp;#xE23;&amp;#xE105;&amp;#xE18;&amp;#xE33;&amp;#xE2B;&amp;#xE30;&lt;/p&gt;
+&lt;p class=&quot;p2&quot;&gt;&amp;#x907;&amp;#x92E;&amp;#x94B;&amp;#x91C;&amp;#x940;&amp;#xE101;&amp;#x924;&amp;#x947;&amp;#x938;&amp;#x94D;&amp;#x924;&lt;/p&gt;
+&lt;p class=&quot;p2&quot;&gt;&amp;#xE0E;&amp;#xE17;&amp;#xE19;&amp;#xE48;&amp;#xE23;&amp;#xE110;&amp;#xE18;&amp;#xE33;&amp;#xE2B;&amp;#xE30;&lt;/p&gt;
+&lt;p class=&quot;p3&quot;&gt;&amp;#x907;&amp;#x92E;&amp;#x94B;&amp;#x91C;&amp;#x940;&amp;#xE109;&amp;#x924;&amp;#x947;&amp;#x938;&amp;#x94D;&amp;#x924;&lt;/p&gt;
+&lt;p class=&quot;p3&quot;&gt;&amp;#xE0E;&amp;#xE17;&amp;#xE19;&amp;#xE48;&amp;#xE23;&amp;#xE220;&amp;#xE18;&amp;#xE33;&amp;#xE2B;&amp;#xE30;&lt;/p&gt;
+&lt;p class=&quot;p4&quot;&gt;&amp;#x907;&amp;#x92E;&amp;#x94B;&amp;#x91C;&amp;#x940;&amp;#xE215;&amp;#x924;&amp;#x947;&amp;#x938;&amp;#x94D;&amp;#x924;&lt;/p&gt;
+&lt;p class=&quot;p4&quot;&gt;&amp;#xE0E;&amp;#xE17;&amp;#xE19;&amp;#xE48;&amp;#xE23;&amp;#xE122;&amp;#xE18;&amp;#xE33;&amp;#xE2B;&amp;#xE30;&lt;/p&gt;
+&lt;p class=&quot;p5&quot;&gt;&amp;#x907;&amp;#x92E;&amp;#x94B;&amp;#x91C;&amp;#x940;&amp;#xE22F;&amp;#x924;&amp;#x947;&amp;#x938;&amp;#x94D;&amp;#x924;&lt;/p&gt;
+&lt;p class=&quot;p5&quot;&gt;&amp;#xE0E;&amp;#xE17;&amp;#xE19;&amp;#xE48;&amp;#xE23;&amp;#xE231;&amp;#xE18;&amp;#xE33;&amp;#xE2B;&amp;#xE30;&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextemojitextexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-text-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-text-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-text-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+layer at (0,0) size 320x360
+  RenderView at (0,0) size 320x240
+layer at (0,0) size 320x360
+  RenderBlock {HTML} at (0,0) size 320x360
+    RenderBody {BODY} at (8,8) size 304x344
+      RenderBlock {P} at (0,0) size 304x20
+        RenderText {#text} at (0,0) size 98x19
+          text run at (0,0) width 98: &quot;This is a\x{E227}test&quot;
+      RenderBlock {P} at (0,20) size 304x20
+        RenderText {#text} at (0,0) size 98x19
+          text run at (0,0) width 98: &quot;This is a\x{E105}test&quot;
+      RenderBlock {P} at (0,40) size 304x22
+        RenderText {#text} at (0,0) size 107x21
+          text run at (0,0) width 107: &quot;This is a\x{E101}test&quot;
+      RenderBlock {P} at (0,62) size 304x22
+        RenderText {#text} at (0,0) size 107x21
+          text run at (0,0) width 107: &quot;This is a\x{E110}test&quot;
+      RenderBlock {P} at (0,84) size 304x30
+        RenderText {#text} at (0,1) size 136x28
+          text run at (0,1) width 136: &quot;This is a\x{E109}test&quot;
+      RenderBlock {P} at (0,114) size 304x30
+        RenderText {#text} at (0,1) size 136x28
+          text run at (0,1) width 136: &quot;This is a\x{E220}test&quot;
+      RenderBlock {P} at (0,144) size 304x43
+        RenderText {#text} at (0,1) size 193x41
+          text run at (0,1) width 193: &quot;This is a\x{E215}test&quot;
+      RenderBlock {P} at (0,187) size 304x43
+        RenderText {#text} at (0,1) size 193x41
+          text run at (0,1) width 193: &quot;This is a\x{E122}test&quot;
+      RenderBlock {P} at (0,230) size 304x57
+        RenderText {#text} at (0,1) size 251x54
+          text run at (0,1) width 251: &quot;This is a\x{E22F}test&quot;
+      RenderBlock {P} at (0,287) size 304x57
+        RenderText {#text} at (0,1) size 251x54
+          text run at (0,1) width 251: &quot;This is a\x{E231}test&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextemojitexthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-text.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-text.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/emoji-text.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
+  &lt;meta http-equiv=&quot;Content-Style-Type&quot; content=&quot;text/css&quot;&gt;
+&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot; /&gt;
+  &lt;style type=&quot;text/css&quot;&gt;
+    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; }
+    p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font-size: 18px; }
+    p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font-size: 24px; }
+    p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font-size: 36px; }
+    p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font-size: 48px; }
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p class=&quot;p1&quot;&gt;This is a&amp;#xE227;test&lt;/p&gt;
+&lt;p class=&quot;p1&quot;&gt;This is a&amp;#xE105;test&lt;/p&gt;
+&lt;p class=&quot;p2&quot;&gt;This is a&amp;#xE101;test&lt;/p&gt;
+&lt;p class=&quot;p2&quot;&gt;This is a&amp;#xE110;test&lt;/p&gt;
+&lt;p class=&quot;p3&quot;&gt;This is a&amp;#xE109;test&lt;/p&gt;
+&lt;p class=&quot;p3&quot;&gt;This is a&amp;#xE220;test&lt;/p&gt;
+&lt;p class=&quot;p4&quot;&gt;This is a&amp;#xE215;test&lt;/p&gt;
+&lt;p class=&quot;p4&quot;&gt;This is a&amp;#xE122;test&lt;/p&gt;
+&lt;p class=&quot;p5&quot;&gt;This is a&amp;#xE22F;test&lt;/p&gt;
+&lt;p class=&quot;p5&quot;&gt;This is a&amp;#xE231;test&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextlinebreakingwithkerningexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/line-breaking-with-kerning-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/line-breaking-with-kerning-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/line-breaking-with-kerning-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x582
+      RenderBlock {P} at (0,0) size 784x40
+        RenderText {#text} at (0,0) size 55x19
+          text run at (0,0) width 55: &quot;Test for &quot;
+        RenderInline {I} at (0,0) size 776x39
+          RenderInline {A} at (0,0) size 312x19 [color=#0000EE]
+            RenderText {#text} at (54,0) size 312x19
+              text run at (54,0) width 312: &quot;https://bugs.webkit.org/show_bug.cgi?id=32794&quot;
+          RenderText {#text} at (365,0) size 776x39
+            text run at (365,0) width 5: &quot; &quot;
+            text run at (369,0) width 407: &quot;With text-rendering: optimizelegibility, sometimes lines run too&quot;
+            text run at (0,20) width 29: &quot;long&quot;
+        RenderText {#text} at (28,20) size 5x19
+          text run at (28,20) width 5: &quot;.&quot;
+      RenderBlock {P} at (0,56) size 784x20
+        RenderText {#text} at (0,0) size 583x19
+          text run at (0,0) width 430: &quot;Text should not overflow any of these boxes. The terminal of the f &quot;
+          text run at (429,0) width 154: &quot;may overlap the border.&quot;
+      RenderBlock {DIV} at (0,92) size 247x44 [border: (3px solid #0000FF)]
+        RenderText {#text} at (3,3) size 241x38
+          text run at (3,3) width 241: &quot;maintenance of the balance of power&quot;
+          text run at (3,22) width 13: &quot;in&quot;
+      RenderBlock {DIV} at (0,146) size 247x44 [border: (3px solid #FF0000)]
+        RenderText {#text} at (3,3) size 241x38
+          text run at (3,3) width 241: &quot;maintenance of the balance of&quot;
+          text run at (3,22) width 57: &quot;power in&quot;
+      RenderBlock {DIV} at (0,200) size 247x44 [border: (3px solid #0000FF)]
+        RenderText {#text} at (3,3) size 238x38
+          text run at (3,3) width 238: &quot;maintenance of the balance of power&quot;
+          text run at (3,22) width 13: &quot;in&quot;
+      RenderBlock {DIV} at (0,254) size 247x44 [border: (3px solid #FF0000)]
+        RenderText {#text} at (3,3) size 196x38
+          text run at (3,3) width 196: &quot;maintenance of the balance of&quot;
+          text run at (3,22) width 57: &quot;power in&quot;
+      RenderBlock {DIV} at (0,308) size 247x44 [border: (3px solid #0000FF)]
+        RenderText {#text} at (3,3) size 238x38
+          text run at (3,3) width 238: &quot;f f f f f f f f f f f f f f f f f f f f f f f f f f f f f&quot;
+          text run at (3,22) width 13: &quot;f f&quot;
+      RenderBlock {DIV} at (0,362) size 247x44 [border: (3px solid #FF0000)]
+        RenderText {#text} at (3,3) size 239x38
+          text run at (3,3) width 239: &quot;f f f f f f f f f f f f f f f f f f f f f f f&quot;
+          text run at (3,22) width 79: &quot;f f f f f f f f&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextlinebreakingwithkerninghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/line-breaking-with-kerning.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/line-breaking-with-kerning.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/line-breaking-with-kerning.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;style&gt;
+    div {
+        font-family: baskerville;
+        width: 241px;
+        border: solid blue;
+        margin: 10px 0;
+    }
+    div.optimizelegibility {
+        text-rendering: optimizelegibility;
+        border-color: red;
+    }
+&lt;/style&gt;
+&lt;p&gt;
+    Test for &lt;i&gt;&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=32794&quot;&gt;https://bugs.webkit.org/show_bug.cgi?id=32794&lt;/a&gt;
+    With text-rendering: optimizelegibility, sometimes lines run too long&lt;/i&gt;.
+&lt;/p&gt;
+&lt;p&gt;
+    Text should not overflow any of these boxes. The terminal of the f
+    may overlap the border.
+&lt;/p&gt;
+&lt;div style=&quot;text-align: justify;&quot;&gt;maintenance of the balance of power in&lt;/div&gt;
+&lt;div class=&quot;optimizelegibility&quot; style=&quot;text-align: justify;&quot;&gt;maintenance of the balance of power in&lt;/div&gt;
+&lt;div&gt;maintenance of the balance of power in&lt;/div&gt;
+&lt;div class=&quot;optimizelegibility&quot;&gt;maintenance of the balance of power in&lt;/div&gt;
+&lt;div&gt;f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f&lt;/div&gt;
+&lt;div class=&quot;optimizelegibility&quot;&gt;f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextmidwordbreakbeforecombiningmarkexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/mid-word-break-before-combining-mark-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/mid-word-break-before-combining-mark-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/mid-word-break-before-combining-mark-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+layer at (0,0) size 320x240
+  RenderView at (0,0) size 320x240
+layer at (0,0) size 320x240
+  RenderBlock {HTML} at (0,0) size 320x240
+    RenderBody {BODY} at (8,8) size 304x224
+      RenderBlock {DIV} at (0,0) size 100x48
+        RenderText {#text} at (0,0) size 84x47
+          text run at (0,0) width 84: &quot;0\x{20E3}1\x{20E3}2\x{20E3}3\x{20E3}&quot;
+          text run at (0,24) width 84: &quot;4\x{20E3}5\x{20E3}6\x{20E3}7\x{20E3}&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextmidwordbreakbeforecombiningmarkhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/mid-word-break-before-combining-mark.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/mid-word-break-before-combining-mark.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/mid-word-break-before-combining-mark.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+&lt;meta name=viewport content=&quot;width=device-width&quot;&gt;
+&lt;div style=&quot;font-size: 20px; width: 100px; outline: solid blue; word-break: break-all;&quot;&gt;
+    0&amp;#x20e3;1&amp;#x20e3;2&amp;#x20e3;3&amp;#x20e3;4&amp;#x20e3;5&amp;#x20e3;6&amp;#x20e3;7&amp;#x20e3;
+&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextopticalFontexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFont-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFont-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFont-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+layer at (0,0) size 800x1349
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x1349
+  RenderBlock {HTML} at (0,0) size 800x1349
+    RenderBody {BODY} at (8,8) size 784x1333
+      RenderBlock {DIV} at (0,0) size 784x29
+        RenderText {#text} at (0,0) size 395x29
+          text run at (0,0) width 395: &quot;This is a test for -webkit-system-font&quot;
+      RenderBlock {DIV} at (0,29) size 784x58
+        RenderText {#text} at (0,0) size 744x58
+          text run at (0,0) width 744: &quot;This is a test for -apple-system-font. It should be the same as the line&quot;
+          text run at (0,29) width 73: &quot;above.&quot;
+      RenderBlock {DIV} at (0,87) size 784x74
+        RenderText {#text} at (0,0) size 710x74
+          text run at (0,0) width 710: &quot;This is a test for -webkit-system-font, using the 'font'&quot;
+          text run at (0,37) width 114: &quot;property&quot;
+      RenderBlock {DIV} at (0,161) size 784x74
+        RenderText {#text} at (0,0) size 696x74
+          text run at (0,0) width 696: &quot;This is a test for -apple-system-font, using the 'font'&quot;
+          text run at (0,37) width 114: &quot;property&quot;
+      RenderBlock {DIV} at (0,235) size 784x29
+        RenderInline {B} at (0,0) size 548x29
+          RenderText {#text} at (0,0) size 548x29
+            text run at (0,0) width 548: &quot;This is a test for -webkit-system-font in bold form&quot;
+      RenderBlock {DIV} at (0,264) size 784x29
+        RenderInline {I} at (0,0) size 528x29
+          RenderText {#text} at (0,0) size 528x29
+            text run at (0,0) width 528: &quot;This is a test for -webkit-system-font in italic form&quot;
+      RenderBlock {DIV} at (0,293) size 784x37
+        RenderText {#text} at (0,0) size 663x37
+          text run at (0,0) width 663: &quot;This is a test for -webkit-system-font at size 30px&quot;
+      RenderBlock {DIV} at (0,330) size 784x88
+        RenderText {#text} at (0,0) size 705x88
+          text run at (0,0) width 705: &quot;This is a test for -webkit-system-font at size&quot;
+          text run at (0,44) width 81: &quot;36px&quot;
+      RenderBlock {DIV} at (0,418) size 784x102
+        RenderText {#text} at (0,0) size 738x102
+          text run at (0,0) width 738: &quot;This is a test for -webkit-system-font at&quot;
+          text run at (0,51) width 179: &quot;size 42px&quot;
+      RenderBlock {DIV} at (0,520) size 784x116
+        RenderText {#text} at (0,0) size 705x116
+          text run at (0,0) width 705: &quot;This is a test for -webkit-system-&quot;
+          text run at (0,58) width 355: &quot;font at size 48px&quot;
+      RenderBlock {DIV} at (0,636) size 784x132
+        RenderText {#text} at (0,0) size 600x132
+          text run at (0,0) width 600: &quot;This is a test for -webkit-&quot;
+          text run at (0,66) width 594: &quot;system-font at size 54px&quot;
+      RenderBlock {DIV} at (0,768) size 784x146
+        RenderText {#text} at (0,0) size 666x146
+          text run at (0,0) width 666: &quot;This is a test for -webkit-&quot;
+          text run at (0,73) width 659: &quot;system-font at size 60px&quot;
+      RenderBlock {DIV} at (0,914) size 784x158
+        RenderText {#text} at (0,0) size 733x158
+          text run at (0,0) width 733: &quot;This is a test for -webkit-&quot;
+          text run at (0,79) width 725: &quot;system-font at size 66px&quot;
+      RenderBlock {DIV} at (0,1072) size 784x261
+        RenderText {#text} at (0,0) size 706x261
+          text run at (0,0) width 559: &quot;This is a test for -&quot;
+          text run at (0,87) width 706: &quot;webkit-system-font at&quot;
+          text run at (0,174) width 306: &quot;size 72px&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextopticalFonthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFont.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFont.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFont.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;body&gt;
+    &lt;div style=&quot;font-family: -webkit-system-font; font-size: 24px&quot;&gt;This is a test for -webkit-system-font&lt;/div&gt;
+    &lt;div style=&quot;font-family: -apple-system-font; font-size: 24px&quot;&gt;This is a test for -apple-system-font. It should be the same as the line above.&lt;/div&gt;
+    &lt;div style=&quot;font: 30.0px -webkit-system-font&quot;&gt;This is a test for -webkit-system-font, using the 'font' property&lt;/div&gt;
+    &lt;div style=&quot;font: 30px -apple-system-font&quot;&gt;This is a test for -apple-system-font, using the 'font' property&lt;/div&gt;
+    &lt;div style=&quot;font-family: -webkit-system-font; font-size: 24px&quot;&gt;&lt;b&gt;This is a test for -webkit-system-font in bold form&lt;/b&gt;&lt;/div&gt;
+    &lt;div style=&quot;font-family: -webkit-system-font; font-size: 24px&quot;&gt;&lt;i&gt;This is a test for -webkit-system-font in italic form&lt;/i&gt;&lt;/div&gt;
+    &lt;div style=&quot;font-family: -webkit-system-font; font-size: 30px&quot;&gt;This is a test for -webkit-system-font at size 30px&lt;/div&gt;
+    &lt;div style=&quot;font-family: -webkit-system-font; font-size: 36px&quot;&gt;This is a test for -webkit-system-font at size 36px&lt;/div&gt;
+    &lt;div style=&quot;font-family: -webkit-system-font; font-size: 42px&quot;&gt;This is a test for -webkit-system-font at size 42px&lt;/div&gt;
+    &lt;div style=&quot;font-family: -webkit-system-font; font-size: 48px&quot;&gt;This is a test for -webkit-system-font at size 48px&lt;/div&gt;
+    &lt;div style=&quot;font-family: -webkit-system-font; font-size: 54px&quot;&gt;This is a test for -webkit-system-font at size 54px&lt;/div&gt;
+    &lt;div style=&quot;font-family: -webkit-system-font; font-size: 60px&quot;&gt;This is a test for -webkit-system-font at size 60px&lt;/div&gt;
+    &lt;div style=&quot;font-family: -webkit-system-font; font-size: 66px&quot;&gt;This is a test for -webkit-system-font at size 66px&lt;/div&gt;
+    &lt;div style=&quot;font-family: -webkit-system-font; font-size: 72px&quot;&gt;This is a test for -webkit-system-font at size 72px&lt;/div&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextopticalFontWithTextStyleexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithTextStyle-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithTextStyle-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithTextStyle-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,15) size 784x577
+      RenderBlock {DIV} at (0,0) size 784x24
+        RenderText {#text} at (0,1) size 107x22
+          text run at (0,1) width 107: &quot;H1 / Headline&quot;
+      RenderBlock {DIV} at (0,39) size 784x24
+        RenderText {#text} at (0,1) size 707x22
+          text run at (0,1) width 707: &quot;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {DIV} at (0,78) size 784x26
+        RenderText {#text} at (0,2) size 739x22
+          text run at (0,2) width 739: &quot;Tall Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {DIV} at (0,119) size 784x22
+        RenderText {#text} at (0,1) size 87x19
+          text run at (0,1) width 87: &quot;Subheadline&quot;
+      RenderBlock {DIV} at (0,156) size 784x20
+        RenderText {#text} at (0,1) size 81x17
+          text run at (0,1) width 81: &quot;FN / Footnote&quot;
+      RenderBlock {DIV} at (0,191) size 784x17
+        RenderText {#text} at (0,1) size 96x15
+          text run at (0,1) width 96: &quot;Cap 1 / Caption 1&quot;
+      RenderBlock {DIV} at (0,223) size 784x14
+        RenderText {#text} at (0,0) size 88x14
+          text run at (0,0) width 88: &quot;Cap 2 / Caption 2&quot;
+      RenderBlock {DIV} at (0,252) size 784x22
+        RenderText {#text} at (0,0) size 154x22
+          text run at (0,0) width 154: &quot;Short H1 / Headline&quot;
+      RenderBlock {DIV} at (0,289) size 784x22
+        RenderText {#text} at (0,0) size 753x22
+          text run at (0,0) width 753: &quot;Short Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {DIV} at (0,326) size 784x20
+        RenderText {#text} at (0,0) size 128x19
+          text run at (0,0) width 128: &quot;Short Subheadline&quot;
+      RenderBlock {DIV} at (0,361) size 784x18
+        RenderText {#text} at (0,0) size 116x17
+          text run at (0,0) width 116: &quot;Short FN / Footnote&quot;
+      RenderBlock {DIV} at (0,394) size 784x15
+        RenderText {#text} at (0,0) size 128x15
+          text run at (0,0) width 128: &quot;Short Cap 1 / Caption 1&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextopticalFontWithTextStylehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithTextStyle.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithTextStyle.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithTextStyle.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0&quot; /&gt;
+    &lt;/head&gt;
+&lt;body&gt;
+    &lt;div style=&quot;margin-top: 15px; font: -apple-system-headline&quot;&gt;H1 / Headline&lt;/div&gt;
+    &lt;div style=&quot;margin-top: 15px; font: -apple-system-body&quot;&gt;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/div&gt;
+    &lt;div style=&quot;margin-top: 15px; font: -apple-system-tall-body&quot;&gt;Tall Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/div&gt;
+    &lt;div style=&quot;margin-top: 15px; font: -apple-system-subheadline&quot;&gt;Subheadline&lt;/div&gt;
+    &lt;div style=&quot;margin-top: 15px; font: -apple-system-footnote&quot;&gt;FN / Footnote&lt;/div&gt;
+    &lt;div style=&quot;margin-top: 15px; font: -apple-system-caption1&quot;&gt;Cap 1 / Caption 1&lt;/div&gt;
+    &lt;div style=&quot;margin-top: 15px; font: -apple-system-caption2&quot;&gt;Cap 2 / Caption 2&lt;/div&gt;
+    &lt;div style=&quot;margin-top: 15px; font: -apple-system-short-headline&quot;&gt;Short H1 / Headline&lt;/div&gt;
+    &lt;div style=&quot;margin-top: 15px; font: -apple-system-short-body&quot;&gt;Short Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/div&gt;
+    &lt;div style=&quot;margin-top: 15px; font: -apple-system-short-subheadline&quot;&gt;Short Subheadline&lt;/div&gt;
+    &lt;div style=&quot;margin-top: 15px; font: -apple-system-short-footnote&quot;&gt;Short FN / Footnote&lt;/div&gt;
+    &lt;div style=&quot;margin-top: 15px; font: -apple-system-short-caption1&quot;&gt;Short Cap 1 / Caption 1&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextopticalFontWithWeightexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithWeight-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithWeight-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithWeight-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,71 @@
</span><ins>+layer at (0,0) size 800x992
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x992
+  RenderBlock {HTML} at (0,0) size 800x993
+    RenderBody {BODY} at (8,8) size 784x969
+      RenderBlock {H2} at (0,0) size 784x30
+        RenderText {#text} at (0,0) size 165x29
+          text run at (0,0) width 165: &quot;Normal Weight&quot;
+      RenderBlock {P} at (0,49) size 784x21
+        RenderText {#text} at (0,0) size 666x20
+          text run at (0,0) width 666: &quot;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {H2} at (0,89) size 784x31
+        RenderText {#text} at (0,0) size 125x29
+          text run at (0,0) width 125: &quot;100 Weight&quot;
+      RenderBlock {P} at (0,139) size 784x21
+        RenderText {#text} at (0,0) size 590x20
+          text run at (0,0) width 590: &quot;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {H2} at (0,179) size 784x31
+        RenderText {#text} at (0,0) size 125x29
+          text run at (0,0) width 125: &quot;200 Weight&quot;
+      RenderBlock {P} at (0,229) size 784x21
+        RenderText {#text} at (0,0) size 617x20
+          text run at (0,0) width 617: &quot;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {H2} at (0,269) size 784x31
+        RenderText {#text} at (0,0) size 125x29
+          text run at (0,0) width 125: &quot;300 Weight&quot;
+      RenderBlock {P} at (0,319) size 784x21
+        RenderText {#text} at (0,0) size 640x20
+          text run at (0,0) width 640: &quot;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {H2} at (0,359) size 784x31
+        RenderText {#text} at (0,0) size 125x29
+          text run at (0,0) width 125: &quot;400 Weight&quot;
+      RenderBlock {P} at (0,409) size 784x21
+        RenderText {#text} at (0,0) size 666x20
+          text run at (0,0) width 666: &quot;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {H2} at (0,449) size 784x31
+        RenderText {#text} at (0,0) size 125x29
+          text run at (0,0) width 125: &quot;500 Weight&quot;
+      RenderBlock {P} at (0,498) size 784x21
+        RenderText {#text} at (0,0) size 666x20
+          text run at (0,0) width 666: &quot;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {H2} at (0,538) size 784x31
+        RenderText {#text} at (0,0) size 137x29
+          text run at (0,0) width 137: &quot;Bold Weight&quot;
+      RenderBlock {P} at (0,588) size 784x21
+        RenderText {#text} at (0,0) size 688x20
+          text run at (0,0) width 688: &quot;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {H2} at (0,628) size 784x31
+        RenderText {#text} at (0,0) size 125x29
+          text run at (0,0) width 125: &quot;600 Weight&quot;
+      RenderBlock {P} at (0,678) size 784x21
+        RenderText {#text} at (0,0) size 688x20
+          text run at (0,0) width 688: &quot;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {H2} at (0,718) size 784x31
+        RenderText {#text} at (0,0) size 125x29
+          text run at (0,0) width 125: &quot;700 Weight&quot;
+      RenderBlock {P} at (0,768) size 784x21
+        RenderText {#text} at (0,0) size 688x20
+          text run at (0,0) width 688: &quot;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {H2} at (0,808) size 784x31
+        RenderText {#text} at (0,0) size 125x29
+          text run at (0,0) width 125: &quot;800 Weight&quot;
+      RenderBlock {P} at (0,858) size 784x21
+        RenderText {#text} at (0,0) size 688x20
+          text run at (0,0) width 688: &quot;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
+      RenderBlock {H2} at (0,898) size 784x31
+        RenderText {#text} at (0,0) size 125x29
+          text run at (0,0) width 125: &quot;900 Weight&quot;
+      RenderBlock {P} at (0,948) size 784x21
+        RenderText {#text} at (0,0) size 688x20
+          text run at (0,0) width 688: &quot;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextopticalFontWithWeighthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithWeight.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithWeight.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/opticalFontWithWeight.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;html&gt;
+    &lt;head&gt;
+        &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0&quot; /&gt;
+        &lt;style&gt;
+        h2 {
+            font: -apple-system-headline;
+        }
+        p {
+            font-family: -apple-system-font;
+        }
+        &lt;/style&gt;
+    &lt;/head&gt;
+&lt;body&gt;
+    &lt;h2&gt;Normal Weight&lt;/h2&gt;
+    &lt;p&gt;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/p&gt;
+
+    &lt;h2&gt;100 Weight&lt;/h2&gt;
+    &lt;p style=&quot;font-weight: 100;&quot;&gt;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/p&gt;
+
+    &lt;h2&gt;200 Weight&lt;/h2&gt;
+    &lt;p style=&quot;font-weight: 200;&quot;&gt;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/p&gt;
+
+    &lt;h2&gt;300 Weight&lt;/h2&gt;
+    &lt;p style=&quot;font-weight: 300;&quot;&gt;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/p&gt;
+
+    &lt;h2&gt;400 Weight&lt;/h2&gt;
+    &lt;p style=&quot;font-weight: 400;&quot;&gt;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/p&gt;
+
+    &lt;h2&gt;500 Weight&lt;/h2&gt;
+    &lt;p style=&quot;font-weight: 500;&quot;&gt;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/p&gt;
+
+    &lt;h2&gt;Bold Weight&lt;/h2&gt;
+    &lt;p style=&quot;font-weight: bold;&quot;&gt;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/p&gt;
+
+    &lt;h2&gt;600 Weight&lt;/h2&gt;
+    &lt;p style=&quot;font-weight: 600;&quot;&gt;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/p&gt;
+
+    &lt;h2&gt;700 Weight&lt;/h2&gt;
+    &lt;p style=&quot;font-weight: 700;&quot;&gt;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/p&gt;
+
+    &lt;h2&gt;800 Weight&lt;/h2&gt;
+    &lt;p style=&quot;font-weight: 800;&quot;&gt;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/p&gt;
+
+    &lt;h2&gt;900 Weight&lt;/h2&gt;
+    &lt;p style=&quot;font-weight: 900;&quot;&gt;Body Text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ornare ornare mi&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttexttextStylesWithSizesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/textStylesWithSizes-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/textStylesWithSizes-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/textStylesWithSizes-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+layer at (0,0) size 320x487
+  RenderView at (0,0) size 320x240
+layer at (0,0) size 320x487
+  RenderBlock {HTML} at (0,0) size 320x487
+    RenderBody {BODY} at (8,8) size 304x471
+      RenderBlock {H1} at (0,0) size 304x172
+        RenderText {#text} at (0,0) size 247x171
+          text run at (0,0) width 202: &quot;This is an H1&quot;
+          text run at (0,43) width 201: &quot;element with&quot;
+          text run at (0,86) width 247: &quot;multiple lines of&quot;
+          text run at (0,129) width 70: &quot;text.&quot;
+      RenderBlock {DIV} at (0,194) size 304x277
+        RenderText {#text} at (0,1) size 264x59
+          text run at (0,1) width 264: &quot;This is body text spanning multiple&quot;
+          text run at (0,38) width 98: &quot;lines. This is &quot;
+        RenderInline {SPAN} at (0,0) size 276x119
+          RenderText {#text} at (97,24) size 276x119
+            text run at (97,24) width 179: &quot;font-size xx-&quot;
+            text run at (0,64) width 211: &quot;large spanning&quot;
+            text run at (0,104) width 205: &quot;multiple lines. &quot;
+        RenderText {#text} at (204,118) size 297x73
+          text run at (204,118) width 93: &quot;This is body&quot;
+          text run at (0,145) width 265: &quot;text spanning multiple lines. This is&quot;
+          text run at (0,169) width 255: &quot;body text spanning multiple lines.&quot;
+        RenderInline {SPAN} at (0,0) size 302x34
+          RenderText {#text} at (254,178) size 302x34
+            text run at (254,178) width 48: &quot; This is some&quot;
+            text run at (0,202) width 167: &quot;text with 8px font size that spans multiple lines&quot;
+        RenderText {#text} at (166,193) size 290x46
+          text run at (166,193) width 124: &quot;. The rest of this&quot;
+          text run at (0,217) width 267: &quot;text is back to apple system body. &quot;
+        RenderInline {SPAN} at (0,0) size 303x54
+          RenderText {#text} at (266,221) size 303x54
+            text run at (266,221) width 37: &quot;Finally&quot;
+            text run at (0,240) width 256: &quot;some text that has fontsize small that spans&quot;
+            text run at (0,258) width 80: &quot;multiple lines.&quot;
+        RenderText {#text} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttexttextStylesWithSizeshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/textStylesWithSizes.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/textStylesWithSizes.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/textStylesWithSizes.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;meta name=viewport content=&quot;width=device-width&quot;&gt;
+&lt;style&gt;
+    body { font: -apple-system-body; }
+&lt;/style&gt;
+&lt;body&gt;
+    &lt;h1&gt;
+        This is an H1 element with multiple lines of text.
+    &lt;/h1&gt;
+    &lt;div&gt;
+        This is body text spanning multiple lines. This is &lt;span style=&quot;font-size: xx-large;&quot;&gt;font-size xx-large spanning multiple lines.
+        &lt;/span&gt; This is body text spanning multiple lines. This is body text spanning multiple lines.&lt;span style=&quot;font-size: 8px&quot;&gt; This is some text with 8px font size that spans multiple lines&lt;/span&gt;. The rest of this text is back to apple system body.
+        &lt;span style=&quot;font-size: small&quot;&gt;Finally some text that has fontsize small that spans multiple lines.&lt;/span&gt;
+    &lt;/div&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextunderlinescalingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/underline-scaling-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/underline-scaling-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/underline-scaling-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x284
+  RenderBlock {HTML} at (0,0) size 800x284
+    RenderBody {BODY} at (8,8) size 784x268
+      RenderBlock {P} at (0,0) size 784x20
+        RenderText {#text} at (0,0) size 132x20
+          text run at (0,0) width 132: &quot;font-size is default&quot;
+      RenderBlock {P} at (0,20) size 784x10
+        RenderText {#text} at (0,0) size 55x10
+          text run at (0,0) width 55: &quot;font-size is 8px&quot;
+      RenderBlock {P} at (0,30) size 784x15
+        RenderText {#text} at (0,0) size 89x15
+          text run at (0,0) width 89: &quot;font-size is 12px&quot;
+      RenderBlock {P} at (0,45) size 784x20
+        RenderText {#text} at (0,0) size 118x20
+          text run at (0,0) width 118: &quot;font-size is 16px&quot;
+      RenderBlock {P} at (0,65) size 784x25
+        RenderText {#text} at (0,0) size 148x25
+          text run at (0,0) width 148: &quot;font-size is 20px&quot;
+      RenderBlock {P} at (0,90) size 784x29
+        RenderText {#text} at (0,0) size 177x29
+          text run at (0,0) width 177: &quot;font-size is 24px&quot;
+      RenderBlock {P} at (0,119) size 784x39
+        RenderText {#text} at (0,0) size 236x39
+          text run at (0,0) width 236: &quot;font-size is 32px&quot;
+      RenderBlock {P} at (0,158) size 784x49
+        RenderText {#text} at (0,0) size 295x49
+          text run at (0,0) width 295: &quot;font-size is 40px&quot;
+      RenderBlock {P} at (0,207) size 784x61
+        RenderText {#text} at (0,0) size 369x61
+          text run at (0,0) width 369: &quot;font-size is 50px&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfasttextunderlinescalinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fast/text/underline-scaling.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fast/text/underline-scaling.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fast/text/underline-scaling.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
+        &lt;style&gt;
+        p {
+            font-family: -apple-system-font;
+            text-decoration: underline;
+            margin-top: 0;
+            margin-bottom: 0;
+        }
+        &lt;/style&gt;
+    &lt;/head&gt;
+&lt;body&gt;
+    &lt;p&gt;font-size is default&lt;/p&gt;
+    &lt;p style=&quot;font-size: 8px;&quot;&gt;font-size is 8px&lt;/p&gt;
+    &lt;p style=&quot;font-size: 12px;&quot;&gt;font-size is 12px&lt;/p&gt;
+    &lt;p style=&quot;font-size: 16px;&quot;&gt;font-size is 16px&lt;/p&gt;
+    &lt;p style=&quot;font-size: 20px;&quot;&gt;font-size is 20px&lt;/p&gt;
+    &lt;p style=&quot;font-size: 24px;&quot;&gt;font-size is 24px&lt;/p&gt;
+    &lt;p style=&quot;font-size: 32px;&quot;&gt;font-size is 32px&lt;/p&gt;
+    &lt;p style=&quot;font-size: 40px;&quot;&gt;font-size is 40px&lt;/p&gt;
+    &lt;p style=&quot;font-size: 50px;&quot;&gt;font-size is 50px&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedabsoluteinsidefixedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/absolute-inside-fixed-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/absolute-inside-fixed-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/absolute-inside-fixed-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+(GraphicsLayer
+  (bounds 800.00 2710.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 2710.00)
+    )
+  )
+)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedabsoluteinsidefixedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/absolute-inside-fixed.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/absolute-inside-fixed.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/absolute-inside-fixed.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+
+&lt;head&gt;
+    &lt;style&gt;
+        body {
+            margin: 0;
+            height: 2500px;
+        }
+
+        .box {
+          height: 100px;
+          width: 100px;
+        }
+
+        .outer {
+            position: fixed;
+            left: 10px;
+            top: 10px;
+            width: 100px;
+            height: 100px;
+            outline: 2px solid black;
+        }
+
+        .wrapper {
+          position: absolute;
+          background-color: green;
+        }
+        
+        .indicator {
+          margin-left: 10px;
+          margin-top: 210px;
+          background-color: red;
+        }
+    &lt;/style&gt;
+    &lt;script&gt;
+      if (window.testRunner) {
+        testRunner.waitUntilDone();
+        testRunner.dumpAsText();
+      }
+
+      function doScroll()
+      {
+        window.setTimeout(function() {
+          window.scrollTo(0, 200);
+          if (window.testRunner) {
+            document.getElementById('results').innerText = window.internals.layerTreeAsText(document);
+            testRunner.notifyDone();
+          }
+        }, 10);
+      }
+      
+      window.addEventListener('load', doScroll, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;!-- The green box should obscure the red box --&gt;
+  &lt;pre id=&quot;results&quot;&gt;&lt;/pre&gt;
+  &lt;div class=&quot;indicator box&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;outer box&quot;&gt;
+    &lt;div class=&quot;wrapper box&quot;&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixedbackforwardexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-back-forward-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-back-forward-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-back-forward-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+If you got here without crashing, the test passed.
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixedbackforwardhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-back-forward.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-back-forward.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-back-forward.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+  &lt;style&gt;
+    body {
+      height: 2000px;
+    }
+    
+    #sometimes-fixed {
+      position: fixed;
+    }
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;div id=&quot;sometimes-fixed&quot;&gt;Fixed&lt;/div&gt;
+
+&lt;script&gt;
+description('Tests that fixed elements don\'t cause crashes after going back to a page in the page cache.');
+
+var pageShowCount = 0;
+function onPageShow()
+{
+  debug('pageshow ' + pageShowCount);
+  if (++pageShowCount == 2)
+      window.location.href = 'resources/fixpos-unload-final.html';
+}
+
+function onPageHide()
+{
+  document.getElementById('sometimes-fixed').style.position = 'absolute';
+}
+
+function onPageLoad()
+{
+    if (window.testRunner)
+      testRunner.overridePreference(&quot;WebKitUsesPageCachePreferenceKey&quot;, 1);
+
+    // Navigate in a timeout to make sure we create a history entry.
+    setTimeout(function() {
+      window.location.href = 'resources/jump-back.html';
+    }, 0);
+};
+
+window.addEventListener('load', onPageLoad, false);
+window.addEventListener('pageshow', onPageShow, false);
+window.addEventListener('pagehide', onPageHide, false);
+
+var successfullyParsed = true;
+var jsTestIsAsync = true;
+&lt;/script&gt; 
+
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixedpositionoutofviewexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixedpositionoutofviewnegativezindexexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view-negative-zindex-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view-negative-zindex-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view-negative-zindex-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixedpositionoutofviewnegativezindexhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view-negative-zindex.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view-negative-zindex.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view-negative-zindex.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+  &lt;style&gt;
+    .fixed {
+      position: fixed;
+      width: 10px;
+      height: 10px;
+    }
+  &lt;/style&gt;
+
+  &lt;script type=&quot;text/javascript&quot;&gt;
+    if (window.testRunner) {
+      testRunner.dumpAsText();
+      testRunner.waitUntilDone();
+
+      window.addEventListener(&quot;load&quot;, function() {
+        // Timeout required because setting up the fixed position layout rect is async.
+        window.setTimeout(function() {
+          document.getElementById(&quot;layertree&quot;).innerText = window.internals.layerTreeAsText(document);
+          testRunner.notifyDone();
+        }, 10);
+      }, false);
+    }
+  &lt;/script&gt;
+&lt;/head&gt;
+
+&lt;body&gt;
+  &lt;div style=&quot;height: 1000px&quot;&gt;
+    &lt;pre id=&quot;layertree&quot;&gt;&lt;/pre&gt;
+  &lt;/div&gt;
+
+  &lt;!-- Neither of the following elements gets its own layer. --&gt;
+  &lt;div class=&quot;fixed&quot; style=&quot;z-index: -1; top: -100px&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;fixed&quot; style=&quot;z-index: -1; top: 0px; left: 1000px&quot;&gt;&lt;/div&gt;
+
+  &lt;!-- This element gets its own layer because it intersects with the viewport. --&gt;
+  &lt;div class=&quot;fixed&quot; style=&quot;top: 0px; left: 0px&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixedpositionoutofviewhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixed-position-out-of-view.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+  &lt;style&gt;
+    .fixed {
+      position: fixed;
+      width: 10px;
+      height: 10px;
+    }
+  &lt;/style&gt;
+
+  &lt;script type=&quot;text/javascript&quot;&gt;
+    if (window.testRunner) {
+      testRunner.dumpAsText();
+      testRunner.waitUntilDone();
+
+      window.addEventListener(&quot;load&quot;, function() {
+        // Timeout required because setting up the fixed position layout rect is async.
+        window.setTimeout(function() {
+          document.getElementById(&quot;layertree&quot;).innerText = window.internals.layerTreeAsText(document);
+          testRunner.notifyDone();
+        }, 10);
+      }, false);
+    }
+  &lt;/script&gt;
+&lt;/head&gt;
+
+&lt;body&gt;
+  &lt;div style=&quot;height: 1000px&quot;&gt;
+    &lt;pre id=&quot;layertree&quot;&gt;&lt;/pre&gt;
+  &lt;/div&gt;
+
+  &lt;!-- Neither of the following elements gets its own layer. --&gt;
+  &lt;div class=&quot;fixed&quot; style=&quot;top: -100px&quot;&gt;&lt;/div&gt;
+  &lt;div class=&quot;fixed&quot; style=&quot;top: 0px; left: 1000px&quot;&gt;&lt;/div&gt;
+
+  &lt;!-- This element gets its own layer because it intersects with the viewport. --&gt;
+  &lt;div class=&quot;fixed&quot; style=&quot;top: 0px; left: 0px&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixposcanvasassertionexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-canvas-assertion-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-canvas-assertion-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-canvas-assertion-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+This test should not assert on reload.
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixposcanvasassertionhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-canvas-assertion.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-canvas-assertion.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-canvas-assertion.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+  &lt;script type=&quot;text/javascript&quot;&gt;
+    var isSecondLoad = window.location.href.indexOf('?second') != -1;
+    
+    if (!isSecondLoad) {
+      if (window.testRunner) {
+        testRunner.waitUntilDone();
+        testRunner.dumpAsText();
+      }
+    }
+    
+    function initialize()
+    {
+      var canvas = document.getElementById('canvas');
+      var ctx = canvas.getContext('2d');
+
+      ctx.fillStyle = '#01294d';
+      ctx.fillRect(0, 0, 200, 200);
+      
+      window.setTimeout(function() {
+        if (isSecondLoad) {
+          if (window.testRunner)
+            testRunner.notifyDone();
+          } else
+            window.location.href += &quot;?second&quot;;
+      }, 0);
+    }
+  &lt;/script&gt;
+  &lt;style type=&quot;text/css&quot;&gt;
+    
+    canvas {
+      width: 2049px; /* force tiling */
+      height: 2049px;
+      position: fixed;
+      -webkit-transform: translateZ(0);
+    }
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;initialize()&quot;&gt;
+
+  &lt;p&gt;This test should not assert on reload.&lt;/p&gt;
+  &lt;canvas id=&quot;canvas&quot; height=&quot;200&quot; width=&quot;200&quot;&gt;&lt;/canvas&gt;
+  
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixposremoveexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-remove-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-remove-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-remove-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+If you got here without crashing, the test passed.
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixposremovehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-remove.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-remove.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-remove.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+  &lt;style type=&quot;text/css&quot;&gt;
+    #box {
+      height: 100px;
+      width: 100px;
+      background-color: blue;
+      position: fixed;
+    }
+    
+    #box.unfixed {
+      display: none;
+    }
+  &lt;/style&gt;
+  &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+    if (window.testRunner) {
+      testRunner.waitUntilDone();
+      testRunner.dumpAsText();
+    }
+    
+    function doTest()
+    {
+      window.setTimeout(function() {
+        document.getElementById('box').className = 'unfixed'
+
+        window.setTimeout(function() {
+          window.location = 'resources/fixpos-unload-final.html'
+        }, 0);
+      }, 0);
+    }
+    window.addEventListener('load', doTest, false);
+  &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;div id=&quot;box&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixpostoggleexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-toggle-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-toggle-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-toggle-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+If you got here without crashing, the test passed.
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixpostogglehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-toggle.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-toggle.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-toggle.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+  &lt;style type=&quot;text/css&quot;&gt;
+    #box {
+      height: 100px;
+      width: 100px;
+      background-color: blue;
+      position: fixed;
+    }
+    
+    #box.unfixed {
+      position: static;
+    }
+  &lt;/style&gt;
+  &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+    if (window.testRunner) {
+      testRunner.waitUntilDone();
+      testRunner.dumpAsText();
+    }
+    
+    function doTest()
+    {
+      window.setTimeout(function() {
+        document.getElementById('box').className = 'unfixed'
+
+        window.setTimeout(function() {
+          window.location = 'resources/fixpos-unload-final.html'
+        }, 0);
+      }, 0);
+    }
+    window.addEventListener('load', doTest, false);
+  &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;div id=&quot;box&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixposunloadcachedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-cached-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-cached-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-cached-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+If you got here without crashing, the test passed.
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixposunloadcachedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-cached.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-cached.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-cached.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+  &lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
+    .box {
+      height: 100px;
+      width: 100px;
+      background-color: blue;
+      position: fixed;
+    }
+  &lt;/style&gt;
+  &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+    if (window.testRunner) {
+      testRunner.waitUntilDone();
+      testRunner.dumpAsText();
+    }
+    
+    function doTest()
+    {
+      window.setTimeout(function() {
+        window.location = 'resources/fixpos-unload-final.html'
+      }, 10);
+    }
+    window.addEventListener('load', doTest, false);
+  &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;div class=&quot;box&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixposunloaduncachedcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-uncached-crash-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-uncached-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-uncached-crash-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+If you got here without crashing, the test passed.
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfixposunloaduncachedcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-uncached-crash.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-uncached-crash.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/fixpos-unload-uncached-crash.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+  &lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
+    .box {
+      height: 100px;
+      width: 100px;
+      background-color: blue;
+      position: fixed;
+    }
+  &lt;/style&gt;
+  &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+    if (window.testRunner) {
+      testRunner.waitUntilDone();
+      testRunner.dumpAsText();
+    }
+    
+    var geoloc;
+    function makeUncachable()
+    {
+      geoloc = window.navigator.geolocation;
+    }
+    
+    function doTest()
+    {
+      makeUncachable();
+      window.setTimeout(function() {
+        window.location = 'resources/fixpos-unload-final.html'
+      }, 10);
+    }
+    window.addEventListener('load', doTest, false);
+  &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;div class=&quot;box&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfourbarsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/four-bars-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/four-bars-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/four-bars-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+(GraphicsLayer
+  (bounds 800.00 2221.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 2221.00)
+      (children 3
+        (GraphicsLayer
+          (position 6.00 200.00)
+          (bounds 182.00 328.00)
+          (drawsContent 1)
+        )
+        (GraphicsLayer
+          (position 612.00 200.00)
+          (bounds 182.00 328.00)
+          (drawsContent 1)
+        )
+        (GraphicsLayer
+          (position 0.00 512.00)
+          (bounds 796.00 82.00)
+          (drawsContent 1)
+        )
+      )
+    )
+  )
+)
+This is the top bar. This is the left bar. This is the right bar. This is the bottom bar.
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedfourbarshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/four-bars.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/four-bars.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/four-bars.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+    &lt;meta name=&quot;apple-mobile-web-app-capable&quot; content=&quot;yes&quot;&gt;
+    &lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
+      body {
+        height: 2200px;
+      }
+      
+      .fixed {
+        position: fixed;
+        top: 0;
+        left: 0;
+        margin: 10px;
+        height: 50px;
+        background-color: rgba(0, 128, 0, 0.8);
+        border: 2px solid black;
+        -webkit-box-shadow: 0 0 10px black;
+      }
+      
+      .top, .bottom {
+        width: 96%;
+      }
+
+      .left {
+        top: 200px;
+        left: 10px;
+        width: 150px;
+        height: 300px;
+      }
+
+      .right {
+        top: 200px;
+        left: auto;
+        right: 10px;
+        width: 150px;
+        height: 300px;
+      }
+      
+      .bottom {
+        top: auto;
+        bottom: 10px;
+      }
+      
+    &lt;/style&gt;
+    &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+      if (window.testRunner) {
+        testRunner.waitUntilDone();
+        testRunner.dumpAsText();
+      }
+
+      function doScroll()
+      {
+        window.setTimeout(function() {
+          window.scrollTo(0, 200);
+          if (window.testRunner) {
+            document.getElementById('results').innerText = window.internals.layerTreeAsText(document);
+            testRunner.notifyDone();
+          }
+        }, 10);
+      }
+      
+      window.addEventListener('load', doScroll, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+&lt;pre id=&quot;results&quot;&gt;&lt;/pre&gt;
+
+&lt;div class=&quot;fixed top&quot;&gt;
+  This is the top bar.
+&lt;/div&gt;
+&lt;div class=&quot;fixed left&quot;&gt;
+  This is the left bar.
+&lt;/div&gt;
+&lt;div class=&quot;fixed right&quot;&gt;
+  This is the right bar.
+&lt;/div&gt;
+&lt;div class=&quot;fixed bottom&quot;&gt;
+  This is the bottom bar.
+&lt;/div&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixednestedfixedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/nested-fixed-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/nested-fixed-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/nested-fixed-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+(GraphicsLayer
+  (bounds 800.00 2213.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 2213.00)
+      (children 1
+        (GraphicsLayer
+          (bounds 100.00 100.00)
+          (contentsOpaque 1)
+          (children 1
+            (GraphicsLayer
+              (position 120.00 120.00)
+              (bounds 100.00 100.00)
+              (contentsOpaque 1)
+            )
+          )
+        )
+      )
+    )
+  )
+)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixednestedfixedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/nested-fixed.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/nested-fixed.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/nested-fixed.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+
+&lt;head&gt;
+    &lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
+        body {
+            margin: 0;
+            height: 2200px;
+        }
+
+        .box {
+          height: 100px;
+          width: 100px;
+        }
+
+        .outer {
+            position: fixed;
+            top: 0px;
+            z-index: 1; /* makes this a stacking context */
+            background: blue;
+        }
+
+        .inner {
+            position: fixed;
+            top: 120px;
+            left: 120px;
+            background: green;
+        }
+    &lt;/style&gt;
+    &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+      if (window.testRunner) {
+        testRunner.waitUntilDone();
+        testRunner.dumpAsText();
+      }
+
+      function doScroll()
+      {
+        window.setTimeout(function() {
+          window.scrollTo(0, 200);
+          if (window.testRunner) {
+            document.getElementById('results').innerText = window.internals.layerTreeAsText(document);
+            testRunner.notifyDone();
+          }
+        }, 10);
+      }
+      
+      window.addEventListener('load', doScroll, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;pre id=&quot;results&quot;&gt;&lt;/pre&gt;
+    &lt;div class=&quot;outer box&quot;&gt;
+        &lt;div class=&quot;inner box&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedpercentageinsidefixedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/percentage-inside-fixed-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/percentage-inside-fixed-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/percentage-inside-fixed-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+(GraphicsLayer
+  (bounds 800.00 2513.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 2513.00)
+      (children 1
+        (GraphicsLayer
+          (position 0.00 13.00)
+          (bounds 440.00 340.00)
+          (contentsOpaque 1)
+          (drawsContent 1)
+        )
+      )
+    )
+  )
+)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedpercentageinsidefixedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/percentage-inside-fixed.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/percentage-inside-fixed.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/percentage-inside-fixed.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,63 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+
+&lt;head&gt;
+    &lt;style&gt;
+        body {
+            margin: 0;
+            height: 2500px;
+        }
+
+        .box {
+          height: 100px;
+          width: 100px;
+        }
+
+        .wrapper {
+          position: fixed;
+          width: 50%;
+          height: 50%;
+          border: 20px solid gray;
+          background-color: silver;
+          z-index: 0;
+        }
+
+        .inner {
+            position: relative;
+            margin-left:-50px;
+            margin-top:-100px;
+            top: 100%;
+            left: 50%;
+            background: green;
+        }
+    &lt;/style&gt;
+    &lt;script&gt;
+      if (window.testRunner) {
+        testRunner.waitUntilDone();
+        testRunner.dumpAsText();
+      }
+
+      function doScroll()
+      {
+        window.setTimeout(function() {
+          window.scrollTo(0, 200);
+          if (window.testRunner) {
+            document.getElementById('results').innerText = window.internals.layerTreeAsText(document);
+            testRunner.notifyDone();
+          }
+        }, 10);
+      }
+      
+      window.addEventListener('load', doScroll, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;!-- The gray box should take up the top left quadrant of the web area.
+         The green box should be aligned with the inside edge of the paler gray box, in the bottom middle.
+    --&gt;
+    &lt;pre id=&quot;results&quot;&gt;&lt;/pre&gt;
+    &lt;div class=&quot;wrapper&quot;&gt;
+      &lt;div class=&quot;inner box&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedresourcesfixposunloadfinalhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/resources/fixpos-unload-final.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/resources/fixpos-unload-final.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/resources/fixpos-unload-final.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+  &lt;style type=&quot;text/css&quot;&gt;
+    body {
+      height: 2000px;
+    }
+  &lt;/style&gt;
+  &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+    function finishTest()
+    {
+      window.setTimeout(function() {
+        window.scrollTo(0, 50);
+        if (window.testRunner)
+          testRunner.notifyDone();
+      }, 10);
+    }
+    window.addEventListener('load', finishTest, false);
+  &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+If you got here without crashing, the test passed.
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosfixedresourcesjumpbackhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/fixed/resources/jump-back.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/fixed/resources/jump-back.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/fixed/resources/jump-back.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;script&gt;
+  window.addEventListener('load', function() {
+    window.setTimeout(function() {
+      history.back();
+    }, 0);
+  }, false);
+&lt;/script&gt;
+This page should go back.
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosgetComputedStyletextdecorationletterpressexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/getComputedStyle-text-decoration-letterpress-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/getComputedStyle-text-decoration-letterpress-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/getComputedStyle-text-decoration-letterpress-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+Test for custom letterpress text-decoration style.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Initial value:
+PASS e.style.getPropertyCSSValue('text-decoration') is null
+PASS computedStyle.textDecoration is 'none'
+PASS computedStyle.getPropertyCSSValue('text-decoration').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('text-decoration').cssText is 'none'
+
+Initial value (explicit):
+PASS e.style.textDecoration is 'initial'
+PASS e.style.getPropertyCSSValue('text-decoration').toString() is '[object CSSValue]'
+PASS e.style.getPropertyCSSValue('text-decoration').cssText is 'initial'
+PASS computedStyle.textDecoration is 'none'
+PASS computedStyle.getPropertyCSSValue('text-decoration').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('text-decoration').cssText is 'none'
+
+Value 'none':
+PASS e.style.textDecoration is 'none'
+PASS e.style.getPropertyCSSValue('text-decoration').toString() is '[object CSSPrimitiveValue]'
+PASS e.style.getPropertyCSSValue('text-decoration').cssText is 'none'
+PASS computedStyle.textDecoration is 'none'
+PASS computedStyle.getPropertyCSSValue('text-decoration').toString() is '[object CSSPrimitiveValue]'
+PASS computedStyle.getPropertyCSSValue('text-decoration').cssText is 'none'
+
+Value '-webkit-letterpress':
+PASS e.style.textDecoration is '-webkit-letterpress'
+PASS e.style.getPropertyCSSValue('text-decoration').toString() is '[object CSSValueList]'
+PASS e.style.getPropertyCSSValue('text-decoration').cssText is '-webkit-letterpress'
+PASS computedStyle.textDecoration is '-webkit-letterpress'
+PASS computedStyle.getPropertyCSSValue('text-decoration').toString() is '[object CSSValueList]'
+PASS computedStyle.getPropertyCSSValue('text-decoration').cssText is '-webkit-letterpress'
+
+Value 'underline -webkit-letterpress line-through':
+PASS e.style.textDecoration is 'underline -webkit-letterpress line-through'
+PASS e.style.getPropertyCSSValue('text-decoration').toString() is '[object CSSValueList]'
+PASS e.style.getPropertyCSSValue('text-decoration').cssText is 'underline -webkit-letterpress line-through'
+PASS computedStyle.textDecoration is 'underline line-through -webkit-letterpress'
+PASS computedStyle.getPropertyCSSValue('text-decoration').toString() is '[object CSSValueList]'
+PASS computedStyle.getPropertyCSSValue('text-decoration').cssText is 'underline line-through -webkit-letterpress'
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosgetComputedStyletextdecorationletterpresshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/getComputedStyle-text-decoration-letterpress.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/getComputedStyle-text-decoration-letterpress.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/getComputedStyle-text-decoration-letterpress.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script src=&quot;resources/getComputedStyle-text-decoration-letterpress.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorioslimitsnoimagelimitexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/limits/no-image-limit-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/limits/no-image-limit-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/limits/no-image-limit-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+Testing that we do not hit a 10MB per-document resource limit. We attempt to load 200 71KB images (~14MB) and we check that each triggers an onload event.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+PASS numberLoadedSuccessfully is numberOfImages
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorioslimitsnoimagelimithtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/limits/no-image-limit.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/limits/no-image-limit.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/limits/no-image-limit.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+if (window.testRunner)
+    testRunner.dumpAsText();
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+description(&quot;Testing that we do not hit a 10MB per-document resource limit. We attempt to load 200 71KB images (~14MB) and we check that each triggers an onload event.&quot;);
+
+var numberOfImages = 200;
+var numberLoadedSuccessfully = 0;
+
+for (var i = 0; i &lt; numberOfImages; ++i) {
+    var img = document.createElement(&quot;img&quot;);
+    img.src = &quot;resources/image.png?&quot; + i;
+    document.body.appendChild(img);
+    img.addEventListener(&quot;load&quot;, function() {
+        ++numberLoadedSuccessfully;
+    }, false);
+}
+
+window.addEventListener(&quot;load&quot;, function() {
+    shouldBe(&quot;numberLoadedSuccessfully&quot;, &quot;numberOfImages&quot;);
+}, false);
+
+var successfullyParsed = true;
+&lt;/script&gt;
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorioslimitsresourcesimagepng"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/limits/resources/image.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/platform/ios-simulator/ios/limits/resources/image.png
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkLayoutTestsplatformiossimulatoriospluginyoutubeflashpluginiframeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+Blocked access to external URL http://www.youtube.com/embed/N0gb9v4LI4o?showinfo=0
+Blocked access to external URL http://www.youtube.com/embed/N0gb9v4LI4o?showinfo=0
+Blocked access to external URL http://www.youtube.com/embed/N0gb9v4LI4o?version=3&amp;hl=en_US&amp;showinfo=0
+Blocked access to external URL http://www.youtube.com/embed/N0gb9v4LI4o?version=3&amp;hl=en_US&amp;showinfo=0
+Blocked access to external URL http://www.youtube.com/embed/N0gb9v4LI4o?showinfo=0
+Test transforming youtube flash plugin to youtube iFrame based player. &lt; rdar://problem/11201356&gt;
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+PASS normalEmbed.tagName is &quot;EMBED&quot;
+PASS elinkEmbed.tagName is &quot;EMBED&quot;
+PASS objectEmbed.tagName is &quot;EMBED&quot;
+PASS objectNoEmbed.tagName is &quot;OBJECT&quot;
+PASS document.querySelectorAll(&quot;iframe&quot;).length is 1
+PASS internals.shadowPseudoId(normalEmbedShadowRoot.firstChild) is &quot;-apple-youtube-shadow-iframe&quot;
+PASS normalEmbedShadowRoot.firstChild.firstChild.tagName is &quot;IFRAME&quot;
+PASS internals.shadowPseudoId(objectEmbedShadowRoot.firstChild) is &quot;-apple-youtube-shadow-iframe&quot;
+PASS objectEmbedShadowRoot.firstChild.firstChild.tagName is &quot;IFRAME&quot;
+PASS internals.shadowPseudoId(objectNoEmbedShadowRoot.firstChild) is &quot;-apple-youtube-shadow-iframe&quot;
+PASS objectNoEmbedShadowRoot.firstChild.firstChild.tagName is &quot;IFRAME&quot;
+Normal Embed:
+
+E-link Embed:
+
+Object with embed:
+
+Object without embed:
+
+Embed inside iframe:
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriospluginyoutubeflashpluginiframenoheightorwidthexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-no-height-or-width-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-no-height-or-width-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-no-height-or-width-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+Blocked access to external URL http://www.youtube.com/embed/N0gb9v4LI4o?showinfo=0
+Blocked access to external URL http://www.youtube.com/embed/N0gb9v4LI4o?showinfo=0
+Blocked access to external URL http://www.youtube.com/embed/N0gb9v4LI4o?showinfo=0
+Blocked access to external URL http://www.youtube.com/embed/N0gb9v4LI4o?version=3&amp;hl=en_US&amp;showinfo=0
+Blocked access to external URL http://www.youtube.com/embed/N0gb9v4LI4o?version=3&amp;hl=en_US&amp;showinfo=0
+Blocked access to external URL http://www.youtube.com/embed/N0gb9v4LI4o?version=3&amp;hl=en_US&amp;showinfo=0
+Test embed youtube plugin without height or width attribute. &lt; rdar://problem/12134474&gt;
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+PASS getComputedStyle(embedNoHeight).height is &quot;150px&quot;
+PASS getComputedStyle(embedNoWidth).width is &quot;300px&quot;
+PASS getComputedStyle(embedNoWidthHeight).width is &quot;300px&quot;
+PASS getComputedStyle(embedNoWidthHeight).height is &quot;150px&quot;
+PASS getComputedStyle(objectNoHeight).height is &quot;150px&quot;
+PASS getComputedStyle(objectNoWidth).width is &quot;300px&quot;
+PASS getComputedStyle(objectNoWidthHeight).width is &quot;300px&quot;
+PASS getComputedStyle(objectNoWidthHeight).height is &quot;150px&quot;
+Embed without height:
+
+Embed without width:
+
+Embed without width or height:
+
+Object without height:
+
+Object without width:
+
+Object without height or width:
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriospluginyoutubeflashpluginiframenoheightorwidthhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-no-height-or-width.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-no-height-or-width.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-no-height-or-width.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.waitUntilDone();
+    testRunner.dumpAsText();
+}
+
+description(
+    'Test embed youtube plugin without height or width attribute. &amp;lt;&lt;a href=&quot;rdar://problem/12134474&quot;&gt; rdar://problem/12134474&lt;/a&gt;&amp;gt;'
+);
+
+function Test()
+{
+    setTimeout(function() {
+        embedNoHeight = document.getElementById('embed-no-height');
+        shouldBe('getComputedStyle(embedNoHeight).height', '&quot;150px&quot;')
+
+        embedNoWidth = document.getElementById('embed-no-width');
+        shouldBe('getComputedStyle(embedNoWidth).width', '&quot;300px&quot;')
+
+        embedNoWidthHeight = document.getElementById('embed-no-width-or-height');
+        shouldBe('getComputedStyle(embedNoWidthHeight).width', '&quot;300px&quot;');
+        shouldBe('getComputedStyle(embedNoWidthHeight).height', '&quot;150px&quot;');
+
+        objectNoHeight = document.getElementById('object-no-height');
+        shouldBe('getComputedStyle(objectNoHeight).height', '&quot;150px&quot;')
+
+        objectNoWidth = document.getElementById('object-no-width');
+        shouldBe('getComputedStyle(objectNoWidth).width', '&quot;300px&quot;')
+
+        objectNoWidthHeight = document.getElementById('object-no-width-or-height');
+        shouldBe('getComputedStyle(objectNoWidthHeight).width', '&quot;300px&quot;');
+        shouldBe('getComputedStyle(objectNoWidthHeight).height', '&quot;150px&quot;');
+
+        var successfullyParsed = true;
+        testRunner.notifyDone();
+    }, 100);
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body onLoad=&quot;Test()&quot;&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;p&gt;Embed without height:&lt;br&gt;&lt;embed id='embed-no-height' src=&quot;http://www.youtube.com/v/N0gb9v4LI4o&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;425&quot;&gt;&lt;/p&gt;
+&lt;p&gt;Embed without width:&lt;br&gt;&lt;embed id='embed-no-width' src=&quot;http://www.youtube.com/v/N0gb9v4LI4o&quot; type=&quot;application/x-shockwave-flash&quot; height=&quot;350&quot;&gt;&lt;/p&gt;
+&lt;p&gt;Embed without width or height:&lt;br&gt;&lt;embed id='embed-no-width-or-height' src=&quot;http://www.youtube.com/v/N0gb9v4LI4o&quot; type=&quot;application/x-shockwave-flash&quot;&lt;/p&gt;
+
+&lt;p&gt;Object without height:&lt;br&gt;&lt;object id='object-no-height' width=&quot;425&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://www.youtube.com/v/N0gb9v4LI4o?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/object&gt;
+&lt;p&gt;Object without width:&lt;br&gt;&lt;object id='object-no-width' height=&quot;350&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://www.youtube.com/v/N0gb9v4LI4o?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/object&gt;
+&lt;p&gt;Object without height or width:&lt;br&gt;&lt;object id='object-no-width-or-height' type=&quot;application/x-shockwave-flash&quot; data=&quot;http://www.youtube.com/v/N0gb9v4LI4o?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/object&gt;
+
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriospluginyoutubeflashpluginiframehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.waitUntilDone();
+    testRunner.dumpAsText();
+}
+
+description(
+    'Test transforming youtube flash plugin to youtube iFrame based player. &amp;lt;&lt;a href=&quot;rdar://problem/11201356&quot;&gt; rdar://problem/11201356&lt;/a&gt;&amp;gt;'
+);
+
+function Test()
+{
+    setTimeout(function() {
+        normalEmbed = document.getElementById('normal-embed');
+        elinkEmbed = document.getElementById('elink-embed');
+        objectEmbed = document.getElementById('object-embed');
+        objectNoEmbed = document.getElementById('object-no-embed');
+
+        // Test we don't change any embe/object tag to iframe.
+        shouldBe('normalEmbed.tagName', '&quot;EMBED&quot;');
+        shouldBe('elinkEmbed.tagName', '&quot;EMBED&quot;');
+        shouldBe('objectEmbed.tagName', '&quot;EMBED&quot;');
+        shouldBe('objectNoEmbed.tagName', '&quot;OBJECT&quot;');
+
+        // Test we don't see those shadow iframes in DOM.
+        shouldBe('document.querySelectorAll(&quot;iframe&quot;).length', '1');
+
+        // Test we have the shadow root and the iframe player.
+        normalEmbedShadowRoot = internals.shadowRoot(normalEmbed);
+        shouldBe('internals.shadowPseudoId(normalEmbedShadowRoot.firstChild)', '&quot;-apple-youtube-shadow-iframe&quot;');
+        shouldBe('normalEmbedShadowRoot.firstChild.firstChild.tagName', '&quot;IFRAME&quot;');
+
+        objectEmbedShadowRoot = internals.shadowRoot(objectEmbed);
+        shouldBe('internals.shadowPseudoId(objectEmbedShadowRoot.firstChild)', '&quot;-apple-youtube-shadow-iframe&quot;');
+        shouldBe('objectEmbedShadowRoot.firstChild.firstChild.tagName', '&quot;IFRAME&quot;');
+
+        objectNoEmbedShadowRoot = internals.shadowRoot(objectNoEmbed);
+        shouldBe('internals.shadowPseudoId(objectNoEmbedShadowRoot.firstChild)', '&quot;-apple-youtube-shadow-iframe&quot;');
+        shouldBe('objectNoEmbedShadowRoot.firstChild.firstChild.tagName', '&quot;IFRAME&quot;');
+
+        var successfullyParsed = true;
+        testRunner.notifyDone();
+    }, 100);
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body onLoad=&quot;Test()&quot;&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;p&gt;Normal Embed:&lt;br&gt;&lt;embed id='normal-embed' src=&quot;http://www.youtube.com/v/N0gb9v4LI4o&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;/p&gt;
+&lt;p&gt;E-link Embed:&lt;br&gt;&lt;embed id='elink-embed' src=&quot;http://www.youtube.com/e/N0gb9v4LI4o&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;/p&gt;
+&lt;p&gt;Object with embed:&lt;br&gt;&lt;object width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/N0gb9v4LI4o?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed id='object-embed' src=&quot;http://www.youtube.com/v/N0gb9v4LI4o?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;425&quot; height=&quot;350&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
+&lt;p&gt;Object without embed:&lt;br&gt;&lt;object id='object-no-embed' width=&quot;425&quot; height=&quot;350&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://www.youtube.com/v/N0gb9v4LI4o?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/object&gt;
+&lt;p&gt;Embed inside iframe:&lt;br&gt;
+&lt;iframe width=&quot;300&quot; height=&quot;200&quot;id='container-iframe'  src='data:text/html,&lt;body&gt;&lt;p&gt;Normal Embed:&lt;br&gt;&lt;embed id=&quot;normal-embed&quot; src=&quot;http://www.youtube.com/v/N0gb9v4LI4o&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;/p&gt;&lt;/body&gt;' &gt;
+&lt;/iframe&gt;
+
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosresourcesgetComputedStyletextdecorationletterpressjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/resources/getComputedStyle-text-decoration-letterpress.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/resources/getComputedStyle-text-decoration-letterpress.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/resources/getComputedStyle-text-decoration-letterpress.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+function testElementStyle(propertyJS, propertyCSS, type, value)
+{
+    if (type != null) {
+        shouldBe(&quot;e.style.&quot; + propertyJS, &quot;'&quot; + value + &quot;'&quot;);
+        shouldBe(&quot;e.style.getPropertyCSSValue('&quot; + propertyCSS + &quot;').toString()&quot;, &quot;'&quot; + type + &quot;'&quot;);
+        shouldBe(&quot;e.style.getPropertyCSSValue('&quot; + propertyCSS + &quot;').cssText&quot;, &quot;'&quot; + value + &quot;'&quot;);
+    } else
+        shouldBeNull(&quot;e.style.getPropertyCSSValue('&quot; + propertyCSS + &quot;')&quot;);
+}
+
+function testComputedStyle(propertyJS, propertyCSS, type, value)
+{
+    computedStyle = window.getComputedStyle(e, null);
+    shouldBe(&quot;computedStyle.&quot; + propertyJS, &quot;'&quot; + value + &quot;'&quot;);
+    shouldBe(&quot;computedStyle.getPropertyCSSValue('&quot; + propertyCSS + &quot;').toString()&quot;, &quot;'&quot; + type + &quot;'&quot;);
+    shouldBe(&quot;computedStyle.getPropertyCSSValue('&quot; + propertyCSS + &quot;').cssText&quot;, &quot;'&quot; + value + &quot;'&quot;);
+}
+
+description(&quot;Test for custom letterpress text-decoration style.&quot;)
+
+var testContainer = document.createElement(&quot;div&quot;);
+document.body.appendChild(testContainer);
+
+testContainer.innerHTML = '&lt;div id=&quot;test&quot;&gt;hello world&lt;/div&gt;';
+debug(&quot;Initial value:&quot;);
+e = document.getElementById('test');
+testElementStyle(&quot;textDecoration&quot;, &quot;text-decoration&quot;, null, '');
+testComputedStyle(&quot;textDecoration&quot;, &quot;text-decoration&quot;, &quot;[object CSSPrimitiveValue]&quot;, &quot;none&quot;);
+debug('');
+
+debug(&quot;Initial value (explicit):&quot;);
+e.style.textDecoration = 'initial';
+testElementStyle(&quot;textDecoration&quot;, &quot;text-decoration&quot;, &quot;[object CSSValue]&quot;, &quot;initial&quot;);
+testComputedStyle(&quot;textDecoration&quot;, &quot;text-decoration&quot;, &quot;[object CSSPrimitiveValue]&quot;, &quot;none&quot;);
+debug('');
+
+debug(&quot;Value 'none':&quot;);
+e.style.textDecoration = 'none';
+testElementStyle(&quot;textDecoration&quot;, &quot;text-decoration&quot;, &quot;[object CSSPrimitiveValue]&quot;, &quot;none&quot;);
+testComputedStyle(&quot;textDecoration&quot;, &quot;text-decoration&quot;, &quot;[object CSSPrimitiveValue]&quot;, &quot;none&quot;);
+debug('');
+
+debug(&quot;Value '-webkit-letterpress':&quot;);
+e.style.textDecoration = '-webkit-letterpress';
+testElementStyle(&quot;textDecoration&quot;, &quot;text-decoration&quot;, &quot;[object CSSValueList]&quot;, &quot;-webkit-letterpress&quot;);
+testComputedStyle(&quot;textDecoration&quot;, &quot;text-decoration&quot;, &quot;[object CSSValueList]&quot;, &quot;-webkit-letterpress&quot;);
+debug('');
+
+debug(&quot;Value 'underline -webkit-letterpress line-through':&quot;);
+e.style.textDecoration = 'underline -webkit-letterpress line-through';
+testElementStyle(&quot;textDecoration&quot;, &quot;text-decoration&quot;, &quot;[object CSSValueList]&quot;, &quot;underline -webkit-letterpress line-through&quot;);
+testComputedStyle(&quot;textDecoration&quot;, &quot;text-decoration&quot;, &quot;[object CSSValueList]&quot;, &quot;underline line-through -webkit-letterpress&quot;);
+debug('');
+
+document.body.removeChild(testContainer);
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingclippingancestorwithacceleratedscrollingancestorexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/clipping-ancestor-with-accelerated-scrolling-ancestor-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/clipping-ancestor-with-accelerated-scrolling-ancestor-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/clipping-ancestor-with-accelerated-scrolling-ancestor-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+layer at (0,0) size 320x316
+  RenderView at (0,0) size 320x240
+layer at (0,0) size 320x316
+  RenderBlock {HTML} at (0,0) size 320x316
+    RenderBody {BODY} at (8,8) size 304x300
+layer at (8,8) size 300x300
+  RenderBlock {DIV} at (0,0) size 300x300
+layer at (8,8) size 100x100 scrollHeight 200
+  RenderBlock {DIV} at (0,0) size 100x100
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingclippingancestorwithacceleratedscrollingancestorhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/clipping-ancestor-with-accelerated-scrolling-ancestor.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/clipping-ancestor-with-accelerated-scrolling-ancestor.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/clipping-ancestor-with-accelerated-scrolling-ancestor.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta name=viewport content=&quot;width=device-width&quot;&gt;
+&lt;!-- Expect no red (a blank page) --&gt;
+&lt;div style=&quot;
+    overflow: scroll;
+    -webkit-overflow-scrolling: touch;
+    width: 300px;
+    height: 300px;
+&quot;&gt;
+    &lt;div style=&quot;
+        overflow: hidden;
+        width: 100px;
+        height: 100px;
+    &quot;&gt;
+        &lt;div style=&quot;position: relative; top: 100px; width: 100px; height: 100px; background-color: red;&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingiframeinsideoverflowclippingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/iframe-inside-overflow-clipping-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/iframe-inside-overflow-clipping-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/iframe-inside-overflow-clipping-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+This test should not assert.
+
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingiframeinsideoverflowclippinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/iframe-inside-overflow-clipping.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/iframe-inside-overflow-clipping.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/iframe-inside-overflow-clipping.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+  &lt;meta name=&quot;viewport&quot; content=&quot;initial-scale=1&quot;&gt;
+  &lt;script&gt;
+    if (window.testRunner)
+      testRunner.dumpAsText();
+  &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;p&gt;This test should not assert.&lt;/p&gt;
+  &lt;div style=&quot;overflow: auto; -webkit-overflow-scrolling: touch; width: 320px; height: 300px; border: 2px solid blue; &quot;&gt;
+    &lt;iframe style=&quot;position:absolute; top:0; left:0; height: 200px; width: 200px; border: 2px solid black; background-color: blue;&quot;&gt;&lt;/iframe&gt;
+    &lt;div style=&quot;position: relative; height: 500px; width: 100%; background-color: rgba(0, 0, 0, 0.2); padding: 10px&quot;&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingoverflowclipwithacceleratedscrollingancestorexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-clip-with-accelerated-scrolling-ancestor-expected.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-clip-with-accelerated-scrolling-ancestor-expected.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-clip-with-accelerated-scrolling-ancestor-expected.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+&lt;meta name=viewport content=&quot;width=device-width&quot;&gt;
+&lt;div style=&quot;height: 100px; width: 100px; background-color: green;&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingoverflowclipwithacceleratedscrollingancestorhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-clip-with-accelerated-scrolling-ancestor.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-clip-with-accelerated-scrolling-ancestor.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-clip-with-accelerated-scrolling-ancestor.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+&lt;meta name=viewport content=&quot;width=device-width&quot;&gt;
+&lt;div style=&quot;height: 200px; width: 100px; overflow: scroll; -webkit-overflow-scrolling: touch;&quot;&gt;
+    &lt;div style=&quot;height: 100px; overflow: hidden; position: relative; background-color: green;&quot;&gt;
+        &lt;div style=&quot;margin-top: 100px; height: 100px; background-color: red;&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingoverflowdivscrollingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-div-scrolling-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-div-scrolling-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-div-scrolling-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+CONSOLE MESSAGE: line 24: TypeError: undefined is not a function (evaluating 'eventSender.clearTouchPoints()')
+Tests that touch events cause an overflow:scroll div to scroll.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS targetDiv.scrollLeft is 0
+PASS targetDiv.scrollTop is 0
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingoverflowdivscrollinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-div-scrolling.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-div-scrolling.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-div-scrolling.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;script-tests/overflow-div-scrolling.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrollinheritedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-inherited-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-inherited-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-inherited-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+test1 -webkit-overflow-scrolling: touch
+test2 -webkit-overflow-scrolling: auto
+test3 -webkit-overflow-scrolling: touch
+test4 -webkit-overflow-scrolling: touch
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrollinheritedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-inherited.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-inherited.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-inherited.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;script&gt;
+if (window.testRunner)
+    testRunner.dumpAsText();
+&lt;/script&gt;
+&lt;style&gt;
+.a { -webkit-overflow-scrolling: touch; }
+.b .c { -webkit-overflow-scrolling: touch; }
+#grouping &gt; div:nth-of-type(n+3) {
+}
+
+&lt;/style&gt;
+&lt;div class=a&gt;
+    &lt;div id=test1&gt;&lt;/div&gt;
+&lt;/div&gt;
+&lt;div id=test2&gt;&lt;/div&gt;
+
+&lt;div id=grouping&gt;
+    &lt;div class=b&gt;
+        &lt;div class=c id=test3&gt;
+        &lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div class=b&gt;
+        &lt;div class=c id=test4&gt;
+        &lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;script&gt;
+function test(e, p) {
+    var testDiv = document.getElementById(e);
+    var cssValue = window.getComputedStyle(testDiv).getPropertyCSSValue(p);
+    document.write(e + &quot; &quot; + p + &quot;: &quot; + cssValue.cssText + &quot;&lt;br&gt;&quot;);
+}
+    
+test('test1', '-webkit-overflow-scrolling');
+test('test2', '-webkit-overflow-scrolling');
+test('test3', '-webkit-overflow-scrolling');
+test('test4', '-webkit-overflow-scrolling');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrolltouchexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-touch-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-touch-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-touch-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,84 @@
</span><ins>+ 


+ (GraphicsLayer
+  (bounds 800.00 600.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 600.00)
+      (children 4
+        (GraphicsLayer
+          (position 18.00 18.00)
+          (bounds 202.00 202.00)
+          (drawsContent 1)
+          (children 1
+            (GraphicsLayer
+              (position 1.00 1.00)
+              (bounds 200.00 200.00)
+              (children 1
+                (GraphicsLayer
+                  (bounds 200.00 200.00)
+                  (drawsContent 1)
+                )
+              )
+            )
+          )
+        )
+        (GraphicsLayer
+          (position 244.00 18.00)
+          (bounds 202.00 202.00)
+          (drawsContent 1)
+          (children 1
+            (GraphicsLayer
+              (position 1.00 1.00)
+              (bounds origin 0.00 50.00)
+              (bounds 200.00 200.00)
+              (children 1
+                (GraphicsLayer
+                  (bounds 200.00 400.00)
+                  (drawsContent 1)
+                )
+              )
+            )
+          )
+        )
+        (GraphicsLayer
+          (position 18.00 245.00)
+          (bounds 202.00 202.00)
+          (drawsContent 1)
+          (children 1
+            (GraphicsLayer
+              (position 1.00 1.00)
+              (bounds 200.00 200.00)
+              (children 1
+                (GraphicsLayer
+                  (bounds 200.00 200.00)
+                  (drawsContent 1)
+                )
+              )
+            )
+          )
+        )
+        (GraphicsLayer
+          (position 244.00 245.00)
+          (bounds 202.00 202.00)
+          (drawsContent 1)
+          (children 1
+            (GraphicsLayer
+              (position 1.00 1.00)
+              (bounds origin 0.00 50.00)
+              (bounds 200.00 200.00)
+              (children 1
+                (GraphicsLayer
+                  (bounds 200.00 400.00)
+                  (drawsContent 1)
+                )
+              )
+            )
+          )
+        )
+      )
+    )
+  )
+)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrolltouchhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-touch.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-touch.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scroll-touch.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,80 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;style&gt;
+    html {
+      -webkit-overflow-scrolling: touch;
+    }
+
+    .overflow {
+      width: 200px;
+      height: 200px;
+      margin: 10px;
+      border: 1px solid black;
+      display: inline-block;
+    }
+    
+    .tall {
+      height: 400px;
+    }
+    
+    .short {
+      height: 100px;
+    }
+
+    .scroll {
+      overflow: scroll;
+    }
+
+    .auto {
+      overflow: auto;
+    }
+
+    .contents {
+      background-color: silver;
+    }
+  &lt;/style&gt;
+  &lt;script&gt;
+    if (window.testRunner)
+      testRunner.dumpAsText();
+
+    function testScrollability(element)
+    {
+      // This will cause scrolled elements will have a 'bounds origin' of y=50 in their layer.
+      element.scrollTop = 50;
+    }
+    
+    function doTest()
+    {
+      var divs = document.querySelectorAll('body &gt; div.overflow');
+      for (var i = 0; i &lt; divs.length; ++i)
+        testScrollability(divs[i]);
+      
+      if (window.testRunner)
+        document.getElementById('results').innerText = window.internals.layerTreeAsText(document);
+    }
+    window.addEventListener('load', doTest, false);
+  &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+  &lt;div class=&quot;overflow scroll&quot;&gt;
+    &lt;div class=&quot;short contents&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div class=&quot;overflow scroll&quot;&gt;
+    &lt;div class=&quot;tall contents&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+  &lt;br&gt;
+
+  &lt;div class=&quot;overflow auto&quot;&gt;
+    &lt;div class=&quot;short contents&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div class=&quot;overflow auto&quot;&gt;
+    &lt;div class=&quot;tall contents&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+  
+  &lt;pre id=&quot;results&quot;&gt;This test requires DRT.&lt;/pre&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrollingancestorclipexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+(GraphicsLayer
+  (bounds 320.00 450.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 320.00 450.00)
+      (children 1
+        (GraphicsLayer
+          (position 8.00 8.00)
+          (bounds 302.00 402.00)
+          (drawsContent 1)
+          (children 1
+            (GraphicsLayer
+              (position 1.00 1.00)
+              (bounds origin 0.00 30.00)
+              (bounds 300.00 400.00)
+              (children 1
+                (GraphicsLayer
+                  (bounds 300.00 900.00)
+                  (usingTiledLayer 1)
+                  (drawsContent 1)
+                  (children 1
+                    (GraphicsLayer
+                      (position 20.00 50.00)
+                      (bounds 260.00 800.00)
+                      (children 1
+                        (GraphicsLayer
+                          (bounds 260.00 800.00)
+                          (contentsOpaque 1)
+                        )
+                      )
+                    )
+                  )
+                )
+              )
+            )
+          )
+        )
+      )
+    )
+  )
+)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrollingancestorclipsizeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-size-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-size-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-size-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+(GraphicsLayer
+  (bounds 330.00 470.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 330.00 470.00)
+      (children 1
+        (GraphicsLayer
+          (position 8.00 8.00)
+          (bounds 322.00 422.00)
+          (drawsContent 1)
+          (children 1
+            (GraphicsLayer
+              (position 11.00 11.00)
+              (bounds origin 0.00 30.00)
+              (bounds 300.00 400.00)
+              (children 1
+                (GraphicsLayer
+                  (bounds 300.00 900.00)
+                  (usingTiledLayer 1)
+                  (drawsContent 1)
+                  (children 1
+                    (GraphicsLayer
+                      (position 20.00 50.00)
+                      (bounds 260.00 800.00)
+                      (children 1
+                        (GraphicsLayer
+                          (bounds 260.00 800.00)
+                          (contentsOpaque 1)
+                        )
+                      )
+                    )
+                  )
+                )
+              )
+            )
+          )
+        )
+      )
+    )
+  )
+)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrollingancestorclipsizehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-size.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-size.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-size.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot;&gt;
+  &lt;script&gt;
+    if (window.testRunner)
+      testRunner.dumpAsText();
+
+    function doScroll()
+    {
+      var overflow = document.getElementById('scroller');
+      overflow.scrollTop = 30;
+
+      if (window.testRunner)
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
+    }
+    
+    window.addEventListener('load', doScroll, false);
+  &lt;/script&gt;
+  &lt;style&gt;
+    #scroller {
+      overflow: scroll;
+      -webkit-overflow-scrolling: touch;
+      width: 300px;
+      height: 400px;
+      border: 11px solid black;
+    }
+    
+    .column {
+      overflow: hidden;
+      margin: 50px 20px;
+      width: 260px;
+      height: 800px;
+      background-color: red;
+    }
+    .contents {
+      -webkit-transform: translateZ(0);
+      width: 100%;
+      height: 100%;
+      background: green;
+    }
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+  &lt;div id=&quot;scroller&quot;&gt;
+    &lt;div class=&quot;column&quot;&gt;
+      &lt;div class=&quot;contents&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+  &lt;pre id=&quot;layers&quot;&gt;Layer tree goes here in DRT.&lt;/pre&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingoverflowscrollingancestorcliphtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot;&gt;
+  &lt;script&gt;
+    if (window.testRunner)
+      testRunner.dumpAsText();
+
+    function doScroll()
+    {
+      var overflow = document.getElementById('scroller');
+      overflow.scrollTop = 30;
+
+      if (window.testRunner)
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
+    }
+    
+    window.addEventListener('load', doScroll, false);
+  &lt;/script&gt;
+  &lt;style&gt;
+    #scroller {
+      overflow: scroll;
+      -webkit-overflow-scrolling: touch;
+      width: 300px;
+      height: 400px;
+      border: 1px solid black;
+    }
+    
+    .column {
+      overflow: hidden;
+      margin: 50px 20px;
+      width: 260px;
+      height: 800px;
+      background-color: red;
+    }
+    .contents {
+      -webkit-transform: translateZ(0);
+      width: 100%;
+      height: 100%;
+      background: green;
+    }
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+  &lt;div id=&quot;scroller&quot;&gt;
+    &lt;div class=&quot;column&quot;&gt;
+      &lt;div class=&quot;contents&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+  &lt;pre id=&quot;layers&quot;&gt;Layer tree goes here in DRT.&lt;/pre&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingremoveoverflowcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/remove-overflow-crash-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/remove-overflow-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/remove-overflow-crash-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+This test should not crash.
+This test should not crash.
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingremoveoverflowcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/remove-overflow-crash.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/remove-overflow-crash.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/remove-overflow-crash.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;style&gt;
+    .overflow {
+      overflow: scroll;
+      width: 200px;
+      height: 200px;
+    }
+
+    #overflow1 {
+      -webkit-overflow-scrolling: touch;
+    }
+
+    #overflow2 {
+      -webkit-overflow-scrolling: auto;
+    }
+    
+    .contents {
+      height: 1000px;
+    }
+  &lt;/style&gt;
+  &lt;script&gt;
+    if (window.testRunner)
+      testRunner.dumpAsText();
+
+    function doTest() {
+      document.getElementById('overflow1').style.webkitOverflowScrolling = 'auto';
+      document.getElementById('overflow2').style.webkitOverflowScrolling = 'touch';
+    }
+    window.addEventListener('load', doTest, false);
+  &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+  &lt;div id=&quot;overflow1&quot; class=&quot;overflow&quot;&gt;
+    &lt;div class=&quot;contents&quot;&gt;
+      This test should not crash.
+    &lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;overflow2&quot; class=&quot;overflow&quot;&gt;
+    &lt;div class=&quot;contents&quot;&gt;
+      This test should not crash.
+    &lt;/div&gt;
+  &lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingresourcesjumpbackhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/resources/jump-back.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/resources/jump-back.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/resources/jump-back.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;script&gt;
+  window.addEventListener('load', function() {
+    window.setTimeout(function() {
+      history.back();
+    }, 0);
+  }, false);
+&lt;/script&gt;
+This page should go back.
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscripttestsTEMPLATEhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/script-tests/TEMPLATE.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/script-tests/TEMPLATE.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/script-tests/TEMPLATE.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;!--
+  Touch tests that involve the ontouchstart, ontouchmove, ontouchend or ontouchcancel callbacks
+  should be written in an asynchronous fashion so they can be run on mobile platforms like Android.
+  This template will generate an asynchronous style test by using the js-test-post-function script.
+  You will need to invoke isSuccessfullyParsed() in your test script when the test completes.
+--&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;YOUR_JS_FILE_HERE&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscripttestsoverflowdivscrollingjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/script-tests/overflow-div-scrolling.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/script-tests/overflow-div-scrolling.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/script-tests/overflow-div-scrolling.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+var targetDiv = document.createElement(&quot;div&quot;);
+targetDiv.id = &quot;targetDiv&quot;;
+targetDiv.setAttribute('style', &quot;position: absolute; top: 100px; left: 10px; width: 400px; height: 400px; overflow: scroll;&quot;);
+
+var innerDiv = document.createElement(&quot;div&quot;);
+innerDiv.setAttribute('style', &quot;width: 800px; height: 800px;&quot;);
+
+targetDiv.appendChild(innerDiv);
+
+document.body.insertBefore(targetDiv, document.getElementById('console'));
+
+description(&quot;Tests that touch events cause an overflow:scroll div to scroll.&quot;);
+
+function verifyScrollOffset(offsetX, offsetY)
+{
+    shouldBe(&quot;targetDiv.scrollLeft&quot;, offsetX.toString());
+    shouldBe(&quot;targetDiv.scrollTop&quot;, offsetY.toString());
+}
+
+if (window.eventSender) {
+    verifyScrollOffset(0, 0);
+
+    // Test vertical up scroll.
+    eventSender.clearTouchPoints();
+    eventSender.addTouchPoint(20, 220);
+    eventSender.touchStart();
+    eventSender.updateTouchPoint(0, 20, 120);
+    eventSender.touchMove();
+    eventSender.touchEnd();
+    verifyScrollOffset(0, 100);
+
+    // Test vertical down scroll.
+    eventSender.clearTouchPoints();
+    eventSender.addTouchPoint(20, 120);
+    eventSender.touchStart();
+    eventSender.updateTouchPoint(0, 20, 170);
+    eventSender.touchMove();
+    eventSender.touchEnd();
+    verifyScrollOffset(0, 50);
+
+    // Test diagonal scroll
+    eventSender.clearTouchPoints();
+    eventSender.addTouchPoint(120, 120);
+    eventSender.touchStart();
+    eventSender.updateTouchPoint(0, 20, 20);
+    eventSender.touchMove();
+    eventSender.touchEnd();
+
+    verifyScrollOffset(100, 150);
+
+} else
+    debug('This test requires DRT.');
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscrolleventfromscrollToexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-event-from-scrollTo-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-event-from-scrollTo-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-event-from-scrollTo-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+Tests that scroll event listeners still work after going back to a page in the page cache.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Received scroll event 1
+PASS scrollEventCount is 1
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscrolleventfromscrollTohtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-event-from-scrollTo.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-event-from-scrollTo.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-event-from-scrollTo.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+  &lt;style&gt;
+    body {
+      height: 2000px;
+    }
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description('Tests that scroll event listeners still work after going back to a page in the page cache.');
+
+function testScrollListener()
+{
+  window.scrollTo(0, 10);
+}
+
+var scrollEventCount = 0;
+window.addEventListener('scroll', function(e) {
+  ++scrollEventCount;
+  debug('Received scroll event ' + scrollEventCount);
+}, false);
+
+function onPageLoad()
+{
+    testScrollListener();
+    window.setTimeout(function() {
+      shouldBe('scrollEventCount', '1');
+      finishJSTest();
+    }, 10); // Scroll events are async.
+};
+
+window.addEventListener('load', onPageLoad, false);
+
+var successfullyParsed = true;
+var jsTestIsAsync = true;
+&lt;/script&gt; 
+
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscrolleventsbackforwardafterpageshowexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward-after-pageshow-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward-after-pageshow-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward-after-pageshow-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+Tests that scroll event listeners still work after going back to a page in the page cache.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+pageshow 0
+pageshow 1
+delayed until after pageshow
+PASS scrollEventCount is 1
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscrolleventsbackforwardafterpageshowhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward-after-pageshow.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward-after-pageshow.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward-after-pageshow.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+  &lt;style&gt;
+    body {
+      height: 2000px;
+    }
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description('Tests that scroll event listeners still work after going back to a page in the page cache.');
+
+function testScrollListener(message)
+{
+  window.scrollBy(0, 10);
+}
+
+var scrollEventCount = 0;
+window.addEventListener('scroll', function(e) {
+  ++scrollEventCount;
+}, false);
+
+var pageShowCount = 0;
+function onPageShow()
+{
+  debug('pageshow ' + pageShowCount);
+  if (++pageShowCount == 2) {
+    setTimeout(function() {
+      debug('delayed until after pageshow');
+      testScrollListener('After going back');
+      window.setTimeout(function() {
+        shouldBe('scrollEventCount', '1');
+        finishJSTest();
+      }, 10);
+    }, 10);
+  }
+}
+
+function onPageLoad()
+{
+    if (window.testRunner)
+      testRunner.overridePreference(&quot;WebKitUsesPageCachePreferenceKey&quot;, 1);
+
+    // Navigate in a timeout to make sure we create a history entry.
+    setTimeout(function() {
+      window.location.href = 'resources/jump-back.html';
+    }, 0);
+};
+
+window.addEventListener('load', onPageLoad, false);
+window.addEventListener('pageshow', onPageShow, false);
+
+var successfullyParsed = true;
+var jsTestIsAsync = true;
+&lt;/script&gt; 
+
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscrolleventsbackforwardexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+Tests that scroll event listeners still work after going back to a page in the page cache.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+pageshow 0
+pageshow 1
+PASS scrollEventCount is 1
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscrolleventsbackforwardhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scroll-events-back-forward.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+  &lt;style&gt;
+    body {
+      height: 2000px;
+    }
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description('Tests that scroll event listeners still work after going back to a page in the page cache.');
+
+function testScrollListener(message)
+{
+  window.scrollBy(0, 10);
+}
+
+var scrollEventCount = 0;
+window.addEventListener('scroll', function(e) {
+  ++scrollEventCount;
+}, false);
+
+var pageShowCount = 0;
+function onPageShow()
+{
+  debug('pageshow ' + pageShowCount);
+  if (++pageShowCount == 2) {
+      testScrollListener('After going back');
+      window.setTimeout(function() {
+        shouldBe('scrollEventCount', '1');
+        finishJSTest();
+      }, 10);
+    }
+}
+
+function onPageLoad()
+{
+    if (window.testRunner)
+      testRunner.overridePreference(&quot;WebKitUsesPageCachePreferenceKey&quot;, 1);
+
+    // Navigate in a timeout to make sure we create a history entry.
+    setTimeout(function() {
+      window.location.href = 'resources/jump-back.html';
+    }, 0);
+};
+
+window.addEventListener('load', onPageLoad, false);
+window.addEventListener('pageshow', onPageShow, false);
+
+var successfullyParsed = true;
+var jsTestIsAsync = true;
+&lt;/script&gt; 
+
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscrollToatpageloadexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollTo-at-page-load-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollTo-at-page-load-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollTo-at-page-load-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+Tests that programmatic scrolling works at page load time.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Received scroll event 1
+PASS scrollEventCount is 1
+PASS window.scrollY is 10
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscrollToatpageloadhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollTo-at-page-load.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollTo-at-page-load.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollTo-at-page-load.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+  &lt;style&gt;
+    body {
+      height: 2000px;
+    }
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description('Tests that programmatic scrolling works at page load time.');
+
+var scrollEventCount = 0;
+window.addEventListener('scroll', function(e) {
+  ++scrollEventCount;
+  debug('Received scroll event ' + scrollEventCount);
+}, false);
+
+// window.scrollTo(0, 0);
+
+function onPageLoad()
+{
+    window.scrollTo(0, 10);
+    window.setTimeout(function() {
+      shouldBe('scrollEventCount', '1');
+      shouldBe('window.scrollY', '10');
+      finishJSTest();
+    }, 10); // Scroll events are async.
+};
+
+window.addEventListener('load', onPageLoad, false);
+
+var successfullyParsed = true;
+var jsTestIsAsync = true;
+&lt;/script&gt; 
+
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscrollbarhidingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollbar-hiding-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollbar-hiding-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollbar-hiding-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,141 @@
</span><ins>+layer at (0,0) size 800x1600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x1600
+  RenderBlock {HTML} at (0,0) size 800x1600
+    RenderBody {BODY} at (8,8) size 784x1584
+      RenderBlock {DIV} at (0,0) size 442x392
+        RenderBlock {H2} at (0,19) size 442x31
+          RenderText {#text} at (0,1) size 50x28
+            text run at (0,1) width 50: &quot;Both&quot;
+      RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,396) size 442x392
+        RenderBlock {H2} at (0,19) size 442x31
+          RenderText {#text} at (0,1) size 155x28
+            text run at (0,1) width 155: &quot;Just horizontal&quot;
+      RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,792) size 442x392
+        RenderBlock {H2} at (0,19) size 442x31
+          RenderText {#text} at (0,1) size 126x28
+            text run at (0,1) width 126: &quot;Just vertical&quot;
+      RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,1188) size 442x392
+        RenderBlock {H2} at (0,19) size 442x31
+          RenderText {#text} at (0,1) size 125x28
+            text run at (0,1) width 125: &quot;None visible&quot;
+      RenderText {#text} at (0,0) size 0x0
+layer at (28,78) size 402x302 clip at (29,79) size 400x300 scrollWidth 600 scrollHeight 528
+  RenderBlock {DIV} at (20,69) size 402x303 [border: (1px solid #000000)]
+    RenderBlock {DIV} at (1,1) size 600x528
+      RenderText {#text} at (0,2) size 600x524
+        text run at (0,2) width 565: &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor&quot;
+        text run at (0,26) width 587: &quot;incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud&quot;
+        text run at (0,50) width 600: &quot;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure&quot;
+        text run at (0,74) width 571: &quot;dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&quot;
+        text run at (0,98) width 571: &quot;Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt&quot;
+        text run at (0,122) width 191: &quot;mollit anim id est laborum. &quot;
+        text run at (190,122) width 394: &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit,&quot;
+        text run at (0,146) width 560: &quot;sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad&quot;
+        text run at (0,170) width 533: &quot;minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea&quot;
+        text run at (0,194) width 576: &quot;commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse&quot;
+        text run at (0,218) width 599: &quot;cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,&quot;
+        text run at (0,242) width 424: &quot;sunt in culpa qui officia deserunt mollit anim id est laborum. &quot;
+        text run at (423,242) width 154: &quot;Lorem ipsum dolor sit&quot;
+        text run at (0,266) width 564: &quot;amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et&quot;
+        text run at (0,290) width 577: &quot;dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco&quot;
+        text run at (0,314) width 511: &quot;laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in&quot;
+        text run at (0,338) width 591: &quot;reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur&quot;
+        text run at (0,362) width 592: &quot;sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id&quot;
+        text run at (0,386) width 93: &quot;est laborum. &quot;
+        text run at (92,386) width 447: &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do&quot;
+        text run at (0,410) width 555: &quot;eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim&quot;
+        text run at (0,434) width 561: &quot;veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo&quot;
+        text run at (0,458) width 595: &quot;consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore&quot;
+        text run at (0,482) width 599: &quot;eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa&quot;
+        text run at (0,506) width 325: &quot;qui officia deserunt mollit anim id est laborum.&quot;
+layer at (28,474) size 402x302 clip at (29,475) size 400x300 scrollWidth 600 scrollHeight 528
+  RenderBlock {DIV} at (20,69) size 402x303 [border: (1px solid #000000)]
+    RenderBlock {DIV} at (1,1) size 600x528
+      RenderText {#text} at (0,2) size 600x524
+        text run at (0,2) width 565: &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor&quot;
+        text run at (0,26) width 587: &quot;incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud&quot;
+        text run at (0,50) width 600: &quot;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure&quot;
+        text run at (0,74) width 571: &quot;dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&quot;
+        text run at (0,98) width 571: &quot;Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt&quot;
+        text run at (0,122) width 191: &quot;mollit anim id est laborum. &quot;
+        text run at (190,122) width 394: &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit,&quot;
+        text run at (0,146) width 560: &quot;sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad&quot;
+        text run at (0,170) width 533: &quot;minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea&quot;
+        text run at (0,194) width 576: &quot;commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse&quot;
+        text run at (0,218) width 599: &quot;cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,&quot;
+        text run at (0,242) width 424: &quot;sunt in culpa qui officia deserunt mollit anim id est laborum. &quot;
+        text run at (423,242) width 154: &quot;Lorem ipsum dolor sit&quot;
+        text run at (0,266) width 564: &quot;amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et&quot;
+        text run at (0,290) width 577: &quot;dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco&quot;
+        text run at (0,314) width 511: &quot;laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in&quot;
+        text run at (0,338) width 591: &quot;reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur&quot;
+        text run at (0,362) width 592: &quot;sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id&quot;
+        text run at (0,386) width 93: &quot;est laborum. &quot;
+        text run at (92,386) width 447: &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do&quot;
+        text run at (0,410) width 555: &quot;eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim&quot;
+        text run at (0,434) width 561: &quot;veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo&quot;
+        text run at (0,458) width 595: &quot;consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore&quot;
+        text run at (0,482) width 599: &quot;eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa&quot;
+        text run at (0,506) width 325: &quot;qui officia deserunt mollit anim id est laborum.&quot;
+layer at (28,870) size 402x302 clip at (29,871) size 400x300 scrollWidth 600 scrollHeight 528
+  RenderBlock {DIV} at (20,69) size 402x303 [border: (1px solid #000000)]
+    RenderBlock {DIV} at (1,1) size 600x528
+      RenderText {#text} at (0,2) size 600x524
+        text run at (0,2) width 565: &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor&quot;
+        text run at (0,26) width 587: &quot;incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud&quot;
+        text run at (0,50) width 600: &quot;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure&quot;
+        text run at (0,74) width 571: &quot;dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&quot;
+        text run at (0,98) width 571: &quot;Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt&quot;
+        text run at (0,122) width 191: &quot;mollit anim id est laborum. &quot;
+        text run at (190,122) width 394: &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit,&quot;
+        text run at (0,146) width 560: &quot;sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad&quot;
+        text run at (0,170) width 533: &quot;minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea&quot;
+        text run at (0,194) width 576: &quot;commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse&quot;
+        text run at (0,218) width 599: &quot;cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,&quot;
+        text run at (0,242) width 424: &quot;sunt in culpa qui officia deserunt mollit anim id est laborum. &quot;
+        text run at (423,242) width 154: &quot;Lorem ipsum dolor sit&quot;
+        text run at (0,266) width 564: &quot;amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et&quot;
+        text run at (0,290) width 577: &quot;dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco&quot;
+        text run at (0,314) width 511: &quot;laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in&quot;
+        text run at (0,338) width 591: &quot;reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur&quot;
+        text run at (0,362) width 592: &quot;sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id&quot;
+        text run at (0,386) width 93: &quot;est laborum. &quot;
+        text run at (92,386) width 447: &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do&quot;
+        text run at (0,410) width 555: &quot;eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim&quot;
+        text run at (0,434) width 561: &quot;veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo&quot;
+        text run at (0,458) width 595: &quot;consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore&quot;
+        text run at (0,482) width 599: &quot;eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa&quot;
+        text run at (0,506) width 325: &quot;qui officia deserunt mollit anim id est laborum.&quot;
+layer at (28,1266) size 402x302 clip at (29,1267) size 400x300 scrollWidth 600 scrollHeight 528
+  RenderBlock {DIV} at (20,69) size 402x303 [border: (1px solid #000000)]
+    RenderBlock {DIV} at (1,1) size 600x528
+      RenderText {#text} at (0,2) size 600x524
+        text run at (0,2) width 565: &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor&quot;
+        text run at (0,26) width 587: &quot;incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud&quot;
+        text run at (0,50) width 600: &quot;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure&quot;
+        text run at (0,74) width 571: &quot;dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&quot;
+        text run at (0,98) width 571: &quot;Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt&quot;
+        text run at (0,122) width 191: &quot;mollit anim id est laborum. &quot;
+        text run at (190,122) width 394: &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit,&quot;
+        text run at (0,146) width 560: &quot;sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad&quot;
+        text run at (0,170) width 533: &quot;minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea&quot;
+        text run at (0,194) width 576: &quot;commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse&quot;
+        text run at (0,218) width 599: &quot;cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,&quot;
+        text run at (0,242) width 424: &quot;sunt in culpa qui officia deserunt mollit anim id est laborum. &quot;
+        text run at (423,242) width 154: &quot;Lorem ipsum dolor sit&quot;
+        text run at (0,266) width 564: &quot;amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et&quot;
+        text run at (0,290) width 577: &quot;dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco&quot;
+        text run at (0,314) width 511: &quot;laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in&quot;
+        text run at (0,338) width 591: &quot;reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur&quot;
+        text run at (0,362) width 592: &quot;sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id&quot;
+        text run at (0,386) width 93: &quot;est laborum. &quot;
+        text run at (92,386) width 447: &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do&quot;
+        text run at (0,410) width 555: &quot;eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim&quot;
+        text run at (0,434) width 561: &quot;veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo&quot;
+        text run at (0,458) width 595: &quot;consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore&quot;
+        text run at (0,482) width 599: &quot;eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa&quot;
+        text run at (0,506) width 325: &quot;qui officia deserunt mollit anim id est laborum.&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscrollbarhidinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollbar-hiding.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollbar-hiding.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrollbar-hiding.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,106 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+  &lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
+
+    ::-webkit-scrollbar {
+        width: 16px;
+        height: 16px;
+        background-color: silver;
+    }
+
+    ::-webkit-scrollbar-track {
+        -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
+        border-radius: 10px;
+    }
+
+    ::-webkit-scrollbar-thumb {
+        border-radius: 10px;
+        -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
+    }
+    
+    .container {
+      display: inline-block;
+    }
+
+    .overflowing {
+      margin: 20px;
+      font-family: Helvetica;
+      line-height: 150%;
+      height: 300px;
+      width: 400px;
+      border: 1px solid black;
+      overflow: scroll;
+      -webkit-overflow-scrolling: touch;
+    }
+    
+    .contents {
+      width: 150%;
+    }
+    
+    ::-webkit-scrollbar {
+      display: none;
+    }
+    
+    .vertical::-webkit-scrollbar:vertical {
+      display: block;
+    }
+
+    .horizontal::-webkit-scrollbar:horizontal {
+      display: block;
+    }
+    
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+  &lt;div class=&quot;container&quot;&gt;
+    &lt;h2&gt;Both&lt;/h2&gt;
+    &lt;div class=&quot;overflowing accelerated horizontal vertical&quot;&gt;
+      &lt;div class=&quot;contents&quot;&gt;
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+      &lt;/div&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div class=&quot;container&quot;&gt;
+    &lt;h2&gt;Just horizontal&lt;/h2&gt;
+    &lt;div class=&quot;overflowing accelerated horizontal&quot;&gt;
+      &lt;div class=&quot;contents&quot;&gt;
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+      &lt;/div&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div class=&quot;container&quot;&gt;
+    &lt;h2&gt;Just vertical&lt;/h2&gt;
+    &lt;div class=&quot;overflowing accelerated vertical&quot;&gt;
+      &lt;div class=&quot;contents&quot;&gt;
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+      &lt;/div&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div class=&quot;container&quot;&gt;
+    &lt;h2&gt;None visible&lt;/h2&gt;
+    &lt;div class=&quot;overflowing accelerated&quot;&gt;
+      &lt;div class=&quot;contents&quot;&gt;
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+      &lt;/div&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscrollingcontentcliptoviewportexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrolling-content-clip-to-viewport-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrolling-content-clip-to-viewport-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrolling-content-clip-to-viewport-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+(GraphicsLayer
+  (bounds 320.00 380.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 320.00 380.00)
+      (children 1
+        (GraphicsLayer
+          (bounds 320.00 340.00)
+          (children 1
+            (GraphicsLayer
+              (bounds 320.00 340.00)
+              (children 1
+                (GraphicsLayer
+                  (bounds 320.00 1224.00)
+                  (usingTiledLayer 1)
+                  (drawsContent 1)
+                )
+              )
+            )
+          )
+        )
+      )
+    )
+  )
+)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingscrollingcontentcliptoviewporthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrolling-content-clip-to-viewport.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrolling-content-clip-to-viewport.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/scrolling-content-clip-to-viewport.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot;&gt;
+   
+  &lt;style&gt;
+    body {
+      margin: 0;
+      -webkit-overflow-scrolling: touch;
+    }
+
+    .scroller {
+      width: 300px;
+      height: 320px;
+      overflow: scroll;
+      padding: 10px;
+    }
+    
+    .column {
+      position: relative;
+      width: 280px;
+      height: 1200px;
+      background: silver;
+      border: 2px solid blue;
+      z-index: 0;
+    }
+  &lt;/style&gt;
+  &lt;script&gt;
+    if (window.testRunner)
+      testRunner.dumpAsText();
+    
+    window.addEventListener('load', function() {
+      if (window.testRunner)
+        document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
+    }, true);
+  &lt;/script&gt;
+&lt;/head&gt;
+
+&lt;body&gt;
+  &lt;div class=&quot;scroller&quot;&gt;
+    &lt;div class=&quot;column&quot;&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+  &lt;pre id=&quot;layers&quot;&gt;Layer tree goes here in DRT&lt;/pre&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingtablecelltouchscrollingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/table-cell-touch-scrolling-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/table-cell-touch-scrolling-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/table-cell-touch-scrolling-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+This test should not crash.
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingtablecelltouchscrollinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/table-cell-touch-scrolling.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/table-cell-touch-scrolling.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/table-cell-touch-scrolling.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;script&gt;
+  if (window.testRunner)
+    testRunner.dumpAsText();
+&lt;/script&gt;
+&lt;table&gt;
+    &lt;tr&gt;
+        &lt;td style=&quot;overflow: scroll; -webkit-overflow-scrolling: touch;&quot;&gt;
+            This test should not crash.
+        &lt;/td&gt;
+    &lt;/tr&gt;
+&lt;/table&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingtextareascrolltouchexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/textarea-scroll-touch-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/textarea-scroll-touch-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/textarea-scroll-touch-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+  
+(GraphicsLayer
+  (bounds 800.00 600.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 600.00)
+      (children 2
+        (GraphicsLayer
+          (position 18.00 18.00)
+          (bounds 206.00 126.00)
+          (drawsContent 1)
+          (children 1
+            (GraphicsLayer
+              (position 1.00 1.00)
+              (bounds origin 0.00 50.00)
+              (bounds 204.00 124.00)
+              (children 1
+                (GraphicsLayer
+                  (bounds 204.00 270.00)
+                  (drawsContent 1)
+                )
+              )
+            )
+          )
+        )
+        (GraphicsLayer
+          (position 248.00 18.00)
+          (bounds 206.00 126.00)
+          (opacity 0.40)
+          (drawsContent 1)
+          (children 1
+            (GraphicsLayer
+              (position 1.00 1.00)
+              (bounds origin 0.00 50.00)
+              (bounds 204.00 124.00)
+              (children 1
+                (GraphicsLayer
+                  (bounds 204.00 270.00)
+                  (drawsContent 1)
+                )
+              )
+            )
+          )
+        )
+      )
+    )
+  )
+)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingtextareascrolltouchhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/textarea-scroll-touch.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/textarea-scroll-touch.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/textarea-scroll-touch.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;style&gt;
+    html {
+      -webkit-overflow-scrolling: touch;
+    }
+
+    textarea {
+      width: 200px;
+      height: 120px;
+      margin: 10px;
+      border: 1px solid black;
+      display: inline-block;
+      font-size: 24pt;
+    }
+  &lt;/style&gt;
+  &lt;script&gt;
+    if (window.testRunner)
+      testRunner.dumpAsText();
+
+    function testScrollability(element)
+    {
+      // This will cause scrolled elements will have a 'bounds origin' of y=50 in their layer.
+      element.scrollTop = 50;
+    }
+    
+    function doTest()
+    {
+      var divs = document.querySelectorAll('body &gt; textarea');
+      for (var i = 0; i &lt; divs.length; ++i)
+        testScrollability(divs[i]);
+      
+      if (window.testRunner)
+        document.getElementById('results').innerText = window.internals.layerTreeAsText(document);
+    }
+    window.addEventListener('load', doTest, false);
+  &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+  &lt;textarea&gt;
+    Lorem ipsum dolor sit amet, consectetur adipisicing elit.
+  &lt;/textarea&gt;
+
+  &lt;textarea disabled&gt;
+    Lorem ipsum dolor sit amet, consectetur adipisicing elit.
+  &lt;/textarea&gt;
+  
+  &lt;pre id=&quot;results&quot;&gt;This test requires DRT.&lt;/pre&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingtouchscrollbackforwardexpectedtxtfromrev178196trunkLayoutTestsplatformiossimaccessibilitysetvalueexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-scroll-back-forward-expected.txt (from rev 178196, trunk/LayoutTests/platform/ios-sim/accessibility/set-value-expected.txt) (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-scroll-back-forward-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-scroll-back-forward-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+Tests navigating away from a page with accelerated overflow scrolling does not assert.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+pageshow 0
+pageshow 1
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingtouchscrollbackforwardhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-scroll-back-forward.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-scroll-back-forward.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-scroll-back-forward.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,63 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+  &lt;style&gt;
+    body {
+      height: 2000px;
+      -webkit-overflow-scrolling: touch;
+    }
+    
+    #scroller {
+      height: 100px;
+      width: 100px;
+      overflow: scroll;
+    }
+    .content {
+      height: 200px;
+      width: 200px;
+    }
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;scroller&quot;&gt;
+  &lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
+&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description('Tests navigating away from a page with accelerated overflow scrolling does not assert.');
+
+var pageShowCount = 0;
+function onPageShow()
+{
+  debug('pageshow ' + pageShowCount);
+  if (++pageShowCount == 2) {
+      window.setTimeout(function() {
+        finishJSTest();
+      }, 10);
+    }
+}
+
+function onPageLoad()
+{
+    if (window.testRunner)
+      testRunner.overridePreference(&quot;WebKitUsesPageCachePreferenceKey&quot;, 1);
+
+    // Navigate in a timeout to make sure we create a history entry.
+    setTimeout(function() {
+      window.location.href = 'resources/jump-back.html';
+    }, 0);
+};
+
+window.addEventListener('load', onPageLoad, false);
+window.addEventListener('pageshow', onPageShow, false);
+
+var successfullyParsed = true;
+var jsTestIsAsync = true;
+&lt;/script&gt; 
+
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingtouchstackingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-stacking-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-stacking-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-stacking-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+layer at (0,0) size 320x240
+  RenderView at (0,0) size 320x240
+layer at (0,0) size 320x148 layerType: background only
+layer at (0,0) size 100x100
+  RenderBlock (positioned) zI: -1 {DIV} at (0,0) size 100x100 [bgcolor=#FF0000]
+layer at (0,0) size 320x148 layerType: foreground only
+  RenderBlock {HTML} at (0,0) size 320x148
+    RenderBody {BODY} at (8,120) size 304x20
+      RenderBlock {DIV} at (0,0) size 304x0
+      RenderBlock {DIV} at (0,0) size 304x20
+        RenderText {#text} at (0,0) size 218x19
+          text run at (0,0) width 218: &quot;PASS: computed zIndex was auto&quot;
+layer at (0,0) size 100x100
+  RenderBlock (positioned) {DIV} at (0,0) size 100x100 [bgcolor=#FFA500]
+layer at (0,0) size 100x100
+  RenderBlock (positioned) {DIV} at (0,0) size 100x100 [bgcolor=#008000]
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosscrollingtouchstackinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-stacking.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-stacking.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/scrolling/touch-stacking.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot;&gt;
+    &lt;style&gt;
+        body {
+            -webkit-overflow-scrolling: touch;
+        }
+        
+        .box {
+            height: 100px;
+            width: 100px;
+            background-color: blue;
+            position: absolute;
+            top: 0;
+            left: 0;
+        }
+        
+        .stacking {
+            position: relative;
+            z-index: 0;
+        }
+        
+        #log {
+            margin-top: 120px;
+        }
+    &lt;/style&gt;
+    &lt;script&gt;
+        function doTest()
+        {
+            var box = document.getElementById('test');
+            var computedZIndex = window.getComputedStyle(box).zIndex;
+            var result;
+            if (computedZIndex == 'auto')
+                result = 'PASS: computed zIndex was auto';
+            else
+                result = 'FAIL: computed zIndex was ' + computedZIndex;
+
+            document.getElementById('log').textContent = result;
+        }
+        window.addEventListener('load', doTest, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;div class=&quot;container&quot;&gt;
+        &lt;div class=&quot;box&quot; style=&quot;background-color: orange; z-index: 0&quot;&gt;&lt;/div&gt;
+        &lt;div id=&quot;test&quot; class=&quot;box&quot; style=&quot;background-color: green;&quot;&gt;
+            &lt;div class=&quot;box&quot; style=&quot;background-color: red; z-index: -1&quot;&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/div&gt;
+
+    &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosstoragedomstorage5mbquotaexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/storage/domstorage/5mb-quota-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/storage/domstorage/5mb-quota-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/storage/domstorage/5mb-quota-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+Test a 5MB DOM Storage quota for localStorage and sessionStorage.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Testing sessionStorage
+storage.clear()
+PASS storage.length is 0
+Creating 'data' which contains 64K of data
+PASS data.length is 65536
+Putting 'data' into 39 sessionStorage buckets.
+Putting 'data' into another bucket.h
+FAIL Did not hit quota error.
+Verify that data was never inserted.
+FAIL storage.getItem(39) should be null (of type object). Was XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (of type string).
+Removing bucket 38.
+Adding 'Hello!' into a new bucket.
+PASS Insertion worked.
+
+
+Testing localStorage
+storage.clear()
+PASS storage.length is 0
+Creating 'data' which contains 64K of data
+PASS data.length is 65536
+Putting 'data' into 39 localStorage buckets.
+Putting 'data' into another bucket.h
+PASS Hit exception as expected
+Verify that data was never inserted.
+PASS storage.getItem(39) is null
+Removing bucket 38.
+Adding 'Hello!' into a new bucket.
+PASS Insertion worked.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriosstoragedomstorage5mbquotahtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/storage/domstorage/5mb-quota.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/storage/domstorage/5mb-quota.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/storage/domstorage/5mb-quota.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,98 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+description(&quot;Test a 5MB DOM Storage quota for localStorage and sessionStorage.&quot;);
+
+function testQuota(storageString)
+{
+    storage = eval(storageString);
+    if (!storage) {
+        testFailed(storageString + &quot; DOES NOT exist&quot;);
+        return;
+    }
+
+    debug(&quot;Testing &quot; + storageString);
+
+    evalAndLog(&quot;storage.clear()&quot;);
+    shouldBe(&quot;storage.length&quot;, &quot;0&quot;);
+
+    debug(&quot;Creating 'data' which contains 64K of data&quot;);
+    data = &quot;X&quot;;
+    for (var i=0; i&lt;16; i++)
+        data += data;
+    shouldBe(&quot;data.length&quot;, &quot;65536&quot;);
+
+    debug(&quot;Putting 'data' into 39 &quot; + storageString + &quot; buckets.&quot;);
+    for (var i=0; i&lt;39; i++)
+        storage[i] = data;
+
+    debug(&quot;Putting 'data' into another bucket.h&quot;);
+    try {
+        storage[39] = data;
+        testFailed(&quot;Did not hit quota error.&quot;);
+    } catch (e) {
+        testPassed(&quot;Hit exception as expected&quot;);
+    }
+
+    debug(&quot;Verify that data was never inserted.&quot;);
+    shouldBeNull(&quot;storage.getItem(39)&quot;);
+
+    debug(&quot;Removing bucket 38.&quot;);
+    storage.removeItem('38');
+
+    debug(&quot;Adding 'Hello!' into a new bucket.&quot;);
+    try {
+        storage['foo'] = &quot;Hello!&quot;;
+        testPassed(&quot;Insertion worked.&quot;);
+    } catch (e) {
+        testFailed(&quot;Exception: &quot; + e);
+    }
+}
+
+function testNoQuota(storageString)
+{
+    storage = eval(storageString);
+    if (!storage) {
+        testFailed(storageString + &quot; DOES NOT exist&quot;);
+        return;
+    }
+
+    debug(&quot;Testing &quot; + storageString);
+
+    evalAndLog(&quot;storage.clear()&quot;);
+    shouldBe(&quot;storage.length&quot;, &quot;0&quot;);
+
+    debug(&quot;Creating 'data' which contains 64K of data&quot;);
+    data = &quot;X&quot;;
+    for (var i=0; i&lt;16; i++)
+        data += data;
+    shouldBe(&quot;data.length&quot;, &quot;65536&quot;);
+
+    debug(&quot;Putting 'data' into 40 &quot; + storageString + &quot; buckets.&quot;);
+    for (var i=0; i&lt;40; i++)
+        storage[i] = data;
+
+    debug(&quot;Putting 'data' into another bucket.h&quot;);
+    try {
+        storage[40] = data;
+        testPassed(&quot;Insertion worked.&quot;);
+    } catch (e) {
+        testFailed(&quot;Exception: &quot; + e);
+    }
+}
+
+testQuota(&quot;sessionStorage&quot;);
+debug(&quot;&quot;);
+debug(&quot;&quot;);
+testQuota(&quot;localStorage&quot;);
+
+window.successfullyParsed = true;
+isSuccessfullyParsed();
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriostouchconstructTouchexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-Touch-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-Touch-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-Touch-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+Test constructor for Touch. &lt;rdar://problem/6481690&gt;
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS Touch.prototype.toString.call(new Touch) is '[object Touch]'
+PASS Touch.prototype.toString.call(new Touch(document)) is '[object Touch]'
+PASS Touch.prototype.toString.call(new Touch(document, element)) is '[object Touch]'
+PASS Touch.prototype.toString.call(new Touch(document, element, 1)) is '[object Touch]'
+PASS Touch.prototype.toString.call(new Touch(document, element, 1, 2)) is '[object Touch]'
+PASS Touch.prototype.toString.call(new Touch(document, element, 1, 2, 3)) is '[object Touch]'
+PASS Touch.prototype.toString.call(new Touch(document, element, 1, 2, 3, 4, 5)) is '[object Touch]'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriostouchconstructTouchhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-Touch.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-Touch.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-Touch.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.dumpAsText();
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;resources/construct-Touch.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriostouchconstructTouchListexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-TouchList-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-TouchList-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-TouchList-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+Test constructor for TouchList. &lt;rdar://problem/6481690&gt;
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+FAIL TouchList.prototype.toString.call(new TouchList) should be [object TouchList]. Was [object Touch].
+FAIL TouchList.prototype.toString.call(new TouchList(touch1)) should be [object TouchList]. Was [object Touch].
+FAIL TouchList.prototype.toString.call(new TouchList(touch1, touch2)) should be [object TouchList]. Was [object Touch].
+FAIL TouchList.prototype.toString.call(new TouchList(touch1, touch2, touch3)) should be [object TouchList]. Was [object Touch].
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriostouchconstructTouchListhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-TouchList.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-TouchList.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/touch/construct-TouchList.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.dumpAsText();
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;resources/construct-TouchList.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriostouchresourcesTEMPLATEhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/TEMPLATE.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/TEMPLATE.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/TEMPLATE.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.dumpAsText();
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;YOUR_JS_FILE_HERE&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriostouchresourcesconstructTouchjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/construct-Touch.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/construct-Touch.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/construct-Touch.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+description(
+'Test constructor for Touch.  &amp;lt;&lt;a href=&quot;rdar://problem/6481690&quot;&gt;rdar://problem/6481690&lt;/a&gt;&amp;gt;'
+);
+
+var element = document.getElementById('description');
+
+shouldBe(&quot;Touch.prototype.toString.call(new Touch)&quot;, &quot;'[object Touch]'&quot;);
+shouldBe(&quot;Touch.prototype.toString.call(new Touch(document))&quot;, &quot;'[object Touch]'&quot;);
+shouldBe(&quot;Touch.prototype.toString.call(new Touch(document, element))&quot;, &quot;'[object Touch]'&quot;);
+shouldBe(&quot;Touch.prototype.toString.call(new Touch(document, element, 1))&quot;, &quot;'[object Touch]'&quot;);
+shouldBe(&quot;Touch.prototype.toString.call(new Touch(document, element, 1, 2))&quot;, &quot;'[object Touch]'&quot;);
+shouldBe(&quot;Touch.prototype.toString.call(new Touch(document, element, 1, 2, 3))&quot;, &quot;'[object Touch]'&quot;);
+shouldBe(&quot;Touch.prototype.toString.call(new Touch(document, element, 1, 2, 3, 4, 5))&quot;, &quot;'[object Touch]'&quot;);
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriostouchresourcesconstructTouchListjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/construct-TouchList.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/construct-TouchList.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/construct-TouchList.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+description(
+'Test constructor for TouchList.  &amp;lt;&lt;a href=&quot;rdar://problem/6481690&quot;&gt;rdar://problem/6481690&lt;/a&gt;&amp;gt;'
+);
+
+var element = document.getElementById('description');
+var touch1 = new Touch(document, element, 1, 2, 3, 4);
+var touch2 = new Touch(document, element, 2, 3, 4, 5);
+var touch3 = new Touch(document, element, 3, 4, 5, 6);
+
+shouldBe(&quot;TouchList.prototype.toString.call(new TouchList)&quot;, &quot;'[object TouchList]'&quot;);
+shouldBe(&quot;TouchList.prototype.toString.call(new TouchList(touch1))&quot;, &quot;'[object TouchList]'&quot;);
+shouldBe(&quot;TouchList.prototype.toString.call(new TouchList(touch1, touch2))&quot;, &quot;'[object TouchList]'&quot;);
+shouldBe(&quot;TouchList.prototype.toString.call(new TouchList(touch1, touch2, touch3))&quot;, &quot;'[object TouchList]'&quot;);
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriostouchresourcestouchhandleronwindowjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/touch-handler-on-window.js (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/touch-handler-on-window.js                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/touch/resources/touch-handler-on-window.js        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+var targetDiv = document.createElement(&quot;div&quot;);
+targetDiv.id = &quot;targetDiv&quot;;
+targetDiv.setAttribute('style', &quot;position: absolute; top: 100px; left: 10px; width: 400px; height: 400px;&quot;);
+
+document.body.insertBefore(targetDiv, document.getElementById('console'));
+
+function logTouchEvent(event) {
+  debug(&quot;Window received touch event &quot; + event.type + &quot; with target &quot; + event.target.tagName);
+}
+
+window.addEventListener('touchstart', logTouchEvent, false);
+window.addEventListener('touchmove', logTouchEvent, false);
+window.addEventListener('touchend', logTouchEvent, false);
+window.addEventListener('gesturestart', logTouchEvent, false);
+window.addEventListener('gesturechange', logTouchEvent, false);
+window.addEventListener('gestureend', logTouchEvent, false);
+
+description(&quot;Tests that touch events are dispatched to the DOMWindow even if no other elements have touch event listeners.&quot;);
+
+if (window.eventSender) {
+    // Test tapping in a div.
+    eventSender.clearTouchPoints();
+    eventSender.addTouchPoint(20, 220);
+    eventSender.touchStart();
+    eventSender.updateTouchPoint(0, 20, 120);
+    eventSender.touchMove();
+    eventSender.touchEnd();
+
+    // Test tapping in the body.
+    eventSender.clearTouchPoints();
+    eventSender.addTouchPoint(500, 500);
+    eventSender.touchStart();
+    eventSender.touchEnd();
+
+    // Test that gesture events also make it to the window.
+    eventSender.clearTouchPoints();
+    eventSender.addTouchPoint(30, 130);
+    eventSender.addTouchPoint(40, 140);
+    eventSender.touchStart();
+    eventSender.updateTouchPoint(0, 50, 150);
+    eventSender.touchMove();
+    eventSender.touchEnd();
+} else
+    debug('This test requires DRT.');
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriostouchtouchhandleronwindowexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/touch/touch-handler-on-window-expected.txt (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/touch/touch-handler-on-window-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/touch/touch-handler-on-window-expected.txt        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+CONSOLE MESSAGE: line 22: TypeError: undefined is not a function (evaluating 'eventSender.clearTouchPoints()')
+Tests that touch events are dispatched to the DOMWindow even if no other elements have touch event listeners.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+FAIL successfullyParsed should be true (of type boolean). Was undefined (of type undefined).
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatoriostouchtouchhandleronwindowhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/ios/touch/touch-handler-on-window.html (0 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/ios/touch/touch-handler-on-window.html                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/ios/touch/touch-handler-on-window.html        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.dumpAsText();
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;resources/touch-handler-on-window.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2TestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations (178196 => 178197)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations        2015-01-09 22:13:06 UTC (rev 178196)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations        2015-01-09 22:14:09 UTC (rev 178197)
</span><span class="lines">@@ -1919,6 +1919,70 @@
</span><span class="cx"> editing/unsupported-content/table-type-after.html [ Failure Pass ]
</span><span class="cx"> editing/unsupported-content/table-type-before.html [ Failure Pass ]
</span><span class="cx"> 
</span><ins>+# iOS-specific tests that fail:
+platform/ios-simulator/ios/compositing/overlap-page-scale.html [ Failure ]
+platform/ios-simulator/ios/fast/fixed/absolute-over-fixed.html [ Failure ]
+platform/ios-simulator/ios/fast/fixed/fixed-in-transform.html [ Failure ]
+platform/ios-simulator/ios/fast/fixed/four-bars.html [ Failure ]
+platform/ios-simulator/ios/fast/fixed/frame-with-fixed.html [ Failure ]
+platform/ios-simulator/ios/fast/fixed/overlay-fixed.html [ Failure ]
+platform/ios-simulator/ios/fast/forms/borderless-input-gradient.html [ Failure ]
+platform/ios-simulator/ios/fast/forms/date-input-decorations.html [ Failure ]
+platform/ios-simulator/ios/fast/forms/form-controls-on-backgrounds.html [ Failure ]
+platform/ios-simulator/ios/fast/text/emoji-complextext.html [ Failure ]
+platform/ios-simulator/ios/fast/text/emoji-text.html [ Failure ]
+platform/ios-simulator/ios/fast/text/line-breaking-with-kerning.html [ Failure ]
+platform/ios-simulator/ios/fast/text/mid-word-break-before-combining-mark.html [ Failure ]
+platform/ios-simulator/ios/fast/text/opticalFont.html [ Failure ]
+platform/ios-simulator/ios/fast/text/opticalFontWithTextStyle.html [ Failure ]
+platform/ios-simulator/ios/fast/text/opticalFontWithWeight.html [ Failure ]
+platform/ios-simulator/ios/fast/text/textStylesWithSizes.html [ Failure ]
+platform/ios-simulator/ios/fixed/absolute-inside-fixed.html [ Failure ]
+platform/ios-simulator/ios/fixed/four-bars.html [ Failure ]
+platform/ios-simulator/ios/fixed/nested-fixed.html [ Failure ]
+platform/ios-simulator/ios/fixed/percentage-inside-fixed.html [ Failure ]
+platform/ios-simulator/ios/scrolling/clipping-ancestor-with-accelerated-scrolling-ancestor.html [ Failure ]
+platform/ios-simulator/ios/scrolling/overflow-scroll-touch.html [ Failure ]
+platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip-size.html [ Failure ]
+platform/ios-simulator/ios/scrolling/overflow-scrolling-ancestor-clip.html [ Failure ]
+platform/ios-simulator/ios/scrolling/scrollbar-hiding.html [ Failure ]
+platform/ios-simulator/ios/scrolling/scrolling-content-clip-to-viewport.html [ Failure ]
+platform/ios-simulator/ios/scrolling/textarea-scroll-touch.html [ Failure ]
+platform/ios-simulator/ios/scrolling/touch-stacking.html [ Failure ]
+platform/ios-simulator/ios/storage/domstorage/5mb-quota-expected.txt [ Failure ]
+
+# iOS-specific tests that time out:
+platform/ios-simulator/ios/fast/coordinates/mouse-event-zoomed.html
+platform/ios-simulator/ios/fast/coordinates/mouse-event.html
+
+# iOS-specific tests that time out in WebKitTestRunner due to missing DRT-specific functionality:
+platform/ios-simulator/ios/accessibility
+platform/ios-simulator/ios/fast/coordinates/touch-event-zoomed.html
+platform/ios-simulator/ios/fast/coordinates/touch-event.html
+platform/ios-simulator/ios/fast/events/touch/input-touch-target.html
+platform/ios-simulator/ios/fast/events/touch/inserted-fragment-touch-target.html
+platform/ios-simulator/ios/fast/events/touch/moved-touch-target.html
+platform/ios-simulator/ios/fast/events/touch/multi-touch-some-without-handlers.html
+platform/ios-simulator/ios/fast/events/touch/ontouchstart-active-selector.html
+platform/ios-simulator/ios/fast/events/touch/removed-fragment-touch-target.html
+platform/ios-simulator/ios/fast/events/touch/removed-touch-target.html
+platform/ios-simulator/ios/fast/events/touch/text-node-touch-target.html
+platform/ios-simulator/ios/fast/events/touch/textarea-touch-target.html
+platform/ios-simulator/ios/fast/events/touch/touch-event-frames.html
+platform/ios-simulator/ios/fast/events/touch/touch-event-pageXY.html
+platform/ios-simulator/ios/fast/events/touch/zoomed-touch-event-pageXY.html
+platform/ios-simulator/ios/fast/forms/range-input-container-touches.html
+platform/ios-simulator/ios/fast/forms/range-input-readonly-and-disabled.html
+platform/ios-simulator/ios/fast/forms/range-input-touches.html
+platform/ios-simulator/ios/fast/html/textarea-auto-sizing-disable.html
+platform/ios-simulator/ios/fast/text/data-detectors/phone-disabled.html
+platform/ios-simulator/ios/fast/text/data-detectors/phone.html
+
+# iOS tests that assert:
+platform/ios-simulator/ios/fast/text/combining-enclosing-keycap.html
+platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-no-height-or-width.html
+platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe.html
+
</ins><span class="cx"> # Flaky tests:
</span><span class="cx"> compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants.html [ Failure Pass ]
</span><span class="cx"> compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2.html [ Failure Pass ]
</span></span></pre>
</div>
</div>

</body>
</html>