Title: [129739] trunk/Source/WebCore
Revision
129739
Author
yo...@chromium.org
Date
2012-09-27 01:22:03 -0700 (Thu, 27 Sep 2012)

Log Message

[Forms] BaseMultipleFieldsDateAndTimeInputType class should inherit DateTimeEditElement::EditControlOwner rather than containing
https://bugs.webkit.org/show_bug.cgi?id=97756

Reviewed by Kent Tamura.

This patch changes class hierarchy of BaseMultipleFieldsDateAndTimeInputType
to inherit from DateTimeEditElement::EditControlOwner rather than
containing an instance of DateTimeEditElement::EditControlOwner for
saving memory, although one pointer, and one memory fetch on using
HTMLInputElement.

Note: This patch affects ports which enable both ENABLE_INPUT_TYPE_TIME and
ENABLE_INPUT_MULTIPLE_FIELDS_UI.

No new tests. This patch doesn't change behavior.

* html/BaseMultipleFieldsDateAndTimeInputType.cpp: DateTimeEditElement::EditControlOwner::DateTimeformatDateTimeFieldsState was removed. We no longer need to redirection. Each date/time input type classe implements it.
(WebCore::BaseMultipleFieldsDateAndTimeInputType::didBlurFromControl): Moved from DateTimeEditControlOwnerImpl and removed reference of m_dateTimeInputType.
(WebCore::BaseMultipleFieldsDateAndTimeInputType::didFocusOnControl): ditto.
(WebCore::BaseMultipleFieldsDateAndTimeInputType::editControlValueChanged): ditto.
(WebCore::BaseMultipleFieldsDateAndTimeInputType::isEditControlOwnerDisabled): ditto.
(WebCore::BaseMultipleFieldsDateAndTimeInputType::isEditControlOwnerReadOnly): ditto.
(WebCore::BaseMultipleFieldsDateAndTimeInputType::BaseMultipleFieldsDateAndTimeInputType): ditto.
(WebCore::BaseMultipleFieldsDateAndTimeInputType::createShadowSubtree): Changed to pass BaseMultipleFieldsDateAndTimeInputType instead of DateTimeEditControlOwnerImpl.
* html/BaseMultipleFieldsDateAndTimeInputType.h: Changed base class to have DateTImeEditElement::EditControlOwner.
(BaseMultipleFieldsDateAndTimeInputType): Removed DateTimeEditControlOwnerImpl class and member variable m_dateTimeEditControlOwner.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (129738 => 129739)


--- trunk/Source/WebCore/ChangeLog	2012-09-27 08:17:24 UTC (rev 129738)
+++ trunk/Source/WebCore/ChangeLog	2012-09-27 08:22:03 UTC (rev 129739)
@@ -1,3 +1,32 @@
+2012-09-27  Yoshifumi Inoue  <yo...@chromium.org>
+
+        [Forms] BaseMultipleFieldsDateAndTimeInputType class should inherit DateTimeEditElement::EditControlOwner rather than containing
+        https://bugs.webkit.org/show_bug.cgi?id=97756
+
+        Reviewed by Kent Tamura.
+
+        This patch changes class hierarchy of BaseMultipleFieldsDateAndTimeInputType
+        to inherit from DateTimeEditElement::EditControlOwner rather than
+        containing an instance of DateTimeEditElement::EditControlOwner for
+        saving memory, although one pointer, and one memory fetch on using
+        HTMLInputElement.
+
+        Note: This patch affects ports which enable both ENABLE_INPUT_TYPE_TIME and
+        ENABLE_INPUT_MULTIPLE_FIELDS_UI.
+
+        No new tests. This patch doesn't change behavior.
+
+        * html/BaseMultipleFieldsDateAndTimeInputType.cpp: DateTimeEditElement::EditControlOwner::DateTimeformatDateTimeFieldsState was removed. We no longer need to redirection. Each date/time input type classe implements it.
+        (WebCore::BaseMultipleFieldsDateAndTimeInputType::didBlurFromControl): Moved from DateTimeEditControlOwnerImpl and removed reference of m_dateTimeInputType.
+        (WebCore::BaseMultipleFieldsDateAndTimeInputType::didFocusOnControl): ditto.
+        (WebCore::BaseMultipleFieldsDateAndTimeInputType::editControlValueChanged): ditto.
+        (WebCore::BaseMultipleFieldsDateAndTimeInputType::isEditControlOwnerDisabled): ditto.
+        (WebCore::BaseMultipleFieldsDateAndTimeInputType::isEditControlOwnerReadOnly): ditto.
+        (WebCore::BaseMultipleFieldsDateAndTimeInputType::BaseMultipleFieldsDateAndTimeInputType): ditto.
+        (WebCore::BaseMultipleFieldsDateAndTimeInputType::createShadowSubtree): Changed to pass BaseMultipleFieldsDateAndTimeInputType instead of DateTimeEditControlOwnerImpl.
+        * html/BaseMultipleFieldsDateAndTimeInputType.h: Changed base class to have DateTImeEditElement::EditControlOwner.
+        (BaseMultipleFieldsDateAndTimeInputType): Removed DateTimeEditControlOwnerImpl class and member variable m_dateTimeEditControlOwner.
+
 2012-09-27  Keishi Hattori  <kei...@webkit.org>
 
         SuggestionPicker should support rtl

Modified: trunk/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.cpp (129738 => 129739)


--- trunk/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.cpp	2012-09-27 08:17:24 UTC (rev 129738)
+++ trunk/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.cpp	2012-09-27 08:22:03 UTC (rev 129739)
@@ -43,67 +43,52 @@
 
 namespace WebCore {
 
-BaseMultipleFieldsDateAndTimeInputType::DateTimeEditControlOwnerImpl::DateTimeEditControlOwnerImpl(BaseMultipleFieldsDateAndTimeInputType& dateAndTimeInputType)
-    : m_dateAndTimeInputType(dateAndTimeInputType)
+void BaseMultipleFieldsDateAndTimeInputType::didBlurFromControl()
 {
-}
-
-BaseMultipleFieldsDateAndTimeInputType::DateTimeEditControlOwnerImpl::~DateTimeEditControlOwnerImpl()
-{
-}
-
-void BaseMultipleFieldsDateAndTimeInputType::DateTimeEditControlOwnerImpl::didBlurFromControl()
-{
     // We don't need to call blur(). This function is called when control
     // lost focus.
 
     // Remove focus ring by CSS "focus" pseudo class.
-    m_dateAndTimeInputType.element()->setFocus(false);
+    element()->setFocus(false);
 }
 
-void BaseMultipleFieldsDateAndTimeInputType::DateTimeEditControlOwnerImpl::didFocusOnControl()
+void BaseMultipleFieldsDateAndTimeInputType::didFocusOnControl()
 {
     // We don't need to call focus(). This function is called when control
     // got focus.
 
     // Add focus ring by CSS "focus" pseudo class.
-    m_dateAndTimeInputType.element()->setFocus(true);
+    element()->setFocus(true);
 }
 
-void BaseMultipleFieldsDateAndTimeInputType::DateTimeEditControlOwnerImpl::editControlValueChanged()
+void BaseMultipleFieldsDateAndTimeInputType::editControlValueChanged()
 {
-    RefPtr<HTMLInputElement> input(m_dateAndTimeInputType.element());
-    input->setValueInternal(m_dateAndTimeInputType.m_dateTimeEditElement->value(), DispatchNoEvent);
+    RefPtr<HTMLInputElement> input(element());
+    input->setValueInternal(m_dateTimeEditElement->value(), DispatchNoEvent);
     input->setNeedsStyleRecalc();
     input->dispatchFormControlInputEvent();
     input->dispatchFormControlChangeEvent();
     input->notifyFormStateChanged();
 }
 
-String BaseMultipleFieldsDateAndTimeInputType::DateTimeEditControlOwnerImpl::formatDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState) const
-{
-    return m_dateAndTimeInputType.formatDateTimeFieldsState(dateTimeFieldsState);
-}
-
 bool BaseMultipleFieldsDateAndTimeInputType::hasCustomFocusLogic() const
 {
     return false;
 }
 
-bool BaseMultipleFieldsDateAndTimeInputType::DateTimeEditControlOwnerImpl::isEditControlOwnerDisabled() const
+bool BaseMultipleFieldsDateAndTimeInputType::isEditControlOwnerDisabled() const
 {
-    return m_dateAndTimeInputType.element()->readOnly();
+    return element()->readOnly();
 }
 
-bool BaseMultipleFieldsDateAndTimeInputType::DateTimeEditControlOwnerImpl::isEditControlOwnerReadOnly() const
+bool BaseMultipleFieldsDateAndTimeInputType::isEditControlOwnerReadOnly() const
 {
-    return m_dateAndTimeInputType.element()->disabled();
+    return element()->disabled();
 }
 
 BaseMultipleFieldsDateAndTimeInputType::BaseMultipleFieldsDateAndTimeInputType(HTMLInputElement* element)
     : BaseDateAndTimeInputType(element)
     , m_dateTimeEditElement(0)
-    , m_dateTimeEditControlOwnerImpl(*this)
 {
 }
 
@@ -128,7 +113,7 @@
 {
     ASSERT(element()->shadow());
 
-    RefPtr<DateTimeEditElement> dateTimeEditElement(DateTimeEditElement::create(element()->document(), m_dateTimeEditControlOwnerImpl));
+    RefPtr<DateTimeEditElement> dateTimeEditElement(DateTimeEditElement::create(element()->document(), *this));
     m_dateTimeEditElement = dateTimeEditElement.get();
     element()->userAgentShadowRoot()->appendChild(m_dateTimeEditElement);
     updateInnerTextValue();

Modified: trunk/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.h (129738 => 129739)


--- trunk/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.h	2012-09-27 08:17:24 UTC (rev 129738)
+++ trunk/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.h	2012-09-27 08:22:03 UTC (rev 129739)
@@ -38,37 +38,20 @@
 
 namespace WebCore {
 
-class BaseMultipleFieldsDateAndTimeInputType : public BaseDateAndTimeInputType {
+class BaseMultipleFieldsDateAndTimeInputType : public BaseDateAndTimeInputType, protected DateTimeEditElement::EditControlOwner {
 protected:
     BaseMultipleFieldsDateAndTimeInputType(HTMLInputElement*);
     virtual ~BaseMultipleFieldsDateAndTimeInputType();
-    virtual String formatDateTimeFieldsState(const DateTimeFieldsState&) const = 0;
     virtual void setupLayoutParameters(DateTimeEditElement::LayoutParameters&, const DateComponents&) const = 0;
 
 private:
-    // FIXME: DateTimeEditControlOwnerImpl should be removed by moving
-    // DateTimeEditElement::EditControlOwner into base class list of
-    // BaseMultipleFieldsDateAndTimeInputType.
-    class DateTimeEditControlOwnerImpl : public DateTimeEditElement::EditControlOwner {
-        WTF_MAKE_NONCOPYABLE(DateTimeEditControlOwnerImpl);
+    // DateTimeEditElement::EditControlOwner functions
+    virtual void didBlurFromControl() OVERRIDE FINAL;
+    virtual void didFocusOnControl() OVERRIDE FINAL;
+    virtual void editControlValueChanged() OVERRIDE FINAL;
+    virtual bool isEditControlOwnerDisabled() const OVERRIDE FINAL;
+    virtual bool isEditControlOwnerReadOnly() const OVERRIDE FINAL;
 
-    public:
-        DateTimeEditControlOwnerImpl(BaseMultipleFieldsDateAndTimeInputType&);
-        virtual ~DateTimeEditControlOwnerImpl();
-
-    private:
-        virtual void didBlurFromControl() OVERRIDE FINAL;
-        virtual void didFocusOnControl() OVERRIDE FINAL;
-        virtual void editControlValueChanged() OVERRIDE FINAL;
-        virtual String formatDateTimeFieldsState(const DateTimeFieldsState&) const OVERRIDE FINAL;
-        virtual bool isEditControlOwnerDisabled() const OVERRIDE FINAL;
-        virtual bool isEditControlOwnerReadOnly() const OVERRIDE FINAL;
-
-        BaseMultipleFieldsDateAndTimeInputType& m_dateAndTimeInputType;
-    };
-
-    friend class DateTimeEditControlOwnerImpl;
-
     // InputType functions
     virtual void blur() OVERRIDE FINAL;
     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) const OVERRIDE FINAL;
@@ -92,7 +75,6 @@
     virtual void updateInnerTextValue() OVERRIDE FINAL;
 
     DateTimeEditElement* m_dateTimeEditElement;
-    DateTimeEditControlOwnerImpl m_dateTimeEditControlOwnerImpl;
 };
 
 } // namespace WebCore
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to