Title: [129204] trunk/Source/WebCore
Revision
129204
Author
[email protected]
Date
2012-09-21 02:22:51 -0700 (Fri, 21 Sep 2012)

Log Message

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).

Patch by Sheriff Bot <[email protected]> on 2012-09-21

* 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):

Modified Paths

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;
 };
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to