Diff
Modified: trunk/Source/WebCore/ChangeLog (129203 => 129204)
--- trunk/Source/WebCore/ChangeLog 2012-09-21 09:16:38 UTC (rev 129203)
+++ trunk/Source/WebCore/ChangeLog 2012-09-21 09:22:51 UTC (rev 129204)
@@ -1,3 +1,34 @@
+2012-09-21 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r129086.
+ http://trac.webkit.org/changeset/129086
+ https://bugs.webkit.org/show_bug.cgi?id=97312
+
+ Broke input rendering (Requested by shinyak on #webkit).
+
+ * html/BaseButtonInputType.cpp:
+ (WebCore):
+ * html/BaseButtonInputType.h:
+ (WebCore::BaseButtonInputType::BaseButtonInputType):
+ (BaseButtonInputType):
+ * html/FileInputType.cpp:
+ (WebCore::UploadButtonElement::create):
+ (WebCore::UploadButtonElement::createForMultiple):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::parseAttribute):
+ * html/InputType.cpp:
+ * html/InputType.h:
+ (InputType):
+ * rendering/RenderButton.cpp:
+ (WebCore::RenderButton::RenderButton):
+ (WebCore::RenderButton::styleDidChange):
+ (WebCore::RenderButton::updateFromElement):
+ (WebCore):
+ (WebCore::RenderButton::setText):
+ (WebCore::RenderButton::text):
+ * rendering/RenderButton.h:
+ (RenderButton):
+
2012-09-21 Kihong Kwon <[email protected]>
Remove useless class prototypes from Vibration.h
Modified: trunk/Source/WebCore/html/BaseButtonInputType.cpp (129203 => 129204)
--- trunk/Source/WebCore/html/BaseButtonInputType.cpp 2012-09-21 09:16:38 UTC (rev 129203)
+++ trunk/Source/WebCore/html/BaseButtonInputType.cpp 2012-09-21 09:22:51 UTC (rev 129204)
@@ -36,62 +36,11 @@
#include "HTMLNames.h"
#include "KeyboardEvent.h"
#include "RenderButton.h"
-#include "RenderTextFragment.h"
-#include "ShadowRoot.h"
-#include "Text.h"
namespace WebCore {
using namespace HTMLNames;
-class TextForButtonInputType : public Text {
-public:
- static PassRefPtr<TextForButtonInputType> create(Document*, const String&);
-
-private:
- TextForButtonInputType(Document*, const String&);
- virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) OVERRIDE;
-};
-
-PassRefPtr<TextForButtonInputType> TextForButtonInputType::create(Document* document, const String& data)
-{
- return adoptRef(new TextForButtonInputType(document, data));
-}
-
-TextForButtonInputType::TextForButtonInputType(Document* document, const String& data)
- : Text(document, data)
-{
-}
-
-RenderObject* TextForButtonInputType::createRenderer(RenderArena* arena, RenderStyle*)
-{
- return new (arena) RenderTextFragment(document(), dataImpl());
-}
-
-BaseButtonInputType::BaseButtonInputType(HTMLInputElement* element)
- : BaseClickableWithKeyInputType(element)
-{
-}
-
-void BaseButtonInputType::createShadowSubtree()
-{
- ASSERT(element()->userAgentShadowRoot());
-
- RefPtr<TextForButtonInputType> text = TextForButtonInputType::create(element()->document(), defaultValue());
- element()->userAgentShadowRoot()->appendChild(text);
-}
-
-void BaseButtonInputType::destroyShadowSubtree()
-{
- InputType::destroyShadowSubtree();
-}
-
-void BaseButtonInputType::valueAttributeChanged()
-{
- String value = element()->valueWithDefault();
- toText(element()->userAgentShadowRoot()->firstChild())->setData(value, ASSERT_NO_EXCEPTION);
-}
-
bool BaseButtonInputType::shouldSaveAndRestoreFormControlState() const
{
return false;
Modified: trunk/Source/WebCore/html/BaseButtonInputType.h (129203 => 129204)
--- trunk/Source/WebCore/html/BaseButtonInputType.h 2012-09-21 09:16:38 UTC (rev 129203)
+++ trunk/Source/WebCore/html/BaseButtonInputType.h 2012-09-21 09:22:51 UTC (rev 129204)
@@ -38,14 +38,9 @@
// Base of button, file, image, reset, and submit types.
class BaseButtonInputType : public BaseClickableWithKeyInputType {
protected:
- BaseButtonInputType(HTMLInputElement*);
+ BaseButtonInputType(HTMLInputElement* element) : BaseClickableWithKeyInputType(element) { }
private:
- virtual void createShadowSubtree() OVERRIDE;
- virtual void destroyShadowSubtree() OVERRIDE;
-
- virtual void valueAttributeChanged() OVERRIDE;
-
virtual bool shouldSaveAndRestoreFormControlState() const OVERRIDE;
virtual bool appendFormData(FormDataList&, bool) const OVERRIDE;
virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) const OVERRIDE;
Modified: trunk/Source/WebCore/html/FileInputType.cpp (129203 => 129204)
--- trunk/Source/WebCore/html/FileInputType.cpp 2012-09-21 09:16:38 UTC (rev 129203)
+++ trunk/Source/WebCore/html/FileInputType.cpp 2012-09-21 09:22:51 UTC (rev 129204)
@@ -62,7 +62,6 @@
PassRefPtr<UploadButtonElement> UploadButtonElement::create(Document* document)
{
RefPtr<UploadButtonElement> button = adoptRef(new UploadButtonElement(document));
- button->createShadowSubtree();
button->setType("button");
button->setValue(fileButtonChooseFileLabel());
return button.release();
@@ -71,7 +70,6 @@
PassRefPtr<UploadButtonElement> UploadButtonElement::createForMultiple(Document* document)
{
RefPtr<UploadButtonElement> button = adoptRef(new UploadButtonElement(document));
- button->createShadowSubtree();
button->setType("button");
button->setValue(fileButtonChooseMultipleFilesLabel());
return button.release();
Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (129203 => 129204)
--- trunk/Source/WebCore/html/HTMLInputElement.cpp 2012-09-21 09:16:38 UTC (rev 129203)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp 2012-09-21 09:22:51 UTC (rev 129204)
@@ -677,7 +677,6 @@
updatePlaceholderVisibility(false);
setNeedsStyleRecalc();
}
- m_inputType->valueAttributeChanged();
setFormControlValueMatchesRenderer(false);
setNeedsValidityCheck();
m_valueAttributeWasUpdatedAfterParsing = !m_parsingInProgress;
Modified: trunk/Source/WebCore/html/InputType.cpp (129203 => 129204)
--- trunk/Source/WebCore/html/InputType.cpp 2012-09-21 09:16:38 UTC (rev 129203)
+++ trunk/Source/WebCore/html/InputType.cpp 2012-09-21 09:22:51 UTC (rev 129204)
@@ -889,10 +889,6 @@
{
}
-void InputType::valueAttributeChanged()
-{
-}
-
void InputType::multipleAttributeChanged()
{
}
Modified: trunk/Source/WebCore/html/InputType.h (129203 => 129204)
--- trunk/Source/WebCore/html/InputType.h 2012-09-21 09:16:38 UTC (rev 129203)
+++ trunk/Source/WebCore/html/InputType.h 2012-09-21 09:22:51 UTC (rev 129204)
@@ -278,7 +278,6 @@
virtual String fixedPlaceholder();
virtual void updateInnerTextValue();
virtual void updatePlaceholderText();
- virtual void valueAttributeChanged();
virtual void multipleAttributeChanged();
virtual void disabledAttributeChanged();
virtual void readonlyAttributeChanged();
Modified: trunk/Source/WebCore/rendering/RenderButton.cpp (129203 => 129204)
--- trunk/Source/WebCore/rendering/RenderButton.cpp 2012-09-21 09:16:38 UTC (rev 129203)
+++ trunk/Source/WebCore/rendering/RenderButton.cpp 2012-09-21 09:22:51 UTC (rev 129204)
@@ -35,6 +35,7 @@
RenderButton::RenderButton(Node* node)
: RenderDeprecatedFlexibleBox(node)
+ , m_buttonText(0)
, m_inner(0)
, m_default(false)
{
@@ -82,6 +83,8 @@
{
RenderBlock::styleDidChange(diff, oldStyle);
+ if (m_buttonText)
+ m_buttonText->setStyle(style());
if (m_inner) // RenderBlock handled updating the anonymous block's style.
setupInnerStyle(m_inner->style());
@@ -105,6 +108,39 @@
innerStyle->setBoxOrient(style()->boxOrient());
}
+void RenderButton::updateFromElement()
+{
+ // If we're an input element, we may need to change our button text.
+ if (node()->hasTagName(inputTag)) {
+ HTMLInputElement* input = static_cast<HTMLInputElement*>(node());
+ String value = input->valueWithDefault();
+ setText(value);
+ }
+}
+
+void RenderButton::setText(const String& str)
+{
+ if (str.isEmpty()) {
+ if (m_buttonText) {
+ m_buttonText->destroy();
+ m_buttonText = 0;
+ }
+ } else {
+ if (m_buttonText)
+ m_buttonText->setText(str.impl());
+ else {
+ m_buttonText = new (renderArena()) RenderTextFragment(document(), str.impl());
+ m_buttonText->setStyle(style());
+ addChild(m_buttonText);
+ }
+ }
+}
+
+String RenderButton::text() const
+{
+ return m_buttonText ? m_buttonText->text() : 0;
+}
+
bool RenderButton::canHaveGeneratedChildren() const
{
// Input elements can't have generated children, but button elements can. We'll
Modified: trunk/Source/WebCore/rendering/RenderButton.h (129203 => 129204)
--- trunk/Source/WebCore/rendering/RenderButton.h 2012-09-21 09:16:38 UTC (rev 129203)
+++ trunk/Source/WebCore/rendering/RenderButton.h 2012-09-21 09:22:51 UTC (rev 129204)
@@ -48,6 +48,7 @@
virtual bool createsAnonymousWrapper() const { return true; }
void setupInnerStyle(RenderStyle*);
+ virtual void updateFromElement();
virtual void updateBeforeAfterContent(PseudoId);
@@ -55,6 +56,9 @@
virtual bool hasControlClip() const { return true; }
virtual LayoutRect controlClipRect(const LayoutPoint&) const;
+ void setText(const String&);
+ String text() const;
+
private:
virtual void styleWillChange(StyleDifference, const RenderStyle* newStyle);
virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle);
@@ -65,7 +69,9 @@
void timerFired(Timer<RenderButton>*);
+ RenderTextFragment* m_buttonText;
RenderBlock* m_inner;
+
OwnPtr<Timer<RenderButton> > m_timer;
bool m_default;
};