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(); |
| +} |
| + |
| 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; |
| - |
|
cathiechentx
2017/04/18 09:26:45
Conside of the inherit issuses. Move this check to
|
| 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; |
|
cathiechentx
2017/04/18 09:26:45
The special exceptions(table, td, html) check shou
|
| + |
| 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)) |
| + return true; |
|
cathiechentx
2017/04/18 09:26:45
These special exceptions(table, td, html) couldn't
|
| + |
| #if DCHECK_IS_ON() |
| DCHECK(blocks_that_have_begun_layout_.Contains(cluster->root_)); |
| DCHECK(blocks_that_have_begun_layout_.Contains( |