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 50949
Add support for unicode-bidi:plaintext CSS property
https://bugs.webkit.org/show_bug.cgi?id=50949
Summary
Add support for unicode-bidi:plaintext CSS property
Xiaomei Ji
Reported
2010-12-13 11:36:52 PST
Following is from CSS3 spec: plaintext For the purposes of the Unicode bidirectional algorithm, the base directionality of each "paragraph" for which the element is the containing block element is determined not by the element's computed ‘direction’ as usual, but by following rules P1, P2, and P3 of the Unicode bidirectional algorithm. However, if no direction-determining character is found in step P2, then the value of the ‘direction’ property is used instead. Note this value has no effect on inline elements.
Attachments
Patch
(44.08 KB, patch)
2011-04-05 10:25 PDT
,
Levi Weintraub
no flags
Details
Formatted Diff
Diff
Patch
(51.01 KB, patch)
2011-04-06 08:02 PDT
,
Levi Weintraub
no flags
Details
Formatted Diff
Diff
Patch
(51.08 KB, patch)
2011-04-27 15:31 PDT
,
Levi Weintraub
no flags
Details
Formatted Diff
Diff
Patch
(50.79 KB, patch)
2011-06-21 17:47 PDT
,
Levi Weintraub
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ec2-cr-linux-01
(1.29 MB, application/zip)
2011-06-21 18:17 PDT
,
WebKit Review Bot
no flags
Details
Patch
(50.80 KB, patch)
2011-06-22 12:02 PDT
,
Levi Weintraub
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ec2-cr-linux-01
(1.25 MB, application/zip)
2011-06-22 12:34 PDT
,
WebKit Review Bot
no flags
Details
Patch
(55.10 KB, patch)
2011-06-23 16:44 PDT
,
Levi Weintraub
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ec2-cr-linux-01
(1.83 MB, application/zip)
2011-06-23 17:16 PDT
,
WebKit Review Bot
no flags
Details
Patch
(55.11 KB, patch)
2011-06-27 11:43 PDT
,
Levi Weintraub
no flags
Details
Formatted Diff
Diff
Show Obsolete
(6)
View All
Add attachment
proposed patch, testcase, etc.
Levi Weintraub
Comment 1
2011-04-05 10:25:03 PDT
Created
attachment 88270
[details]
Patch
WebKit Review Bot
Comment 2
2011-04-05 10:27:13 PDT
Attachment 88270
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style']" exit_code: 1 Source/WebCore/rendering/style/RenderStyle.h:259: _unicodeBidi is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Total errors found: 1 in 11 files If any of these errors are false positives, please file a bug against check-webkit-style.
Levi Weintraub
Comment 3
2011-04-06 07:55:47 PDT
Comment on
attachment 88270
[details]
Patch Canceling the review as there were two more changes to make: 1 - check for line breaks and bail in determineParagraphDirection, since in the first layout we don't have an end iterator 2 - properly set unicode-bidi to plaintext for pre and textarea. New patch coming shortly.
Levi Weintraub
Comment 4
2011-04-06 08:02:15 PDT
Created
attachment 88417
[details]
Patch
WebKit Review Bot
Comment 5
2011-04-06 08:05:00 PDT
Attachment 88417
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style']" exit_code: 1 Source/WebCore/rendering/style/RenderStyle.h:259: _unicodeBidi is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Total errors found: 1 in 12 files If any of these errors are false positives, please file a bug against check-webkit-style.
Levi Weintraub
Comment 6
2011-04-07 01:40:39 PDT
I'd love a review if anyone gets a chance :)
Eric Seidel (no email)
Comment 7
2011-04-26 16:08:59 PDT
Comment on
attachment 88417
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=88417&action=review
I'm concerned this is not the only place you want this code. Otherwise seems fine.
> Source/WebCore/html/HTMLElement.cpp:170 > + int bidiAttribute; > + if (hasLocalName(bdoTag)) > + bidiAttribute = CSSValueBidiOverride; > + else if (hasLocalName(preTag) || hasLocalName(textareaTag)) > + bidiAttribute = CSSValueWebkitPlaintext; > + else > + bidiAttribute = CSSValueEmbed; > + addCSSProperty(attr, CSSPropertyUnicodeBidi, bidiAttribute);
This is a super-weird place for this code! I guess since I we have eto leave his here we should abstract this into a unicodeBidFromDirAuto() helper.
> Source/WebCore/rendering/RenderBlockLineLayout.cpp:87 > +static void determineParagraphDirection(Direction& dir, InlineIterator iter) > +{
So this is basically "first strong direction in paragarph"? I'm not sure where this logic goes.
> Source/WebCore/rendering/RenderBlockLineLayout.cpp:1266 > + if (style()->unicodeBidi() == Plaintext) > + determineParagraphDirection(direction, InlineIterator(this, bidiFirst(this, 0), pos));
I think we're going to want to start passing unicodeBidi() to BidiContexts :( Are we sure this is the only place this needs to be done?
> Source/WebCore/rendering/RenderBlockLineLayout.cpp:1270 > resolver.setLastStrongDir(direction); > resolver.setLastDir(direction); > resolver.setEorDir(direction); > - resolver.setContext(BidiContext::create(ltr ? 0 : 1, direction, style()->unicodeBidi() == Override, FromStyleOrDOM)); > + resolver.setContext(BidiContext::create(direction == LeftToRight ? 0 : 1, direction, style()->unicodeBidi() == Override, FromStyleOrDOM));
I think I have an outstanding conflicting patch here.
Levi Weintraub
Comment 8
2011-04-26 16:30:50 PDT
Comment on
attachment 88417
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=88417&action=review
>> Source/WebCore/html/HTMLElement.cpp:170 >> + addCSSProperty(attr, CSSPropertyUnicodeBidi, bidiAttribute); > > This is a super-weird place for this code! I guess since I we have eto leave his here we should abstract this into a unicodeBidFromDirAuto() helper.
That makes sense.
>> Source/WebCore/rendering/RenderBlockLineLayout.cpp:87 >> +{ > > So this is basically "first strong direction in paragarph"? I'm not sure where this logic goes.
That's correct. First the first character with a strong directionality is what determines the paragraph's base writing direction.
>> Source/WebCore/rendering/RenderBlockLineLayout.cpp:1266 >> + determineParagraphDirection(direction, InlineIterator(this, bidiFirst(this, 0), pos)); > > I think we're going to want to start passing unicodeBidi() to BidiContexts :( > > Are we sure this is the only place this needs to be done?
These two cases cover it: when we initially set up the BidiContext for the block, and again after each paragraph separator.
>> Source/WebCore/rendering/RenderBlockLineLayout.cpp:1270 >> + resolver.setContext(BidiContext::create(direction == LeftToRight ? 0 : 1, direction, style()->unicodeBidi() == Override, FromStyleOrDOM)); > > I think I have an outstanding conflicting patch here.
Link? If it's going to be a blocking issue list it as such so I know when to update this patch.
Levi Weintraub
Comment 9
2011-04-27 15:31:09 PDT
Created
attachment 91362
[details]
Patch
WebKit Review Bot
Comment 10
2011-04-27 15:32:15 PDT
Attachment 91362
[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 Source/WebCore/rendering/style/RenderStyle.h:259: _unicodeBidi is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Total errors found: 1 in 11 files If any of these errors are false positives, please file a bug against check-webkit-style.
Levi Weintraub
Comment 11
2011-05-02 18:17:44 PDT
@Eric: Following up wondering about the conflicting patch you had on this. When does it land? Could you add it as a blocker so I can track it? I think I cleared up your other issue and appreciate your feedback :)
Levi Weintraub
Comment 12
2011-06-21 17:47:24 PDT
Created
attachment 98088
[details]
Patch
WebKit Review Bot
Comment 13
2011-06-21 17:50:43 PDT
Attachment 98088
[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 Source/WebCore/rendering/style/RenderStyle.h:259: _unicodeBidi is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Total errors found: 1 in 11 files If any of these errors are false positives, please file a bug against check-webkit-style.
Eric Seidel (no email)
Comment 14
2011-06-21 17:55:56 PDT
Comment on
attachment 98088
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=98088&action=review
I think I need to look at this again later.
> Source/WebCore/html/HTMLElement.cpp:129 > +static int unicodeBidiAttributeForDirAuto(HTMLElement* element)
Should this be marked inline?
> Source/WebCore/rendering/RenderBlockLineLayout.cpp:115 > +static void determineParagraphDirection(TextDirection& dir, InlineIterator iter)
Should InlineIterator be passed as a reference? do you actually want it to be copied here? Maybe that would be more clear with a const & which you explicitly copy?
> Source/WebCore/rendering/RenderBlockLineLayout.cpp:967 > + bool isNewParagraph = lineInfo.previousLineBrokeCleanly();
is this true? that it's a "new paragraph"? You might want to say isNewUBAParagrah? I'm not sure. Do we need a new accessor on lineInfo which talks about UBA things instead of previous line? They may be backed by the same bool, but I wonder if we shouldn't have a UBA-specific accessor on lineInfo, since it's not clear from previousLineBrokeCleanly what it applies to...
> Source/WebCore/rendering/style/RenderStyle.h:261 > - // 50 bits > + // 51 bits
Did you validate this count? Sometimes these comments are out of date.
WebKit Review Bot
Comment 15
2011-06-21 18:17:44 PDT
Comment on
attachment 98088
[details]
Patch
Attachment 98088
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/8926094
New failing tests: fast/text/international/unicode-bidi-plaintext.html
WebKit Review Bot
Comment 16
2011-06-21 18:17:50 PDT
Created
attachment 98093
[details]
Archive of layout-test-results from ec2-cr-linux-01 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: ec2-cr-linux-01 Port: Chromium Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick
Levi Weintraub
Comment 17
2011-06-22 12:02:52 PDT
Created
attachment 98211
[details]
Patch
Levi Weintraub
Comment 18
2011-06-22 12:03:32 PDT
Comment on
attachment 98211
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=98211&action=review
> Source/WebCore/rendering/style/RenderStyle.h:261 > + // 53 bits
It really is 53 bits now... The comment was off by 2!
WebKit Review Bot
Comment 19
2011-06-22 12:05:05 PDT
Attachment 98211
[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 Source/WebCore/rendering/style/RenderStyle.h:259: _unicodeBidi is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Total errors found: 1 in 11 files If any of these errors are false positives, please file a bug against check-webkit-style.
WebKit Review Bot
Comment 20
2011-06-22 12:34:38 PDT
Comment on
attachment 98211
[details]
Patch
Attachment 98211
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/8925650
New failing tests: fast/text/international/unicode-bidi-plaintext.html
WebKit Review Bot
Comment 21
2011-06-22 12:34:43 PDT
Created
attachment 98215
[details]
Archive of layout-test-results from ec2-cr-linux-01 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: ec2-cr-linux-01 Port: Chromium Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick
Eric Seidel (no email)
Comment 22
2011-06-23 14:35:21 PDT
Comment on
attachment 98211
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=98211&action=review
r- for the cr-linux failure. Happy to look again after your replies.
> Source/WebCore/html/HTMLElement.cpp:129 > +static inline int unicodeBidiAttributeForDirAuto(HTMLElement* element)
So sad that these are ints, and not an enum.
> Source/WebCore/rendering/RenderBlockLineLayout.cpp:967 > + bool isNewUBAParagraph = lineInfo.previousLineBrokeCleanly();
I wonder if this shouldn't be an accessor on lineInfo. So that at some point later we might distinguish between nextLineIsNewUBAParagraph and previousLineBrokeCleanly (since I think they're used for separate things a times).
> Source/WebCore/rendering/RenderBlockLineLayout.cpp:991 > + if (isNewUBAParagraph && style()->unicodeBidi() == Plaintext && !resolver.context()->parent()) { > + TextDirection direction = style()->direction(); > + determineParagraphDirection(direction, resolver.position()); > + resolver.setStatus(BidiStatus(direction, style()->unicodeBidi() == Override)); > + }
Why is this needed here? I would think you would only need this in determinedStart... below.
Levi Weintraub
Comment 23
2011-06-23 15:00:09 PDT
Comment on
attachment 98211
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=98211&action=review
>> Source/WebCore/rendering/RenderBlockLineLayout.cpp:967 >> + bool isNewUBAParagraph = lineInfo.previousLineBrokeCleanly(); > > I wonder if this shouldn't be an accessor on lineInfo. So that at some point later we might distinguish between nextLineIsNewUBAParagraph and previousLineBrokeCleanly (since I think they're used for separate things a times).
I'd agree this should be refactored when another use case crops up.
>> Source/WebCore/rendering/RenderBlockLineLayout.cpp:991 >> + } > > Why is this needed here? I would think you would only need this in determinedStart... below.
On all other modes, hitting a hard line break resets the UBA to the state at the beginning of the current block, but when in Unicode: plaintext mode, we recalculate the direction of this new paragraph and set the status to an embedding level of 0/1 depending on the first character with strong directionality.
Levi Weintraub
Comment 24
2011-06-23 15:01:31 PDT
(In reply to
comment #22
)
> (From update of
attachment 98211
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=98211&action=review
> > r- for the cr-linux failure. Happy to look again after your replies.
I'm actually really confused by this cr-linux failure... It's failing the new test I uploaded, but I don't have expected results for linux!
Levi Weintraub
Comment 25
2011-06-23 16:15:43 PDT
(In reply to
comment #24
)
> I'm actually really confused by this cr-linux failure... It's failing the new test I uploaded, but I don't have expected results for linux!
Can someone with a better understanding of the cr-linux ews bot's layout test functionality help me understand this? Eric, Adam, Dmitry, I'm looking at you ;)
Tony Chang
Comment 26
2011-06-23 16:24:08 PDT
You answered your own question, it failed because the new test you added doesn't have results for Chromium Linux. When the test runs, it falls back to the mac result and it doesn't match, so it fails. You can grab the result out of the zip file and add it to your patch and it should pass. Alternately you could skip the test on Chromium Linux.
Levi Weintraub
Comment 27
2011-06-23 16:28:20 PDT
(In reply to
comment #26
)
> You answered your own question, it failed because the new test you added doesn't have results for Chromium Linux. When the test runs, it falls back to the mac result and it doesn't match, so it fails. > > You can grab the result out of the zip file and add it to your patch and it should pass. Alternately you could skip the test on Chromium Linux.
Oof! That seems like like a false-negative to go red for missing platform test expectations. While I love having the expected results generated, it's quite annoying if I'm getting r-'s for not doing my building on Linux Chrome :p
Levi Weintraub
Comment 28
2011-06-23 16:44:41 PDT
Created
attachment 98433
[details]
Patch
Levi Weintraub
Comment 29
2011-06-23 16:45:12 PDT
(In reply to
comment #28
)
> Created an attachment (id=98433) [details] > Patch
Including text cr-linux results...
WebKit Review Bot
Comment 30
2011-06-23 16:49:23 PDT
Attachment 98433
[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 Source/WebCore/rendering/style/RenderStyle.h:259: _unicodeBidi is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Total errors found: 1 in 12 files If any of these errors are false positives, please file a bug against check-webkit-style.
WebKit Review Bot
Comment 31
2011-06-23 17:16:11 PDT
Comment on
attachment 98433
[details]
Patch
Attachment 98433
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/8935190
New failing tests: fast/text/international/unicode-bidi-plaintext.html
WebKit Review Bot
Comment 32
2011-06-23 17:16:18 PDT
Created
attachment 98439
[details]
Archive of layout-test-results from ec2-cr-linux-01 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: ec2-cr-linux-01 Port: Chromium Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick
Levi Weintraub
Comment 33
2011-06-27 11:43:11 PDT
Created
attachment 98760
[details]
Patch
Levi Weintraub
Comment 34
2011-06-27 13:31:01 PDT
Woo! Finally made cr-linux happy :)
Eric Seidel (no email)
Comment 35
2011-06-27 14:31:50 PDT
Comment on
attachment 98760
[details]
Patch Seems OK. You will need to watch the bots, as you may break others than just linux due to font differences. I expect you'll break cr-win.
Levi Weintraub
Comment 36
2011-06-27 14:35:29 PDT
Comment on
attachment 98760
[details]
Patch Thanks for the review! I'll keep an eye on the bots, I'm sure there'll be different platform expectations :(
WebKit Review Bot
Comment 37
2011-06-27 15:01:51 PDT
Comment on
attachment 98760
[details]
Patch Clearing flags on attachment: 98760 Committed
r89864
: <
http://trac.webkit.org/changeset/89864
>
WebKit Review Bot
Comment 38
2011-06-27 15:02:07 PDT
All reviewed patches have been landed. Closing bug.
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