WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Reveted erronous test change to input-maxlength-unsupported.html
bug-129035-20140221171901.patch (text/plain), 21.90 KB, created by
Ryosuke Niwa
on 2014-02-21 17:18:26 PST
(
hide
)
Description:
Reveted erronous test change to input-maxlength-unsupported.html
Filename:
MIME Type:
Creator:
Ryosuke Niwa
Created:
2014-02-21 17:18:26 PST
Size:
21.90 KB
patch
obsolete
>Index: Source/WebCore/ChangeLog >=================================================================== >--- Source/WebCore/ChangeLog (revision 164477) >+++ Source/WebCore/ChangeLog (working copy) >@@ -1,3 +1,48 @@ >+2014-02-21 Ryosuke Niwa <rniwa@webkit.org> >+ >+ Inner text element should not use -webkit-user-modify >+ https://bugs.webkit.org/show_bug.cgi?id=129035 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ To eliminate the internal use of -webkit-user-modify, use contenteditable attribute in the inner text elements >+ instead of manually inspecting disabled-ness and readonly-ness in RenderTextControl. >+ >+ Unfortunately, we still have to manually set UserModify value in RenderTextControl::adjustInnerTextStyle since >+ RenderTextControl::styleDidChange creates RenderStyle for its inner text from scratch via createInnerTextStyle. >+ >+ * html/HTMLFieldSetElement.cpp: >+ (WebCore::HTMLFieldSetElement::disabledStateChanged): Don't use childrenOfType iterator which asserts that DOM >+ isn't mutated during the traversal since we now set contenteditable attribute inside disabledStateChanged via >+ updateFromControlElementsAncestorDisabledStateUnder. >+ >+ * html/HTMLFormControlElement.cpp: >+ (WebCore::HTMLFormControlElement::parseAttribute): Extracted readOnlyAttributeChanged out of this function so >+ that HTMLTextFormControl could override it to call updateInnerTextElementEditability. >+ (WebCore::HTMLFormControlElement::readOnlyAttributeChanged): Ditto. >+ * html/HTMLFormControlElement.h: >+ >+ * html/HTMLInputElement.cpp: >+ (WebCore::HTMLInputElement::didAddUserAgentShadowRoot): Call updateInnerTextElementEditability after creating >+ shadow DOM for the current input type. >+ (WebCore::HTMLInputElement::updateType): Ditto. >+ (WebCore::HTMLInputElement::parseAttribute): Ditto. >+ >+ * html/HTMLTextAreaElement.cpp: >+ (WebCore::HTMLTextAreaElement::didAddUserAgentShadowRoot): Call updateInnerTextElementEditability. >+ >+ * html/HTMLTextFormControlElement.cpp: >+ (WebCore::HTMLTextFormControlElement::disabledStateChanged): Added to update contenteditable attribute since >+ the editability of the inner text element depends on disabled-ness of the element. >+ (WebCore::HTMLTextFormControlElement::readOnlyAttributeChanged): Ditto for the readonly-ness of the element. >+ (WebCore::HTMLTextFormControlElement::updateInnerTextElementEditability): Added. >+ * html/HTMLTextFormControlElement.h: >+ >+ * rendering/RenderTextControl.cpp: >+ (WebCore::RenderTextControl::adjustInnerTextStyle): Use the inner text element's presentationAttributeStyle() to >+ compute the appropriate EUserModify value instead of hard-coding it here. >+ * rendering/RenderTextControl.h: >+ > 2014-02-20 ChangSeok Oh <changseok.oh@collabora.com> > > Rename EXT_draw_buffers to WEBGL_draw_buffers >Index: Source/WebCore/html/HTMLFieldSetElement.cpp >=================================================================== >--- Source/WebCore/html/HTMLFieldSetElement.cpp (revision 164476) >+++ Source/WebCore/html/HTMLFieldSetElement.cpp (working copy) >@@ -92,13 +92,13 @@ void HTMLFieldSetElement::disabledStateC > > bool thisFieldsetIsDisabled = hasAttribute(disabledAttr); > bool hasSeenFirstLegendElement = false; >- for (auto& control : childrenOfType<HTMLElement>(*this)) { >+ for (HTMLElement* control = Traversal<HTMLElement>::firstChild(this); control; control = Traversal<HTMLElement>::nextSibling(control)) { > if (!hasSeenFirstLegendElement && isHTMLLegendElement(control)) { > hasSeenFirstLegendElement = true; >- updateFromControlElementsAncestorDisabledStateUnder(control, false /* isDisabled */); >+ updateFromControlElementsAncestorDisabledStateUnder(*control, false /* isDisabled */); > continue; > } >- updateFromControlElementsAncestorDisabledStateUnder(control, thisFieldsetIsDisabled); >+ updateFromControlElementsAncestorDisabledStateUnder(*control, thisFieldsetIsDisabled); > } > } > >Index: Source/WebCore/html/HTMLFormControlElement.cpp >=================================================================== >--- Source/WebCore/html/HTMLFormControlElement.cpp (revision 164476) >+++ Source/WebCore/html/HTMLFormControlElement.cpp (working copy) >@@ -135,12 +135,8 @@ void HTMLFormControlElement::parseAttrib > } else if (name == readonlyAttr) { > bool wasReadOnly = m_isReadOnly; > m_isReadOnly = !value.isNull(); >- if (wasReadOnly != m_isReadOnly) { >- setNeedsWillValidateCheck(); >- setNeedsStyleRecalc(); >- if (renderer() && renderer()->style().hasAppearance()) >- renderer()->theme().stateChanged(renderer(), ReadOnlyState); >- } >+ if (wasReadOnly != m_isReadOnly) >+ readOnlyAttributeChanged(); > } else if (name == requiredAttr) { > bool wasRequired = m_isRequired; > m_isRequired = !value.isNull(); >@@ -167,6 +163,14 @@ void HTMLFormControlElement::disabledSta > renderer()->theme().stateChanged(renderer(), EnabledState); > } > >+void HTMLFormControlElement::readOnlyAttributeChanged() >+{ >+ setNeedsWillValidateCheck(); >+ setNeedsStyleRecalc(); >+ if (renderer() && renderer()->style().hasAppearance()) >+ renderer()->theme().stateChanged(renderer(), ReadOnlyState); >+} >+ > void HTMLFormControlElement::requiredAttributeChanged() > { > setNeedsValidityCheck(); >Index: Source/WebCore/html/HTMLFormControlElement.h >=================================================================== >--- Source/WebCore/html/HTMLFormControlElement.h (revision 164476) >+++ Source/WebCore/html/HTMLFormControlElement.h (working copy) >@@ -123,9 +123,10 @@ protected: > bool disabledByAncestorFieldset() const { return m_disabledByAncestorFieldset; } > > virtual void parseAttribute(const QualifiedName&, const AtomicString&) override; >- virtual void requiredAttributeChanged(); > virtual void disabledAttributeChanged(); > virtual void disabledStateChanged(); >+ virtual void readOnlyAttributeChanged(); >+ virtual void requiredAttributeChanged(); > virtual void didAttachRenderers() override; > virtual InsertionNotificationRequest insertedInto(ContainerNode&) override; > virtual void removedFrom(ContainerNode&) override; >Index: Source/WebCore/html/HTMLInputElement.cpp >=================================================================== >--- Source/WebCore/html/HTMLInputElement.cpp (revision 164476) >+++ Source/WebCore/html/HTMLInputElement.cpp (working copy) >@@ -149,6 +149,7 @@ HTMLImageLoader* HTMLInputElement::image > void HTMLInputElement::didAddUserAgentShadowRoot(ShadowRoot*) > { > m_inputType->createShadowSubtree(); >+ updateInnerTextElementEditability(); > } > > HTMLInputElement::~HTMLInputElement() >@@ -473,6 +474,7 @@ void HTMLInputElement::updateType() > > m_inputType = std::move(newType); > m_inputType->createShadowSubtree(); >+ updateInnerTextElementEditability(); > > #if ENABLE(TOUCH_EVENTS) > bool hasTouchEventHandler = m_inputType->hasTouchEventHandler(); >@@ -735,6 +737,7 @@ void HTMLInputElement::parseAttribute(co > else if (name == webkitspeechAttr) { > m_inputType->destroyShadowSubtree(); > m_inputType->createShadowSubtree(); >+ updateInnerTextElementEditability(); > > // This renderer and its children have quite different layouts and styles depending on > // whether the speech button is visible or not. So we reset the whole thing and recreate >Index: Source/WebCore/html/HTMLTextAreaElement.cpp >=================================================================== >--- Source/WebCore/html/HTMLTextAreaElement.cpp (revision 164476) >+++ Source/WebCore/html/HTMLTextAreaElement.cpp (working copy) >@@ -110,6 +110,7 @@ PassRefPtr<HTMLTextAreaElement> HTMLText > void HTMLTextAreaElement::didAddUserAgentShadowRoot(ShadowRoot* root) > { > root->appendChild(TextControlInnerTextElement::create(document()), ASSERT_NO_EXCEPTION); >+ updateInnerTextElementEditability(); > } > > const AtomicString& HTMLTextAreaElement::formControlType() const >Index: Source/WebCore/html/HTMLTextFormControlElement.cpp >=================================================================== >--- Source/WebCore/html/HTMLTextFormControlElement.cpp (revision 164476) >+++ Source/WebCore/html/HTMLTextFormControlElement.cpp (working copy) >@@ -493,6 +493,24 @@ void HTMLTextFormControlElement::parseAt > HTMLFormControlElementWithState::parseAttribute(name, value); > } > >+void HTMLTextFormControlElement::disabledStateChanged() >+{ >+ HTMLFormControlElementWithState::disabledStateChanged(); >+ updateInnerTextElementEditability(); >+} >+ >+void HTMLTextFormControlElement::readOnlyAttributeChanged() >+{ >+ HTMLFormControlElementWithState::disabledAttributeChanged(); >+ updateInnerTextElementEditability(); >+} >+ >+void HTMLTextFormControlElement::updateInnerTextElementEditability() >+{ >+ if (TextControlInnerTextElement* innerText = innerTextElement()) >+ innerText->setAttribute(contenteditableAttr, isDisabledOrReadOnly() ? "false" : "plaintext-only"); >+} >+ > bool HTMLTextFormControlElement::lastChangeWasUserEdit() const > { > if (!isTextFormControl()) >Index: Source/WebCore/html/HTMLTextFormControlElement.h >=================================================================== >--- Source/WebCore/html/HTMLTextFormControlElement.h (revision 164476) >+++ Source/WebCore/html/HTMLTextFormControlElement.h (working copy) >@@ -99,6 +99,10 @@ protected: > > virtual void parseAttribute(const QualifiedName&, const AtomicString&) override; > >+ virtual void disabledStateChanged() override; >+ virtual void readOnlyAttributeChanged() override; >+ void updateInnerTextElementEditability(); >+ > void cacheSelection(int start, int end, TextFieldSelectionDirection direction) > { > m_cachedSelectionStart = start; >Index: Source/WebCore/rendering/RenderTextControl.cpp >=================================================================== >--- Source/WebCore/rendering/RenderTextControl.cpp (revision 164476) >+++ Source/WebCore/rendering/RenderTextControl.cpp (working copy) >@@ -22,6 +22,7 @@ > #include "config.h" > #include "RenderTextControl.h" > >+#include "CSSPrimitiveValueMappings.h" > #include "HTMLTextFormControlElement.h" > #include "HitTestResult.h" > #include "RenderText.h" >@@ -29,6 +30,7 @@ > #include "RenderTheme.h" > #include "ScrollbarTheme.h" > #include "StyleInheritedData.h" >+#include "StyleProperties.h" > #include "TextControlInnerElements.h" > #include "VisiblePosition.h" > #include <wtf/unicode/CharacterNames.h> >@@ -72,15 +74,6 @@ void RenderTextControl::styleDidChange(S > textFormControlElement().updatePlaceholderVisibility(false); > } > >-static inline bool updateUserModifyProperty(const HTMLTextFormControlElement& element, RenderStyle* style) >-{ >- bool isDisabled = element.isDisabledFormControl(); >- bool isReadOnlyControl = element.isReadOnly(); >- >- style->setUserModify((isReadOnlyControl || isDisabled) ? READ_ONLY : READ_WRITE_PLAINTEXT_ONLY); >- return isDisabled; >-} >- > void RenderTextControl::adjustInnerTextStyle(const RenderStyle* startStyle, RenderStyle* textBlockStyle) const > { > // The inner block, if present, always has its direction set to LTR, >@@ -88,8 +81,16 @@ void RenderTextControl::adjustInnerTextS > textBlockStyle->setDirection(style().direction()); > textBlockStyle->setUnicodeBidi(style().unicodeBidi()); > >- bool disabled = updateUserModifyProperty(textFormControlElement(), textBlockStyle); >- if (disabled) >+ HTMLTextFormControlElement& control = textFormControlElement(); >+ if (HTMLElement* innerText = control.innerTextElement()) { >+ if (const StyleProperties* properties = innerText->presentationAttributeStyle()) { >+ RefPtr<CSSValue> value = properties->getPropertyCSSValue(CSSPropertyWebkitUserModify); >+ if (value && value->isPrimitiveValue()) >+ textBlockStyle->setUserModify(toCSSPrimitiveValue(*value)); >+ } >+ } >+ >+ if (control.isDisabledFormControl()) > textBlockStyle->setColor(theme().disabledTextColor(textBlockStyle->visitedDependentColor(CSSPropertyColor), startStyle->visitedDependentColor(CSSPropertyBackgroundColor))); > #if PLATFORM(IOS) > if (textBlockStyle->textSecurity() != TSNONE && !textBlockStyle->isLeftToRightDirection()) { >@@ -135,13 +136,6 @@ int RenderTextControl::textBlockLogicalW > return unitWidth; > } > >-void RenderTextControl::updateFromElement() >-{ >- TextControlInnerTextElement* innerText = innerTextElement(); >- if (innerText && innerText->renderer()) >- updateUserModifyProperty(textFormControlElement(), &innerText->renderer()->style()); >-} >- > int RenderTextControl::scrollbarThickness() const > { > // FIXME: We should get the size of the scrollbar from the RenderTheme instead. >Index: Source/WebCore/rendering/RenderTextControl.h >=================================================================== >--- Source/WebCore/rendering/RenderTextControl.h (revision 164476) >+++ Source/WebCore/rendering/RenderTextControl.h (working copy) >@@ -67,7 +67,6 @@ protected: > virtual LayoutUnit preferredContentLogicalWidth(float charWidth) const = 0; > virtual LayoutUnit computeControlLogicalHeight(LayoutUnit lineHeight, LayoutUnit nonContentHeight) const = 0; > >- virtual void updateFromElement() override; > virtual void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues&) const override; > virtual RenderObject* layoutSpecialExcludedChild(bool relayoutChildren) override; > >Index: LayoutTests/ChangeLog >=================================================================== >--- LayoutTests/ChangeLog (revision 164478) >+++ LayoutTests/ChangeLog (working copy) >@@ -1,3 +1,25 @@ >+2014-02-21 Ryosuke Niwa <rniwa@webkit.org> >+ >+ Inner text element should not use -webkit-user-modify >+ https://bugs.webkit.org/show_bug.cgi?id=129035 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Rebaselined tests as the user agent shadow DOM of input and textarea elements now have contenteditable attribute. >+ >+ * editing/input/paste-text-ending-with-interchange-newline-expected.txt: >+ * editing/inserting/5607069-2-expected.txt: >+ * editing/inserting/5607069-3-expected.txt: >+ * editing/pasteboard/copy-image-with-alt-text-expected.txt: >+ * editing/pasteboard/copy-null-characters-expected.txt: >+ * editing/pasteboard/nested-blocks-with-text-area-expected.txt: >+ * editing/pasteboard/nested-blocks-with-text-field-expected.txt: >+ * editing/selection/dump-as-markup-expected.txt: >+ * editing/selection/dump-as-markup-form-text-expected.txt: >+ * fast/forms/suggested-value-after-setvalue-expected.txt: >+ * fast/forms/suggested-value-expected.txt: >+ * fast/parser/object-with-textarea-fallback-expected.txt: >+ > 2014-02-20 ChangSeok Oh <changseok.oh@collabora.com> > > Rename EXT_draw_buffers to WEBGL_draw_buffers >Index: LayoutTests/editing/input/paste-text-ending-with-interchange-newline-expected.txt >=================================================================== >--- LayoutTests/editing/input/paste-text-ending-with-interchange-newline-expected.txt (revision 164476) >+++ LayoutTests/editing/input/paste-text-ending-with-interchange-newline-expected.txt (working copy) >@@ -1,4 +1,5 @@ > This tests pasting a text with an interchange new line at the end. WebKit shouldn't insert a new line. > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | "abc def" >Index: LayoutTests/editing/inserting/5607069-2-expected.txt >=================================================================== >--- LayoutTests/editing/inserting/5607069-2-expected.txt (revision 164476) >+++ LayoutTests/editing/inserting/5607069-2-expected.txt (working copy) >@@ -4,9 +4,11 @@ This tests for a bug where InsertLineBre > | this.value="" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | <br> > | <input> > | type="text" > | this.value="" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" >Index: LayoutTests/editing/inserting/5607069-3-expected.txt >=================================================================== >--- LayoutTests/editing/inserting/5607069-3-expected.txt (revision 164476) >+++ LayoutTests/editing/inserting/5607069-3-expected.txt (working copy) >@@ -6,6 +6,7 @@ This tests for a bug in InsertParagraph > | this.value="" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | "x" > | <br> > | "<#selection-caret>x" >@@ -14,3 +15,4 @@ This tests for a bug in InsertParagraph > | this.value="" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" >Index: LayoutTests/editing/pasteboard/copy-image-with-alt-text-expected.txt >=================================================================== >--- LayoutTests/editing/pasteboard/copy-image-with-alt-text-expected.txt (revision 164476) >+++ LayoutTests/editing/pasteboard/copy-image-with-alt-text-expected.txt (working copy) >@@ -3,6 +3,7 @@ This tests that image alt text makes it > Dump of markup 1: > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | "Here is an emoticon [], some more text [], an empty alt tag [], no alt tag [] and two consecutive images []. > > " >@@ -17,6 +18,7 @@ Dump of markup 2: > Dump of markup 3: > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | "Here is an emoticon [:)], some more text [sample text], an empty alt tag [], no alt tag [] and two consecutive images [firstsecond]. > > " >Index: LayoutTests/editing/pasteboard/copy-null-characters-expected.txt >=================================================================== >--- LayoutTests/editing/pasteboard/copy-null-characters-expected.txt (revision 164476) >+++ LayoutTests/editing/pasteboard/copy-null-characters-expected.txt (working copy) >@@ -40,6 +40,7 @@ Copy paste me > green" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | "Copy paste mebold > > Copy paste me >Index: LayoutTests/editing/pasteboard/nested-blocks-with-text-area-expected.txt >=================================================================== >--- LayoutTests/editing/pasteboard/nested-blocks-with-text-area-expected.txt (revision 164476) >+++ LayoutTests/editing/pasteboard/nested-blocks-with-text-area-expected.txt (working copy) >@@ -25,6 +25,7 @@ These demonstrate 11475: the '\n's at th > | " " > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | " " > | " > x<#selection-caret> >Index: LayoutTests/editing/pasteboard/nested-blocks-with-text-field-expected.txt >=================================================================== >--- LayoutTests/editing/pasteboard/nested-blocks-with-text-field-expected.txt (revision 164476) >+++ LayoutTests/editing/pasteboard/nested-blocks-with-text-field-expected.txt (working copy) >@@ -25,6 +25,7 @@ These demonstrate 11475: the '\n's at th > | this.value="" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | " > x<#selection-caret> > " >Index: LayoutTests/editing/selection/dump-as-markup-expected.txt >=================================================================== >--- LayoutTests/editing/selection/dump-as-markup-expected.txt (revision 164476) >+++ LayoutTests/editing/selection/dump-as-markup-expected.txt (working copy) >@@ -20,6 +20,7 @@ Tests basic dump-as-markup functionality > | this.value="" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | " > " > | <div> >Index: LayoutTests/editing/selection/dump-as-markup-form-text-expected.txt >=================================================================== >--- LayoutTests/editing/selection/dump-as-markup-form-text-expected.txt (revision 164476) >+++ LayoutTests/editing/selection/dump-as-markup-form-text-expected.txt (working copy) >@@ -13,6 +13,7 @@ Tests dump-as-markup for input and texta > | this.value="replaced" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | "replaced" > | " > " >@@ -21,6 +22,7 @@ Tests dump-as-markup for input and texta > | "original" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | "replaced" > | " > " >Index: LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt >=================================================================== >--- LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt (revision 164476) >+++ LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt (working copy) >@@ -8,6 +8,7 @@ After setting suggestedValue: > | this.value="initial value" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | "suggested value" > | "input.value: initial value" > | "internals.suggestedValue(input): suggested value" >@@ -22,6 +23,7 @@ After setting value: > | this.value="new value" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | "new value" > | "input.value: new value" > | "internals.suggestedValue(input): " >Index: LayoutTests/fast/forms/suggested-value-expected.txt >=================================================================== >--- LayoutTests/fast/forms/suggested-value-expected.txt (revision 164476) >+++ LayoutTests/fast/forms/suggested-value-expected.txt (working copy) >@@ -7,6 +7,7 @@ The dump below should have the "suggeste > | this.value="initial value" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | "suggested value" > | "input.value: initial value" > | "internals.suggestedValue(input): suggested value" >Index: LayoutTests/fast/parser/object-with-textarea-fallback-expected.txt >=================================================================== >--- LayoutTests/fast/parser/object-with-textarea-fallback-expected.txt (revision 164476) >+++ LayoutTests/fast/parser/object-with-textarea-fallback-expected.txt (working copy) >@@ -15,6 +15,7 @@ > | this.value="" > | <shadow:root> > | <div> >+| contenteditable="plaintext-only" > | " > " > | "
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
kling
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 129035
:
224838
|
224839
|
224840
| 224930