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

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: Created 6 years, 3 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 02ccb5691615a3751aaec3b39738e5ef200f96f3..2ce4c83a1b10ee1f2ad746935406219396139c87 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());
+ collectPlatformFontsForRenderer(toRenderText(firstLetterRenderer), &fontStats);
}
platformFonts = TypeBuilder::Array<TypeBuilder::CSS::PlatformFontUsage>::create();

Powered by Google App Engine
This is Rietveld 408576698