WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 61415
Avoid custom layout code of RenderTextControlSingleLine
https://bugs.webkit.org/show_bug.cgi?id=61415
Summary
Avoid custom layout code of RenderTextControlSingleLine
Kent Tamura
Reported
2011-05-24 20:55:56 PDT
WARNING: This will need drastic rebaseline. I'll change rendering tree structure.
Attachments
WIP
(26.11 KB, patch)
2011-06-03 03:57 PDT
,
Kent Tamura
no flags
Details
Formatted Diff
Diff
Patch
(231.91 KB, patch)
2011-06-17 00:39 PDT
,
Kent Tamura
no flags
Details
Formatted Diff
Diff
Patch 2
(231.91 KB, patch)
2011-06-17 00:45 PDT
,
Kent Tamura
no flags
Details
Formatted Diff
Diff
Patch 3
(231.91 KB, patch)
2011-06-17 00:54 PDT
,
Kent Tamura
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ec2-cr-linux-03
(1.23 MB, application/zip)
2011-06-17 02:15 PDT
,
WebKit Review Bot
no flags
Details
Patch 4
(232.83 KB, patch)
2011-06-17 03:18 PDT
,
Kent Tamura
no flags
Details
Formatted Diff
Diff
Patch 5
(233.55 KB, patch)
2011-06-17 03:21 PDT
,
Kent Tamura
no flags
Details
Formatted Diff
Diff
Patch for landing
(234.90 KB, patch)
2011-06-21 01:30 PDT
,
Kent Tamura
no flags
Details
Formatted Diff
Diff
Patch for landing 2
(234.96 KB, patch)
2011-06-29 01:05 PDT
,
Kent Tamura
no flags
Details
Formatted Diff
Diff
Show Obsolete
(7)
View All
Add attachment
proposed patch, testcase, etc.
Kent Tamura
Comment 1
2011-05-25 03:43:50 PDT
I had some experiments. I think we can remove most of the width calculation code by using flex-box. However we can't remove height-related calculation for some reasons.
Kent Tamura
Comment 2
2011-05-31 02:16:39 PDT
The current layout code for the outer-spin-button is really tricky and doesn't work correctly in some cases. I'd like to move the spin button into the border/padding even in Mac... (Yes, I made the outer-spin-button!!)
Kent Tamura
Comment 3
2011-06-03 03:57:27 PDT
Created
attachment 95883
[details]
WIP
Kent Tamura
Comment 4
2011-06-17 00:39:56 PDT
Created
attachment 97553
[details]
Patch
WebKit Review Bot
Comment 5
2011-06-17 00:41:57 PDT
Attachment 97553
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/fast..." exit_code: 1 LayoutTests/platform/chromium/test_expectations.txt:3762: Duplicate or ambiguous expectation. fast/speech/input-appearance-numberandspeech.html [test/expectations] [5] LayoutTests/platform/chromium/test_expectations.txt:3764: Duplicate or ambiguous expectation. fast/speech/input-appearance-speechbutton.html [test/expectations] [5] Total errors found: 2 in 39 files If any of these errors are false positives, please file a bug against check-webkit-style.
Kent Tamura
Comment 6
2011-06-17 00:45:59 PDT
Created
attachment 97555
[details]
Patch 2 Correct test_expectations.txt
Kent Tamura
Comment 7
2011-06-17 00:51:00 PDT
Comment on
attachment 97555
[details]
Patch 2 View in context:
https://bugs.webkit.org/attachment.cgi?id=97555&action=review
> LayoutTests/ChangeLog:15 > + * platform/mac/fast/css/input-search-padding-expected.png:
I think the new -expected.png is correct. These search fields has padding-bottom. We should apply it.
> LayoutTests/ChangeLog:42 > + * platform/mac/fast/table/colspanMinWidth-vertical-expected.png:
The width (logical height) of the input becomes correct.
WebKit Review Bot
Comment 8
2011-06-17 00:51:52 PDT
Comment on
attachment 97555
[details]
Patch 2
Attachment 97555
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/8878441
Kent Tamura
Comment 9
2011-06-17 00:54:08 PDT
Created
attachment 97557
[details]
Patch 3 Fix a build warning
WebKit Review Bot
Comment 10
2011-06-17 02:15:04 PDT
Comment on
attachment 97557
[details]
Patch 3
Attachment 97557
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/8881477
New failing tests: fast/forms/search-cancel-button-mouseup.html fast/forms/search-abs-pos-cancel-button.html
WebKit Review Bot
Comment 11
2011-06-17 02:15:08 PDT
Created
attachment 97565
[details]
Archive of layout-test-results from ec2-cr-linux-03 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: ec2-cr-linux-03 Port: Chromium Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick
Kent Tamura
Comment 12
2011-06-17 03:18:57 PDT
Created
attachment 97569
[details]
Patch 4 Try to fix Chromium-linux test failures
Kent Tamura
Comment 13
2011-06-17 03:21:44 PDT
Created
attachment 97570
[details]
Patch 5 Try to fix Chromium-linux test failures
Dimitri Glazkov (Google)
Comment 14
2011-06-17 08:50:16 PDT
Comment on
attachment 97570
[details]
Patch 5 View in context:
https://bugs.webkit.org/attachment.cgi?id=97570&action=review
This looks like a great incremental clean-up!
> Source/WebCore/html/HTMLInputElement.cpp:135 > +HTMLElement* HTMLInputElement::containerElement() const
All these shadow DOM accessors on HTMLInputElement are going away eventually, right?
> Source/WebCore/html/TextFieldInputType.cpp:151 > + bool shouldHaveSpinButton = RenderTheme::themeForPage(document->page())->shouldHaveSpinButton(element());
This is super-weird. Why create a new theme here, rather than just querying document->page()->theme()?
> Source/WebCore/rendering/RenderTextControlSingleLine.cpp:278 > + innerTextRenderer->layoutIfNeeded();
This seems weird too... Are you going to eventually remove all this code? If you don't intend to, I am afraid we are not better off here.
> Source/WebCore/rendering/RenderTextControlSingleLine.cpp:312 > bool RenderTextControlSingleLine::nodeAtPoint(const HitTestRequest& request, HitTestResult& result, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset, HitTestAction hitTestAction)
nodeAtPoint looks completely unnecessary after shadow DOM conversion. All elements should correctly react to the hit testing. Are you planning to remove this altogether?
> Source/WebCore/rendering/RenderTextControlSingleLine.cpp:-437 > - if (!event->isMouseEvent()) { > - RenderTextControl::forwardEvent(event); > - return; > - } > - > -#if ENABLE(INPUT_SPEECH) > - if (RenderBox* speechBox = speechButtonElement() ? speechButtonElement()->renderBox() : 0) { > - RenderBox* parent = innerTextRenderer ? innerTextRenderer : this; > - FloatPoint pointInTextControlCoords = parent->absoluteToLocal(static_cast<MouseEvent*>(event)->absoluteLocation(), false, true); > - if (speechBox->frameRect().contains(roundedIntPoint(pointInTextControlCoords))) { > - speechButtonElement()->defaultEventHandler(event); > - return; > - } > - } > -#endif > - > - FloatPoint localPoint = innerTextRenderer->absoluteToLocal(static_cast<MouseEvent*>(event)->absoluteLocation(), false, true); > - int textRight = innerTextRenderer->borderBoxRect().maxX(); > - > - HTMLElement* resultsButton = resultsButtonElement(); > - HTMLElement* cancelButton = cancelButtonElement(); > - if (resultsButton && localPoint.x() < innerTextRenderer->borderBoxRect().x()) > - resultsButton->defaultEventHandler(event); > - else if (cancelButton && localPoint.x() > textRight) > - cancelButton->defaultEventHandler(event); > - else > - RenderTextControl::forwardEvent(event);
Wooo weee! :)
Kent Tamura
Comment 15
2011-06-20 20:07:22 PDT
Comment on
attachment 97570
[details]
Patch 5 View in context:
https://bugs.webkit.org/attachment.cgi?id=97570&action=review
Thank you for reviewing the large change!
>> Source/WebCore/html/HTMLInputElement.cpp:135 >> +HTMLElement* HTMLInputElement::containerElement() const > > All these shadow DOM accessors on HTMLInputElement are going away eventually, right?
Yeah, they should be going away. We can't do it for now because RenderTextControlSingleLine needs to access renderers of these nodes.
>> Source/WebCore/html/TextFieldInputType.cpp:151 >> + bool shouldHaveSpinButton = RenderTheme::themeForPage(document->page())->shouldHaveSpinButton(element()); > > This is super-weird. Why create a new theme here, rather than just querying document->page()->theme()?
You're right. document->page()->theme() should work. I'll correct this line before landing.
>> Source/WebCore/rendering/RenderTextControlSingleLine.cpp:278 >> + innerTextRenderer->layoutIfNeeded(); > > This seems weird too... Are you going to eventually remove all this code? If you don't intend to, I am afraid we are not better off here.
This is a part of the height hack in layout() and styleDidChange(), and it's required for now. We should remove it in the future. I'll add a FIXME comment in layout() about the height hack.
>> Source/WebCore/rendering/RenderTextControlSingleLine.cpp:312 >> bool RenderTextControlSingleLine::nodeAtPoint(const HitTestRequest& request, HitTestResult& result, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset, HitTestAction hitTestAction) > > nodeAtPoint looks completely unnecessary after shadow DOM conversion. All elements should correctly react to the hit testing. Are you planning to remove this altogether?
I think we still need this because we'd like to assume the inner editable text is clicked when <input> border/padding is clicked.
Kent Tamura
Comment 16
2011-06-21 01:30:28 PDT
Created
attachment 97949
[details]
Patch for landing
WebKit Review Bot
Comment 17
2011-06-21 01:33:36 PDT
Attachment 97949
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/fast..." exit_code: 1 LayoutTests/platform/chromium/test_expectations.txt:930: Path does not exist. svg/custom/svg-fonts-fallback.xhtml [test/expectations] [2] LayoutTests/platform/chromium/test_expectations.txt:932: Path does not exist. svg/custom/svg-fonts-segmented.xhtml [test/expectations] [2] LayoutTests/platform/chromium/test_expectations.txt:933: Path does not exist. svg/custom/svg-fonts-word-spacing.html [test/expectations] [2] LayoutTests/platform/chromium/test_expectations.txt:937: Path does not exist. svg/text/text-overflow-ellipsis-svgfont.html [test/expectations] [2] Total errors found: 4 in 41 files If any of these errors are false positives, please file a bug against check-webkit-style.
Kent Tamura
Comment 18
2011-06-21 21:36:45 PDT
Committed
r89407
: <
http://trac.webkit.org/changeset/89407
>
Adam Roben (:aroben)
Comment 19
2011-06-22 10:57:12 PDT
Comment on
attachment 97949
[details]
Patch for landing View in context:
https://bugs.webkit.org/attachment.cgi?id=97949&action=review
> LayoutTests/ChangeLog:11 > + Slight position changes for search result buttons and search cancel > + buttons are expected.
Does the layout still match the equivalent Cocoa controls?
> LayoutTests/ChangeLog:45 > + * fast/css/text-input-with-webkit-border-radius-expected.txt: > + * platform/chromium/test_expectations.txt: > + * platform/mac/fast/css/input-search-padding-expected.png: > + * platform/mac/fast/css/input-search-padding-expected.txt: > + * platform/mac/fast/css/pseudo-cache-stale-expected.txt: > + * platform/mac/fast/forms/box-shadow-override-expected.txt: > + * platform/mac/fast/forms/control-restrict-line-height-expected.txt: > + * platform/mac/fast/forms/input-appearance-height-expected.txt: > + * platform/mac/fast/forms/input-appearance-spinbutton-disabled-readonly-expected.txt: > + * platform/mac/fast/forms/input-appearance-spinbutton-expected.txt: > + * platform/mac/fast/forms/input-appearance-spinbutton-layer-expected.txt: > + * platform/mac/fast/forms/input-appearance-spinbutton-up-expected.txt: > + * platform/mac/fast/forms/input-appearance-spinbutton-visibility-expected.txt: > + * platform/mac/fast/forms/placeholder-position-expected.txt: > + * platform/mac/fast/forms/placeholder-pseudo-style-expected.txt: > + * platform/mac/fast/forms/placeholder-set-value-expected.txt: > + * platform/mac/fast/forms/search-cancel-button-style-sharing-expected.txt: > + * platform/mac/fast/forms/search-display-none-cancel-button-expected.txt: > + * platform/mac/fast/forms/search-placeholder-value-changed-expected.txt: > + * platform/mac/fast/forms/search-rtl-expected.txt: > + * platform/mac/fast/forms/search-styled-expected.txt: > + * platform/mac/fast/forms/search-transformed-expected.txt: > + * platform/mac/fast/forms/search-vertical-alignment-expected.png: > + * platform/mac/fast/forms/search-vertical-alignment-expected.txt: > + * platform/mac/fast/forms/search-zoomed-expected.txt: > + * platform/mac/fast/forms/searchfield-heights-expected.txt: > + * platform/mac/fast/repaint/search-field-cancel-expected.png: > + * platform/mac/fast/repaint/search-field-cancel-expected.txt: > + * platform/mac/fast/replaced/width100percent-searchfield-expected.txt: > + * platform/mac/fast/table/colspanMinWidth-vertical-expected.png: > + * platform/mac/fast/table/colspanMinWidth-vertical-expected.txt: > + * fast/forms/search-cancel-button-mouseup.html: Adjust click position for the cancel button. > + * fast/forms/search-abs-pos-cancel-button.html: ditto.
Do none of these need new pixel results?
Adam Roben (:aroben)
Comment 20
2011-06-22 12:58:57 PDT
This caused
bug 63157
. This change was rolled out in
r89460
for other reasons.
Kent Tamura
Comment 21
2011-06-23 23:35:05 PDT
Reopened because the patch was rolled out.
Kent Tamura
Comment 22
2011-06-24 05:40:28 PDT
(In reply to
comment #19
)
> (From update of
attachment 97949
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=97949&action=review
> > > LayoutTests/ChangeLog:11 > > + Slight position changes for search result buttons and search cancel > > + buttons are expected. > > Does the layout still match the equivalent Cocoa controls? > > > LayoutTests/ChangeLog:45 > > + * fast/css/text-input-with-webkit-border-radius-expected.txt: > > + * platform/chromium/test_expectations.txt: > > + * platform/mac/fast/css/input-search-padding-expected.png: > > + * platform/mac/fast/css/input-search-padding-expected.txt: > > + * platform/mac/fast/css/pseudo-cache-stale-expected.txt: > > + * platform/mac/fast/forms/box-shadow-override-expected.txt: > > + * platform/mac/fast/forms/control-restrict-line-height-expected.txt: > > + * platform/mac/fast/forms/input-appearance-height-expected.txt: > > + * platform/mac/fast/forms/input-appearance-spinbutton-disabled-readonly-expected.txt: > > + * platform/mac/fast/forms/input-appearance-spinbutton-expected.txt: > > + * platform/mac/fast/forms/input-appearance-spinbutton-layer-expected.txt: > > + * platform/mac/fast/forms/input-appearance-spinbutton-up-expected.txt: > > + * platform/mac/fast/forms/input-appearance-spinbutton-visibility-expected.txt: > > + * platform/mac/fast/forms/placeholder-position-expected.txt: > > + * platform/mac/fast/forms/placeholder-pseudo-style-expected.txt: > > + * platform/mac/fast/forms/placeholder-set-value-expected.txt: > > + * platform/mac/fast/forms/search-cancel-button-style-sharing-expected.txt: > > + * platform/mac/fast/forms/search-display-none-cancel-button-expected.txt: > > + * platform/mac/fast/forms/search-placeholder-value-changed-expected.txt: > > + * platform/mac/fast/forms/search-rtl-expected.txt: > > + * platform/mac/fast/forms/search-styled-expected.txt: > > + * platform/mac/fast/forms/search-transformed-expected.txt: > > + * platform/mac/fast/forms/search-vertical-alignment-expected.png: > > + * platform/mac/fast/forms/search-vertical-alignment-expected.txt: > > + * platform/mac/fast/forms/search-zoomed-expected.txt: > > + * platform/mac/fast/forms/searchfield-heights-expected.txt: > > + * platform/mac/fast/repaint/search-field-cancel-expected.png: > > + * platform/mac/fast/repaint/search-field-cancel-expected.txt: > > + * platform/mac/fast/replaced/width100percent-searchfield-expected.txt: > > + * platform/mac/fast/table/colspanMinWidth-vertical-expected.png: > > + * platform/mac/fast/table/colspanMinWidth-vertical-expected.txt: > > + * fast/forms/search-cancel-button-mouseup.html: Adjust click position for the cancel button. > > + * fast/forms/search-abs-pos-cancel-button.html: ditto. > > Do none of these need new pixel results?
I confirmed some tests passed with --pixel --tolerance 0. So there are no pixel differences in Mac. (Some other tests didn't pass with --tolerance 0 even without the patch.)
Kent Tamura
Comment 23
2011-06-29 01:05:32 PDT
Created
attachment 99053
[details]
Patch for landing 2
Kent Tamura
Comment 24
2011-06-29 01:14:50 PDT
(In reply to
comment #23
)
> Created an attachment (id=99053) [details] > Patch for landing 2
The differences from
r89407
are: * Removed innerTextRenderer->layoutIfNeeded() It caused
Bug 63182
. It was needed for a regression by
r87067
, so we don't need to fix it in this patch. * Fixed
Bug 63157
in RendetTextControlSingleLine::layout() We need to put the content on the outside of the content rect of the <input> if an intrinsic height of the content is taller than contentHeight() of the <input> and smaller than height() of the <input>. I'm going to land this tomorrow.
Kent Tamura
Comment 25
2011-06-29 23:30:38 PDT
Committed
r90089
: <
http://trac.webkit.org/changeset/90089
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug