Diff
Modified: trunk/Source/WebCore/ChangeLog (90982 => 90983)
--- trunk/Source/WebCore/ChangeLog 2011-07-14 06:27:57 UTC (rev 90982)
+++ trunk/Source/WebCore/ChangeLog 2011-07-14 07:08:42 UTC (rev 90983)
@@ -1,3 +1,30 @@
+2011-07-13 Ryosuke Niwa <[email protected]>
+
+ Move forwardEvent from RenderTextControl to HTMLTextFormControlElement
+ https://bugs.webkit.org/show_bug.cgi?id=64475
+
+ Reviewed by Kent Tamura.
+
+ Moved forwardEvent from RenderTextControl, RenderTextControlSingleLine, and RenderTextControlMultiLine
+ to HTMLTextFormControlElement, HTMLInputElement, and HTMLTextAreaElement.
+
+ This removes the last dependency on Event.h and EventNames.h in the cpp files for the above render
+ objects classes.
+
+ * html/HTMLTextAreaElement.cpp:
+ (WebCore::HTMLTextAreaElement::defaultEventHandler):
+ * html/HTMLTextFormControlElement.cpp:
+ (WebCore::HTMLTextFormControlElement::forwardEvent):
+ * html/HTMLTextFormControlElement.h:
+ * html/TextFieldInputType.cpp:
+ (WebCore::TextFieldInputType::forwardEvent):
+ * rendering/RenderTextControl.cpp:
+ * rendering/RenderTextControl.h:
+ * rendering/RenderTextControlMultiLine.cpp:
+ * rendering/RenderTextControlMultiLine.h:
+ * rendering/RenderTextControlSingleLine.cpp:
+ * rendering/RenderTextControlSingleLine.h:
+
2011-07-13 Ilya Tikhonovsky <[email protected]>
Web Inspector: if you rename an element into the INPUT element the browser will crash.
Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.cpp (90982 => 90983)
--- trunk/Source/WebCore/html/HTMLTextAreaElement.cpp 2011-07-14 06:27:57 UTC (rev 90982)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.cpp 2011-07-14 07:08:42 UTC (rev 90983)
@@ -235,7 +235,7 @@
void HTMLTextAreaElement::defaultEventHandler(Event* event)
{
if (renderer() && (event->isMouseEvent() || event->isDragEvent() || event->isWheelEvent() || event->type() == eventNames().blurEvent))
- toRenderTextControlMultiLine(renderer())->forwardEvent(event);
+ forwardEvent(event);
else if (renderer() && event->isBeforeTextInsertedEvent())
handleBeforeTextInsertedEvent(static_cast<BeforeTextInsertedEvent*>(event));
Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp (90982 => 90983)
--- trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp 2011-07-14 06:27:57 UTC (rev 90982)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp 2011-07-14 07:08:42 UTC (rev 90983)
@@ -89,6 +89,13 @@
HTMLFormControlElementWithState::defaultEventHandler(event);
}
+void HTMLTextFormControlElement::forwardEvent(Event* event)
+{
+ if (event->type() == eventNames().blurEvent || event->type() == eventNames().focusEvent)
+ return;
+ innerTextElement()->defaultEventHandler(event);
+}
+
String HTMLTextFormControlElement::strippedPlaceholder() const
{
// According to the HTML5 specification, we need to remove CR and LF from
Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.h (90982 => 90983)
--- trunk/Source/WebCore/html/HTMLTextFormControlElement.h 2011-07-14 06:27:57 UTC (rev 90982)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.h 2011-07-14 07:08:42 UTC (rev 90983)
@@ -39,6 +39,8 @@
virtual ~HTMLTextFormControlElement();
+ void forwardEvent(Event*);
+
virtual void insertedIntoDocument();
// The derived class should return true if placeholder processing is needed.
@@ -74,7 +76,6 @@
protected:
HTMLTextFormControlElement(const QualifiedName&, Document*, HTMLFormElement*);
-
void updatePlaceholderVisibility(bool);
virtual void updatePlaceholderText() = 0;
Modified: trunk/Source/WebCore/html/TextFieldInputType.cpp (90982 => 90983)
--- trunk/Source/WebCore/html/TextFieldInputType.cpp 2011-07-14 06:27:57 UTC (rev 90982)
+++ trunk/Source/WebCore/html/TextFieldInputType.cpp 2011-07-14 07:08:42 UTC (rev 90983)
@@ -37,6 +37,7 @@
#include "HTMLInputElement.h"
#include "KeyboardEvent.h"
#include "Page.h"
+#include "RenderLayer.h"
#include "RenderTextControlSingleLine.h"
#include "RenderTheme.h"
#include "ShadowRoot.h"
@@ -115,8 +116,20 @@
void TextFieldInputType::forwardEvent(Event* event)
{
- if (element()->renderer() && (event->isMouseEvent() || event->isDragEvent() || event->isWheelEvent() || event->type() == eventNames().blurEvent || event->type() == eventNames().focusEvent))
- toRenderTextControlSingleLine(element()->renderer())->forwardEvent(event);
+ if (element()->renderer() && (event->isMouseEvent() || event->isDragEvent() || event->isWheelEvent() || event->type() == eventNames().blurEvent || event->type() == eventNames().focusEvent)) {
+ RenderTextControlSingleLine* renderTextControl = toRenderTextControlSingleLine(element()->renderer());
+ if (event->type() == eventNames().blurEvent) {
+ if (RenderBox* innerTextRenderer = innerTextElement()->renderBox()) {
+ if (RenderLayer* innerLayer = innerTextRenderer->layer())
+ innerLayer->scrollToOffset(!renderTextControl->style()->isLeftToRightDirection() ? innerLayer->scrollWidth() : 0, 0, RenderLayer::ScrollOffsetClamped);
+ }
+
+ renderTextControl->capsLockStateMayHaveChanged();
+ } else if (event->type() == eventNames().focusEvent)
+ renderTextControl->capsLockStateMayHaveChanged();
+
+ element()->forwardEvent(event);
+ }
}
bool TextFieldInputType::shouldSubmitImplicitly(Event* event)
Modified: trunk/Source/WebCore/rendering/RenderTextControl.cpp (90982 => 90983)
--- trunk/Source/WebCore/rendering/RenderTextControl.cpp 2011-07-14 06:27:57 UTC (rev 90982)
+++ trunk/Source/WebCore/rendering/RenderTextControl.cpp 2011-07-14 07:08:42 UTC (rev 90983)
@@ -24,10 +24,7 @@
#include "AXObjectCache.h"
#include "Editor.h"
-#include "Event.h"
-#include "EventNames.h"
#include "Frame.h"
-#include "FrameSelection.h"
#include "HTMLBRElement.h"
#include "HTMLInputElement.h"
#include "HTMLNames.h"
@@ -318,13 +315,6 @@
result.setLocalPoint(pointInContainer - toSize(adjustedLocation + innerText->renderBox()->location()));
}
-void RenderTextControl::forwardEvent(Event* event)
-{
- if (event->type() == eventNames().blurEvent || event->type() == eventNames().focusEvent)
- return;
- innerTextElement()->defaultEventHandler(event);
-}
-
static const char* fontFamiliesWithInvalidCharWidth[] = {
"American Typewriter",
"Arial Hebrew",
Modified: trunk/Source/WebCore/rendering/RenderTextControl.h (90982 => 90983)
--- trunk/Source/WebCore/rendering/RenderTextControl.h 2011-07-14 06:27:57 UTC (rev 90982)
+++ trunk/Source/WebCore/rendering/RenderTextControl.h 2011-07-14 07:08:42 UTC (rev 90983)
@@ -57,7 +57,6 @@
virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle);
void hitInnerTextElement(HitTestResult&, const LayoutPoint& pointInContainer, const LayoutPoint& accumulatedOffset);
- void forwardEvent(Event*);
int textBlockWidth() const;
int textBlockHeight() const;
Modified: trunk/Source/WebCore/rendering/RenderTextControlMultiLine.cpp (90982 => 90983)
--- trunk/Source/WebCore/rendering/RenderTextControlMultiLine.cpp 2011-07-14 06:27:57 UTC (rev 90982)
+++ trunk/Source/WebCore/rendering/RenderTextControlMultiLine.cpp 2011-07-14 07:08:42 UTC (rev 90983)
@@ -22,8 +22,6 @@
#include "config.h"
#include "RenderTextControlMultiLine.h"
-#include "Event.h"
-#include "EventNames.h"
#include "Frame.h"
#include "HTMLNames.h"
#include "HTMLTextAreaElement.h"
@@ -70,11 +68,6 @@
return true;
}
-void RenderTextControlMultiLine::forwardEvent(Event* event)
-{
- RenderTextControl::forwardEvent(event);
-}
-
float RenderTextControlMultiLine::getAvgCharWidth(AtomicString family)
{
// Since Lucida Grande is the default font, we want this to match the width
Modified: trunk/Source/WebCore/rendering/RenderTextControlMultiLine.h (90982 => 90983)
--- trunk/Source/WebCore/rendering/RenderTextControlMultiLine.h 2011-07-14 06:27:57 UTC (rev 90982)
+++ trunk/Source/WebCore/rendering/RenderTextControlMultiLine.h 2011-07-14 07:08:42 UTC (rev 90983)
@@ -31,8 +31,6 @@
RenderTextControlMultiLine(Node*);
virtual ~RenderTextControlMultiLine();
- void forwardEvent(Event*);
-
private:
virtual bool isTextArea() const { return true; }
Modified: trunk/Source/WebCore/rendering/RenderTextControlSingleLine.cpp (90982 => 90983)
--- trunk/Source/WebCore/rendering/RenderTextControlSingleLine.cpp 2011-07-14 06:27:57 UTC (rev 90982)
+++ trunk/Source/WebCore/rendering/RenderTextControlSingleLine.cpp 2011-07-14 07:08:42 UTC (rev 90983)
@@ -27,8 +27,6 @@
#include "CSSFontSelector.h"
#include "CSSStyleSelector.h"
#include "Chrome.h"
-#include "Event.h"
-#include "EventNames.h"
#include "Frame.h"
#include "FrameSelection.h"
#include "FrameView.h"
@@ -36,12 +34,12 @@
#include "HTMLNames.h"
#include "HitTestResult.h"
#include "LocalizedStrings.h"
-#include "MouseEvent.h"
#include "Page.h"
#include "PlatformKeyboardEvent.h"
#include "RenderLayer.h"
#include "RenderScrollbar.h"
#include "RenderTheme.h"
+#include "SearchPopupMenu.h"
#include "Settings.h"
#include "SimpleFontData.h"
#include "TextControlInnerElements.h"
@@ -363,23 +361,6 @@
return true;
}
-void RenderTextControlSingleLine::forwardEvent(Event* event)
-{
- RenderBox* innerTextRenderer = innerTextElement()->renderBox();
-
- if (event->type() == eventNames().blurEvent) {
- if (innerTextRenderer) {
- if (RenderLayer* innerLayer = innerTextRenderer->layer())
- innerLayer->scrollToOffset(!style()->isLeftToRightDirection() ? innerLayer->scrollWidth() : 0, 0, RenderLayer::ScrollOffsetClamped);
- }
-
- capsLockStateMayHaveChanged();
- } else if (event->type() == eventNames().focusEvent)
- capsLockStateMayHaveChanged();
-
- RenderTextControl::forwardEvent(event);
-}
-
void RenderTextControlSingleLine::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
{
m_desiredInnerTextHeight = -1;
Modified: trunk/Source/WebCore/rendering/RenderTextControlSingleLine.h (90982 => 90983)
--- trunk/Source/WebCore/rendering/RenderTextControlSingleLine.h 2011-07-14 06:27:57 UTC (rev 90982)
+++ trunk/Source/WebCore/rendering/RenderTextControlSingleLine.h 2011-07-14 07:08:42 UTC (rev 90983)
@@ -23,15 +23,14 @@
#ifndef RenderTextControlSingleLine_h
#define RenderTextControlSingleLine_h
-#include "HTMLInputElement.h"
#include "PopupMenuClient.h"
#include "RenderTextControl.h"
-#include "SearchPopupMenu.h"
#include "Timer.h"
namespace WebCore {
class HTMLInputElement;
+class SearchPopupMenu;
class RenderTextControlSingleLine : public RenderTextControl, private PopupMenuClient {
public:
@@ -48,8 +47,6 @@
void showPopup();
void hidePopup();
- void forwardEvent(Event*);
-
void capsLockStateMayHaveChanged();
private: