<!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.
&lt;https://webkit.org/b/127290&gt;

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  &lt;akling@apple.com&gt;
+
+        Let RenderImage construct its RenderImageResource.
+        &lt;https://webkit.org/b/127290&gt;
+
+        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  &lt;antti@apple.com&gt;
</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&lt;RenderImage&gt;(*this, std::move(style));
-    image-&gt;setImageResource(RenderImageResource::create());
-    return std::move(image);
</del><ins>+    return createRenderer&lt;RenderImage&gt;(*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-&gt;imageResource();
-    if (renderImageResource-&gt;hasImage())
</del><ins>+    RenderImageResource&amp; renderImageResource = renderImage-&gt;imageResource();
+    if (renderImageResource.hasImage())
</ins><span class="cx">         return;
</span><del>-    renderImageResource-&gt;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() &amp;&amp; !renderImageResource-&gt;cachedImage())
</del><ins>+    if (!m_imageLoader.image() &amp;&amp; !renderImageResource.cachedImage())
</ins><span class="cx">         renderImage-&gt;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&lt;RenderImage&gt;(*this, std::move(style));
-        image-&gt;setImageResource(RenderImageResource::create());
-        return std::move(image);
-    }
</del><ins>+    if (isImageType())
+        return createRenderer&lt;RenderImage&gt;(*this, std::move(style));
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     if (ShadowRoot* shadowRoot = this-&gt;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-&gt;updateFromElement();
</span><span class="cx">             if (renderer())
</span><del>-                toRenderImage(renderer())-&gt;imageResource()-&gt;setCachedImage(m_imageLoader-&gt;image()); 
</del><ins>+                toRenderImage(renderer())-&gt;imageResource().setCachedImage(m_imageLoader-&gt;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-&gt;updateFromElementIgnoringPreviousError();
</span><span class="cx">         } else {
</span><span class="cx">             if (renderer())
</span><del>-                toRenderImage(renderer())-&gt;imageResource()-&gt;setCachedImage(0); 
</del><ins>+                toRenderImage(renderer())-&gt;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&lt;RenderElement&gt; ImageInputType::createInputRenderer(PassRef&lt;RenderStyle&gt; style)
</span><span class="cx"> {
</span><del>-    auto image = createRenderer&lt;RenderImage&gt;(element(), std::move(style));
-    image-&gt;setImageResource(RenderImageResource::create());
-    return std::move(image);
</del><ins>+    return createRenderer&lt;RenderImage&gt;(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-&gt;hasPendingBeforeLoadEvent())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RenderImageResource* imageResource = renderer-&gt;imageResource();
-    imageResource-&gt;setCachedImage(imageLoader-&gt;image()); 
</del><ins>+    auto&amp; imageResource = renderer-&gt;imageResource();
+    imageResource.setCachedImage(imageLoader-&gt;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-&gt;image() &amp;&amp; !imageResource-&gt;cachedImage())
</del><ins>+    if (!imageLoader-&gt;image() &amp;&amp; !imageResource.cachedImage())
</ins><span class="cx">         renderer-&gt;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 &lt;https://bugs.webkit.org/show_bug.cgi?id=42840&gt;
</span><span class="cx">     if (renderer-&gt;isImage() &amp;&amp; !toRenderImage(*renderer).isGeneratedContent())
</span><del>-        return toRenderImage(*renderer).imageResource();
</del><ins>+        return &amp;toRenderImage(*renderer).imageResource();
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(SVG)
</span><span class="cx">     if (renderer-&gt;isSVGImage())
</span><del>-        return toRenderSVGImage(renderer)-&gt;imageResource();
</del><ins>+        return &amp;toRenderSVGImage(renderer)-&gt;imageResource();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO)
</span><span class="cx">     if (renderer-&gt;isVideo())
</span><del>-        return toRenderVideo(*renderer).imageResource();
</del><ins>+        return &amp;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 &amp;&amp; !contentData-&gt;next() &amp;&amp; contentData-&gt;isImage() &amp;&amp; !element.isPseudoElement()) {
</span><del>-        auto image = createRenderer&lt;RenderImage&gt;(element, std::move(style));
-        if (const StyleImage* styleImage = static_cast&lt;const ImageContentData*&gt;(contentData)-&gt;image()) {
-            image-&gt;setImageResource(RenderImageResourceStyleImage::create(const_cast&lt;StyleImage&amp;&gt;(*styleImage)));
</del><ins>+        auto styleImage = const_cast&lt;StyleImage*&gt;(static_cast&lt;const ImageContentData*&gt;(contentData)-&gt;image());
+        auto image = createRenderer&lt;RenderImage&gt;(element, std::move(style), styleImage);
+        if (styleImage)
</ins><span class="cx">             image-&gt;setIsGeneratedContent();
</span><del>-        } else
-            image-&gt;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 &quot;InlineElementBox.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;PaintInfo.h&quot;
</span><ins>+#include &quot;RenderImageResourceStyleImage.h&quot;
</ins><span class="cx"> #include &quot;RenderView.h&quot;
</span><span class="cx"> #include &quot;SVGImage.h&quot;
</span><span class="cx"> #include &lt;wtf/StackStats.h&gt;
</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&amp; element, PassRef&lt;RenderStyle&gt; style)
</del><ins>+RenderImage::RenderImage(Element&amp; element, PassRef&lt;RenderStyle&gt; style, StyleImage* styleImage)
</ins><span class="cx">     : RenderReplaced(element, std::move(style), IntSize())
</span><ins>+    , m_imageResource(styleImage ? std::make_unique&lt;RenderImageResourceStyleImage&gt;(*styleImage) : std::make_unique&lt;RenderImageResource&gt;())
</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&amp; document, PassRef&lt;RenderStyle&gt; style)
</del><ins>+RenderImage::RenderImage(Document&amp; document, PassRef&lt;RenderStyle&gt; style, StyleImage* styleImage)
</ins><span class="cx">     : RenderReplaced(document, std::move(style), IntSize())
</span><ins>+    , m_imageResource(styleImage ? std::make_unique&lt;RenderImageResourceStyleImage&gt;(*styleImage) : std::make_unique&lt;RenderImageResource&gt;())
</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-&gt;shutdown();
</del><ins>+    imageResource().shutdown();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRef&lt;RenderStyle&gt; RenderImage::createStyleInheritingFromPseudoStyle(const RenderStyle&amp; 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&lt;RenderImageResource&gt; imageResource)
-{
-    ASSERT(!m_imageResource);
-    m_imageResource = imageResource;
-    m_imageResource-&gt;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() &amp;&amp; setImageSizeForAltText(m_imageResource-&gt;cachedImage()))
</del><ins>+        if (!m_altText.isEmpty() &amp;&amp; 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-&gt;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-&gt;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-&gt;errorOccurred()) {
</del><ins>+    if (imageResource().errorOccurred()) {
</ins><span class="cx">         if (!m_altText.isEmpty() &amp;&amp; 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-&gt;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() &amp;&amp; !imageSizeChanged)
</span><span class="cx">         return false;
</span><del>-    if (m_imageResource-&gt;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-&gt;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&lt;int&gt;(scale);
</span><span class="cx">     if (scale &lt;= 0)
</span><span class="cx">         scale = 1;
</span><del>-    bool intrinsicSizeChanged = updateIntrinsicSizeIfNeeded(m_imageResource-&gt;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-&gt;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-&gt;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-&gt;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-&gt;hasImage() || m_imageResource-&gt;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&lt;Image&gt; image = m_imageResource-&gt;image();
</del><ins>+            RefPtr&lt;Image&gt; image = imageResource().image();
</ins><span class="cx"> 
</span><del>-            if (m_imageResource-&gt;errorOccurred() &amp;&amp; !image-&gt;isNull() &amp;&amp; usableWidth &gt;= image-&gt;width() &amp;&amp; usableHeight &gt;= image-&gt;height()) {
</del><ins>+            if (imageResource().errorOccurred() &amp;&amp; !image-&gt;isNull() &amp;&amp; usableWidth &gt;= image-&gt;width() &amp;&amp; usableHeight &gt;= image-&gt;height()) {
</ins><span class="cx">                 float deviceScaleFactor = WebCore::deviceScaleFactor(&amp;frame());
</span><span class="cx">                 // Call brokenImage() explicitly to ensure we get the broken image icon at the appropriate resolution.
</span><del>-                std::pair&lt;Image*, float&gt; brokenImageAndImageScaleFactor = m_imageResource-&gt;cachedImage()-&gt;brokenImage(deviceScaleFactor);
</del><ins>+                std::pair&lt;Image*, float&gt; brokenImageAndImageScaleFactor = imageResource().cachedImage()-&gt;brokenImage(deviceScaleFactor);
</ins><span class="cx">                 image = brokenImageAndImageScaleFactor.first;
</span><span class="cx">                 IntSize imageSize = image-&gt;size();
</span><span class="cx">                 imageSize.scale(1 / brokenImageAndImageScaleFactor.second);
</span><span class="lines">@@ -480,8 +471,8 @@
</span><span class="cx">                     context-&gt;drawText(font, textRun, altTextOffset);
</span><span class="cx">             }
</span><span class="cx">         }
</span><del>-    } else if (m_imageResource-&gt;hasImage() &amp;&amp; cWidth &gt; 0 &amp;&amp; cHeight &gt; 0) {
-        RefPtr&lt;Image&gt; img = m_imageResource-&gt;image(cWidth, cHeight);
</del><ins>+    } else if (imageResource().hasImage() &amp;&amp; cWidth &gt; 0 &amp;&amp; cHeight &gt; 0) {
+        RefPtr&lt;Image&gt; img = imageResource().image(cWidth, cHeight);
</ins><span class="cx">         if (!img || img-&gt;isNull()) {
</span><span class="cx">             if (page &amp;&amp; paintInfo.phase == PaintPhaseForeground)
</span><span class="cx">                 page-&gt;addRelevantUnpaintedObject(this, visualOverflowRect());
</span><span class="lines">@@ -576,22 +567,22 @@
</span><span class="cx"> void RenderImage::paintIntoRect(GraphicsContext* context, const LayoutRect&amp; rect)
</span><span class="cx"> {
</span><span class="cx">     IntRect alignedRect = pixelSnappedIntRect(rect);
</span><del>-    if (!m_imageResource-&gt;hasImage() || m_imageResource-&gt;errorOccurred() || alignedRect.width() &lt;= 0 || alignedRect.height() &lt;= 0)
</del><ins>+    if (!imageResource().hasImage() || imageResource().errorOccurred() || alignedRect.width() &lt;= 0 || alignedRect.height() &lt;= 0)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;Image&gt; img = m_imageResource-&gt;image(alignedRect.width(), alignedRect.height());
</del><ins>+    RefPtr&lt;Image&gt; img = imageResource().image(alignedRect.width(), alignedRect.height());
</ins><span class="cx">     if (!img || img-&gt;isNull())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     HTMLImageElement* imageElt = (element() &amp;&amp; isHTMLImageElement(element())) ? toHTMLImageElement(element()) : 0;
</span><span class="cx">     CompositeOperator compositeOperator = imageElt ? imageElt-&gt;compositeOperator() : CompositeSourceOver;
</span><del>-    Image* image = m_imageResource-&gt;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-&gt;drawImage(m_imageResource-&gt;image(alignedRect.width(), alignedRect.height()).get(), style().colorSpace(), alignedRect, compositeOperator, orientationDescription, useLowQualityScaling);
</del><ins>+    context-&gt;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&amp; localRect, unsigned maxDepthToTest) const
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(maxDepthToTest);
</span><del>-    if (!m_imageResource-&gt;hasImage() || m_imageResource-&gt;errorOccurred())
</del><ins>+    if (!imageResource().hasImage() || imageResource().errorOccurred())
</ins><span class="cx">         return false;
</span><del>-    if (m_imageResource-&gt;cachedImage() &amp;&amp; !m_imageResource-&gt;cachedImage()-&gt;isLoaded())
</del><ins>+    if (imageResource().cachedImage() &amp;&amp; !imageResource().cachedImage()-&gt;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 &amp;&amp; objectFit != ObjectFitCover)
</span><span class="cx">         return false;
</span><span class="cx">     // Check for image with alpha.
</span><del>-    return m_imageResource-&gt;cachedImage() &amp;&amp; m_imageResource-&gt;cachedImage()-&gt;currentFrameKnownToBeOpaque(this);
</del><ins>+    return imageResource().cachedImage() &amp;&amp; imageResource().cachedImage()-&gt;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-&gt;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() &amp;&amp; (m_imageResource-&gt;imageHasRelativeWidth() || m_imageResource-&gt;imageHasRelativeHeight())) {
</del><ins>+    if (intrinsicSize.isEmpty() &amp;&amp; (imageResource().imageHasRelativeWidth() || imageResource().imageHasRelativeHeight())) {
</ins><span class="cx">         RenderObject* containingBlock = isOutOfFlowPositioned() ? container() : this-&gt;containingBlock();
</span><span class="cx">         if (containingBlock-&gt;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 &amp;&amp; m_imageResource-&gt;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-&gt;cachedImage();
</del><ins>+    CachedImage* cachedImage = imageResource().cachedImage();
</ins><span class="cx">     if (cachedImage &amp;&amp; cachedImage-&gt;image() &amp;&amp; cachedImage-&gt;image()-&gt;isSVGImage())
</span><span class="cx">         return static_cast&lt;SVGImage*&gt;(cachedImage-&gt;image())-&gt;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&amp;, PassRef&lt;RenderStyle&gt;);
-    explicit RenderImage(Document&amp;, PassRef&lt;RenderStyle&gt;);
</del><ins>+    RenderImage(Element&amp;, PassRef&lt;RenderStyle&gt;, StyleImage* = nullptr);
+    RenderImage(Document&amp;, PassRef&lt;RenderStyle&gt;, 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&lt;RenderStyle&gt; createStyleInheritingFromPseudoStyle(const RenderStyle&amp;);
</span><span class="cx"> 
</span><del>-    void setImageResource(PassOwnPtr&lt;RenderImageResource&gt;);
</del><ins>+    RenderImageResource&amp; imageResource() { return *m_imageResource; }
+    const RenderImageResource&amp; 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-&gt;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-&gt;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&lt;RenderImageResource&gt; m_imageResource;
</del><ins>+    std::unique_ptr&lt;RenderImageResource&gt; 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&lt;RenderImageResource&gt; 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&lt;CachedImage&gt; 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&amp;);
</ins><span class="cx">     virtual ~RenderImageResourceStyleImage();
</span><span class="cx"> 
</span><del>-    static PassOwnPtr&lt;RenderImageResource&gt; create(StyleImage&amp; 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-&gt;data(); }
</span><span class="cx"> 
</span><del>-    explicit RenderImageResourceStyleImage(StyleImage&amp;);
</del><span class="cx">     Ref&lt;StyleImage&gt; 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&amp; element, PassRef&lt;RenderStyle&gt; 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&amp; element, PassRef&lt;RenderStyle&gt; style, const IntSize&amp; 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&amp; element, PassRef&lt;RenderStyle&gt; style)
</span><span class="cx">     : RenderEmbeddedObject(element, std::move(style))
</span><del>-    , m_snapshotResource(RenderImageResource::create())
</del><ins>+    , m_snapshotResource(std::make_unique&lt;RenderImageResource&gt;())
</ins><span class="cx">     , m_isPotentialMouseActivation(false)
</span><span class="cx"> {
</span><span class="cx">     m_snapshotResource-&gt;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&lt;RenderImageResource&gt; m_snapshotResource;
</del><ins>+    std::unique_ptr&lt;RenderImageResource&gt; 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() &amp;&amp; !m_cachedImageSize.isEmpty() &amp;&amp; !imageResource()-&gt;errorOccurred())
</del><ins>+    if (videoElement().shouldDisplayPosterImage() &amp;&amp; !m_cachedImageSize.isEmpty() &amp;&amp; !imageResource().errorOccurred())
</ins><span class="cx">         return m_cachedImageSize;
</span><span class="cx"> 
</span><span class="cx">     // &lt;video&gt; 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&lt;RenderObject&gt; ImageContentData::createContentRenderer(Document&amp; document, const RenderStyle&amp; pseudoStyle) const
</span><span class="cx"> {
</span><del>-    auto image = createRenderer&lt;RenderImage&gt;(document, RenderImage::createStyleInheritingFromPseudoStyle(pseudoStyle));
</del><ins>+    auto image = createRenderer&lt;RenderImage&gt;(document, RenderImage::createStyleInheritingFromPseudoStyle(pseudoStyle), m_image.get());
</ins><span class="cx">     image-&gt;initializeStyle();
</span><span class="cx">     image-&gt;setAltText(altText());
</span><del>-    if (m_image)
-        image-&gt;setImageResource(RenderImageResourceStyleImage::create(*m_image));
-    else
-        image-&gt;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&lt;RenderImageResource&gt;())
</ins><span class="cx"> {
</span><del>-    m_imageResource-&gt;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-&gt;shutdown();
</del><ins>+    imageResource().shutdown();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> SVGImageElement&amp; 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-&gt;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&amp; paintInfo, const LayoutPoint&amp;)
</span><span class="cx"> {
</span><del>-    if (paintInfo.context-&gt;paintingDisabled() || style().visibility() == HIDDEN || !m_imageResource-&gt;hasImage())
</del><ins>+    if (paintInfo.context-&gt;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&amp; paintInfo)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;Image&gt; image = m_imageResource-&gt;image();
</del><ins>+    RefPtr&lt;Image&gt; image = imageResource().image();
</ins><span class="cx">     FloatRect destRect = m_objectBoundingBox;
</span><span class="cx">     FloatRect srcRect(0, 0, image-&gt;width(), image-&gt;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&amp; imageResource() { return *m_imageResource; }
+    const RenderImageResource&amp; 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&amp;);
</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&lt;RenderImageResource&gt; m_imageResource;
-
</del><ins>+    std::unique_ptr&lt;RenderImageResource&gt; m_imageResource;
</ins><span class="cx">     std::unique_ptr&lt;ImageBuffer&gt; 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-&gt;imageResource()-&gt;hasImage())
</del><ins>+        if (imageObj-&gt;imageResource().hasImage())
</ins><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        imageObj-&gt;imageResource()-&gt;setCachedImage(m_imageLoader.image());
</del><ins>+        imageObj-&gt;imageResource().setCachedImage(m_imageLoader.image());
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>