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

Unified Diff: Source/core/page/PageSerializer.cpp

Issue 148673002: Use more const references in MarkupAccumulator and its subclasses (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Bring back the ASSERT Created 6 years, 11 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/page/PageSerializer.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/page/PageSerializer.cpp
diff --git a/Source/core/page/PageSerializer.cpp b/Source/core/page/PageSerializer.cpp
index ec229714753560373a1adcddc08a62cbdd43bd55..ccf0a286ec3642575df80d10c815b16af6564e5e 100644
--- a/Source/core/page/PageSerializer.cpp
+++ b/Source/core/page/PageSerializer.cpp
@@ -68,18 +68,18 @@
namespace WebCore {
-static bool isCharsetSpecifyingNode(Node* node)
+static bool isCharsetSpecifyingNode(const Node& node)
{
- if (!node->isHTMLElement())
+ if (!node.isHTMLElement())
return false;
- HTMLElement* element = toHTMLElement(node);
- if (!element->hasTagName(HTMLNames::metaTag))
+ const HTMLElement& element = toHTMLElement(node);
+ if (!element.hasTagName(HTMLNames::metaTag))
return false;
HTMLAttributeList attributes;
- if (element->hasAttributes()) {
- for (unsigned i = 0; i < element->attributeCount(); ++i) {
- const Attribute* attribute = element->attributeItem(i);
+ if (element.hasAttributes()) {
+ for (unsigned i = 0; i < element.attributeCount(); ++i) {
+ const Attribute* attribute = element.attributeItem(i);
// FIXME: We should deal appropriately with the attribute if they have a namespace.
attributes.append(std::make_pair(attribute->name().localName(), attribute->value().string()));
}
@@ -88,9 +88,9 @@ static bool isCharsetSpecifyingNode(Node* node)
return textEncoding.isValid();
}
-static bool shouldIgnoreElement(Element* element)
+static bool shouldIgnoreElement(const Element& element)
{
- return element->hasTagName(HTMLNames::scriptTag) || element->hasTagName(HTMLNames::noscriptTag) || isCharsetSpecifyingNode(element);
+ return element.hasTagName(HTMLNames::scriptTag) || element.hasTagName(HTMLNames::noscriptTag) || isCharsetSpecifyingNode(element);
}
static const QualifiedName& frameOwnerURLAttributeName(const HTMLFrameOwnerElement& frameOwner)
@@ -101,21 +101,21 @@ static const QualifiedName& frameOwnerURLAttributeName(const HTMLFrameOwnerEleme
class SerializerMarkupAccumulator FINAL : public MarkupAccumulator {
public:
- SerializerMarkupAccumulator(PageSerializer*, Document*, Vector<Node*>*);
+ SerializerMarkupAccumulator(PageSerializer*, const Document&, Vector<Node*>*);
virtual ~SerializerMarkupAccumulator();
protected:
- virtual void appendText(StringBuilder& out, Text*) OVERRIDE;
- virtual void appendElement(StringBuilder& out, Element*, Namespaces*) OVERRIDE;
- virtual void appendCustomAttributes(StringBuilder& out, Element*, Namespaces*) OVERRIDE;
- virtual void appendEndTag(Node*) OVERRIDE;
+ virtual void appendText(StringBuilder& out, Text&) OVERRIDE;
+ virtual void appendElement(StringBuilder& out, Element&, Namespaces*) OVERRIDE;
+ virtual void appendCustomAttributes(StringBuilder& out, const Element&, Namespaces*) OVERRIDE;
+ virtual void appendEndTag(const Node&) OVERRIDE;
private:
PageSerializer* m_serializer;
- Document* m_document;
+ const Document& m_document;
};
-SerializerMarkupAccumulator::SerializerMarkupAccumulator(PageSerializer* serializer, Document* document, Vector<Node*>* nodes)
+SerializerMarkupAccumulator::SerializerMarkupAccumulator(PageSerializer* serializer, const Document& document, Vector<Node*>* nodes)
: MarkupAccumulator(nodes, ResolveAllURLs)
, m_serializer(serializer)
, m_document(document)
@@ -126,34 +126,34 @@ SerializerMarkupAccumulator::~SerializerMarkupAccumulator()
{
}
-void SerializerMarkupAccumulator::appendText(StringBuilder& out, Text* text)
+void SerializerMarkupAccumulator::appendText(StringBuilder& out, Text& text)
{
- Element* parent = text->parentElement();
- if (parent && !shouldIgnoreElement(parent))
+ Element* parent = text.parentElement();
+ if (parent && !shouldIgnoreElement(*parent))
MarkupAccumulator::appendText(out, text);
}
-void SerializerMarkupAccumulator::appendElement(StringBuilder& out, Element* element, Namespaces* namespaces)
+void SerializerMarkupAccumulator::appendElement(StringBuilder& out, Element& element, Namespaces* namespaces)
{
if (!shouldIgnoreElement(element))
MarkupAccumulator::appendElement(out, element, namespaces);
- if (element->hasTagName(HTMLNames::headTag)) {
+ if (element.hasTagName(HTMLNames::headTag)) {
out.append("<meta charset=\"");
- out.append(m_document->charset());
+ out.append(m_document.charset());
out.append("\">");
}
// FIXME: For object (plugins) tags and video tag we could replace them by an image of their current contents.
}
-void SerializerMarkupAccumulator::appendCustomAttributes(StringBuilder& out, Element* element, Namespaces* namespaces)
+void SerializerMarkupAccumulator::appendCustomAttributes(StringBuilder& out, const Element& element, Namespaces* namespaces)
{
- if (!element->isFrameOwnerElement())
+ if (!element.isFrameOwnerElement())
return;
- HTMLFrameOwnerElement* frameOwner = toHTMLFrameOwnerElement(element);
- Frame* frame = frameOwner->contentFrame();
+ const HTMLFrameOwnerElement& frameOwner = toHTMLFrameOwnerElement(element);
+ Frame* frame = frameOwner.contentFrame();
if (!frame)
return;
@@ -163,12 +163,12 @@ void SerializerMarkupAccumulator::appendCustomAttributes(StringBuilder& out, Ele
// We need to give a fake location to blank frames so they can be referenced by the serialized frame.
url = m_serializer->urlForBlankFrame(frame);
- appendAttribute(out, element, Attribute(frameOwnerURLAttributeName(*frameOwner), AtomicString(url.string())), namespaces);
+ appendAttribute(out, element, Attribute(frameOwnerURLAttributeName(frameOwner), AtomicString(url.string())), namespaces);
}
-void SerializerMarkupAccumulator::appendEndTag(Node* node)
+void SerializerMarkupAccumulator::appendEndTag(const Node& node)
{
- if (node->isElementNode() && !shouldIgnoreElement(toElement(node)))
+ if (node.isElementNode() && !shouldIgnoreElement(toElement(node)))
MarkupAccumulator::appendEndTag(node);
}
@@ -185,8 +185,9 @@ void PageSerializer::serialize(Page* page)
void PageSerializer::serializeFrame(Frame* frame)
{
- Document* document = frame->document();
- KURL url = document->url();
+ ASSERT(frame->document());
+ Document& document = *frame->document();
+ KURL url = document.url();
if (!url.isValid() || url.isBlankURL()) {
// For blank frames we generate a fake URL so they can be referenced by their containing frame.
url = urlForBlankFrame(frame);
@@ -199,7 +200,7 @@ void PageSerializer::serializeFrame(Frame* frame)
return;
}
- WTF::TextEncoding textEncoding(document->charset());
+ WTF::TextEncoding textEncoding(document.charset());
if (!textEncoding.isValid()) {
// FIXME: iframes used as images trigger this. We should deal with them correctly.
return;
@@ -209,41 +210,42 @@ void PageSerializer::serializeFrame(Frame* frame)
SerializerMarkupAccumulator accumulator(this, document, &serializedNodes);
String text = accumulator.serializeNodes(document, IncludeNode);
CString frameHTML = textEncoding.normalizeAndEncode(text, WTF::EntitiesForUnencodables);
- m_resources->append(SerializedResource(url, document->suggestedMIMEType(), SharedBuffer::create(frameHTML.data(), frameHTML.length())));
+ m_resources->append(SerializedResource(url, document.suggestedMIMEType(), SharedBuffer::create(frameHTML.data(), frameHTML.length())));
m_resourceURLs.add(url);
for (Vector<Node*>::iterator iter = serializedNodes.begin(); iter != serializedNodes.end(); ++iter) {
- Node* node = *iter;
- if (!node->isElementNode())
+ ASSERT(*iter);
+ Node& node = **iter;
+ if (!node.isElementNode())
continue;
- Element* element = toElement(node);
+ Element& element = toElement(node);
// We have to process in-line style as it might contain some resources (typically background images).
- if (element->isStyledElement())
- retrieveResourcesForProperties(element->inlineStyle(), document);
-
- if (element->hasTagName(HTMLNames::imgTag)) {
- HTMLImageElement* imageElement = toHTMLImageElement(element);
- KURL url = document->completeURL(imageElement->getAttribute(HTMLNames::srcAttr));
- ImageResource* cachedImage = imageElement->cachedImage();
- addImageToResources(cachedImage, imageElement->renderer(), url);
- } else if (element->hasTagName(HTMLNames::inputTag)) {
- HTMLInputElement* inputElement = toHTMLInputElement(element);
- if (inputElement->isImageButton() && inputElement->hasImageLoader()) {
- KURL url = inputElement->src();
- ImageResource* cachedImage = inputElement->imageLoader()->image();
- addImageToResources(cachedImage, inputElement->renderer(), url);
+ if (element.isStyledElement())
+ retrieveResourcesForProperties(element.inlineStyle(), document);
+
+ if (element.hasTagName(HTMLNames::imgTag)) {
+ HTMLImageElement& imageElement = toHTMLImageElement(element);
+ KURL url = document.completeURL(imageElement.getAttribute(HTMLNames::srcAttr));
+ ImageResource* cachedImage = imageElement.cachedImage();
+ addImageToResources(cachedImage, imageElement.renderer(), url);
+ } else if (element.hasTagName(HTMLNames::inputTag)) {
+ HTMLInputElement& inputElement = toHTMLInputElement(element);
+ if (inputElement.isImageButton() && inputElement.hasImageLoader()) {
+ KURL url = inputElement.src();
+ ImageResource* cachedImage = inputElement.imageLoader()->image();
+ addImageToResources(cachedImage, inputElement.renderer(), url);
}
- } else if (element->hasTagName(HTMLNames::linkTag)) {
- HTMLLinkElement* linkElement = toHTMLLinkElement(element);
- if (CSSStyleSheet* sheet = linkElement->sheet()) {
- KURL url = document->completeURL(linkElement->getAttribute(HTMLNames::hrefAttr));
+ } else if (element.hasTagName(HTMLNames::linkTag)) {
+ HTMLLinkElement& linkElement = toHTMLLinkElement(element);
+ if (CSSStyleSheet* sheet = linkElement.sheet()) {
+ KURL url = document.completeURL(linkElement.getAttribute(HTMLNames::hrefAttr));
serializeCSSStyleSheet(sheet, url);
ASSERT(m_resourceURLs.contains(url));
}
- } else if (element->hasTagName(HTMLNames::styleTag)) {
- HTMLStyleElement* styleElement = toHTMLStyleElement(element);
- if (CSSStyleSheet* sheet = styleElement->sheet())
+ } else if (element.hasTagName(HTMLNames::styleTag)) {
+ HTMLStyleElement& styleElement = toHTMLStyleElement(element);
+ if (CSSStyleSheet* sheet = styleElement.sheet())
serializeCSSStyleSheet(sheet, KURL());
}
}
@@ -263,11 +265,12 @@ void PageSerializer::serializeCSSStyleSheet(CSSStyleSheet* styleSheet, const KUR
if (i < styleSheet->length() - 1)
cssText.append("\n\n");
}
- Document* document = styleSheet->ownerDocument();
+ ASSERT(styleSheet->ownerDocument());
+ Document& document = *styleSheet->ownerDocument();
// Some rules have resources associated with them that we need to retrieve.
if (rule->type() == CSSRule::IMPORT_RULE) {
CSSImportRule* importRule = toCSSImportRule(rule);
- KURL importURL = document->completeURL(importRule->href());
+ KURL importURL = document.completeURL(importRule->href());
if (m_resourceURLs.contains(importURL))
continue;
serializeCSSStyleSheet(importRule->styleSheet(), importURL);
@@ -331,7 +334,7 @@ void PageSerializer::addFontToResources(FontResource* font)
addToResources(font, data, font->url());
}
-void PageSerializer::retrieveResourcesForProperties(const StylePropertySet* styleDeclaration, Document* document)
+void PageSerializer::retrieveResourcesForProperties(const StylePropertySet* styleDeclaration, Document& document)
{
if (!styleDeclaration)
return;
@@ -346,7 +349,7 @@ void PageSerializer::retrieveResourcesForProperties(const StylePropertySet* styl
}
}
-void PageSerializer::retrieveResourcesForCSSValue(CSSValue* cssValue, Document* document)
+void PageSerializer::retrieveResourcesForCSSValue(CSSValue* cssValue, Document& document)
{
if (cssValue->isImageValue()) {
CSSImageValue* imageValue = toCSSImageValue(cssValue);
@@ -362,7 +365,7 @@ void PageSerializer::retrieveResourcesForCSSValue(CSSValue* cssValue, Document*
return;
}
- addFontToResources(fontFaceSrcValue->fetch(document));
+ addFontToResources(fontFaceSrcValue->fetch(&document));
} else if (cssValue->isValueList()) {
CSSValueList* cssValueList = toCSSValueList(cssValue);
for (unsigned i = 0; i < cssValueList->length(); i++)
« no previous file with comments | « Source/core/page/PageSerializer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698