Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1413)

Unified Diff: Source/core/rendering/RenderBlockLineLayout.cpp

Issue 622253002: Pass start/length at InlineTextBox construction time. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: condense by one line Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/rendering/InlineTextBox.cpp ('k') | Source/core/rendering/RenderText.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderBlockLineLayout.cpp
diff --git a/Source/core/rendering/RenderBlockLineLayout.cpp b/Source/core/rendering/RenderBlockLineLayout.cpp
index 2bdbe2d8814a979da92f732d55f793eb59700188..b9e6114da09a68f1805e5c03ec49fc34b8acd87a 100644
--- a/Source/core/rendering/RenderBlockLineLayout.cpp
+++ b/Source/core/rendering/RenderBlockLineLayout.cpp
@@ -54,18 +54,12 @@ using namespace WTF::Unicode;
static inline InlineBox* createInlineBoxForRenderer(RenderObject* obj, bool isRootLineBox, bool isOnlyRun = false)
{
+ // Callers should handle text themselves.
+ ASSERT(!obj->isText());
+
if (isRootLineBox)
return toRenderBlockFlow(obj)->createAndAppendRootInlineBox();
- if (obj->isText()) {
- InlineTextBox* textBox = toRenderText(obj)->createInlineTextBox();
- // We only treat a box as text for a <br> if we are on a line by ourself or in strict mode
- // (Note the use of strict mode. In "almost strict" mode, we don't treat the box for <br> as text.)
- if (obj->isBR())
- textBox->setIsText(isOnlyRun || obj->document().inNoQuirksMode());
- return textBox;
- }
-
if (obj->isBox())
return toRenderBox(obj)->createInlineBox();
@@ -199,7 +193,22 @@ RootInlineBox* RenderBlockFlow::constructLine(BidiRunList<BidiRun>& bidiRuns, co
if (lineInfo.isEmpty())
continue;
- InlineBox* box = createInlineBoxForRenderer(r->m_object, false, isOnlyRun);
+ InlineBox* box;
+ if (r->m_object->isText()) {
+ RenderText* text = toRenderText(r->m_object);
f(malita) 2014/10/06 15:18:23 Let's use a helper for this block too (createInlin
jbroman 2014/10/06 19:08:48 Done.
+ InlineTextBox* textBox = text->createInlineTextBox(r->m_start, r->m_stop - r->m_start);
+ // We only treat a box as text for a <br> if we are on a line by ourself or in strict mode
+ // (Note the use of strict mode. In "almost strict" mode, we don't treat the box for <br> as text.)
+ if (r->m_object->isBR())
+ textBox->setIsText(isOnlyRun || text->document().inNoQuirksMode());
+ textBox->setDirOverride(r->dirOverride(text->style()->rtlOrdering() == VisualOrder));
+ if (r->m_hasHyphen)
+ textBox->setHasHyphen(true);
+
+ box = textBox;
+ } else {
+ box = createInlineBoxForRenderer(r->m_object, false, isOnlyRun);
+ }
r->m_box = box;
ASSERT(box);
@@ -221,17 +230,9 @@ RootInlineBox* RenderBlockFlow::constructLine(BidiRunList<BidiRun>& bidiRuns, co
parentBox->addToLine(box);
}
- bool visuallyOrdered = r->m_object->style()->rtlOrdering() == VisualOrder;
box->setBidiLevel(r->level());
if (box->isInlineTextBox()) {
- InlineTextBox* text = toInlineTextBox(box);
- text->setStart(r->m_start);
- text->setLen(r->m_stop - r->m_start);
- text->setDirOverride(r->dirOverride(visuallyOrdered));
- if (r->m_hasHyphen)
- text->setHasHyphen(true);
-
if (AXObjectCache* cache = document().existingAXObjectCache())
cache->inlineTextBoxesUpdated(r->m_object);
}
« no previous file with comments | « Source/core/rendering/InlineTextBox.cpp ('k') | Source/core/rendering/RenderText.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698