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

Unified Diff: Source/core/inspector/InspectorCSSAgent.cpp

Issue 571603003: Convert first letter into a pseudo element. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase to master 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
Index: Source/core/inspector/InspectorCSSAgent.cpp
diff --git a/Source/core/inspector/InspectorCSSAgent.cpp b/Source/core/inspector/InspectorCSSAgent.cpp
index 9db044599bc210e0499c2162f0df2120cccefeb6..05acff7c93ac035c3b47561f71869278135a744c 100644
--- a/Source/core/inspector/InspectorCSSAgent.cpp
+++ b/Source/core/inspector/InspectorCSSAgent.cpp
@@ -789,16 +789,24 @@ void InspectorCSSAgent::getPlatformFontsForNode(ErrorString* errorString, int no
for (size_t i = 0; i < textNodes.size(); ++i) {
RenderText* renderer = textNodes[i]->renderer();
collectPlatformFontsForRenderer(renderer, &fontStats);
- if (renderer->isTextFragment()) {
- RenderTextFragment* textFragment = toRenderTextFragment(renderer);
- if (textFragment->firstLetter()) {
- RenderBoxModelObject* firstLetter = textFragment->firstLetter();
- for (RenderObject* current = firstLetter->slowFirstChild(); current; current = current->nextSibling()) {
- if (current->isText())
- collectPlatformFontsForRenderer(toRenderText(current), &fontStats);
- }
- }
- }
+
+ if (!renderer->isTextFragment())
+ continue;
+
+ // If we're the remaining text from a first-letter then our previous
+ // sibling has to be the first-letter renderer.
+ RenderObject* previous = renderer->previousSibling();
+ if (!previous)
+ continue;
+
+ if (!previous->isPseudoElement() || !previous->node()->isFirstLetterPseudoElement())
+ continue;
+
+ // The first-letter pseudoElement only has one child, which is the
+ // first-letter renderer.
+ RenderObject* firstLetterRenderer = previous->slowFirstChild();
+ ASSERT(firstLetterRenderer && firstLetterRenderer->isText());
Julien - ping for review 2014/10/09 18:24:48 toRenderText will also check for isText but in rel
dsinclair 2014/10/09 21:14:22 Done (removed the assert). So, in general, is: A
Julien - ping for review 2014/10/10 14:47:07 From my perspective yes because if ASSERT(firstLet
dsinclair 2014/10/10 18:06:53 Acknowledged.
+ collectPlatformFontsForRenderer(toRenderText(firstLetterRenderer), &fontStats);
}
platformFonts = TypeBuilder::Array<TypeBuilder::CSS::PlatformFontUsage>::create();

Powered by Google App Engine
This is Rietveld 408576698