Diff
Copied: branches/chromium/1132/LayoutTests/fast/forms/input-first-letter-edit-expected.html (from rev 118711, trunk/LayoutTests/fast/forms/input-first-letter-edit-expected.html) (0 => 119778)
--- branches/chromium/1132/LayoutTests/fast/forms/input-first-letter-edit-expected.html (rev 0)
+++ branches/chromium/1132/LayoutTests/fast/forms/input-first-letter-edit-expected.html 2012-06-08 01:21:47 UTC (rev 119778)
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<head>
+</head>
+<body>
+ <input type="text" id="target" value="Hello" autofocus="autofocus" />
+</body>
+</html>
Copied: branches/chromium/1132/LayoutTests/fast/forms/input-first-letter-edit.html (from rev 118711, trunk/LayoutTests/fast/forms/input-first-letter-edit.html) (0 => 119778)
--- branches/chromium/1132/LayoutTests/fast/forms/input-first-letter-edit.html (rev 0)
+++ branches/chromium/1132/LayoutTests/fast/forms/input-first-letter-edit.html 2012-06-08 01:21:47 UTC (rev 119778)
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+input:first-letter {
+ color: blue;
+}
+</style>
+<script>
+if (window.layoutTestController)
+ layoutTestController.waitUntilDone();
+function test()
+{
+ var target = document.getElementById("target");
+ target.focus();
+ if (window.eventSender) {
+ eventSender.keyDown("H");
+ eventSender.keyDown("e");
+ eventSender.keyDown("l");
+ eventSender.keyDown("l");
+ eventSender.keyDown("o");
+ document.execCommand("selectAll"); // Does selectAll for aligning the @autofocus attribute on the expectation.
+ layoutTestController.notifyDone();
+ }
+}
+</script>
+</head>
+<body _onload_="test()">
+ <input type="text" id="target" />
+</body>
+</html>
Modified: branches/chromium/1132/Source/WebCore/rendering/RenderBlock.cpp (119777 => 119778)
--- branches/chromium/1132/Source/WebCore/rendering/RenderBlock.cpp 2012-06-08 00:48:40 UTC (rev 119777)
+++ branches/chromium/1132/Source/WebCore/rendering/RenderBlock.cpp 2012-06-08 01:21:47 UTC (rev 119778)
@@ -107,18 +107,6 @@
static int gDelayUpdateScrollInfo = 0;
static DelayedUpdateScrollInfoSet* gDelayedUpdateScrollInfoSet = 0;
-// We only create "generated" renderers like one for first-letter and
-// before/after pseudo elements if:
-// - the firstLetterBlock can have children in the DOM and
-// - the block doesn't have any special assumption on its text children.
-// This correctly prevents form controls from having such renderers.
-static inline bool canHaveGeneratedChildren(RenderObject* renderer)
-{
- return (renderer->canHaveChildren()
- && (!renderer->isDeprecatedFlexibleBox()
- || static_cast<RenderDeprecatedFlexibleBox*>(renderer)->canHaveGeneratedChildren()));
-}
-
bool RenderBlock::s_canPropagateFloatIntoSibling = false;
// This class helps dispatching the 'overflow' event on layout change. overflow can be set on RenderBoxes, yet the existing code
@@ -339,7 +327,7 @@
m_lineHeight = -1;
// Update pseudos for :before and :after now.
- if (!isAnonymous() && document()->usesBeforeAfterRules() && canHaveGeneratedChildren(this)) {
+ if (!isAnonymous() && document()->usesBeforeAfterRules() && canHaveGeneratedChildren()) {
updateBeforeAfterContent(BEFORE);
updateBeforeAfterContent(AFTER);
}
@@ -5992,7 +5980,7 @@
RenderObject* firstLetterBlock = start;
while (true) {
bool canHaveFirstLetterRenderer = firstLetterBlock->style()->hasPseudoStyle(FIRST_LETTER)
- && canHaveGeneratedChildren(firstLetterBlock);
+ && firstLetterBlock->canHaveGeneratedChildren();
if (canHaveFirstLetterRenderer)
return firstLetterBlock;
@@ -6151,7 +6139,7 @@
currChild = currChild->nextSibling();
} else if (currChild->isReplaced() || currChild->isRenderButton() || currChild->isMenuList())
break;
- else if (currChild->style()->hasPseudoStyle(FIRST_LETTER) && canHaveGeneratedChildren(currChild)) {
+ else if (currChild->style()->hasPseudoStyle(FIRST_LETTER) && currChild->canHaveGeneratedChildren()) {
// We found a lower-level node with first-letter, which supersedes the higher-level style
firstLetterBlock = currChild;
currChild = currChild->firstChild();
Modified: branches/chromium/1132/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.h (119777 => 119778)
--- branches/chromium/1132/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.h 2012-06-08 00:48:40 UTC (rev 119777)
+++ branches/chromium/1132/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.h 2012-06-08 01:21:47 UTC (rev 119778)
@@ -51,7 +51,6 @@
virtual bool isDeprecatedFlexibleBox() const { return true; }
virtual bool isFlexingChildren() const { return m_flexingChildren; }
virtual bool isStretchingChildren() const { return m_stretchingChildren; }
- virtual bool canHaveGeneratedChildren() const { return true; }
void placeChild(RenderBox* child, const LayoutPoint& location);
Modified: branches/chromium/1132/Source/WebCore/rendering/RenderObject.cpp (119777 => 119778)
--- branches/chromium/1132/Source/WebCore/rendering/RenderObject.cpp 2012-06-08 00:48:40 UTC (rev 119777)
+++ branches/chromium/1132/Source/WebCore/rendering/RenderObject.cpp 2012-06-08 01:21:47 UTC (rev 119778)
@@ -2875,6 +2875,15 @@
return containingBlock ? !containingBlock->needsLayout() : true;
}
+// We only create "generated" child renderers like one for first-letter if:
+// - the firstLetterBlock can have children in the DOM and
+// - the block doesn't have any special assumption on its text children.
+// This correctly prevents form controls from having such renderers.
+bool RenderObject::canHaveGeneratedChildren() const
+{
+ return canHaveChildren();
+}
+
#if ENABLE(SVG)
RenderSVGResourceContainer* RenderObject::toRenderSVGResourceContainer()
Modified: branches/chromium/1132/Source/WebCore/rendering/RenderObject.h (119777 => 119778)
--- branches/chromium/1132/Source/WebCore/rendering/RenderObject.h 2012-06-08 00:48:40 UTC (rev 119777)
+++ branches/chromium/1132/Source/WebCore/rendering/RenderObject.h 2012-06-08 01:21:47 UTC (rev 119778)
@@ -241,6 +241,7 @@
// RenderObject tree manipulation
//////////////////////////////////////////
virtual bool canHaveChildren() const { return virtualChildren(); }
+ virtual bool canHaveGeneratedChildren() const;
virtual bool isChildAllowed(RenderObject*, RenderStyle*) const { return true; }
virtual void addChild(RenderObject* newChild, RenderObject* beforeChild = 0);
virtual void addChildIgnoringContinuation(RenderObject* newChild, RenderObject* beforeChild = 0) { return addChild(newChild, beforeChild); }
Modified: branches/chromium/1132/Source/WebCore/rendering/RenderTextControl.h (119777 => 119778)
--- branches/chromium/1132/Source/WebCore/rendering/RenderTextControl.h 2012-06-08 00:48:40 UTC (rev 119777)
+++ branches/chromium/1132/Source/WebCore/rendering/RenderTextControl.h 2012-06-08 01:21:47 UTC (rev 119778)
@@ -71,6 +71,7 @@
virtual void computePreferredLogicalWidths();
virtual void removeLeftoverAnonymousBlock(RenderBlock*) { }
virtual bool avoidsFloats() const { return true; }
+ virtual bool canHaveGeneratedChildren() const OVERRIDE { return false; }
virtual void addFocusRingRects(Vector<IntRect>&, const LayoutPoint&);