| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010, Google Inc. All rights reserved. | 2 * Copyright (C) 2010, Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 #include "core/html/HTMLHeadElement.h" | 54 #include "core/html/HTMLHeadElement.h" |
| 55 #include "core/html/VoidCallback.h" | 55 #include "core/html/VoidCallback.h" |
| 56 #include "core/inspector/InspectorHistory.h" | 56 #include "core/inspector/InspectorHistory.h" |
| 57 #include "core/inspector/InspectorPageAgent.h" | 57 #include "core/inspector/InspectorPageAgent.h" |
| 58 #include "core/inspector/InspectorResourceAgent.h" | 58 #include "core/inspector/InspectorResourceAgent.h" |
| 59 #include "core/inspector/InspectorResourceContentLoader.h" | 59 #include "core/inspector/InspectorResourceContentLoader.h" |
| 60 #include "core/inspector/InspectorState.h" | 60 #include "core/inspector/InspectorState.h" |
| 61 #include "core/inspector/InstrumentingAgents.h" | 61 #include "core/inspector/InstrumentingAgents.h" |
| 62 #include "core/layout/LayoutObject.h" | 62 #include "core/layout/LayoutObject.h" |
| 63 #include "core/layout/LayoutObjectInlines.h" | 63 #include "core/layout/LayoutObjectInlines.h" |
| 64 #include "core/layout/LayoutText.h" |
| 65 #include "core/layout/LayoutTextFragment.h" |
| 64 #include "core/layout/line/InlineTextBox.h" | 66 #include "core/layout/line/InlineTextBox.h" |
| 65 #include "core/loader/DocumentLoader.h" | 67 #include "core/loader/DocumentLoader.h" |
| 66 #include "core/page/Page.h" | 68 #include "core/page/Page.h" |
| 67 #include "core/rendering/RenderText.h" | |
| 68 #include "core/rendering/RenderTextFragment.h" | |
| 69 #include "platform/fonts/Font.h" | 69 #include "platform/fonts/Font.h" |
| 70 #include "platform/fonts/GlyphBuffer.h" | 70 #include "platform/fonts/GlyphBuffer.h" |
| 71 #include "platform/fonts/shaping/SimpleShaper.h" | 71 #include "platform/fonts/shaping/SimpleShaper.h" |
| 72 #include "platform/text/TextRun.h" | 72 #include "platform/text/TextRun.h" |
| 73 #include "wtf/CurrentTime.h" | 73 #include "wtf/CurrentTime.h" |
| 74 #include "wtf/text/CString.h" | 74 #include "wtf/text/CString.h" |
| 75 #include "wtf/text/StringConcatenate.h" | 75 #include "wtf/text/StringConcatenate.h" |
| 76 | 76 |
| 77 namespace CSSAgentState { | 77 namespace CSSAgentState { |
| 78 static const char cssAgentEnabled[] = "cssAgentEnabled"; | 78 static const char cssAgentEnabled[] = "cssAgentEnabled"; |
| (...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 790 { | 790 { |
| 791 Node* node = m_domAgent->assertNode(errorString, nodeId); | 791 Node* node = m_domAgent->assertNode(errorString, nodeId); |
| 792 if (!node) | 792 if (!node) |
| 793 return; | 793 return; |
| 794 | 794 |
| 795 RefPtrWillBeRawPtr<CSSComputedStyleDeclaration> computedStyleInfo = CSSCompu
tedStyleDeclaration::create(node, true); | 795 RefPtrWillBeRawPtr<CSSComputedStyleDeclaration> computedStyleInfo = CSSCompu
tedStyleDeclaration::create(node, true); |
| 796 RefPtrWillBeRawPtr<InspectorStyle> inspectorStyle = InspectorStyle::create(I
nspectorCSSId(), computedStyleInfo, 0); | 796 RefPtrWillBeRawPtr<InspectorStyle> inspectorStyle = InspectorStyle::create(I
nspectorCSSId(), computedStyleInfo, 0); |
| 797 style = inspectorStyle->buildArrayForComputedStyle(); | 797 style = inspectorStyle->buildArrayForComputedStyle(); |
| 798 } | 798 } |
| 799 | 799 |
| 800 void InspectorCSSAgent::collectPlatformFontsForRenderer(RenderText* renderer, Ha
shCountedSet<String>* fontStats) | 800 void InspectorCSSAgent::collectPlatformFontsForRenderer(LayoutText* renderer, Ha
shCountedSet<String>* fontStats) |
| 801 { | 801 { |
| 802 for (InlineTextBox* box = renderer->firstTextBox(); box; box = box->nextText
Box()) { | 802 for (InlineTextBox* box = renderer->firstTextBox(); box; box = box->nextText
Box()) { |
| 803 const LayoutStyle& style = renderer->styleRef(box->isFirstLineStyle()); | 803 const LayoutStyle& style = renderer->styleRef(box->isFirstLineStyle()); |
| 804 const Font& font = style.font(); | 804 const Font& font = style.font(); |
| 805 TextRun run = box->constructTextRunForInspector(style, font); | 805 TextRun run = box->constructTextRunForInspector(style, font); |
| 806 SimpleShaper shaper(&font, run); | 806 SimpleShaper shaper(&font, run); |
| 807 GlyphBuffer glyphBuffer; | 807 GlyphBuffer glyphBuffer; |
| 808 shaper.advance(run.length(), &glyphBuffer); | 808 shaper.advance(run.length(), &glyphBuffer); |
| 809 for (unsigned i = 0; i < glyphBuffer.size(); ++i) { | 809 for (unsigned i = 0; i < glyphBuffer.size(); ++i) { |
| 810 String familyName = glyphBuffer.fontDataAt(i)->platformData().fontFa
milyName(); | 810 String familyName = glyphBuffer.fontDataAt(i)->platformData().fontFa
milyName(); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 831 textNodes.append(toText(node)); | 831 textNodes.append(toText(node)); |
| 832 } else { | 832 } else { |
| 833 for (Node* child = node->firstChild(); child; child = child->nextSibling
()) { | 833 for (Node* child = node->firstChild(); child; child = child->nextSibling
()) { |
| 834 if (child->nodeType() == Node::TEXT_NODE && child->renderer()) | 834 if (child->nodeType() == Node::TEXT_NODE && child->renderer()) |
| 835 textNodes.append(toText(child)); | 835 textNodes.append(toText(child)); |
| 836 } | 836 } |
| 837 } | 837 } |
| 838 | 838 |
| 839 HashCountedSet<String> fontStats; | 839 HashCountedSet<String> fontStats; |
| 840 for (size_t i = 0; i < textNodes.size(); ++i) { | 840 for (size_t i = 0; i < textNodes.size(); ++i) { |
| 841 RenderText* renderer = textNodes[i]->renderer(); | 841 LayoutText* renderer = textNodes[i]->renderer(); |
| 842 collectPlatformFontsForRenderer(renderer, &fontStats); | 842 collectPlatformFontsForRenderer(renderer, &fontStats); |
| 843 | 843 |
| 844 if (!renderer->isTextFragment()) | 844 if (!renderer->isTextFragment()) |
| 845 continue; | 845 continue; |
| 846 | 846 |
| 847 // If we're the remaining text from a first-letter then our previous | 847 // If we're the remaining text from a first-letter then our previous |
| 848 // sibling has to be the first-letter renderer. | 848 // sibling has to be the first-letter renderer. |
| 849 LayoutObject* previous = renderer->previousSibling(); | 849 LayoutObject* previous = renderer->previousSibling(); |
| 850 if (!previous) | 850 if (!previous) |
| 851 continue; | 851 continue; |
| 852 | 852 |
| 853 if (!previous->isPseudoElement() || !previous->node()->isFirstLetterPseu
doElement()) | 853 if (!previous->isPseudoElement() || !previous->node()->isFirstLetterPseu
doElement()) |
| 854 continue; | 854 continue; |
| 855 | 855 |
| 856 // The first-letter pseudoElement only has one child, which is the | 856 // The first-letter pseudoElement only has one child, which is the |
| 857 // first-letter renderer. | 857 // first-letter renderer. |
| 858 collectPlatformFontsForRenderer(toRenderText(previous->slowFirstChild())
, &fontStats); | 858 collectPlatformFontsForRenderer(toLayoutText(previous->slowFirstChild())
, &fontStats); |
| 859 } | 859 } |
| 860 | 860 |
| 861 platformFonts = TypeBuilder::Array<TypeBuilder::CSS::PlatformFontUsage>::cre
ate(); | 861 platformFonts = TypeBuilder::Array<TypeBuilder::CSS::PlatformFontUsage>::cre
ate(); |
| 862 for (auto& font : fontStats) { | 862 for (auto& font : fontStats) { |
| 863 RefPtr<TypeBuilder::CSS::PlatformFontUsage> platformFont = TypeBuilder::
CSS::PlatformFontUsage::create() | 863 RefPtr<TypeBuilder::CSS::PlatformFontUsage> platformFont = TypeBuilder::
CSS::PlatformFontUsage::create() |
| 864 .setFamilyName(font.key) | 864 .setFamilyName(font.key) |
| 865 .setGlyphCount(font.value); | 865 .setGlyphCount(font.value); |
| 866 platformFonts->addItem(platformFont); | 866 platformFonts->addItem(platformFont); |
| 867 } | 867 } |
| 868 } | 868 } |
| (...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1561 visitor->trace(m_invalidatedDocuments); | 1561 visitor->trace(m_invalidatedDocuments); |
| 1562 visitor->trace(m_nodeToInspectorStyleSheet); | 1562 visitor->trace(m_nodeToInspectorStyleSheet); |
| 1563 visitor->trace(m_documentToViaInspectorStyleSheet); | 1563 visitor->trace(m_documentToViaInspectorStyleSheet); |
| 1564 #endif | 1564 #endif |
| 1565 visitor->trace(m_inspectorUserAgentStyleSheet); | 1565 visitor->trace(m_inspectorUserAgentStyleSheet); |
| 1566 InspectorBaseAgent::trace(visitor); | 1566 InspectorBaseAgent::trace(visitor); |
| 1567 } | 1567 } |
| 1568 | 1568 |
| 1569 } // namespace blink | 1569 } // namespace blink |
| 1570 | 1570 |
| OLD | NEW |