Index: Source/core/html/forms/TextFieldInputType.cpp |
diff --git a/Source/core/html/forms/TextFieldInputType.cpp b/Source/core/html/forms/TextFieldInputType.cpp |
index e74d9231640f92e5da0a902776761f5b704c0e2a..f2f897be27007639d3eb7532aea25af6aed23fd4 100644 |
--- a/Source/core/html/forms/TextFieldInputType.cpp |
+++ b/Source/core/html/forms/TextFieldInputType.cpp |
@@ -58,7 +58,7 @@ namespace WebCore { |
using namespace HTMLNames; |
-TextFieldInputType::TextFieldInputType(HTMLInputElement* element) |
+TextFieldInputType::TextFieldInputType(HTMLInputElement& element) |
: InputType(element) |
{ |
} |
@@ -71,7 +71,7 @@ TextFieldInputType::~TextFieldInputType() |
SpinButtonElement* TextFieldInputType::spinButtonElement() const |
{ |
- return toSpinButtonElement(element()->userAgentShadowRoot()->getElementById(ShadowElementNames::spinButton())); |
+ return toSpinButtonElement(element().userAgentShadowRoot()->getElementById(ShadowElementNames::spinButton())); |
} |
bool TextFieldInputType::shouldShowFocusRingOnMouseFocus() const |
@@ -95,7 +95,7 @@ static inline bool shouldIgnoreRequiredAttribute(const HTMLInputElement& input) |
bool TextFieldInputType::valueMissing(const String& value) const |
{ |
- return !shouldIgnoreRequiredAttribute(*element()) && element()->isRequired() && value.isEmpty(); |
+ return !shouldIgnoreRequiredAttribute(element()) && element().isRequired() && value.isEmpty(); |
} |
bool TextFieldInputType::canSetSuggestedValue() |
@@ -151,17 +151,17 @@ void TextFieldInputType::setValue(const String& sanitizedValue, bool valueChange |
void TextFieldInputType::handleKeydownEvent(KeyboardEvent* event) |
{ |
- if (!element()->focused()) |
+ if (!element().focused()) |
return; |
- Frame* frame = element()->document().frame(); |
- if (!frame || !frame->editor().doTextFieldCommandFromEvent(element(), event)) |
+ Frame* frame = element().document().frame(); |
+ if (!frame || !frame->editor().doTextFieldCommandFromEvent(&element(), event)) |
return; |
event->setDefaultHandled(); |
} |
void TextFieldInputType::handleKeydownEventForSpinButton(KeyboardEvent* event) |
{ |
- if (element()->isDisabledOrReadOnly()) |
+ if (element().isDisabledOrReadOnly()) |
return; |
const String& key = event->keyIdentifier(); |
if (key == "Up") |
@@ -181,8 +181,8 @@ void TextFieldInputType::forwardEvent(Event* event) |
return; |
} |
- if (element()->renderer() && (event->isMouseEvent() || event->isDragEvent() || event->hasInterface(EventNames::WheelEvent) || event->type() == EventTypeNames::blur || event->type() == EventTypeNames::focus)) { |
- RenderTextControlSingleLine* renderTextControl = toRenderTextControlSingleLine(element()->renderer()); |
+ if (element().renderer() && (event->isMouseEvent() || event->isDragEvent() || event->hasInterface(EventNames::WheelEvent) || event->type() == EventTypeNames::blur || event->type() == EventTypeNames::focus)) { |
+ RenderTextControlSingleLine* renderTextControl = toRenderTextControlSingleLine(element().renderer()); |
if (event->type() == EventTypeNames::blur) { |
if (RenderBox* innerTextRenderer = innerTextElement()->renderBox()) { |
// FIXME: This class has no need to know about RenderLayer! |
@@ -198,20 +198,20 @@ void TextFieldInputType::forwardEvent(Event* event) |
renderTextControl->capsLockStateMayHaveChanged(); |
} |
- element()->forwardEvent(event); |
+ element().forwardEvent(event); |
} |
} |
void TextFieldInputType::handleFocusEvent(Element* oldFocusedNode, FocusDirection focusDirection) |
{ |
InputType::handleFocusEvent(oldFocusedNode, focusDirection); |
- element()->beginEditing(); |
+ element().beginEditing(); |
} |
void TextFieldInputType::handleBlurEvent() |
{ |
InputType::handleBlurEvent(); |
- element()->endEditing(); |
+ element().endEditing(); |
} |
bool TextFieldInputType::shouldSubmitImplicitly(Event* event) |
@@ -221,13 +221,13 @@ bool TextFieldInputType::shouldSubmitImplicitly(Event* event) |
RenderObject* TextFieldInputType::createRenderer(RenderStyle*) const |
{ |
- return new RenderTextControlSingleLine(element()); |
+ return new RenderTextControlSingleLine(&element()); |
} |
bool TextFieldInputType::needsContainer() const |
{ |
#if ENABLE(INPUT_SPEECH) |
- return element()->isSpeechEnabled(); |
+ return element().isSpeechEnabled(); |
#else |
return false; |
#endif |
@@ -235,16 +235,16 @@ bool TextFieldInputType::needsContainer() const |
bool TextFieldInputType::shouldHaveSpinButton() const |
{ |
- return RenderTheme::theme().shouldHaveSpinButton(element()); |
+ return RenderTheme::theme().shouldHaveSpinButton(&element()); |
} |
void TextFieldInputType::createShadowSubtree() |
{ |
- ASSERT(element()->shadow()); |
- ShadowRoot* shadowRoot = element()->userAgentShadowRoot(); |
+ ASSERT(element().shadow()); |
+ ShadowRoot* shadowRoot = element().userAgentShadowRoot(); |
ASSERT(!shadowRoot->hasChildNodes()); |
- Document& document = element()->document(); |
+ Document& document = element().document(); |
bool shouldHaveSpinButton = this->shouldHaveSpinButton(); |
bool createsContainer = shouldHaveSpinButton || needsContainer(); |
@@ -263,7 +263,7 @@ void TextFieldInputType::createShadowSubtree() |
container->appendChild(editingViewPort.release()); |
#if ENABLE(INPUT_SPEECH) |
- if (element()->isSpeechEnabled()) |
+ if (element().isSpeechEnabled()) |
container->appendChild(InputFieldSpeechButtonElement::create(document)); |
#endif |
@@ -273,7 +273,7 @@ void TextFieldInputType::createShadowSubtree() |
Element* TextFieldInputType::containerElement() const |
{ |
- return element()->userAgentShadowRoot()->getElementById(ShadowElementNames::textFieldContainer()); |
+ return element().userAgentShadowRoot()->getElementById(ShadowElementNames::textFieldContainer()); |
} |
HTMLElement* TextFieldInputType::innerTextElement() const |
@@ -355,19 +355,19 @@ void TextFieldInputType::handleBeforeTextInsertedEvent(BeforeTextInsertedEvent* |
// We use HTMLInputElement::innerTextValue() instead of |
// HTMLInputElement::value() because they can be mismatched by |
// sanitizeValue() in HTMLInputElement::subtreeHasChanged() in some cases. |
- unsigned oldLength = element()->innerTextValue().length(); |
+ unsigned oldLength = element().innerTextValue().length(); |
// selectionLength represents the selection length of this text field to be |
// removed by this insertion. |
// If the text field has no focus, we don't need to take account of the |
// selection length. The selection is the source of text drag-and-drop in |
// that case, and nothing in the text field will be removed. |
- unsigned selectionLength = element()->focused() ? plainText(element()->document().frame()->selection().selection().toNormalizedRange().get()).length() : 0; |
+ unsigned selectionLength = element().focused() ? plainText(element().document().frame()->selection().selection().toNormalizedRange().get()).length() : 0; |
ASSERT(oldLength >= selectionLength); |
// Selected characters will be removed by the next text event. |
unsigned baseLength = oldLength - selectionLength; |
- unsigned maxLength = static_cast<unsigned>(isTextType() ? element()->maxLength() : HTMLInputElement::maximumLength); // maxLength can never be negative. |
+ unsigned maxLength = static_cast<unsigned>(isTextType() ? element().maxLength() : HTMLInputElement::maximumLength); // maxLength can never be negative. |
unsigned appendableLength = maxLength > baseLength ? maxLength - baseLength : 0; |
// Truncate the inserted text to avoid violating the maxLength and other constraints. |
@@ -392,15 +392,15 @@ void TextFieldInputType::updatePlaceholderText() |
{ |
if (!supportsPlaceholder()) |
return; |
- HTMLElement* placeholder = element()->placeholderElement(); |
- String placeholderText = element()->strippedPlaceholder(); |
+ HTMLElement* placeholder = element().placeholderElement(); |
+ String placeholderText = element().strippedPlaceholder(); |
if (placeholderText.isEmpty()) { |
if (placeholder) |
placeholder->remove(ASSERT_NO_EXCEPTION); |
return; |
} |
if (!placeholder) { |
- RefPtr<HTMLElement> newElement = HTMLDivElement::create(element()->document()); |
+ RefPtr<HTMLElement> newElement = HTMLDivElement::create(element().document()); |
placeholder = newElement.get(); |
placeholder->setPart(AtomicString("-webkit-input-placeholder", AtomicString::ConstructFromLiteral)); |
placeholder->setAttribute(idAttr, ShadowElementNames::placeholder()); |
@@ -415,9 +415,9 @@ void TextFieldInputType::updatePlaceholderText() |
bool TextFieldInputType::appendFormData(FormDataList& list, bool multipart) const |
{ |
InputType::appendFormData(list, multipart); |
- const AtomicString& dirnameAttrValue = element()->fastGetAttribute(dirnameAttr); |
+ const AtomicString& dirnameAttrValue = element().fastGetAttribute(dirnameAttr); |
if (!dirnameAttrValue.isNull()) |
- list.appendData(dirnameAttrValue, element()->directionForFormData()); |
+ list.appendData(dirnameAttrValue, element().directionForFormData()); |
return true; |
} |
@@ -428,29 +428,29 @@ String TextFieldInputType::convertFromVisibleValue(const String& visibleValue) c |
void TextFieldInputType::subtreeHasChanged() |
{ |
- ASSERT(element()->renderer()); |
+ ASSERT(element().renderer()); |
- bool wasChanged = element()->wasChangedSinceLastFormControlChangeEvent(); |
- element()->setChangedSinceLastFormControlChangeEvent(true); |
+ bool wasChanged = element().wasChangedSinceLastFormControlChangeEvent(); |
+ element().setChangedSinceLastFormControlChangeEvent(true); |
// We don't need to call sanitizeUserInputValue() function here because |
// HTMLInputElement::handleBeforeTextInsertedEvent() has already called |
// sanitizeUserInputValue(). |
// sanitizeValue() is needed because IME input doesn't dispatch BeforeTextInsertedEvent. |
- element()->setValueFromRenderer(sanitizeValue(convertFromVisibleValue(element()->innerTextValue()))); |
- element()->updatePlaceholderVisibility(false); |
+ element().setValueFromRenderer(sanitizeValue(convertFromVisibleValue(element().innerTextValue()))); |
+ element().updatePlaceholderVisibility(false); |
// Recalc for :invalid change. |
- element()->setNeedsStyleRecalc(); |
+ element().setNeedsStyleRecalc(); |
didSetValueByUserEdit(wasChanged ? ValueChangeStateChanged : ValueChangeStateNone); |
} |
void TextFieldInputType::didSetValueByUserEdit(ValueChangeState state) |
{ |
- if (!element()->focused()) |
+ if (!element().focused()) |
return; |
- if (Frame* frame = element()->document().frame()) |
- frame->editor().textDidChangeInTextField(element()); |
+ if (Frame* frame = element().document().frame()) |
+ frame->editor().textDidChangeInTextField(&element()); |
} |
void TextFieldInputType::spinButtonStepDown() |
@@ -465,14 +465,14 @@ void TextFieldInputType::spinButtonStepUp() |
void TextFieldInputType::updateInnerTextValue() |
{ |
- if (!element()->suggestedValue().isNull()) { |
- element()->setInnerTextValue(element()->suggestedValue()); |
- element()->updatePlaceholderVisibility(false); |
- } else if (!element()->formControlValueMatchesRenderer()) { |
+ if (!element().suggestedValue().isNull()) { |
+ element().setInnerTextValue(element().suggestedValue()); |
+ element().updatePlaceholderVisibility(false); |
+ } else if (!element().formControlValueMatchesRenderer()) { |
// Update the renderer value if the formControlValueMatchesRenderer() flag is false. |
// It protects an unacceptable renderer value from being overwritten with the DOM value. |
- element()->setInnerTextValue(visibleValue()); |
- element()->updatePlaceholderVisibility(false); |
+ element().setInnerTextValue(visibleValue()); |
+ element().updatePlaceholderVisibility(false); |
} |
} |
@@ -485,12 +485,12 @@ void TextFieldInputType::focusAndSelectSpinButtonOwner() |
bool TextFieldInputType::shouldSpinButtonRespondToMouseEvents() |
{ |
- return !element()->isDisabledOrReadOnly(); |
+ return !element().isDisabledOrReadOnly(); |
} |
bool TextFieldInputType::shouldSpinButtonRespondToWheelEvents() |
{ |
- return shouldSpinButtonRespondToMouseEvents() && element()->focused(); |
+ return shouldSpinButtonRespondToMouseEvents() && element().focused(); |
} |
} // namespace WebCore |