<!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>[180490] trunk</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/180490">180490</a></dd>
<dt>Author</dt> <dd>weinig@apple.com</dd>
<dt>Date</dt> <dd>2015-02-22 15:33:21 -0800 (Sun, 22 Feb 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Convert the caps lock indicator to be implemented using the shadow DOM
https://bugs.webkit.org/show_bug.cgi?id=141868

Reviewed by Dan Bernstein.

Source/WebCore:

- Re-adds 'caps-lock-indicator' as a valid -webkit-appearance value. It was removed
  in <a href="http://trac.webkit.org/projects/webkit/changeset/74099">r74099</a> to work around a site bug, that should not be a problem anymore.
- Converts the caps lock indicator to be implemented as part of the shadow DOM rather
  than a paint time effect. This gives the proper overflow behavior (it now clips) and
  behaves correctly in RTL.

* css/CSSParser.cpp:
(WebCore::isValidKeywordPropertyAndValue):
Make 'caps-lock-indicator' a valid -webkit-appearance value.

* css/CSSValueKeywords.in:
Remove comment that indicated that caps-lock-indicator was not a valid
-webkit-appearance value.

* css/html.css:
(input::-webkit-caps-lock-indicator):
Add new default style for the new -webkit-caps-lock-indicator pseudo-element. The
trick employed here is to use a content: image to both implement the painting of
the caps lock indicator, and to get the sizing right (shrink-to-fit, height: 100%).

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::capsLockIndicatorElement):
(WebCore::HTMLInputElement::capsLockStateMayHaveChanged):
* html/HTMLInputElement.h:
* html/InputType.cpp:
(WebCore::InputType::capsLockStateMayHaveChanged):
* html/InputType.h:
(WebCore::InputType::capsLockIndicatorElement):
Pipe notification of changes in the caps locks state to the &lt;input&gt; element
rather than the RenderTextControlSingleLine. Also add an accessor for the caps
lock indicator element in the shadow DOM.

* html/TextFieldInputType.cpp:
(WebCore::TextFieldInputType::forwardEvent):
(WebCore::TextFieldInputType::shouldHaveCapsLockIndicator):
(WebCore::TextFieldInputType::createShadowSubtree):
(WebCore::TextFieldInputType::capsLockIndicatorElement):
(WebCore::TextFieldInputType::destroyShadowSubtree):
(WebCore::TextFieldInputType::shouldDrawCapsLockIndicator):
(WebCore::TextFieldInputType::capsLockStateMayHaveChanged):
* html/TextFieldInputType.h:
Add a new element to the text field shadow DOM to act as the caps lock indicator.
Give it a pseudo-element ID of -webkit-caps-lock-indicator so it can be referenced
from CSS. The element is always in the DOM for a password field. It toggles between
display: none and display: block depending on the state of the caps lock key.

* page/EventHandler.cpp:
(WebCore::EventHandler::capsLockStateMayHaveChanged):
Pipe notification of changes in the caps locks state to the &lt;input&gt; element
rather than the RenderTextControlSingleLine.

* rendering/RenderTextControlSingleLine.cpp:
(WebCore::RenderTextControlSingleLine::RenderTextControlSingleLine):
(WebCore::RenderTextControlSingleLine::paint): Deleted.
(WebCore::RenderTextControlSingleLine::capsLockStateMayHaveChanged): Deleted.
* rendering/RenderTextControlSingleLine.h:
Remove logic for drawing the caps lock indicator.

* rendering/RenderTheme.cpp:
(WebCore::RenderTheme::adjustStyle):
(WebCore::RenderTheme::paint):
(WebCore::RenderTheme::paintMeter):
(WebCore::RenderTheme::adjustCapsLockIndicatorStyle):
(WebCore::RenderTheme::paintCapsLockIndicator):
(WebCore::RenderTheme::shouldHaveCapsLockIndicator):
* rendering/RenderTheme.h:
(WebCore::RenderTheme::paintCapsLockIndicator): Deleted.
* rendering/RenderThemeIOS.h:
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::shouldHaveCapsLockIndicator):
* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::shouldHaveCapsLockIndicator):
(WebCore::RenderThemeMac::paintCapsLockIndicator): Deleted.
Now that the caps lock indicator is implemented like other aspects of form controls,
the theme code can be converted to be similar as well.

LayoutTests:

* fast/css/appearance-caps-lock-indicator-expected.txt:
* fast/css/appearance-caps-lock-indicator.html:
* platform/mac/fast/css/text-overflow-input-expected.txt:
* platform/mac/fast/forms/basic-inputs-expected.txt:
* platform/mac/fast/forms/input-appearance-height-expected.txt:
* platform/mac/fast/forms/input-value-expected.txt:
* platform/mac/fast/forms/placeholder-pseudo-style-expected.txt:
* platform/mac/fast/forms/validation-message-appearance-expected.txt:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastcssappearancecapslockindicatorexpectedtxt">trunk/LayoutTests/fast/css/appearance-caps-lock-indicator-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssappearancecapslockindicatorhtml">trunk/LayoutTests/fast/css/appearance-caps-lock-indicator.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastcsstextoverflowinputexpectedtxt">trunk/LayoutTests/platform/mac/fast/css/text-overflow-input-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastformsbasicinputsexpectedtxt">trunk/LayoutTests/platform/mac/fast/forms/basic-inputs-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastformsinputappearanceheightexpectedtxt">trunk/LayoutTests/platform/mac/fast/forms/input-appearance-height-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastformsinputvalueexpectedtxt">trunk/LayoutTests/platform/mac/fast/forms/input-value-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastformsplaceholderpseudostyleexpectedtxt">trunk/LayoutTests/platform/mac/fast/forms/placeholder-pseudo-style-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastformsvalidationmessageappearanceexpectedtxt">trunk/LayoutTests/platform/mac/fast/forms/validation-message-appearance-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmavericksfastcsstextoverflowinputexpectedtxt">trunk/LayoutTests/platform/mac-mavericks/fast/css/text-overflow-input-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmavericksfastformsbasicinputsexpectedtxt">trunk/LayoutTests/platform/mac-mavericks/fast/forms/basic-inputs-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmavericksfastformsinputappearanceheightexpectedtxt">trunk/LayoutTests/platform/mac-mavericks/fast/forms/input-appearance-height-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmavericksfastformsinputvalueexpectedtxt">trunk/LayoutTests/platform/mac-mavericks/fast/forms/input-value-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmavericksfastformsplaceholderpseudostyleexpectedtxt">trunk/LayoutTests/platform/mac-mavericks/fast/forms/placeholder-pseudo-style-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmavericksfastformsvalidationmessageappearanceexpectedtxt">trunk/LayoutTests/platform/mac-mavericks/fast/forms/validation-message-appearance-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmaverickstablesmozilla_expected_failuresbugsbug926471expectedtxt">trunk/LayoutTests/platform/mac-mavericks/tables/mozilla_expected_failures/bugs/bug92647-1-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssCSSParsercpp">trunk/Source/WebCore/css/CSSParser.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSValueKeywordsin">trunk/Source/WebCore/css/CSSValueKeywords.in</a></li>
<li><a href="#trunkSourceWebCorecsshtmlcss">trunk/Source/WebCore/css/html.css</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementcpp">trunk/Source/WebCore/html/HTMLInputElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementh">trunk/Source/WebCore/html/HTMLInputElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlInputTypecpp">trunk/Source/WebCore/html/InputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlInputTypeh">trunk/Source/WebCore/html/InputType.h</a></li>
<li><a href="#trunkSourceWebCorehtmlTextFieldInputTypecpp">trunk/Source/WebCore/html/TextFieldInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlTextFieldInputTypeh">trunk/Source/WebCore/html/TextFieldInputType.h</a></li>
<li><a href="#trunkSourceWebCorepageEventHandlercpp">trunk/Source/WebCore/page/EventHandler.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTextControlSingleLinecpp">trunk/Source/WebCore/rendering/RenderTextControlSingleLine.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTextControlSingleLineh">trunk/Source/WebCore/rendering/RenderTextControlSingleLine.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemecpp">trunk/Source/WebCore/rendering/RenderTheme.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeh">trunk/Source/WebCore/rendering/RenderTheme.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeIOSh">trunk/Source/WebCore/rendering/RenderThemeIOS.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeIOSmm">trunk/Source/WebCore/rendering/RenderThemeIOS.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeMach">trunk/Source/WebCore/rendering/RenderThemeMac.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeMacmm">trunk/Source/WebCore/rendering/RenderThemeMac.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/ChangeLog        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2015-02-21  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        Convert the caps lock indicator to be implemented using the shadow DOM
+        https://bugs.webkit.org/show_bug.cgi?id=141868
+
+        Reviewed by Dan Bernstein.
+
+        * fast/css/appearance-caps-lock-indicator-expected.txt:
+        * fast/css/appearance-caps-lock-indicator.html:
+        * platform/mac/fast/css/text-overflow-input-expected.txt:
+        * platform/mac/fast/forms/basic-inputs-expected.txt:
+        * platform/mac/fast/forms/input-appearance-height-expected.txt:
+        * platform/mac/fast/forms/input-value-expected.txt:
+        * platform/mac/fast/forms/placeholder-pseudo-style-expected.txt:
+        * platform/mac/fast/forms/validation-message-appearance-expected.txt:
+
</ins><span class="cx"> 2015-02-22  David Kilzer  &lt;ddkilzer@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Gardening: Clean up timeout test for ios-simulator-{wk1,wk2}
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssappearancecapslockindicatorexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/appearance-caps-lock-indicator-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/appearance-caps-lock-indicator-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/fast/css/appearance-caps-lock-indicator-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><del>-Test that the CSS parser does not accept caps-lock-indicator as a -webkit-appearance value.
</del><ins>+Test that the CSS parser accepts caps-lock-indicator as a -webkit-appearance value.
</ins><span class="cx"> 
</span><span class="cx"> PASS
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssappearancecapslockindicatorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/appearance-caps-lock-indicator.html (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/appearance-caps-lock-indicator.html        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/fast/css/appearance-caps-lock-indicator.html        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -1,6 +1,5 @@
</span><span class="cx"> &lt;p&gt;
</span><del>-    Test that the CSS parser does not accept &lt;tt&gt;caps-lock-indicator&lt;/tt&gt; as a &lt;tt&gt;-webkit-appearance&lt;/tt&gt;
-    value.
</del><ins>+    Test that the CSS parser accepts &lt;tt&gt;caps-lock-indicator&lt;/tt&gt; as a &lt;tt&gt;-webkit-appearance&lt;/tt&gt; value.
</ins><span class="cx"> &lt;/p&gt;
</span><span class="cx"> &lt;p id=&quot;result&quot;&gt;FAIL: Test did not run&lt;/p&gt;
</span><span class="cx"> &lt;div id=&quot;target&quot; style=&quot;display: none; -webkit-appearance: caps-lock-indicator;&quot;&gt;&lt;/div&gt;
</span><span class="lines">@@ -9,5 +8,5 @@
</span><span class="cx">         testRunner.dumpAsText();
</span><span class="cx"> 
</span><span class="cx">     var appearance = document.getElementById(&quot;target&quot;).style.webkitAppearance;
</span><del>-    document.getElementById(&quot;result&quot;).innerText = appearance === &quot;&quot; ? &quot;PASS&quot; : &quot;FAIL: parsed as &quot; + appearance;
</del><ins>+    document.getElementById(&quot;result&quot;).innerText = appearance === &quot;caps-lock-indicator&quot; ? &quot;PASS&quot; : &quot;FAIL: parsed as &quot; + appearance;
</ins><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastcsstextoverflowinputexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/css/text-overflow-input-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/css/text-overflow-input-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac/fast/css/text-overflow-input-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -31,6 +31,8 @@
</span><span class="cx">         RenderText {#text} at (615,20) size 5x18
</span><span class="cx">           text run at (615,20) width 5: &quot; &quot;
</span><span class="cx">         RenderTextControl {INPUT} at (621,20) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">         RenderBR {BR} at (759,20) size 1x18
</span><span class="cx">         RenderTextControl {INPUT} at (2,43) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><span class="cx">         RenderText {#text} at (140,43) size 5x18
</span><span class="lines">@@ -53,6 +55,8 @@
</span><span class="cx">         RenderText {#text} at (615,43) size 5x18
</span><span class="cx">           text run at (615,43) width 5: &quot; &quot;
</span><span class="cx">         RenderTextControl {INPUT} at (621,43) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span><span class="cx">       RenderBlock {P} at (0,114) size 784x64
</span><span class="cx">         RenderText {#text} at (0,0) size 546x18
</span><span class="lines">@@ -79,6 +83,8 @@
</span><span class="cx">         RenderText {#text} at (615,20) size 5x18
</span><span class="cx">           text run at (615,20) width 5: &quot; &quot;
</span><span class="cx">         RenderTextControl {INPUT} at (621,20) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">         RenderBR {BR} at (759,20) size 1x18
</span><span class="cx">         RenderTextControl {INPUT} at (2,43) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><span class="cx">         RenderText {#text} at (140,43) size 5x18
</span><span class="lines">@@ -101,6 +107,8 @@
</span><span class="cx">         RenderText {#text} at (615,43) size 5x18
</span><span class="cx">           text run at (615,43) width 5: &quot; &quot;
</span><span class="cx">         RenderTextControl {INPUT} at (621,43) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span><span class="cx">       RenderBlock {P} at (0,194) size 784x64
</span><span class="cx">         RenderText {#text} at (0,0) size 237x18
</span><span class="lines">@@ -145,7 +153,7 @@
</span><span class="cx">     RenderText {#text} at (0,0) size 291x13
</span><span class="cx">       text run at (0,0) width 291: &quot;Lorem ipsum dolor sit amet, consectetur adipiscing elit&quot;
</span><span class="cx"> layer at (632,73) size 130x13 scrollWidth 362
</span><del>-  RenderBlock {DIV} at (3,3) size 131x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">     RenderText {#text} at (0,0) size 361x13
</span><span class="cx">       text run at (0,0) width 361: &quot;\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}&quot;
</span><span class="cx"> layer at (13,96) size 130x13 scrollX 160 scrollWidth 291
</span><span class="lines">@@ -169,7 +177,7 @@
</span><span class="cx">     RenderText {#text} at (-160,0) size 292x13
</span><span class="cx">       text run at (-160,0) width 291: &quot;Lorem ipsum dolor sit amet, consectetur adipiscing elit&quot;
</span><span class="cx"> layer at (632,96) size 130x13 scrollX 230 scrollWidth 361
</span><del>-  RenderBlock {DIV} at (3,3) size 131x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">     RenderText {#text} at (-230,0) size 362x13
</span><span class="cx">       text run at (-230,0) width 361 RTL: &quot;\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}&quot;
</span><span class="cx"> layer at (13,153) size 130x13 scrollWidth 291
</span><span class="lines">@@ -193,7 +201,7 @@
</span><span class="cx">     RenderText {#text} at (0,0) size 291x13
</span><span class="cx">       text run at (0,0) width 291: &quot;Lorem ipsum dolor sit amet, consectetur adipiscing elit&quot;
</span><span class="cx"> layer at (632,153) size 130x13 scrollWidth 362
</span><del>-  RenderBlock {DIV} at (3,3) size 131x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">     RenderText {#text} at (0,0) size 361x13
</span><span class="cx">       text run at (0,0) width 361: &quot;\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}&quot;
</span><span class="cx"> layer at (13,176) size 130x13 scrollX 160 scrollWidth 291
</span><span class="lines">@@ -217,7 +225,7 @@
</span><span class="cx">     RenderText {#text} at (-160,0) size 292x13
</span><span class="cx">       text run at (-160,0) width 291: &quot;Lorem ipsum dolor sit amet, consectetur adipiscing elit&quot;
</span><span class="cx"> layer at (632,176) size 130x13 scrollX 230 scrollWidth 361
</span><del>-  RenderBlock {DIV} at (3,3) size 131x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">     RenderText {#text} at (-230,0) size 362x13
</span><span class="cx">       text run at (-230,0) width 361 RTL: &quot;\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}&quot;
</span><span class="cx"> layer at (259,233) size 130x13 scrollWidth 291
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastformsbasicinputsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/forms/basic-inputs-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/forms/basic-inputs-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac/fast/forms/basic-inputs-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -43,9 +43,13 @@
</span><span class="cx">           text run at (316,3) width 13: &quot;b &quot;
</span><span class="cx">           text run at (328,3) width 8: &quot;a&quot;
</span><span class="cx">         RenderTextControl {INPUT} at (3,26) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">         RenderText {#text} at (141,26) size 65x18
</span><span class="cx">           text run at (141,26) width 65: &quot;password &quot;
</span><span class="cx">         RenderTextControl {INPUT} at (207,26) size 138x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">         RenderText {#text} at (346,26) size 9x18
</span><span class="cx">           text run at (346,26) width 9: &quot;b&quot;
</span><span class="cx">       RenderBlock {DIV} at (10,374) size 450x21 [border: (1px solid #FF0000)]
</span><span class="lines">@@ -75,10 +79,10 @@
</span><span class="cx">     RenderText {#text} at (0,0) size 18x13
</span><span class="cx">       text run at (0,0) width 18: &quot;foo&quot;
</span><span class="cx"> layer at (24,353) size 130x13
</span><del>-  RenderBlock {DIV} at (3,3) size 131x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">     RenderText {#text} at (0,0) size 20x13
</span><span class="cx">       text run at (0,0) width 20: &quot;\x{2022}\x{2022}\x{2022}&quot;
</span><span class="cx"> layer at (229,353) size 130x13
</span><del>-  RenderBlock {DIV} at (3,3) size 131x13 [color=#545454]
</del><ins>+  RenderBlock {DIV} at (0,0) size 131x13 [color=#545454]
</ins><span class="cx">     RenderText {#text} at (0,0) size 20x13
</span><span class="cx">       text run at (0,0) width 20: &quot;\x{2022}\x{2022}\x{2022}&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastformsinputappearanceheightexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/forms/input-appearance-height-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/forms/input-appearance-height-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac/fast/forms/input-appearance-height-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -83,6 +83,8 @@
</span><span class="cx">         RenderText {#text} at (0,214) size 65x18
</span><span class="cx">           text run at (0,214) width 65: &quot;password &quot;
</span><span class="cx">         RenderTextControl {INPUT} at (66,214) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">         RenderText {#text} at (204,214) size 5x18
</span><span class="cx">           text run at (204,214) width 5: &quot; &quot;
</span><span class="cx">         RenderBR {BR} at (208,228) size 1x0
</span><span class="lines">@@ -101,6 +103,6 @@
</span><span class="cx"> layer at (63,220) size 130x13
</span><span class="cx">   RenderBlock {DIV} at (3,3) size 131x13
</span><span class="cx"> layer at (77,243) size 130x13
</span><del>-  RenderBlock {DIV} at (3,3) size 131x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx"> layer at (66,266) size 130x13
</span><span class="cx">   RenderBlock {DIV} at (0,0) size 131x13
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastformsinputvalueexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/forms/input-value-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/forms/input-value-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac/fast/forms/input-value-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -46,6 +46,8 @@
</span><span class="cx">                   text run at (1,1) width 248: &quot;password with value property changed&quot;
</span><span class="cx">               RenderTableCell {TD} at (396,27) size 228x25 [r=1 c=1 rs=1 cs=1]
</span><span class="cx">                 RenderTextControl {INPUT} at (3,3) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+                  RenderFlexibleBox {DIV} at (3,3) size 131x13
+                    RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">               RenderTableCell {TD} at (626,29) size 63x20 [r=1 c=2 rs=1 cs=1]
</span><span class="cx">                 RenderText {#text} at (1,1) size 30x18
</span><span class="cx">                   text run at (1,1) width 30: &quot;after&quot;
</span><span class="lines">@@ -205,7 +207,7 @@
</span><span class="cx">     RenderText {#text} at (0,0) size 34x13
</span><span class="cx">       text run at (0,0) width 34: &quot;before&quot;
</span><span class="cx"> layer at (410,161) size 130x13
</span><del>-  RenderBlock {DIV} at (3,3) size 131x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">     RenderText {#text} at (0,0) size 40x13
</span><span class="cx">       text run at (0,0) width 40: &quot;\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}&quot;
</span><span class="cx"> layer at (410,302) size 130x13
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastformsplaceholderpseudostyleexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/forms/placeholder-pseudo-style-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/forms/placeholder-pseudo-style-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac/fast/forms/placeholder-pseudo-style-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -17,6 +17,8 @@
</span><span class="cx">       RenderText {#text} at (305,20) size 5x18
</span><span class="cx">         text run at (305,20) width 5: &quot; &quot;
</span><span class="cx">       RenderTextControl {INPUT} at (311,20) size 138x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+        RenderFlexibleBox {DIV} at (3,3) size 131x13
+          RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">       RenderText {#text} at (450,20) size 5x18
</span><span class="cx">         text run at (450,20) width 5: &quot; &quot;
</span><span class="cx">       RenderTextControl {INPUT} at (456,20) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><span class="lines">@@ -44,7 +46,7 @@
</span><span class="cx">     RenderText {#text} at (0,0) size 52x13
</span><span class="cx">       text run at (0,0) width 52: &quot;password&quot;
</span><span class="cx"> layer at (323,31) size 130x13
</span><del>-  RenderBlock {DIV} at (3,3) size 131x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx"> layer at (467,31) size 130x13
</span><span class="cx">   RenderBlock {DIV} at (3,3) size 131x13 [color=#640000]
</span><span class="cx">     RenderText {#text} at (0,0) size 69x13
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastformsvalidationmessageappearanceexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/forms/validation-message-appearance-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/forms/validation-message-appearance-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac/fast/forms/validation-message-appearance-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -5,6 +5,8 @@
</span><span class="cx">     RenderBody {BODY} at (8,8) size 784x23
</span><span class="cx">       RenderBlock {FORM} at (0,0) size 784x23
</span><span class="cx">         RenderTextControl {INPUT} at (2,2) size 137x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 131x13
+            RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx">         RenderText {#text} at (140,2) size 5x18
</span><span class="cx">           text run at (140,2) width 5: &quot; &quot;
</span><span class="cx">         RenderButton {INPUT} at (146,3) size 54x18 [bgcolor=#C0C0C0]
</span><span class="lines">@@ -13,7 +15,7 @@
</span><span class="cx">               text run at (0,0) width 38: &quot;Submit&quot;
</span><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span><span class="cx"> layer at (13,13) size 130x13
</span><del>-  RenderBlock {DIV} at (3,3) size 131x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 131x13
</ins><span class="cx"> layer at (10,29) size 220x100
</span><span class="cx">   RenderBlock (positioned) zI: 2147483647 {DIV} at (10,29) size 220x100
</span><span class="cx"> layer at (10,29) size 220x16 scrollHeight 25
</span><span class="lines">@@ -34,4 +36,4 @@
</span><span class="cx">           text run at (0,32) width 112: &quot;current password.&quot;
</span><span class="cx"> layer at (42,29) size 18x18 backgroundClip at (10,29) size 220x16 clip at (10,29) size 220x16 outlineClip at (10,29) size 220x16
</span><span class="cx">   RenderBlock (relative positioned) zI: 2147483645 {DIV} at (0,0) size 18x18 [bgcolor=#F8ECEC] [border: (2px solid #440000) none (2px solid #440000)]
</span><del>-caret: position 0 of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of child 0 {FORM} of body
</del><ins>+caret: position 0 of child 0 {DIV} of child 0 {DIV} of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of child 0 {FORM} of body
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacmavericksfastcsstextoverflowinputexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-mavericks/fast/css/text-overflow-input-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mavericks/fast/css/text-overflow-input-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac-mavericks/fast/css/text-overflow-input-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -30,6 +30,8 @@
</span><span class="cx">             RenderBlock {DIV} at (147,1) size 14x11
</span><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span><span class="cx">         RenderTextControl {INPUT} at (2,43) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 140x13
+            RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">         RenderBR {BR} at (149,43) size 1x18
</span><span class="cx">         RenderTextControl {INPUT} at (2,66) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><span class="cx">         RenderText {#text} at (149,66) size 5x18
</span><span class="lines">@@ -51,6 +53,8 @@
</span><span class="cx">             RenderBlock {DIV} at (147,1) size 14x11
</span><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span><span class="cx">         RenderTextControl {INPUT} at (2,89) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 140x13
+            RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span><span class="cx">       RenderBlock {P} at (0,160) size 784x110
</span><span class="cx">         RenderText {#text} at (0,0) size 546x18
</span><span class="lines">@@ -76,6 +80,8 @@
</span><span class="cx">             RenderBlock {DIV} at (147,1) size 14x11
</span><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span><span class="cx">         RenderTextControl {INPUT} at (2,43) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 140x13
+            RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">         RenderBR {BR} at (149,43) size 1x18
</span><span class="cx">         RenderTextControl {INPUT} at (2,66) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><span class="cx">         RenderText {#text} at (149,66) size 5x18
</span><span class="lines">@@ -97,6 +103,8 @@
</span><span class="cx">             RenderBlock {DIV} at (147,1) size 14x11
</span><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span><span class="cx">         RenderTextControl {INPUT} at (2,89) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 140x13
+            RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span><span class="cx">       RenderBlock {P} at (0,286) size 784x64
</span><span class="cx">         RenderText {#text} at (0,0) size 237x18
</span><span class="lines">@@ -141,7 +149,7 @@
</span><span class="cx">     RenderText {#text} at (0,0) size 293x13
</span><span class="cx">       text run at (0,0) width 293: &quot;Lorem ipsum dolor sit amet, consectetur adipiscing elit&quot;
</span><span class="cx"> layer at (13,96) size 139x13 scrollWidth 341
</span><del>-  RenderBlock {DIV} at (3,3) size 140x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">     RenderText {#text} at (0,0) size 340x13
</span><span class="cx">       text run at (0,0) width 340: &quot;\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}&quot;
</span><span class="cx"> layer at (13,119) size 139x13 scrollX 153 scrollWidth 293
</span><span class="lines">@@ -165,7 +173,7 @@
</span><span class="cx">     RenderText {#text} at (-153,0) size 294x13
</span><span class="cx">       text run at (-153,0) width 293: &quot;Lorem ipsum dolor sit amet, consectetur adipiscing elit&quot;
</span><span class="cx"> layer at (13,142) size 139x13 scrollX 200 scrollWidth 339
</span><del>-  RenderBlock {DIV} at (3,3) size 140x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">     RenderText {#text} at (-200,0) size 341x13
</span><span class="cx">       text run at (-200,0) width 340 RTL: &quot;\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}&quot;
</span><span class="cx"> layer at (13,199) size 139x13 scrollWidth 293
</span><span class="lines">@@ -189,7 +197,7 @@
</span><span class="cx">     RenderText {#text} at (0,0) size 293x13
</span><span class="cx">       text run at (0,0) width 293: &quot;Lorem ipsum dolor sit amet, consectetur adipiscing elit&quot;
</span><span class="cx"> layer at (13,222) size 139x13 scrollWidth 341
</span><del>-  RenderBlock {DIV} at (3,3) size 140x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">     RenderText {#text} at (0,0) size 340x13
</span><span class="cx">       text run at (0,0) width 340: &quot;\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}&quot;
</span><span class="cx"> layer at (13,245) size 139x13 scrollX 153 scrollWidth 293
</span><span class="lines">@@ -213,7 +221,7 @@
</span><span class="cx">     RenderText {#text} at (-153,0) size 294x13
</span><span class="cx">       text run at (-153,0) width 293: &quot;Lorem ipsum dolor sit amet, consectetur adipiscing elit&quot;
</span><span class="cx"> layer at (13,268) size 139x13 scrollX 200 scrollWidth 339
</span><del>-  RenderBlock {DIV} at (3,3) size 140x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">     RenderText {#text} at (-200,0) size 341x13
</span><span class="cx">       text run at (-200,0) width 340 RTL: &quot;\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}&quot;
</span><span class="cx"> layer at (259,325) size 139x13 scrollWidth 293
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacmavericksfastformsbasicinputsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-mavericks/fast/forms/basic-inputs-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mavericks/fast/forms/basic-inputs-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac-mavericks/fast/forms/basic-inputs-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -43,9 +43,13 @@
</span><span class="cx">           text run at (334,3) width 13: &quot;b &quot;
</span><span class="cx">           text run at (346,3) width 8: &quot;a&quot;
</span><span class="cx">         RenderTextControl {INPUT} at (3,26) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 140x13
+            RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">         RenderText {#text} at (150,26) size 65x18
</span><span class="cx">           text run at (150,26) width 65: &quot;password &quot;
</span><span class="cx">         RenderTextControl {INPUT} at (216,26) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 140x13
+            RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">         RenderText {#text} at (363,26) size 9x18
</span><span class="cx">           text run at (363,26) width 9: &quot;b&quot;
</span><span class="cx">       RenderBlock {DIV} at (10,374) size 450x21 [border: (1px solid #FF0000)]
</span><span class="lines">@@ -75,10 +79,10 @@
</span><span class="cx">     RenderText {#text} at (0,0) size 18x13
</span><span class="cx">       text run at (0,0) width 18: &quot;foo&quot;
</span><span class="cx"> layer at (24,353) size 139x13
</span><del>-  RenderBlock {DIV} at (3,3) size 140x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">     RenderText {#text} at (0,0) size 19x13
</span><span class="cx">       text run at (0,0) width 19: &quot;\x{2022}\x{2022}\x{2022}&quot;
</span><span class="cx"> layer at (238,353) size 139x13
</span><del>-  RenderBlock {DIV} at (3,3) size 140x13 [color=#545454]
</del><ins>+  RenderBlock {DIV} at (0,0) size 140x13 [color=#545454]
</ins><span class="cx">     RenderText {#text} at (0,0) size 19x13
</span><span class="cx">       text run at (0,0) width 19: &quot;\x{2022}\x{2022}\x{2022}&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacmavericksfastformsinputappearanceheightexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-mavericks/fast/forms/input-appearance-height-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mavericks/fast/forms/input-appearance-height-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac-mavericks/fast/forms/input-appearance-height-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -83,6 +83,8 @@
</span><span class="cx">         RenderText {#text} at (0,214) size 65x18
</span><span class="cx">           text run at (0,214) width 65: &quot;password &quot;
</span><span class="cx">         RenderTextControl {INPUT} at (66,214) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 140x13
+            RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">         RenderText {#text} at (213,214) size 5x18
</span><span class="cx">           text run at (213,214) width 5: &quot; &quot;
</span><span class="cx">         RenderBR {BR} at (217,228) size 1x0
</span><span class="lines">@@ -101,6 +103,6 @@
</span><span class="cx"> layer at (63,220) size 139x13
</span><span class="cx">   RenderBlock {DIV} at (3,3) size 140x13
</span><span class="cx"> layer at (77,243) size 139x13
</span><del>-  RenderBlock {DIV} at (3,3) size 140x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx"> layer at (66,266) size 139x13
</span><span class="cx">   RenderBlock {DIV} at (0,0) size 140x13
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacmavericksfastformsinputvalueexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-mavericks/fast/forms/input-value-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mavericks/fast/forms/input-value-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac-mavericks/fast/forms/input-value-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -46,6 +46,8 @@
</span><span class="cx">                   text run at (1,1) width 248: &quot;password with value property changed&quot;
</span><span class="cx">               RenderTableCell {TD} at (396,27) size 243x25 [r=1 c=1 rs=1 cs=1]
</span><span class="cx">                 RenderTextControl {INPUT} at (3,3) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+                  RenderFlexibleBox {DIV} at (3,3) size 140x13
+                    RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">               RenderTableCell {TD} at (641,29) size 63x20 [r=1 c=2 rs=1 cs=1]
</span><span class="cx">                 RenderText {#text} at (1,1) size 30x18
</span><span class="cx">                   text run at (1,1) width 30: &quot;after&quot;
</span><span class="lines">@@ -205,7 +207,7 @@
</span><span class="cx">     RenderText {#text} at (0,0) size 35x13
</span><span class="cx">       text run at (0,0) width 35: &quot;before&quot;
</span><span class="cx"> layer at (410,161) size 139x13
</span><del>-  RenderBlock {DIV} at (3,3) size 140x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">     RenderText {#text} at (0,0) size 37x13
</span><span class="cx">       text run at (0,0) width 37: &quot;\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}\x{2022}&quot;
</span><span class="cx"> layer at (410,302) size 139x13
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacmavericksfastformsplaceholderpseudostyleexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-mavericks/fast/forms/placeholder-pseudo-style-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mavericks/fast/forms/placeholder-pseudo-style-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac-mavericks/fast/forms/placeholder-pseudo-style-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -17,6 +17,8 @@
</span><span class="cx">       RenderText {#text} at (323,20) size 5x18
</span><span class="cx">         text run at (323,20) width 5: &quot; &quot;
</span><span class="cx">       RenderTextControl {INPUT} at (329,20) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+        RenderFlexibleBox {DIV} at (3,3) size 140x13
+          RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">       RenderText {#text} at (476,20) size 5x18
</span><span class="cx">         text run at (476,20) width 5: &quot; &quot;
</span><span class="cx">       RenderTextControl {INPUT} at (482,20) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><span class="lines">@@ -43,7 +45,7 @@
</span><span class="cx">     RenderText {#text} at (0,0) size 50x13
</span><span class="cx">       text run at (0,0) width 50: &quot;password&quot;
</span><span class="cx"> layer at (340,31) size 139x13
</span><del>-  RenderBlock {DIV} at (3,3) size 140x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx"> layer at (493,31) size 139x13
</span><span class="cx">   RenderBlock {DIV} at (3,3) size 140x13 [color=#640000]
</span><span class="cx">     RenderText {#text} at (0,0) size 69x13
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacmavericksfastformsvalidationmessageappearanceexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-mavericks/fast/forms/validation-message-appearance-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mavericks/fast/forms/validation-message-appearance-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac-mavericks/fast/forms/validation-message-appearance-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -5,6 +5,8 @@
</span><span class="cx">     RenderBody {BODY} at (8,8) size 784x23
</span><span class="cx">       RenderBlock {FORM} at (0,0) size 784x23
</span><span class="cx">         RenderTextControl {INPUT} at (2,2) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+          RenderFlexibleBox {DIV} at (3,3) size 140x13
+            RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">         RenderText {#text} at (149,2) size 5x18
</span><span class="cx">           text run at (149,2) width 5: &quot; &quot;
</span><span class="cx">         RenderButton {INPUT} at (155,3) size 54x18 [bgcolor=#C0C0C0]
</span><span class="lines">@@ -13,7 +15,7 @@
</span><span class="cx">               text run at (0,0) width 38: &quot;Submit&quot;
</span><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span><span class="cx"> layer at (13,13) size 139x13
</span><del>-  RenderBlock {DIV} at (3,3) size 140x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx"> layer at (10,29) size 220x100
</span><span class="cx">   RenderBlock (positioned) zI: 2147483647 {DIV} at (10,29) size 220x100
</span><span class="cx"> layer at (10,29) size 220x16 scrollHeight 25
</span><span class="lines">@@ -34,4 +36,4 @@
</span><span class="cx">           text run at (0,32) width 137: &quot;the current password.&quot;
</span><span class="cx"> layer at (42,29) size 18x18 backgroundClip at (10,29) size 220x16 clip at (10,29) size 220x16 outlineClip at (10,29) size 220x16
</span><span class="cx">   RenderBlock (relative positioned) zI: 2147483645 {DIV} at (0,0) size 18x18 [bgcolor=#F8ECEC] [border: (2px solid #440000) none (2px solid #440000)]
</span><del>-caret: position 0 of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of child 0 {FORM} of body
</del><ins>+caret: position 0 of child 0 {DIV} of child 0 {DIV} of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of child 0 {FORM} of body
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacmaverickstablesmozilla_expected_failuresbugsbug926471expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-mavericks/tables/mozilla_expected_failures/bugs/bug92647-1-expected.txt (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mavericks/tables/mozilla_expected_failures/bugs/bug92647-1-expected.txt        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/LayoutTests/platform/mac-mavericks/tables/mozilla_expected_failures/bugs/bug92647-1-expected.txt        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -24,9 +24,11 @@
</span><span class="cx">                           text run at (2,2) width 31: &quot;PIN:&quot;
</span><span class="cx">                       RenderTableCell {TD} at (85,44) size 193x27 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
</span><span class="cx">                         RenderTextControl {INPUT} at (4,4) size 146x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
</span><ins>+                          RenderFlexibleBox {DIV} at (3,3) size 140x13
+                            RenderBlock {DIV} at (0,0) size 140x13
</ins><span class="cx">                         RenderText {#text} at (0,0) size 0x0
</span><span class="cx">                       RenderTableCell {TD} at (280,55) size 4x4 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
</span><span class="cx"> layer at (107,30) size 139x13
</span><span class="cx">   RenderBlock {DIV} at (3,3) size 140x13
</span><span class="cx"> layer at (107,66) size 139x13
</span><del>-  RenderBlock {DIV} at (3,3) size 140x13
</del><ins>+  RenderBlock {DIV} at (0,0) size 140x13
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/ChangeLog        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -1,3 +1,87 @@
</span><ins>+2015-02-21  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        Convert the caps lock indicator to be implemented using the shadow DOM
+        https://bugs.webkit.org/show_bug.cgi?id=141868
+
+        Reviewed by Dan Bernstein.
+
+        - Re-adds 'caps-lock-indicator' as a valid -webkit-appearance value. It was removed
+          in r74099 to work around a site bug, that should not be a problem anymore.
+        - Converts the caps lock indicator to be implemented as part of the shadow DOM rather
+          than a paint time effect. This gives the proper overflow behavior (it now clips) and
+          behaves correctly in RTL.
+
+        * css/CSSParser.cpp:
+        (WebCore::isValidKeywordPropertyAndValue):
+        Make 'caps-lock-indicator' a valid -webkit-appearance value.
+
+        * css/CSSValueKeywords.in:
+        Remove comment that indicated that caps-lock-indicator was not a valid
+        -webkit-appearance value.
+
+        * css/html.css:
+        (input::-webkit-caps-lock-indicator):
+        Add new default style for the new -webkit-caps-lock-indicator pseudo-element. The
+        trick employed here is to use a content: image to both implement the painting of
+        the caps lock indicator, and to get the sizing right (shrink-to-fit, height: 100%).
+
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::capsLockIndicatorElement):
+        (WebCore::HTMLInputElement::capsLockStateMayHaveChanged):
+        * html/HTMLInputElement.h:
+        * html/InputType.cpp:
+        (WebCore::InputType::capsLockStateMayHaveChanged):
+        * html/InputType.h:
+        (WebCore::InputType::capsLockIndicatorElement):
+        Pipe notification of changes in the caps locks state to the &lt;input&gt; element
+        rather than the RenderTextControlSingleLine. Also add an accessor for the caps
+        lock indicator element in the shadow DOM.
+
+        * html/TextFieldInputType.cpp:
+        (WebCore::TextFieldInputType::forwardEvent):
+        (WebCore::TextFieldInputType::shouldHaveCapsLockIndicator):
+        (WebCore::TextFieldInputType::createShadowSubtree):
+        (WebCore::TextFieldInputType::capsLockIndicatorElement):
+        (WebCore::TextFieldInputType::destroyShadowSubtree):
+        (WebCore::TextFieldInputType::shouldDrawCapsLockIndicator):
+        (WebCore::TextFieldInputType::capsLockStateMayHaveChanged):
+        * html/TextFieldInputType.h:
+        Add a new element to the text field shadow DOM to act as the caps lock indicator.
+        Give it a pseudo-element ID of -webkit-caps-lock-indicator so it can be referenced
+        from CSS. The element is always in the DOM for a password field. It toggles between
+        display: none and display: block depending on the state of the caps lock key.
+
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::capsLockStateMayHaveChanged):
+        Pipe notification of changes in the caps locks state to the &lt;input&gt; element
+        rather than the RenderTextControlSingleLine.
+
+        * rendering/RenderTextControlSingleLine.cpp:
+        (WebCore::RenderTextControlSingleLine::RenderTextControlSingleLine):
+        (WebCore::RenderTextControlSingleLine::paint): Deleted.
+        (WebCore::RenderTextControlSingleLine::capsLockStateMayHaveChanged): Deleted.
+        * rendering/RenderTextControlSingleLine.h:
+        Remove logic for drawing the caps lock indicator.
+
+        * rendering/RenderTheme.cpp:
+        (WebCore::RenderTheme::adjustStyle):
+        (WebCore::RenderTheme::paint):
+        (WebCore::RenderTheme::paintMeter):
+        (WebCore::RenderTheme::adjustCapsLockIndicatorStyle):
+        (WebCore::RenderTheme::paintCapsLockIndicator):
+        (WebCore::RenderTheme::shouldHaveCapsLockIndicator):
+        * rendering/RenderTheme.h:
+        (WebCore::RenderTheme::paintCapsLockIndicator): Deleted.
+        * rendering/RenderThemeIOS.h:
+        * rendering/RenderThemeIOS.mm:
+        (WebCore::RenderThemeIOS::shouldHaveCapsLockIndicator):
+        * rendering/RenderThemeMac.h:
+        * rendering/RenderThemeMac.mm:
+        (WebCore::RenderThemeMac::shouldHaveCapsLockIndicator):
+        (WebCore::RenderThemeMac::paintCapsLockIndicator): Deleted.
+        Now that the caps lock indicator is implemented like other aspects of form controls,
+        the theme code can be converted to be similar as well.
+
</ins><span class="cx"> 2015-02-21  David Kilzer  &lt;ddkilzer@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Fix build failure after including CoreMediaSoftLink.h in WebVideoFullscreenInterfaceAVKit.mm
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParser.cpp (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParser.cpp        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/css/CSSParser.cpp        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -807,7 +807,7 @@
</span><span class="cx">             return true;
</span><span class="cx">         break;
</span><span class="cx">     case CSSPropertyWebkitAppearance:
</span><del>-        if ((valueID &gt;= CSSValueCheckbox &amp;&amp; valueID &lt;= CSSValueTextarea) || valueID == CSSValueNone)
</del><ins>+        if ((valueID &gt;= CSSValueCheckbox &amp;&amp; valueID &lt;= CSSValueCapsLockIndicator) || valueID == CSSValueNone)
</ins><span class="cx">             return true;
</span><span class="cx">         break;
</span><span class="cx">     case CSSPropertyWebkitBackfaceVisibility:
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSValueKeywordsin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSValueKeywords.in (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSValueKeywords.in        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/css/CSSValueKeywords.in        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -745,7 +745,6 @@
</span><span class="cx"> image-controls-button
</span><span class="cx"> #endif
</span><span class="cx"> textarea
</span><del>-// An appearance value that should not be accepted by the parser:
</del><span class="cx"> caps-lock-indicator
</span><span class="cx"> 
</span><span class="cx"> //
</span></span></pre></div>
<a id="trunkSourceWebCorecsshtmlcss"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/html.css (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/html.css        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/css/html.css        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -544,6 +544,14 @@
</span><span class="cx">     -webkit-user-select: none;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+input::-webkit-caps-lock-indicator {
+    -webkit-appearance: caps-lock-indicator;
+    content: url('data:image/svg+xml,&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 17 17&quot;&gt;&lt;path fill=&quot;black&quot; fill-opacity=&quot;0.4&quot; d=&quot;M12.5 0.5A 4 4 0 0 1 16.5 4.5L 16.5 12.5A 4 4 0 0 1 12.5 16.5L 4.5 16.5A 4 4 0 0 1 0.5 12.5L 0.5 4.5A 4 4 0 0 1 4.5 0.5L 12.5 0.5M 8.5 2L 4 7L 6.25 7L 6.25 10.25L 10.75 10.25L 10.75 7L 13 7L 8.5 2M 10.75 12L 6.25 12L 6.25 14.25L 10.75 14.25L 10.75 12&quot;/&gt;&lt;/svg&gt;');
+    height: 100%;
+    -webkit-flex: none;
+    -webkit-user-select: none;
+}
+
</ins><span class="cx"> keygen, select {
</span><span class="cx">     border-radius: 5px;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.cpp        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -199,6 +199,11 @@
</span><span class="cx">     return m_inputType-&gt;innerSpinButtonElement();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+HTMLElement* HTMLInputElement::capsLockIndicatorElement() const
+{
+    return m_inputType-&gt;capsLockIndicatorElement();
+}
+
</ins><span class="cx"> HTMLElement* HTMLInputElement::resultsButtonElement() const
</span><span class="cx"> {
</span><span class="cx">     return m_inputType-&gt;resultsButtonElement();
</span><span class="lines">@@ -1901,4 +1906,9 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+void HTMLInputElement::capsLockStateMayHaveChanged()
+{
+    m_inputType-&gt;capsLockStateMayHaveChanged();
+}
+
</ins><span class="cx"> } // namespace
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.h (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.h        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/html/HTMLInputElement.h        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -147,6 +147,7 @@
</span><span class="cx">     virtual TextControlInnerTextElement* innerTextElement() const override final;
</span><span class="cx">     HTMLElement* innerBlockElement() const;
</span><span class="cx">     HTMLElement* innerSpinButtonElement() const;
</span><ins>+    HTMLElement* capsLockIndicatorElement() const;
</ins><span class="cx">     HTMLElement* resultsButtonElement() const;
</span><span class="cx">     HTMLElement* cancelButtonElement() const;
</span><span class="cx">     HTMLElement* sliderThumbElement() const;
</span><span class="lines">@@ -317,6 +318,8 @@
</span><span class="cx">     bool setupDateTimeChooserParameters(DateTimeChooserParameters&amp;);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    void capsLockStateMayHaveChanged();
+
</ins><span class="cx"> protected:
</span><span class="cx">     HTMLInputElement(const QualifiedName&amp;, Document&amp;, HTMLFormElement*, bool createdByParser);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/InputType.cpp (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/InputType.cpp        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/html/InputType.cpp        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -489,6 +489,10 @@
</span><span class="cx">     element().defaultBlur();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void InputType::capsLockStateMayHaveChanged()
+{
+}
+
</ins><span class="cx"> void InputType::createShadowSubtree()
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlInputTypeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/InputType.h (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/InputType.h        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/html/InputType.h        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -215,6 +215,8 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void blur();
</span><span class="cx"> 
</span><ins>+    virtual void capsLockStateMayHaveChanged();
+
</ins><span class="cx">     // Shadow tree handling
</span><span class="cx"> 
</span><span class="cx">     virtual void createShadowSubtree();
</span><span class="lines">@@ -224,6 +226,7 @@
</span><span class="cx">     virtual HTMLElement* innerBlockElement() const { return nullptr; }
</span><span class="cx">     virtual TextControlInnerTextElement* innerTextElement() const { return nullptr; }
</span><span class="cx">     virtual HTMLElement* innerSpinButtonElement() const { return nullptr; }
</span><ins>+    virtual HTMLElement* capsLockIndicatorElement() const { return nullptr; }
</ins><span class="cx">     virtual HTMLElement* resultsButtonElement() const { return nullptr; }
</span><span class="cx">     virtual HTMLElement* cancelButtonElement() const { return nullptr; }
</span><span class="cx">     virtual HTMLElement* sliderThumbElement() const { return nullptr; }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlTextFieldInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/TextFieldInputType.cpp (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/TextFieldInputType.cpp        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/html/TextFieldInputType.cpp        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx"> #include &quot;KeyboardEvent.h&quot;
</span><span class="cx"> #include &quot;NodeRenderStyle.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><ins>+#include &quot;PlatformKeyboardEvent.h&quot;
</ins><span class="cx"> #include &quot;RenderLayer.h&quot;
</span><span class="cx"> #include &quot;RenderTextControlSingleLine.h&quot;
</span><span class="cx"> #include &quot;RenderTheme.h&quot;
</span><span class="lines">@@ -202,9 +203,9 @@
</span><span class="cx">                     }
</span><span class="cx">                 }
</span><span class="cx"> 
</span><del>-                renderTextControl.capsLockStateMayHaveChanged();
</del><ins>+                capsLockStateMayHaveChanged();
</ins><span class="cx">             } else if (event-&gt;type() == eventNames().focusEvent)
</span><del>-                renderTextControl.capsLockStateMayHaveChanged();
</del><ins>+                capsLockStateMayHaveChanged();
</ins><span class="cx"> 
</span><span class="cx">             element().forwardEvent(event);
</span><span class="cx">         }
</span><span class="lines">@@ -240,6 +241,13 @@
</span><span class="cx">     return theme-&gt;shouldHaveSpinButton(element());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool TextFieldInputType::shouldHaveCapsLockIndicator() const
+{
+    Document&amp; document = element().document();
+    RefPtr&lt;RenderTheme&gt; theme = document.page() ? &amp;document.page()-&gt;theme() : RenderTheme::defaultTheme();
+    return theme-&gt;shouldHaveCapsLockIndicator(element());
+}
+
</ins><span class="cx"> void TextFieldInputType::createShadowSubtree()
</span><span class="cx"> {
</span><span class="cx">     ASSERT(element().shadowRoot());
</span><span class="lines">@@ -250,7 +258,8 @@
</span><span class="cx"> 
</span><span class="cx">     Document&amp; document = element().document();
</span><span class="cx">     bool shouldHaveSpinButton = this-&gt;shouldHaveSpinButton();
</span><del>-    bool createsContainer = shouldHaveSpinButton || needsContainer();
</del><ins>+    bool shouldHaveCapsLockIndicator = this-&gt;shouldHaveCapsLockIndicator();
+    bool createsContainer = shouldHaveSpinButton || shouldHaveCapsLockIndicator || needsContainer();
</ins><span class="cx"> 
</span><span class="cx">     m_innerText = TextControlInnerTextElement::create(document);
</span><span class="cx">     if (!createsContainer) {
</span><span class="lines">@@ -274,6 +283,16 @@
</span><span class="cx">         m_innerSpinButton = SpinButtonElement::create(document, *this);
</span><span class="cx">         m_container-&gt;appendChild(m_innerSpinButton, IGNORE_EXCEPTION);
</span><span class="cx">     }
</span><ins>+
+    if (shouldHaveCapsLockIndicator) {
+        m_capsLockIndicator = HTMLDivElement::create(document);
+        m_capsLockIndicator-&gt;setPseudo(AtomicString(&quot;-webkit-caps-lock-indicator&quot;, AtomicString::ConstructFromLiteral));
+
+        bool shouldDrawCapsLockIndicator = this-&gt;shouldDrawCapsLockIndicator();
+        m_capsLockIndicator-&gt;setInlineStyleProperty(CSSPropertyDisplay, shouldDrawCapsLockIndicator ? CSSValueBlock : CSSValueNone, true);
+
+        m_container-&gt;appendChild(m_capsLockIndicator, IGNORE_EXCEPTION);
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLElement* TextFieldInputType::containerElement() const
</span><span class="lines">@@ -297,6 +316,11 @@
</span><span class="cx">     return m_innerSpinButton.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+HTMLElement* TextFieldInputType::capsLockIndicatorElement() const
+{
+    return m_capsLockIndicator.get();
+}
+
</ins><span class="cx"> HTMLElement* TextFieldInputType::placeholderElement() const
</span><span class="cx"> {
</span><span class="cx">     return m_placeholder.get();
</span><span class="lines">@@ -305,13 +329,14 @@
</span><span class="cx"> void TextFieldInputType::destroyShadowSubtree()
</span><span class="cx"> {
</span><span class="cx">     InputType::destroyShadowSubtree();
</span><del>-    m_innerText.clear();
-    m_placeholder.clear();
-    m_innerBlock.clear();
</del><ins>+    m_innerText = nullptr;
+    m_placeholder = nullptr;
+    m_innerBlock = nullptr;
</ins><span class="cx">     if (m_innerSpinButton)
</span><span class="cx">         m_innerSpinButton-&gt;removeSpinButtonOwner();
</span><del>-    m_innerSpinButton.clear();
-    m_container.clear();
</del><ins>+    m_innerSpinButton = nullptr;
+    m_capsLockIndicator = nullptr;
+    m_container = nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TextFieldInputType::attributeChanged()
</span><span class="lines">@@ -514,4 +539,28 @@
</span><span class="cx">     return shouldSpinButtonRespondToMouseEvents() &amp;&amp; element().focused();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool TextFieldInputType::shouldDrawCapsLockIndicator() const
+{
+    if (element().document().focusedElement() != &amp;element())
+        return false;
+
+    Frame* frame = element().document().frame();
+    if (!frame)
+        return false;
+
+    if (!frame-&gt;selection().isFocusedAndActive())
+        return false;
+
+    return PlatformKeyboardEvent::currentCapsLockState();
+}
+
+void TextFieldInputType::capsLockStateMayHaveChanged()
+{
+    if (!m_capsLockIndicator)
+        return;
+
+    bool shouldDrawCapsLockIndicator = this-&gt;shouldDrawCapsLockIndicator();
+    m_capsLockIndicator-&gt;setInlineStyleProperty(CSSPropertyDisplay, shouldDrawCapsLockIndicator ? CSSValueBlock : CSSValueNone, true);
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlTextFieldInputTypeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/TextFieldInputType.h (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/TextFieldInputType.h        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/html/TextFieldInputType.h        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -52,10 +52,10 @@
</span><span class="cx">     virtual HTMLElement* innerBlockElement() const override final;
</span><span class="cx">     virtual TextControlInnerTextElement* innerTextElement() const override final;
</span><span class="cx">     virtual HTMLElement* innerSpinButtonElement() const override final;
</span><ins>+    virtual HTMLElement* capsLockIndicatorElement() const override final;
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     virtual bool needsContainer() const;
</span><del>-    virtual bool shouldHaveSpinButton() const final;
</del><span class="cx">     virtual void createShadowSubtree() override;
</span><span class="cx">     virtual void destroyShadowSubtree() override;
</span><span class="cx">     virtual void attributeChanged() override final;
</span><span class="lines">@@ -95,6 +95,7 @@
</span><span class="cx">     virtual void updatePlaceholderText() override final;
</span><span class="cx">     virtual bool appendFormData(FormDataList&amp;, bool multipart) const override final;
</span><span class="cx">     virtual void subtreeHasChanged() override final;
</span><ins>+    virtual void capsLockStateMayHaveChanged() override final;
</ins><span class="cx"> 
</span><span class="cx">     // SpinButtonElement::SpinButtonOwner functions.
</span><span class="cx">     virtual void focusAndSelectSpinButtonOwner() override final;
</span><span class="lines">@@ -103,11 +104,16 @@
</span><span class="cx">     virtual void spinButtonStepDown() override final;
</span><span class="cx">     virtual void spinButtonStepUp() override final;
</span><span class="cx"> 
</span><ins>+    bool shouldHaveSpinButton() const;
+    bool shouldHaveCapsLockIndicator() const;
+    bool shouldDrawCapsLockIndicator() const;
+
</ins><span class="cx">     RefPtr&lt;HTMLElement&gt; m_container;
</span><span class="cx">     RefPtr&lt;HTMLElement&gt; m_innerBlock;
</span><span class="cx">     RefPtr&lt;TextControlInnerTextElement&gt; m_innerText;
</span><span class="cx">     RefPtr&lt;HTMLElement&gt; m_placeholder;
</span><span class="cx">     RefPtr&lt;SpinButtonElement&gt; m_innerSpinButton;
</span><ins>+    RefPtr&lt;HTMLElement&gt; m_capsLockIndicator;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventHandlercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventHandler.cpp (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventHandler.cpp        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/page/EventHandler.cpp        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -3645,10 +3645,8 @@
</span><span class="cx"> {
</span><span class="cx">     Document* document = m_frame.document();
</span><span class="cx">     if (auto* element = document-&gt;focusedElement()) {
</span><del>-        if (auto* renderer = element-&gt;renderer()) {
-            if (is&lt;RenderTextControlSingleLine&gt;(*renderer))
-                downcast&lt;RenderTextControlSingleLine&gt;(*renderer).capsLockStateMayHaveChanged();
-        }
</del><ins>+        if (is&lt;HTMLInputElement&gt;(*element))
+            downcast&lt;HTMLInputElement&gt;(*element).capsLockStateMayHaveChanged();
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTextControlSingleLinecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTextControlSingleLine.cpp (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTextControlSingleLine.cpp        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/rendering/RenderTextControlSingleLine.cpp        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -55,7 +55,6 @@
</span><span class="cx"> 
</span><span class="cx"> RenderTextControlSingleLine::RenderTextControlSingleLine(HTMLInputElement&amp; element, Ref&lt;RenderStyle&gt;&amp;&amp; style)
</span><span class="cx">     : RenderTextControl(element, WTF::move(style))
</span><del>-    , m_shouldDrawCapsLockIndicator(false)
</del><span class="cx">     , m_desiredInnerTextLogicalHeight(-1)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -69,25 +68,6 @@
</span><span class="cx">     return inputElement().innerSpinButtonElement();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderTextControlSingleLine::paint(PaintInfo&amp; paintInfo, const LayoutPoint&amp; paintOffset)
-{
-    RenderTextControl::paint(paintInfo, paintOffset);
-
-    if (paintInfo.phase == PaintPhaseBlockBackground &amp;&amp; m_shouldDrawCapsLockIndicator) {
-        LayoutRect contentsRect = contentBoxRect();
-
-        // Center in the block progression direction.
-        if (isHorizontalWritingMode())
-            contentsRect.setY((height() - contentsRect.height()) / 2);
-        else
-            contentsRect.setX((width() - contentsRect.width()) / 2);
-
-        // Convert the rect into the coords used for painting the content
-        contentsRect.moveBy(paintOffset + location());
-        theme().paintCapsLockIndicator(*this, paintInfo, snappedIntRect(contentsRect));
-    }
-}
-
</del><span class="cx"> LayoutUnit RenderTextControlSingleLine::computeLogicalHeightLimit() const
</span><span class="cx"> {
</span><span class="cx">     return containerElement() ? contentLogicalHeight() : logicalHeight();
</span><span class="lines">@@ -277,25 +257,6 @@
</span><span class="cx">     setHasOverflowClip(false);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderTextControlSingleLine::capsLockStateMayHaveChanged()
-{
-    // Only draw the caps lock indicator if these things are true:
-    // 1) The field is a password field
-    // 2) The frame is active
-    // 3) The element is focused
-    // 4) The caps lock is on
-    bool shouldDrawCapsLockIndicator =
-        inputElement().isPasswordField()
-        &amp;&amp; frame().selection().isFocusedAndActive()
-        &amp;&amp; document().focusedElement() == &amp;inputElement()
-        &amp;&amp; PlatformKeyboardEvent::currentCapsLockState();
-
-    if (shouldDrawCapsLockIndicator != m_shouldDrawCapsLockIndicator) {
-        m_shouldDrawCapsLockIndicator = shouldDrawCapsLockIndicator;
-        repaint();
-    }
-}
-
</del><span class="cx"> bool RenderTextControlSingleLine::hasControlClip() const
</span><span class="cx"> {
</span><span class="cx">     // Apply control clip for text fields with decorations.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTextControlSingleLineh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTextControlSingleLine.h (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTextControlSingleLine.h        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/rendering/RenderTextControlSingleLine.h        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -38,8 +38,6 @@
</span><span class="cx">     virtual Ref&lt;RenderStyle&gt; createInnerTextStyle(const RenderStyle* startStyle) const override;
</span><span class="cx">     Ref&lt;RenderStyle&gt; createInnerBlockStyle(const RenderStyle* startStyle) const;
</span><span class="cx"> 
</span><del>-    void capsLockStateMayHaveChanged();
-
</del><span class="cx"> protected:
</span><span class="cx">     virtual void centerContainerIfNeeded(RenderBox*) const { }
</span><span class="cx">     virtual LayoutUnit computeLogicalHeightLimit() const;
</span><span class="lines">@@ -55,7 +53,6 @@
</span><span class="cx">     virtual LayoutRect controlClipRect(const LayoutPoint&amp;) const override;
</span><span class="cx">     virtual bool isTextField() const override final { return true; }
</span><span class="cx"> 
</span><del>-    virtual void paint(PaintInfo&amp;, const LayoutPoint&amp;) override;
</del><span class="cx">     virtual void layout() override;
</span><span class="cx"> 
</span><span class="cx">     virtual bool nodeAtPoint(const HitTestRequest&amp;, HitTestResult&amp;, const HitTestLocation&amp; locationInContainer, const LayoutPoint&amp; accumulatedOffset, HitTestAction) override;
</span><span class="lines">@@ -83,7 +80,6 @@
</span><span class="cx"> 
</span><span class="cx">     HTMLElement* innerSpinButtonElement() const;
</span><span class="cx"> 
</span><del>-    bool m_shouldDrawCapsLockIndicator;
</del><span class="cx">     LayoutUnit m_desiredInnerTextLogicalHeight;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTheme.cpp (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTheme.cpp        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/rendering/RenderTheme.cpp        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -250,6 +250,8 @@
</span><span class="cx">     case ImageControlsButtonPart:
</span><span class="cx">         break;
</span><span class="cx"> #endif
</span><ins>+    case CapsLockIndicatorPart:
+        return adjustCapsLockIndicatorStyle(styleResolver, style, e);
</ins><span class="cx">     default:
</span><span class="cx">         break;
</span><span class="cx">     }
</span><span class="lines">@@ -386,6 +388,8 @@
</span><span class="cx">     case ImageControlsButtonPart:
</span><span class="cx">         return paintImageControlsButton(o, paintInfo, integralSnappedRect);
</span><span class="cx"> #endif
</span><ins>+    case CapsLockIndicatorPart:
+        return paintCapsLockIndicator(o, paintInfo, integralSnappedRect);
</ins><span class="cx">     default:
</span><span class="cx">         break;
</span><span class="cx">     }
</span><span class="lines">@@ -960,9 +964,17 @@
</span><span class="cx"> {
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><del>-
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+void RenderTheme::adjustCapsLockIndicatorStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const
+{
+}
+
+bool RenderTheme::paintCapsLockIndicator(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;)
+{
+    return false;
+}
+
</ins><span class="cx"> #if ENABLE(DATALIST_ELEMENT)
</span><span class="cx"> LayoutUnit RenderTheme::sliderTickSnappingThreshold() const
</span><span class="cx"> {
</span><span class="lines">@@ -1076,6 +1088,11 @@
</span><span class="cx">     return inputElement.isSteppable() &amp;&amp; !inputElement.isRangeControl();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool RenderTheme::shouldHaveCapsLockIndicator(HTMLInputElement&amp;) const
+{
+    return false;
+}
+
</ins><span class="cx"> void RenderTheme::adjustMenuListButtonStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTheme.h (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTheme.h        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/rendering/RenderTheme.h        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -188,9 +188,6 @@
</span><span class="cx"> 
</span><span class="cx">     virtual ScrollbarControlSize scrollbarControlSizeForPart(ControlPart) { return RegularScrollbar; }
</span><span class="cx"> 
</span><del>-    // Method for painting the caps lock indicator
-    virtual bool paintCapsLockIndicator(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;) { return 0; };
-
</del><span class="cx">     // Returns the repeat interval of the animation for the progress bar.
</span><span class="cx">     virtual double animationRepeatIntervalForProgressBar(RenderProgress&amp;) const;
</span><span class="cx">     // Returns the duration of the animation for the progress bar.
</span><span class="lines">@@ -232,6 +229,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool shouldShowPlaceholderWhenFocused() const { return false; }
</span><span class="cx">     virtual bool shouldHaveSpinButton(HTMLInputElement&amp;) const;
</span><ins>+    virtual bool shouldHaveCapsLockIndicator(HTMLInputElement&amp;) const;
</ins><span class="cx"> 
</span><span class="cx">     // Functions for &lt;select&gt; elements.
</span><span class="cx">     virtual bool delegatesMenuListRendering() const { return false; }
</span><span class="lines">@@ -314,6 +312,9 @@
</span><span class="cx">     virtual bool paintMeter(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    virtual void adjustCapsLockIndicatorStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const;
+    virtual bool paintCapsLockIndicator(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;);
+
</ins><span class="cx">     virtual void adjustProgressBarStyle(StyleResolver&amp;, RenderStyle&amp;, Element*) const;
</span><span class="cx">     virtual bool paintProgressBar(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;) { return true; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeIOSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeIOS.h (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeIOS.h        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/rendering/RenderThemeIOS.h        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -104,6 +104,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool shouldShowPlaceholderWhenFocused() const override;
</span><span class="cx">     virtual bool shouldHaveSpinButton(HTMLInputElement&amp;) const override;
</span><ins>+    virtual bool shouldHaveCapsLockIndicator(HTMLInputElement&amp;) const override;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO)
</span><span class="cx">     virtual String mediaControlsStyleSheet() override;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeIOS.mm (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeIOS.mm        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/rendering/RenderThemeIOS.mm        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -1079,6 +1079,11 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool RenderThemeIOS::shouldHaveCapsLockIndicator(HTMLInputElement&amp;) const
+{
+    return false;
+}
+
</ins><span class="cx"> static FontWeight fromCTFontWeight(float fontWeight)
</span><span class="cx"> {
</span><span class="cx">     if (fontWeight &lt;= -0.8)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeMach"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeMac.h (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeMac.h        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.h        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -81,8 +81,6 @@
</span><span class="cx">     virtual int popupInternalPaddingBottom(RenderStyle&amp;) const override;
</span><span class="cx">     virtual PopupMenuStyle::PopupMenuSize popupMenuSize(const RenderStyle&amp;, IntRect&amp;) const override;
</span><span class="cx"> 
</span><del>-    virtual bool paintCapsLockIndicator(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;) override;
-
</del><span class="cx">     virtual bool popsMenuByArrowKeys() const override { return true; }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(METER_ELEMENT)
</span><span class="lines">@@ -165,6 +163,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     virtual bool shouldShowPlaceholderWhenFocused() const override;
</span><ins>+    virtual bool shouldHaveCapsLockIndicator(HTMLInputElement&amp;) const override;
</ins><span class="cx"> 
</span><span class="cx">     virtual bool paintSnapshottedPluginOverlay(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeMac.mm (180489 => 180490)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeMac.mm        2015-02-22 20:22:09 UTC (rev 180489)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.mm        2015-02-22 23:33:21 UTC (rev 180490)
</span><span class="lines">@@ -827,17 +827,6 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool RenderThemeMac::paintCapsLockIndicator(const RenderObject&amp;, const PaintInfo&amp; paintInfo, const IntRect&amp; r)
-{
-    if (paintInfo.context-&gt;paintingDisabled())
-        return true;
-
-    LocalCurrentGraphicsContext localContext(paintInfo.context);
-    wkDrawCapsLockIndicator(localContext.cgContext(), r);
-
-    return false;
-}
-
</del><span class="cx"> bool RenderThemeMac::paintTextArea(const RenderObject&amp; o, const PaintInfo&amp; paintInfo, const FloatRect&amp; r)
</span><span class="cx"> {
</span><span class="cx">     LocalCurrentGraphicsContext localContext(paintInfo.context);
</span><span class="lines">@@ -1900,6 +1889,11 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool RenderThemeMac::shouldHaveCapsLockIndicator(HTMLInputElement&amp; element) const
+{
+    return element.isPasswordField();
+}
+
</ins><span class="cx"> NSPopUpButtonCell* RenderThemeMac::popupButton() const
</span><span class="cx"> {
</span><span class="cx">     if (!m_popupButton) {
</span></span></pre>
</div>
</div>

</body>
</html>