Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/TextAutosizer.cpp |
| diff --git a/third_party/WebKit/Source/core/layout/TextAutosizer.cpp b/third_party/WebKit/Source/core/layout/TextAutosizer.cpp |
| index 4af1f5c63a330a978ddfd12803140a7120f740e2..a0b98b2e73dab12fa4cc2cd0cb449dc8424d6744 100644 |
| --- a/third_party/WebKit/Source/core/layout/TextAutosizer.cpp |
| +++ b/third_party/WebKit/Source/core/layout/TextAutosizer.cpp |
| @@ -226,6 +226,10 @@ static LayoutObject* GetParent(const LayoutObject* object) { |
| return parent; |
| } |
| +static bool needMakeSelfAsWidthProvider(const LayoutBlock* block) { |
| + return block->IsTable() || block->IsTableCell() || block->IsLayoutView(); |
|
pdr.
2017/04/20 06:25:46
I don't think it'll be correct to move the IsTable
cathiechentx
2017/04/27 10:51:42
yes, table and td have the same inherit issues. I
|
| +} |
| + |
| TextAutosizer::TextAutosizer(const Document* document) |
| : document_(document), |
| first_block_to_begin_layout_(nullptr), |
| @@ -911,9 +915,6 @@ float TextAutosizer::SuperclusterMultiplier(Cluster* cluster) { |
| const LayoutBlock* TextAutosizer::ClusterWidthProvider( |
| const LayoutBlock* root) const { |
| - if (root->IsTable() || root->IsTableCell()) |
| - return root; |
| - |
| return DeepestBlockContainingAllText(root); |
| } |
| @@ -1009,6 +1010,9 @@ const LayoutBlock* TextAutosizer::DeepestBlockContainingAllText( |
| // FIXME: Refactor this to look more like TextAutosizer::deepestCommonAncestor. |
| const LayoutBlock* TextAutosizer::DeepestBlockContainingAllText( |
| const LayoutBlock* root) const { |
| + if (needMakeSelfAsWidthProvider(root)) |
| + return root; |
| + |
| size_t first_depth = 0; |
| const LayoutObject* first_text_leaf = FindTextLeaf(root, first_depth, kFirst); |
| if (!first_text_leaf) |
| @@ -1149,6 +1153,10 @@ bool TextAutosizer::IsWiderOrNarrowerDescendant(Cluster* cluster) { |
| const LayoutBlock* parent_deepest_block_containing_all_text = |
| DeepestBlockContainingAllText(cluster->parent_); |
| + // Block that needMakeSelfAsWidthProvider shouldn't be inherited. |
| + if (needMakeSelfAsWidthProvider(parent_deepest_block_containing_all_text)) |
|
pdr.
2017/04/20 06:25:46
I think this change is just making child clusters
cathiechentx
2017/04/27 10:51:42
If we choose to fix the general case, here is the
cathiechentx
2017/05/25 11:36:38
We had a misunderstanding here. Sorry for my bad E
|
| + return true; |
| + |
| #if DCHECK_IS_ON() |
| DCHECK(blocks_that_have_begun_layout_.Contains(cluster->root_)); |
| DCHECK(blocks_that_have_begun_layout_.Contains( |