<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[162356] trunk/Source/WebCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/162356">162356</a></dd>
<dt>Author</dt> <dd>akling@apple.com</dd>
<dt>Date</dt> <dd>2014-01-20 09:27:08 -0800 (Mon, 20 Jan 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Let RenderImage construct its RenderImageResource.
<https://webkit.org/b/127290>
Everyone who creates a RenderImage immediately follows up with
creating a RenderImageResource and assigning it to the image.
Let the RenderImage constructor do this instead, and make the
imageResource() accessors return references. This exposed a
number of unnecessary null checks.
Also modernized the touched code with std::unique_ptr.
Reviewed by Antti Koivisto.
* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::createElementRenderer):
(WebCore::HTMLImageElement::didAttachRenderers):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::createElementRenderer):
* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::didAttachRenderers):
(WebCore::HTMLVideoElement::parseAttribute):
* html/ImageInputType.cpp:
(WebCore::ImageInputType::createInputRenderer):
(WebCore::ImageInputType::attach):
* loader/ImageLoader.cpp:
(WebCore::ImageLoader::renderImageResource):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::createFor):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::RenderImage):
(WebCore::RenderImage::~RenderImage):
(WebCore::RenderImage::styleDidChange):
(WebCore::RenderImage::imageChanged):
(WebCore::RenderImage::updateIntrinsicSizeIfNeeded):
(WebCore::RenderImage::updateInnerContentRect):
(WebCore::RenderImage::imageDimensionsChanged):
(WebCore::RenderImage::notifyFinished):
(WebCore::RenderImage::paintReplaced):
(WebCore::RenderImage::paintIntoRect):
(WebCore::RenderImage::foregroundIsKnownToBeOpaqueInRect):
(WebCore::RenderImage::minimumReplacedHeight):
(WebCore::RenderImage::computeIntrinsicRatioInformation):
(WebCore::RenderImage::embeddedContentBox):
* rendering/RenderImage.h:
(WebCore::RenderImage::imageResource):
(WebCore::RenderImage::cachedImage):
* rendering/RenderImageResource.h:
* rendering/RenderImageResourceStyleImage.h:
* rendering/RenderMedia.cpp:
(WebCore::RenderMedia::RenderMedia):
* rendering/RenderSnapshottedPlugIn.cpp:
(WebCore::RenderSnapshottedPlugIn::RenderSnapshottedPlugIn):
* rendering/RenderSnapshottedPlugIn.h:
* rendering/RenderVideo.cpp:
(WebCore::RenderVideo::calculateIntrinsicSize):
* rendering/style/ContentData.cpp:
(WebCore::ImageContentData::createContentRenderer):
* rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::RenderSVGImage):
(WebCore::RenderSVGImage::~RenderSVGImage):
(WebCore::RenderSVGImage::updateImageViewport):
(WebCore::RenderSVGImage::paint):
(WebCore::RenderSVGImage::paintForeground):
* rendering/svg/RenderSVGImage.h:
* svg/SVGImageElement.cpp:
(WebCore::SVGImageElement::didAttachRenderers):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLImageElementcpp">trunk/Source/WebCore/html/HTMLImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLPlugInImageElementcpp">trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLVideoElementcpp">trunk/Source/WebCore/html/HTMLVideoElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlImageInputTypecpp">trunk/Source/WebCore/html/ImageInputType.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderImageLoadercpp">trunk/Source/WebCore/loader/ImageLoader.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderElementcpp">trunk/Source/WebCore/rendering/RenderElement.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderImagecpp">trunk/Source/WebCore/rendering/RenderImage.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderImageh">trunk/Source/WebCore/rendering/RenderImage.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderImageResourceh">trunk/Source/WebCore/rendering/RenderImageResource.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderImageResourceStyleImageh">trunk/Source/WebCore/rendering/RenderImageResourceStyleImage.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMediacpp">trunk/Source/WebCore/rendering/RenderMedia.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderSnapshottedPlugIncpp">trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderSnapshottedPlugInh">trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderVideocpp">trunk/Source/WebCore/rendering/RenderVideo.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleContentDatacpp">trunk/Source/WebCore/rendering/style/ContentData.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGImagecpp">trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGImageh">trunk/Source/WebCore/rendering/svg/RenderSVGImage.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGImageElementcpp">trunk/Source/WebCore/svg/SVGImageElement.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/ChangeLog        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -1,3 +1,73 @@
</span><ins>+2014-01-20 Andreas Kling <akling@apple.com>
+
+ Let RenderImage construct its RenderImageResource.
+ <https://webkit.org/b/127290>
+
+ Everyone who creates a RenderImage immediately follows up with
+ creating a RenderImageResource and assigning it to the image.
+
+ Let the RenderImage constructor do this instead, and make the
+ imageResource() accessors return references. This exposed a
+ number of unnecessary null checks.
+
+ Also modernized the touched code with std::unique_ptr.
+
+ Reviewed by Antti Koivisto.
+
+ * html/HTMLImageElement.cpp:
+ (WebCore::HTMLImageElement::createElementRenderer):
+ (WebCore::HTMLImageElement::didAttachRenderers):
+ * html/HTMLPlugInImageElement.cpp:
+ (WebCore::HTMLPlugInImageElement::createElementRenderer):
+ * html/HTMLVideoElement.cpp:
+ (WebCore::HTMLVideoElement::didAttachRenderers):
+ (WebCore::HTMLVideoElement::parseAttribute):
+ * html/ImageInputType.cpp:
+ (WebCore::ImageInputType::createInputRenderer):
+ (WebCore::ImageInputType::attach):
+ * loader/ImageLoader.cpp:
+ (WebCore::ImageLoader::renderImageResource):
+ * rendering/RenderElement.cpp:
+ (WebCore::RenderElement::createFor):
+ * rendering/RenderImage.cpp:
+ (WebCore::RenderImage::RenderImage):
+ (WebCore::RenderImage::~RenderImage):
+ (WebCore::RenderImage::styleDidChange):
+ (WebCore::RenderImage::imageChanged):
+ (WebCore::RenderImage::updateIntrinsicSizeIfNeeded):
+ (WebCore::RenderImage::updateInnerContentRect):
+ (WebCore::RenderImage::imageDimensionsChanged):
+ (WebCore::RenderImage::notifyFinished):
+ (WebCore::RenderImage::paintReplaced):
+ (WebCore::RenderImage::paintIntoRect):
+ (WebCore::RenderImage::foregroundIsKnownToBeOpaqueInRect):
+ (WebCore::RenderImage::minimumReplacedHeight):
+ (WebCore::RenderImage::computeIntrinsicRatioInformation):
+ (WebCore::RenderImage::embeddedContentBox):
+ * rendering/RenderImage.h:
+ (WebCore::RenderImage::imageResource):
+ (WebCore::RenderImage::cachedImage):
+ * rendering/RenderImageResource.h:
+ * rendering/RenderImageResourceStyleImage.h:
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::RenderMedia):
+ * rendering/RenderSnapshottedPlugIn.cpp:
+ (WebCore::RenderSnapshottedPlugIn::RenderSnapshottedPlugIn):
+ * rendering/RenderSnapshottedPlugIn.h:
+ * rendering/RenderVideo.cpp:
+ (WebCore::RenderVideo::calculateIntrinsicSize):
+ * rendering/style/ContentData.cpp:
+ (WebCore::ImageContentData::createContentRenderer):
+ * rendering/svg/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::RenderSVGImage):
+ (WebCore::RenderSVGImage::~RenderSVGImage):
+ (WebCore::RenderSVGImage::updateImageViewport):
+ (WebCore::RenderSVGImage::paint):
+ (WebCore::RenderSVGImage::paintForeground):
+ * rendering/svg/RenderSVGImage.h:
+ * svg/SVGImageElement.cpp:
+ (WebCore::SVGImageElement::didAttachRenderers):
+
</ins><span class="cx"> 2014-01-20 Antti Koivisto <antti@apple.com>
</span><span class="cx">
</span><span class="cx"> Update overlay scrollbars in single pass
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLImageElement.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLImageElement.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/html/HTMLImageElement.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -179,9 +179,7 @@
</span><span class="cx"> if (style.get().hasContent())
</span><span class="cx"> return RenderElement::createFor(*this, std::move(style));
</span><span class="cx">
</span><del>- auto image = createRenderer<RenderImage>(*this, std::move(style));
- image->setImageResource(RenderImageResource::create());
- return std::move(image);
</del><ins>+ return createRenderer<RenderImage>(*this, std::move(style));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool HTMLImageElement::canStartSelection() const
</span><span class="lines">@@ -199,14 +197,14 @@
</span><span class="cx"> if (m_imageLoader.hasPendingBeforeLoadEvent())
</span><span class="cx"> return;
</span><span class="cx"> RenderImage* renderImage = toRenderImage(renderer());
</span><del>- RenderImageResource* renderImageResource = renderImage->imageResource();
- if (renderImageResource->hasImage())
</del><ins>+ RenderImageResource& renderImageResource = renderImage->imageResource();
+ if (renderImageResource.hasImage())
</ins><span class="cx"> return;
</span><del>- renderImageResource->setCachedImage(m_imageLoader.image());
</del><ins>+ renderImageResource.setCachedImage(m_imageLoader.image());
</ins><span class="cx">
</span><span class="cx"> // If we have no image at all because we have no src attribute, set
</span><span class="cx"> // image height and width for the alt text instead.
</span><del>- if (!m_imageLoader.image() && !renderImageResource->cachedImage())
</del><ins>+ if (!m_imageLoader.image() && !renderImageResource.cachedImage())
</ins><span class="cx"> renderImage->setImageSizeForAltText();
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLPlugInImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -222,11 +222,8 @@
</span><span class="cx"> if (useFallbackContent())
</span><span class="cx"> return RenderElement::createFor(*this, std::move(style));
</span><span class="cx">
</span><del>- if (isImageType()) {
- auto image = createRenderer<RenderImage>(*this, std::move(style));
- image->setImageResource(RenderImageResource::create());
- return std::move(image);
- }
</del><ins>+ if (isImageType())
+ return createRenderer<RenderImage>(*this, std::move(style));
</ins><span class="cx">
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> if (ShadowRoot* shadowRoot = this->shadowRoot()) {
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLVideoElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLVideoElement.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLVideoElement.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/html/HTMLVideoElement.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> m_imageLoader = adoptPtr(new HTMLImageLoader(this));
</span><span class="cx"> m_imageLoader->updateFromElement();
</span><span class="cx"> if (renderer())
</span><del>- toRenderImage(renderer())->imageResource()->setCachedImage(m_imageLoader->image());
</del><ins>+ toRenderImage(renderer())->imageResource().setCachedImage(m_imageLoader->image());
</ins><span class="cx"> }
</span><span class="cx"> #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
</span><span class="cx"> }
</span><span class="lines">@@ -129,7 +129,7 @@
</span><span class="cx"> m_imageLoader->updateFromElementIgnoringPreviousError();
</span><span class="cx"> } else {
</span><span class="cx"> if (renderer())
</span><del>- toRenderImage(renderer())->imageResource()->setCachedImage(0);
</del><ins>+ toRenderImage(renderer())->imageResource().setCachedImage(0);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> #if ENABLE(IOS_AIRPLAY)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlImageInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/ImageInputType.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/ImageInputType.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/html/ImageInputType.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -103,9 +103,7 @@
</span><span class="cx">
</span><span class="cx"> RenderPtr<RenderElement> ImageInputType::createInputRenderer(PassRef<RenderStyle> style)
</span><span class="cx"> {
</span><del>- auto image = createRenderer<RenderImage>(element(), std::move(style));
- image->setImageResource(RenderImageResource::create());
- return std::move(image);
</del><ins>+ return createRenderer<RenderImage>(element(), std::move(style));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void ImageInputType::altAttributeChanged()
</span><span class="lines">@@ -137,12 +135,12 @@
</span><span class="cx"> if (imageLoader->hasPendingBeforeLoadEvent())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- RenderImageResource* imageResource = renderer->imageResource();
- imageResource->setCachedImage(imageLoader->image());
</del><ins>+ auto& imageResource = renderer->imageResource();
+ imageResource.setCachedImage(imageLoader->image());
</ins><span class="cx">
</span><span class="cx"> // If we have no image at all because we have no src attribute, set
</span><span class="cx"> // image height and width for the alt text instead.
</span><del>- if (!imageLoader->image() && !imageResource->cachedImage())
</del><ins>+ if (!imageLoader->image() && !imageResource.cachedImage())
</ins><span class="cx"> renderer->setImageSizeForAltText();
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderImageLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/ImageLoader.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/ImageLoader.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/loader/ImageLoader.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -326,16 +326,16 @@
</span><span class="cx"> // We don't return style generated image because it doesn't belong to the ImageLoader.
</span><span class="cx"> // See <https://bugs.webkit.org/show_bug.cgi?id=42840>
</span><span class="cx"> if (renderer->isImage() && !toRenderImage(*renderer).isGeneratedContent())
</span><del>- return toRenderImage(*renderer).imageResource();
</del><ins>+ return &toRenderImage(*renderer).imageResource();
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(SVG)
</span><span class="cx"> if (renderer->isSVGImage())
</span><del>- return toRenderSVGImage(renderer)->imageResource();
</del><ins>+ return &toRenderSVGImage(renderer)->imageResource();
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if ENABLE(VIDEO)
</span><span class="cx"> if (renderer->isVideo())
</span><del>- return toRenderVideo(*renderer).imageResource();
</del><ins>+ return &toRenderVideo(*renderer).imageResource();
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderElement.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderElement.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/rendering/RenderElement.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -131,12 +131,10 @@
</span><span class="cx"> // Otherwise acts as if we didn't support this feature.
</span><span class="cx"> const ContentData* contentData = style.get().contentData();
</span><span class="cx"> if (contentData && !contentData->next() && contentData->isImage() && !element.isPseudoElement()) {
</span><del>- auto image = createRenderer<RenderImage>(element, std::move(style));
- if (const StyleImage* styleImage = static_cast<const ImageContentData*>(contentData)->image()) {
- image->setImageResource(RenderImageResourceStyleImage::create(const_cast<StyleImage&>(*styleImage)));
</del><ins>+ auto styleImage = const_cast<StyleImage*>(static_cast<const ImageContentData*>(contentData)->image());
+ auto image = createRenderer<RenderImage>(element, std::move(style), styleImage);
+ if (styleImage)
</ins><span class="cx"> image->setIsGeneratedContent();
</span><del>- } else
- image->setImageResource(RenderImageResource::create());
</del><span class="cx"> return std::move(image);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderImage.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderImage.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/rendering/RenderImage.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -44,6 +44,7 @@
</span><span class="cx"> #include "InlineElementBox.h"
</span><span class="cx"> #include "Page.h"
</span><span class="cx"> #include "PaintInfo.h"
</span><ins>+#include "RenderImageResourceStyleImage.h"
</ins><span class="cx"> #include "RenderView.h"
</span><span class="cx"> #include "SVGImage.h"
</span><span class="cx"> #include <wtf/StackStats.h>
</span><span class="lines">@@ -115,27 +116,30 @@
</span><span class="cx">
</span><span class="cx"> using namespace HTMLNames;
</span><span class="cx">
</span><del>-RenderImage::RenderImage(Element& element, PassRef<RenderStyle> style)
</del><ins>+RenderImage::RenderImage(Element& element, PassRef<RenderStyle> style, StyleImage* styleImage)
</ins><span class="cx"> : RenderReplaced(element, std::move(style), IntSize())
</span><ins>+ , m_imageResource(styleImage ? std::make_unique<RenderImageResourceStyleImage>(*styleImage) : std::make_unique<RenderImageResource>())
</ins><span class="cx"> , m_needsToSetSizeForAltText(false)
</span><span class="cx"> , m_didIncrementVisuallyNonEmptyPixelCount(false)
</span><span class="cx"> , m_isGeneratedContent(false)
</span><span class="cx"> {
</span><span class="cx"> updateAltText();
</span><ins>+ imageResource().initialize(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-RenderImage::RenderImage(Document& document, PassRef<RenderStyle> style)
</del><ins>+RenderImage::RenderImage(Document& document, PassRef<RenderStyle> style, StyleImage* styleImage)
</ins><span class="cx"> : RenderReplaced(document, std::move(style), IntSize())
</span><ins>+ , m_imageResource(styleImage ? std::make_unique<RenderImageResourceStyleImage>(*styleImage) : std::make_unique<RenderImageResource>())
</ins><span class="cx"> , m_needsToSetSizeForAltText(false)
</span><span class="cx"> , m_didIncrementVisuallyNonEmptyPixelCount(false)
</span><span class="cx"> , m_isGeneratedContent(false)
</span><span class="cx"> {
</span><ins>+ imageResource().initialize(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> RenderImage::~RenderImage()
</span><span class="cx"> {
</span><del>- ASSERT(m_imageResource);
- m_imageResource->shutdown();
</del><ins>+ imageResource().shutdown();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> PassRef<RenderStyle> RenderImage::createStyleInheritingFromPseudoStyle(const RenderStyle& pseudoStyle)
</span><span class="lines">@@ -150,13 +154,6 @@
</span><span class="cx"> return style;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void RenderImage::setImageResource(PassOwnPtr<RenderImageResource> imageResource)
-{
- ASSERT(!m_imageResource);
- m_imageResource = imageResource;
- m_imageResource->initialize(this);
-}
-
</del><span class="cx"> // If we'll be displaying either alt text or an image, add some padding.
</span><span class="cx"> static const unsigned short paddingWidth = 4;
</span><span class="cx"> static const unsigned short paddingHeight = 4;
</span><span class="lines">@@ -217,7 +214,7 @@
</span><span class="cx"> {
</span><span class="cx"> RenderReplaced::styleDidChange(diff, oldStyle);
</span><span class="cx"> if (m_needsToSetSizeForAltText) {
</span><del>- if (!m_altText.isEmpty() && setImageSizeForAltText(m_imageResource->cachedImage()))
</del><ins>+ if (!m_altText.isEmpty() && setImageSizeForAltText(imageResource().cachedImage()))
</ins><span class="cx"> imageDimensionsChanged(true /* imageSizeChanged */);
</span><span class="cx"> m_needsToSetSizeForAltText = false;
</span><span class="cx"> }
</span><span class="lines">@@ -246,22 +243,19 @@
</span><span class="cx"> if (hasBoxDecorations() || hasMask())
</span><span class="cx"> RenderReplaced::imageChanged(newImage, rect);
</span><span class="cx">
</span><del>- if (!m_imageResource)
</del><ins>+ if (newImage != imageResource().imagePtr() || !newImage)
</ins><span class="cx"> return;
</span><del>-
- if (newImage != m_imageResource->imagePtr() || !newImage)
- return;
</del><span class="cx">
</span><span class="cx"> if (!m_didIncrementVisuallyNonEmptyPixelCount) {
</span><span class="cx"> // At a zoom level of 1 the image is guaranteed to have an integer size.
</span><del>- view().frameView().incrementVisuallyNonEmptyPixelCount(flooredIntSize(m_imageResource->imageSize(1.0f)));
</del><ins>+ view().frameView().incrementVisuallyNonEmptyPixelCount(flooredIntSize(imageResource().imageSize(1.0f)));
</ins><span class="cx"> m_didIncrementVisuallyNonEmptyPixelCount = true;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool imageSizeChanged = false;
</span><span class="cx">
</span><span class="cx"> // Set image dimensions, taking into account the size of the alt text.
</span><del>- if (m_imageResource->errorOccurred()) {
</del><ins>+ if (imageResource().errorOccurred()) {
</ins><span class="cx"> if (!m_altText.isEmpty() && document().hasPendingStyleRecalc()) {
</span><span class="cx"> ASSERT(element());
</span><span class="cx"> if (element()) {
</span><span class="lines">@@ -270,7 +264,7 @@
</span><span class="cx"> }
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- imageSizeChanged = setImageSizeForAltText(m_imageResource->cachedImage());
</del><ins>+ imageSizeChanged = setImageSizeForAltText(imageResource().cachedImage());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> imageDimensionsChanged(imageSizeChanged, rect);
</span><span class="lines">@@ -280,7 +274,7 @@
</span><span class="cx"> {
</span><span class="cx"> if (newSize == intrinsicSize() && !imageSizeChanged)
</span><span class="cx"> return false;
</span><del>- if (m_imageResource->errorOccurred())
</del><ins>+ if (imageResource().errorOccurred())
</ins><span class="cx"> return imageSizeChanged;
</span><span class="cx"> setIntrinsicSize(newSize);
</span><span class="cx"> return true;
</span><span class="lines">@@ -292,7 +286,7 @@
</span><span class="cx"> LayoutRect paintRect = replacedContentRect(intrinsicSize());
</span><span class="cx"> IntSize containerSize(paintRect.width(), paintRect.height());
</span><span class="cx"> if (!containerSize.isEmpty())
</span><del>- m_imageResource->setContainerSizeForRenderer(containerSize);
</del><ins>+ imageResource().setContainerSizeForRenderer(containerSize);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RenderImage::imageDimensionsChanged(bool imageSizeChanged, const IntRect* rect)
</span><span class="lines">@@ -303,9 +297,9 @@
</span><span class="cx"> scale = roundForImpreciseConversion<int>(scale);
</span><span class="cx"> if (scale <= 0)
</span><span class="cx"> scale = 1;
</span><del>- bool intrinsicSizeChanged = updateIntrinsicSizeIfNeeded(m_imageResource->intrinsicSize(style().effectiveZoom() / scale), imageSizeChanged);
</del><ins>+ bool intrinsicSizeChanged = updateIntrinsicSizeIfNeeded(imageResource().intrinsicSize(style().effectiveZoom() / scale), imageSizeChanged);
</ins><span class="cx"> #else
</span><del>- bool intrinsicSizeChanged = updateIntrinsicSizeIfNeeded(m_imageResource->intrinsicSize(style().effectiveZoom()), imageSizeChanged);
</del><ins>+ bool intrinsicSizeChanged = updateIntrinsicSizeIfNeeded(imageResource().intrinsicSize(style().effectiveZoom()), imageSizeChanged);
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> // In the case of generated image content using :before/:after/content, we might not be
</span><span class="lines">@@ -362,7 +356,7 @@
</span><span class="cx"> if (rect) {
</span><span class="cx"> // The image changed rect is in source image coordinates (pre-zooming),
</span><span class="cx"> // so map from the bounds of the image to the contentsBox.
</span><del>- repaintRect = enclosingIntRect(mapRect(*rect, FloatRect(FloatPoint(), m_imageResource->imageSize(1.0f)), contentBoxRect()));
</del><ins>+ repaintRect = enclosingIntRect(mapRect(*rect, FloatRect(FloatPoint(), imageResource().imageSize(1.0f)), contentBoxRect()));
</ins><span class="cx"> // Guard against too-large changed rects.
</span><span class="cx"> repaintRect.intersect(contentBoxRect());
</span><span class="cx"> } else
</span><span class="lines">@@ -379,16 +373,13 @@
</span><span class="cx">
</span><span class="cx"> void RenderImage::notifyFinished(CachedResource* newImage)
</span><span class="cx"> {
</span><del>- if (!m_imageResource)
- return;
-
</del><span class="cx"> if (documentBeingDestroyed())
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> invalidateBackgroundObscurationStatus();
</span><span class="cx">
</span><span class="cx"> #if USE(ACCELERATED_COMPOSITING)
</span><del>- if (newImage == m_imageResource->cachedImage()) {
</del><ins>+ if (newImage == imageResource().cachedImage()) {
</ins><span class="cx"> // tell any potential compositing layers
</span><span class="cx"> // that the image is done and they can reference it directly.
</span><span class="cx"> contentChanged(ImageChanged);
</span><span class="lines">@@ -411,7 +402,7 @@
</span><span class="cx">
</span><span class="cx"> Page* page = frame().page();
</span><span class="cx">
</span><del>- if (!m_imageResource->hasImage() || m_imageResource->errorOccurred()) {
</del><ins>+ if (!imageResource().hasImage() || imageResource().errorOccurred()) {
</ins><span class="cx"> if (paintInfo.phase == PaintPhaseSelection)
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="lines">@@ -434,12 +425,12 @@
</span><span class="cx"> LayoutUnit usableWidth = cWidth - 2 * borderWidth;
</span><span class="cx"> LayoutUnit usableHeight = cHeight - 2 * borderWidth;
</span><span class="cx">
</span><del>- RefPtr<Image> image = m_imageResource->image();
</del><ins>+ RefPtr<Image> image = imageResource().image();
</ins><span class="cx">
</span><del>- if (m_imageResource->errorOccurred() && !image->isNull() && usableWidth >= image->width() && usableHeight >= image->height()) {
</del><ins>+ if (imageResource().errorOccurred() && !image->isNull() && usableWidth >= image->width() && usableHeight >= image->height()) {
</ins><span class="cx"> float deviceScaleFactor = WebCore::deviceScaleFactor(&frame());
</span><span class="cx"> // Call brokenImage() explicitly to ensure we get the broken image icon at the appropriate resolution.
</span><del>- std::pair<Image*, float> brokenImageAndImageScaleFactor = m_imageResource->cachedImage()->brokenImage(deviceScaleFactor);
</del><ins>+ std::pair<Image*, float> brokenImageAndImageScaleFactor = imageResource().cachedImage()->brokenImage(deviceScaleFactor);
</ins><span class="cx"> image = brokenImageAndImageScaleFactor.first;
</span><span class="cx"> IntSize imageSize = image->size();
</span><span class="cx"> imageSize.scale(1 / brokenImageAndImageScaleFactor.second);
</span><span class="lines">@@ -480,8 +471,8 @@
</span><span class="cx"> context->drawText(font, textRun, altTextOffset);
</span><span class="cx"> }
</span><span class="cx"> }
</span><del>- } else if (m_imageResource->hasImage() && cWidth > 0 && cHeight > 0) {
- RefPtr<Image> img = m_imageResource->image(cWidth, cHeight);
</del><ins>+ } else if (imageResource().hasImage() && cWidth > 0 && cHeight > 0) {
+ RefPtr<Image> img = imageResource().image(cWidth, cHeight);
</ins><span class="cx"> if (!img || img->isNull()) {
</span><span class="cx"> if (page && paintInfo.phase == PaintPhaseForeground)
</span><span class="cx"> page->addRelevantUnpaintedObject(this, visualOverflowRect());
</span><span class="lines">@@ -576,22 +567,22 @@
</span><span class="cx"> void RenderImage::paintIntoRect(GraphicsContext* context, const LayoutRect& rect)
</span><span class="cx"> {
</span><span class="cx"> IntRect alignedRect = pixelSnappedIntRect(rect);
</span><del>- if (!m_imageResource->hasImage() || m_imageResource->errorOccurred() || alignedRect.width() <= 0 || alignedRect.height() <= 0)
</del><ins>+ if (!imageResource().hasImage() || imageResource().errorOccurred() || alignedRect.width() <= 0 || alignedRect.height() <= 0)
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- RefPtr<Image> img = m_imageResource->image(alignedRect.width(), alignedRect.height());
</del><ins>+ RefPtr<Image> img = imageResource().image(alignedRect.width(), alignedRect.height());
</ins><span class="cx"> if (!img || img->isNull())
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> HTMLImageElement* imageElt = (element() && isHTMLImageElement(element())) ? toHTMLImageElement(element()) : 0;
</span><span class="cx"> CompositeOperator compositeOperator = imageElt ? imageElt->compositeOperator() : CompositeSourceOver;
</span><del>- Image* image = m_imageResource->image().get();
</del><ins>+ Image* image = imageResource().image().get();
</ins><span class="cx"> bool useLowQualityScaling = shouldPaintAtLowQuality(context, image, image, alignedRect.size());
</span><span class="cx"> ImageOrientationDescription orientationDescription(shouldRespectImageOrientation());
</span><span class="cx"> #if ENABLE(CSS_IMAGE_ORIENTATION)
</span><span class="cx"> orientationDescription.setImageOrientationEnum(style().imageOrientation());
</span><span class="cx"> #endif
</span><del>- context->drawImage(m_imageResource->image(alignedRect.width(), alignedRect.height()).get(), style().colorSpace(), alignedRect, compositeOperator, orientationDescription, useLowQualityScaling);
</del><ins>+ context->drawImage(imageResource().image(alignedRect.width(), alignedRect.height()).get(), style().colorSpace(), alignedRect, compositeOperator, orientationDescription, useLowQualityScaling);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool RenderImage::boxShadowShouldBeAppliedToBackground(BackgroundBleedAvoidance bleedAvoidance, InlineFlowBox*) const
</span><span class="lines">@@ -605,9 +596,9 @@
</span><span class="cx"> bool RenderImage::foregroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect, unsigned maxDepthToTest) const
</span><span class="cx"> {
</span><span class="cx"> UNUSED_PARAM(maxDepthToTest);
</span><del>- if (!m_imageResource->hasImage() || m_imageResource->errorOccurred())
</del><ins>+ if (!imageResource().hasImage() || imageResource().errorOccurred())
</ins><span class="cx"> return false;
</span><del>- if (m_imageResource->cachedImage() && !m_imageResource->cachedImage()->isLoaded())
</del><ins>+ if (imageResource().cachedImage() && !imageResource().cachedImage()->isLoaded())
</ins><span class="cx"> return false;
</span><span class="cx"> if (!contentBoxRect().contains(localRect))
</span><span class="cx"> return false;
</span><span class="lines">@@ -623,7 +614,7 @@
</span><span class="cx"> if (objectFit != ObjectFitFill && objectFit != ObjectFitCover)
</span><span class="cx"> return false;
</span><span class="cx"> // Check for image with alpha.
</span><del>- return m_imageResource->cachedImage() && m_imageResource->cachedImage()->currentFrameKnownToBeOpaque(this);
</del><ins>+ return imageResource().cachedImage() && imageResource().cachedImage()->currentFrameKnownToBeOpaque(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool RenderImage::computeBackgroundIsKnownToBeObscured()
</span><span class="lines">@@ -639,7 +630,7 @@
</span><span class="cx">
</span><span class="cx"> LayoutUnit RenderImage::minimumReplacedHeight() const
</span><span class="cx"> {
</span><del>- return m_imageResource->errorOccurred() ? intrinsicSize().height() : LayoutUnit();
</del><ins>+ return imageResource().errorOccurred() ? intrinsicSize().height() : LayoutUnit();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> HTMLMapElement* RenderImage::imageMap() const
</span><span class="lines">@@ -695,7 +686,7 @@
</span><span class="cx"> RenderReplaced::computeIntrinsicRatioInformation(intrinsicSize, intrinsicRatio, isPercentageIntrinsicSize);
</span><span class="cx">
</span><span class="cx"> // Our intrinsicSize is empty if we're rendering generated images with relative width/height. Figure out the right intrinsic size to use.
</span><del>- if (intrinsicSize.isEmpty() && (m_imageResource->imageHasRelativeWidth() || m_imageResource->imageHasRelativeHeight())) {
</del><ins>+ if (intrinsicSize.isEmpty() && (imageResource().imageHasRelativeWidth() || imageResource().imageHasRelativeHeight())) {
</ins><span class="cx"> RenderObject* containingBlock = isOutOfFlowPositioned() ? container() : this->containingBlock();
</span><span class="cx"> if (containingBlock->isBox()) {
</span><span class="cx"> RenderBox* box = toRenderBox(containingBlock);
</span><span class="lines">@@ -704,7 +695,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> // Don't compute an intrinsic ratio to preserve historical WebKit behavior if we're painting alt text and/or a broken image.
</span><del>- if (m_imageResource && m_imageResource->errorOccurred()) {
</del><ins>+ if (imageResource().errorOccurred()) {
</ins><span class="cx"> intrinsicRatio = 1;
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="lines">@@ -719,11 +710,8 @@
</span><span class="cx">
</span><span class="cx"> RenderBox* RenderImage::embeddedContentBox() const
</span><span class="cx"> {
</span><del>- if (!m_imageResource)
- return 0;
-
</del><span class="cx"> #if ENABLE(SVG)
</span><del>- CachedImage* cachedImage = m_imageResource->cachedImage();
</del><ins>+ CachedImage* cachedImage = imageResource().cachedImage();
</ins><span class="cx"> if (cachedImage && cachedImage->image() && cachedImage->image()->isSVGImage())
</span><span class="cx"> return static_cast<SVGImage*>(cachedImage->image())->embeddedContentBox();
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderImage.h (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderImage.h        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/rendering/RenderImage.h        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -35,19 +35,17 @@
</span><span class="cx">
</span><span class="cx"> class RenderImage : public RenderReplaced {
</span><span class="cx"> public:
</span><del>- explicit RenderImage(Element&, PassRef<RenderStyle>);
- explicit RenderImage(Document&, PassRef<RenderStyle>);
</del><ins>+ RenderImage(Element&, PassRef<RenderStyle>, StyleImage* = nullptr);
+ RenderImage(Document&, PassRef<RenderStyle>, StyleImage* = nullptr);
</ins><span class="cx"> virtual ~RenderImage();
</span><span class="cx">
</span><span class="cx"> // Create a RenderStyle for generated content by inheriting from a pseudo style.
</span><span class="cx"> static PassRef<RenderStyle> createStyleInheritingFromPseudoStyle(const RenderStyle&);
</span><span class="cx">
</span><del>- void setImageResource(PassOwnPtr<RenderImageResource>);
</del><ins>+ RenderImageResource& imageResource() { return *m_imageResource; }
+ const RenderImageResource& imageResource() const { return *m_imageResource; }
+ CachedImage* cachedImage() const { return imageResource().cachedImage(); }
</ins><span class="cx">
</span><del>- RenderImageResource* imageResource() { return m_imageResource.get(); }
- const RenderImageResource* imageResource() const { return m_imageResource.get(); }
- CachedImage* cachedImage() const { return m_imageResource ? m_imageResource->cachedImage() : 0; }
-
</del><span class="cx"> bool setImageSizeForAltText(CachedImage* newImage = 0);
</span><span class="cx">
</span><span class="cx"> void updateAltText();
</span><span class="lines">@@ -84,8 +82,7 @@
</span><span class="cx">
</span><span class="cx"> virtual void intrinsicSizeChanged() override
</span><span class="cx"> {
</span><del>- if (m_imageResource)
- imageChanged(m_imageResource->imagePtr());
</del><ins>+ imageChanged(imageResource().imagePtr());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="lines">@@ -115,7 +112,7 @@
</span><span class="cx">
</span><span class="cx"> // Text to display as long as the image isn't available.
</span><span class="cx"> String m_altText;
</span><del>- OwnPtr<RenderImageResource> m_imageResource;
</del><ins>+ std::unique_ptr<RenderImageResource> m_imageResource;
</ins><span class="cx"> bool m_needsToSetSizeForAltText;
</span><span class="cx"> bool m_didIncrementVisuallyNonEmptyPixelCount;
</span><span class="cx"> bool m_isGeneratedContent;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderImageResourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderImageResource.h (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderImageResource.h        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/rendering/RenderImageResource.h        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -38,13 +38,9 @@
</span><span class="cx"> class RenderImageResource {
</span><span class="cx"> WTF_MAKE_NONCOPYABLE(RenderImageResource); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><ins>+ RenderImageResource();
</ins><span class="cx"> virtual ~RenderImageResource();
</span><span class="cx">
</span><del>- static PassOwnPtr<RenderImageResource> create()
- {
- return adoptPtr(new RenderImageResource);
- }
-
</del><span class="cx"> virtual void initialize(RenderElement*);
</span><span class="cx"> virtual void shutdown();
</span><span class="cx">
</span><span class="lines">@@ -67,8 +63,6 @@
</span><span class="cx"> virtual WrappedImagePtr imagePtr() const { return m_cachedImage.get(); }
</span><span class="cx">
</span><span class="cx"> protected:
</span><del>- RenderImageResource();
-
</del><span class="cx"> RenderElement* m_renderer;
</span><span class="cx"> CachedResourceHandle<CachedImage> m_cachedImage;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderImageResourceStyleImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderImageResourceStyleImage.h (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderImageResourceStyleImage.h        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/rendering/RenderImageResourceStyleImage.h        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -34,15 +34,11 @@
</span><span class="cx">
</span><span class="cx"> class RenderElement;
</span><span class="cx">
</span><del>-class RenderImageResourceStyleImage : public RenderImageResource {
</del><ins>+class RenderImageResourceStyleImage final : public RenderImageResource {
</ins><span class="cx"> public:
</span><ins>+ explicit RenderImageResourceStyleImage(StyleImage&);
</ins><span class="cx"> virtual ~RenderImageResourceStyleImage();
</span><span class="cx">
</span><del>- static PassOwnPtr<RenderImageResource> create(StyleImage& styleImage)
- {
- return adoptPtr(new RenderImageResourceStyleImage(styleImage));
- }
-
</del><span class="cx"> private:
</span><span class="cx"> virtual void initialize(RenderElement*) override;
</span><span class="cx"> virtual void shutdown() override;
</span><span class="lines">@@ -60,7 +56,6 @@
</span><span class="cx">
</span><span class="cx"> virtual WrappedImagePtr imagePtr() const override { return m_styleImage->data(); }
</span><span class="cx">
</span><del>- explicit RenderImageResourceStyleImage(StyleImage&);
</del><span class="cx"> Ref<StyleImage> m_styleImage;
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMediacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMedia.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMedia.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/rendering/RenderMedia.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -37,13 +37,11 @@
</span><span class="cx"> RenderMedia::RenderMedia(HTMLMediaElement& element, PassRef<RenderStyle> style)
</span><span class="cx"> : RenderImage(element, std::move(style))
</span><span class="cx"> {
</span><del>- setImageResource(RenderImageResource::create());
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> RenderMedia::RenderMedia(HTMLMediaElement& element, PassRef<RenderStyle> style, const IntSize& intrinsicSize)
</span><span class="cx"> : RenderImage(element, std::move(style))
</span><span class="cx"> {
</span><del>- setImageResource(RenderImageResource::create());
</del><span class="cx"> setIntrinsicSize(intrinsicSize);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderSnapshottedPlugIncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">
</span><span class="cx"> RenderSnapshottedPlugIn::RenderSnapshottedPlugIn(HTMLPlugInImageElement& element, PassRef<RenderStyle> style)
</span><span class="cx"> : RenderEmbeddedObject(element, std::move(style))
</span><del>- , m_snapshotResource(RenderImageResource::create())
</del><ins>+ , m_snapshotResource(std::make_unique<RenderImageResource>())
</ins><span class="cx"> , m_isPotentialMouseActivation(false)
</span><span class="cx"> {
</span><span class="cx"> m_snapshotResource->initialize(this);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderSnapshottedPlugInh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.h (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.h        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.h        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx">
</span><span class="cx"> virtual void layout() override;
</span><span class="cx">
</span><del>- OwnPtr<RenderImageResource> m_snapshotResource;
</del><ins>+ std::unique_ptr<RenderImageResource> m_snapshotResource;
</ins><span class="cx"> bool m_isPotentialMouseActivation;
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderVideocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderVideo.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderVideo.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/rendering/RenderVideo.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx"> return size;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (videoElement().shouldDisplayPosterImage() && !m_cachedImageSize.isEmpty() && !imageResource()->errorOccurred())
</del><ins>+ if (videoElement().shouldDisplayPosterImage() && !m_cachedImageSize.isEmpty() && !imageResource().errorOccurred())
</ins><span class="cx"> return m_cachedImageSize;
</span><span class="cx">
</span><span class="cx"> // <video> in standalone media documents should not use the default 300x150
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleContentDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/ContentData.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/ContentData.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/rendering/style/ContentData.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -49,13 +49,9 @@
</span><span class="cx">
</span><span class="cx"> RenderPtr<RenderObject> ImageContentData::createContentRenderer(Document& document, const RenderStyle& pseudoStyle) const
</span><span class="cx"> {
</span><del>- auto image = createRenderer<RenderImage>(document, RenderImage::createStyleInheritingFromPseudoStyle(pseudoStyle));
</del><ins>+ auto image = createRenderer<RenderImage>(document, RenderImage::createStyleInheritingFromPseudoStyle(pseudoStyle), m_image.get());
</ins><span class="cx"> image->initializeStyle();
</span><span class="cx"> image->setAltText(altText());
</span><del>- if (m_image)
- image->setImageResource(RenderImageResourceStyleImage::create(*m_image));
- else
- image->setImageResource(RenderImageResource::create());
</del><span class="cx"> return std::move(image);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -49,14 +49,14 @@
</span><span class="cx"> : RenderSVGModelObject(element, std::move(style))
</span><span class="cx"> , m_needsBoundariesUpdate(true)
</span><span class="cx"> , m_needsTransformUpdate(true)
</span><del>- , m_imageResource(RenderImageResource::create())
</del><ins>+ , m_imageResource(std::make_unique<RenderImageResource>())
</ins><span class="cx"> {
</span><del>- m_imageResource->initialize(this);
</del><ins>+ imageResource().initialize(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> RenderSVGImage::~RenderSVGImage()
</span><span class="cx"> {
</span><del>- m_imageResource->shutdown();
</del><ins>+ imageResource().shutdown();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> SVGImageElement& RenderSVGImage::imageElement() const
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx"> if (oldBoundaries == m_objectBoundingBox)
</span><span class="cx"> return false;
</span><span class="cx">
</span><del>- m_imageResource->setContainerSizeForRenderer(enclosingIntRect(m_objectBoundingBox).size());
</del><ins>+ imageResource().setContainerSizeForRenderer(enclosingIntRect(m_objectBoundingBox).size());
</ins><span class="cx"> m_needsBoundariesUpdate = true;
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx">
</span><span class="cx"> void RenderSVGImage::paint(PaintInfo& paintInfo, const LayoutPoint&)
</span><span class="cx"> {
</span><del>- if (paintInfo.context->paintingDisabled() || style().visibility() == HIDDEN || !m_imageResource->hasImage())
</del><ins>+ if (paintInfo.context->paintingDisabled() || style().visibility() == HIDDEN || !imageResource().hasImage())
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> FloatRect boundingBox = repaintRectInLocalCoordinates();
</span><span class="lines">@@ -148,7 +148,7 @@
</span><span class="cx">
</span><span class="cx"> void RenderSVGImage::paintForeground(PaintInfo& paintInfo)
</span><span class="cx"> {
</span><del>- RefPtr<Image> image = m_imageResource->image();
</del><ins>+ RefPtr<Image> image = imageResource().image();
</ins><span class="cx"> FloatRect destRect = m_objectBoundingBox;
</span><span class="cx"> FloatRect srcRect(0, 0, image->width(), image->height());
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGImage.h (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGImage.h        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGImage.h        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -47,8 +47,8 @@
</span><span class="cx"> virtual bool needsBoundariesUpdate() override { return m_needsBoundariesUpdate; }
</span><span class="cx"> virtual void setNeedsTransformUpdate() { m_needsTransformUpdate = true; }
</span><span class="cx">
</span><del>- RenderImageResource* imageResource() { return m_imageResource.get(); }
- const RenderImageResource* imageResource() const { return m_imageResource.get(); }
</del><ins>+ RenderImageResource& imageResource() { return *m_imageResource; }
+ const RenderImageResource& imageResource() const { return *m_imageResource; }
</ins><span class="cx">
</span><span class="cx"> // Note: Assumes the PaintInfo context has had all local transforms applied.
</span><span class="cx"> void paintForeground(PaintInfo&);
</span><span class="lines">@@ -87,8 +87,7 @@
</span><span class="cx"> FloatRect m_objectBoundingBox;
</span><span class="cx"> FloatRect m_repaintBoundingBox;
</span><span class="cx"> FloatRect m_repaintBoundingBoxExcludingShadow;
</span><del>- OwnPtr<RenderImageResource> m_imageResource;
-
</del><ins>+ std::unique_ptr<RenderImageResource> m_imageResource;
</ins><span class="cx"> std::unique_ptr<ImageBuffer> m_bufferedForeground;
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGImageElement.cpp (162355 => 162356)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGImageElement.cpp        2014-01-20 17:25:38 UTC (rev 162355)
+++ trunk/Source/WebCore/svg/SVGImageElement.cpp        2014-01-20 17:27:08 UTC (rev 162356)
</span><span class="lines">@@ -195,10 +195,10 @@
</span><span class="cx"> void SVGImageElement::didAttachRenderers()
</span><span class="cx"> {
</span><span class="cx"> if (RenderSVGImage* imageObj = toRenderSVGImage(renderer())) {
</span><del>- if (imageObj->imageResource()->hasImage())
</del><ins>+ if (imageObj->imageResource().hasImage())
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- imageObj->imageResource()->setCachedImage(m_imageLoader.image());
</del><ins>+ imageObj->imageResource().setCachedImage(m_imageLoader.image());
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>