WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
48157
Direction and writing-mode should propagate from the <body> to the <html> to the ICB
https://bugs.webkit.org/show_bug.cgi?id=48157
Summary
Direction and writing-mode should propagate from the <body> to the <html> to ...
Dave Hyatt
Reported
2010-10-22 15:39:32 PDT
Direction and writing-mode should propagate from the <body> to the <html> to the ICB as long as the <html> hasn't explicitly set the direction or writing-mode. Right now we only propagate from the <html> to the ICB, but we need to propagate from the <body> as well.
Attachments
Patch
(128.44 KB, patch)
2010-10-25 15:24 PDT
,
Dave Hyatt
hyatt
: review-
hyatt
: commit-queue-
Details
Formatted Diff
Diff
Patch
(123.83 KB, patch)
2010-10-26 10:55 PDT
,
Dave Hyatt
no flags
Details
Formatted Diff
Diff
Patch
(124.00 KB, patch)
2010-10-26 10:59 PDT
,
Dave Hyatt
sam
: review+
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
Dave Hyatt
Comment 1
2010-10-25 15:24:24 PDT
Created
attachment 71802
[details]
Patch
WebKit Review Bot
Comment 2
2010-10-25 15:28:52 PDT
Attachment 71802
[details]
did not pass style-queue: Failed to run "['WebKitTools/Scripts/check-webkit-style']" exit_code: 1 WebCore/rendering/style/RenderStyle.cpp:444: Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side. [whitespace/operators] [4] WebCore/rendering/style/RenderStyle.cpp:450: Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side. [whitespace/operators] [4] WebCore/rendering/style/RenderStyle.h:174: Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side. [whitespace/operators] [4] WebCore/rendering/style/RenderStyle.h:182: Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side. [whitespace/operators] [4] Total errors found: 4 in 24 files If any of these errors are false positives, please file a bug against check-webkit-style.
Dave Hyatt
Comment 3
2010-10-25 15:46:05 PDT
Comment on
attachment 71802
[details]
Patch Minusing after talking with Dan.
Dave Hyatt
Comment 4
2010-10-25 16:19:12 PDT
After testing in WinIE, I'm just going to match their behavior. Propagate from the body, and only propagate from the root if the body is not present.
Dave Hyatt
Comment 5
2010-10-26 10:49:59 PDT
I decided I can't follow WinIE's behavior. They completely ignore the direction on the <html> element and even replace it with the <body>'s direction. I'm going to go with the original behavior in the first patch of propagating if the root doesn't specify an explicit direction. This is consistent with how we handle background and overflow propagation.
Dave Hyatt
Comment 6
2010-10-26 10:55:41 PDT
Created
attachment 71908
[details]
Patch
Dave Hyatt
Comment 7
2010-10-26 10:59:11 PDT
Created
attachment 71910
[details]
Patch
Xiaomei Ji
Comment 8
2010-10-26 11:17:41 PDT
(In reply to
comment #5
)
> I decided I can't follow WinIE's behavior. They completely ignore the direction on the <html> element and even replace it with the <body>'s direction. I'm going to go with the original behavior in the first patch of propagating if the root doesn't specify an explicit direction. This is consistent with how we handle background and overflow propagation.
I just tested Firefox, IE, and Chrome (I assume Safari is the same as Chrome). I tried to set direction combination in html and body, then check the direction of the <div> inside <body>. Look like the behavior in the 3 browsers are the same as following: 1. when the 'dir' is set in <body> element, it is always honored, disregarding the 'dir' setting in <html>. 2. when 'dir' is not set in <body> element, the 'dir' in <html> is propagated to <div>. If you change the behavior, it will be different from IE and Firefox. And I do not understand why the precedence of <html> and <body> should be different from other inheritance in parent/child relationship? Is there HTML/W3C spec about the precedence of 'dir' in <html> and <body>?
Dave Hyatt
Comment 9
2010-10-26 11:25:12 PDT
(In reply to
comment #8
)
> > I tried to set direction combination in html and body, then check the direction of the <div> inside <body>. Look like the behavior in the 3 browsers are the same as following: > 1. when the 'dir' is set in <body> element, it is always honored, disregarding the 'dir' setting in <html>.
This is in direct violation of CSS2.1 is the problem. It states that the direction on the root element should be propagated to the initial containing block. I don't think it makes sense to actually overwrite the direction specified on the <html> if it is there just because the <body> specified something different. Keep in mind this is mostly just a theoretical distinction, since anyone setting RTL directions on the body isn't going to go explicitly put LTR on the html. There shouldn't be a compatibility issue here.
> 2. when 'dir' is not set in <body> element, the 'dir' in <html> is propagated to <div>. > > > If you change the behavior, it will be different from IE and Firefox. > And I do not understand why the precedence of <html> and <body> should be different from other inheritance in parent/child relationship? > > Is there HTML/W3C spec about the precedence of 'dir' in <html> and <body>?
The spec actually says nothing about body propagation. I want to make sure we adhere to the root element portion of the spec, which means I don't want to allow body to propagate if it's going to violate what is stated in CSS2.1. Anyway, this is slightly different from IE and Firefox, but in practice it should be a non-issue, since people specifying a direction on the body aren't going to go and explicitly specify the opposite direction on the root element.
Dave Hyatt
Comment 10
2010-10-26 11:28:26 PDT
Also, "1. when the 'dir' is set in <body> element, it is always honored, disregarding the 'dir' setting in <html>." That is not WebKit's current behavior. This patch actually brings WebKit's behavior closer to IE and Firefox. It's hard to really understand what's going on without making the <html> have a small specified width.
Dave Hyatt
Comment 11
2010-10-26 11:33:31 PDT
Fixed in
r70456
. I will bring up body propagation with the CSS WG to get a conversation going about standardizing it.
WebKit Review Bot
Comment 12
2010-10-26 12:05:38 PDT
http://trac.webkit.org/changeset/70546
might have broken Qt Linux Release The following tests are not passing: fast/blockflow/floats-in-block-layout.html fast/blockflow/self-collapsing-block.html fast/multicol/nested-columns.html
Csaba Osztrogonác
Comment 13
2010-10-27 10:50:06 PDT
(In reply to
comment #12
)
>
http://trac.webkit.org/changeset/70546
might have broken Qt Linux Release > The following tests are not passing: > fast/blockflow/floats-in-block-layout.html > fast/blockflow/self-collapsing-block.html > fast/multicol/nested-columns.html
FYI: Qt specific expected files updated in
http://trac.webkit.org/changeset/70670
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