<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>173298</bug_id>
          
          <creation_ts>2017-06-12 19:24:25 -0700</creation_ts>
          <short_desc>Disable asynchronous image decoding for server push and streaming over HTTP contents</short_desc>
          <delta_ts>2017-07-18 09:10:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>174451</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1318537</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-06-12 19:24:25 -0700</bug_when>
    <thetext>For webcam pages, the MIME type is &quot;multipart/x-mixed-replace&quot;. For this page, the server will push new data when it is available to the client. For the webcam case, new CachedImage and BitmapImage are created for the new image encoded data. If the BitmapImage is displayed asynchronously, there will a flickering between displaying the old and the new BitmapImage. Therefore, asynchronous image decoding has to be disabled in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318538</commentid>
    <comment_count>1</comment_count>
      <attachid>312741</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-06-12 19:29:21 -0700</bug_when>
    <thetext>Created attachment 312741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318539</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-06-12 19:31:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/32689659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318540</commentid>
    <comment_count>3</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-06-12 19:31:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/31246421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319299</commentid>
    <comment_count>4</comment_count>
      <attachid>312741</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-06-14 13:05:38 -0700</bug_when>
    <thetext>Comment on attachment 312741
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=312741&amp;action=review

&gt; Source/WebCore/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=173298

radar link?

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:886
&gt; +            auto decodingMode = decodingModeForPaintedImage(paintInfo);
&gt;              context.drawTiledImage(*image, geometry.destRect(), toLayoutPoint(geometry.relativePhase()), geometry.tileSize(), geometry.spaceSize(), ImagePaintingOptions(compositeOp, bgLayer.blendMode(), decodingMode, ImageOrientationDescription(), interpolation));

You could just omit the local variable here.

&gt; Source/WebCore/rendering/RenderElement.cpp:2208
&gt; +    if (frame().loader().activeDocumentLoader()-&gt;isLoadingMultipartContent())
&gt; +        return DecodingMode::Synchronous;

It seems a bit odd to change the decoding based on the minetype (though I understand the camera usecase) It also mismatches the discussion in the radar.

&gt; Source/WebCore/rendering/RenderElement.h:223
&gt; +    DecodingMode decodingModeForPaintedImage(const PaintInfo&amp;) const;

Does it need to be public?

&gt; Source/WebCore/rendering/RenderImage.cpp:588
&gt; +    auto decodingMode = decodingModeForPaintedImage(paintInfo);
&gt;      paintInfo.context().drawImage(*img, rect, ImagePaintingOptions(compositeOperator, BlendModeNormal, decodingMode, orientationDescription, interpolation));

You could just omit the local variable here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319340</commentid>
    <comment_count>5</comment_count>
      <attachid>312741</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-14 15:33:10 -0700</bug_when>
    <thetext>Comment on attachment 312741
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=312741&amp;action=review

Is there a way we can keep the older image around for longer in this case, rather than falling back to sync decoding?

&gt; Source/WebCore/rendering/RenderElement.cpp:2207
&gt; +    if (frame().loader().activeDocumentLoader()-&gt;isLoadingMultipartContent())

Is this right? You&apos;re assuming that the image is the main resource of that loader, but I don&apos;t think that&apos;s valid. Maybe this is an image in some kind of multipart text/html?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319341</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-14 15:41:08 -0700</bug_when>
    <thetext>Also, it might be a pain but can we make a http test and a CGI script that fakes the image stream? We get bugs on this feature almost every cycle, and it would be good to have some testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329993</commentid>
    <comment_count>7</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-18 09:10:37 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 174451 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312741</attachid>
            <date>2017-06-12 19:29:21 -0700</date>
            <delta_ts>2017-06-14 15:33:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173298-20170612192921.patch</filename>
            <type>text/plain</type>
            <size>4839</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODE2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA2LTEyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzYWJsZSBh
c3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcgZm9yIHNlcnZlciBwdXNoIGFuZCBzdHJlYW1pbmcg
b3ZlciBIVFRQIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzMyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEaXNhYmxlIHRoZSBhc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcgZm9yIHRo
ZSBzZXJ2ZXIgcHVzaCBwYWdlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6ZGVjb2RpbmdNb2RlRm9yUGFp
bnRlZEltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRJbnRvUmVjdCk6CisKIDIwMTctMDYtMTIgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEV4cGFuZCBzeXN0ZW0tdWkg
dG8gaW5jbHVkZSBldmVyeSBpdGVtIGluIHRoZSBDb3JlIFRleHQgY2FzY2FkZSBsaXN0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAJKHJldmlzaW9uIDIxODEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAgICAgICAgICAgICAgICAgZG93
bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbVNldHRpbmdzKHNldHRpbmdzKCkp
OwogCiAgICAgICAgICAgICBhdXRvIGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsICZiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsK
LSAgICAgICAgICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gKHBhaW50SW5mby5wYWludEJlaGF2aW9y
ICYgKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9y
U25hcHNob3R0aW5nKSkgPyBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzIDogRGVjb2RpbmdNb2Rl
OjpBc3luY2hyb25vdXM7CisgICAgICAgICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IGRlY29kaW5n
TW9kZUZvclBhaW50ZWRJbWFnZShwYWludEluZm8pOwogICAgICAgICAgICAgY29udGV4dC5kcmF3
VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2Vv
bWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3Bh
Y2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLmJsZW5k
TW9kZSgpLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBpbnRl
cnBvbGF0aW9uKSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMTgxMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDU1NBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
Q29udGVudERhdGEuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKICNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUg
IkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCkBAIC0y
MjAxLDYgKzIyMDIsMTcgQEAgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIFJlbmRlckVsZW1l
bgogICAgIHJldHVybiBzZXR0aW5ncygpLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkg
JiYgaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSA/IFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uIDogRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsKIH0KIAorRGVjb2RpbmdNb2RlIFJl
bmRlckVsZW1lbnQ6OmRlY29kaW5nTW9kZUZvclBhaW50ZWRJbWFnZShjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbykgY29uc3QKK3sKKyAgICBpZiAoZnJhbWUoKS5sb2FkZXIoKS5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT5pc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkpCisgICAgICAgIHJldHVy
biBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzOworCisgICAgaWYgKChwYWludEluZm8ucGFpbnRC
ZWhhdmlvciAmIChQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRC
ZWhhdmlvclNuYXBzaG90dGluZykpKQorICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91czsKKworICAgIHJldHVybiBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91czsKK30KKwog
dm9pZCBSZW5kZXJFbGVtZW50OjphZGp1c3RGbG93VGhyZWFkU3RhdGVPbkNvbnRhaW5pbmdCbG9j
a0NoYW5nZUlmTmVlZGVkKCkKIHsKICAgICBpZiAoZmxvd1RocmVhZFN0YXRlKCkgPT0gTm90SW5z
aWRlRmxvd1RocmVhZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAkocmV2aXNpb24gMjE4MTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDYgKzIyMCw3IEBAIHB1YmxpYzoKICAg
ICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrRm9yQWJzb2x1dGVQb3NpdGlvbigpIGNvbnN0
OwogCiAgICAgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKCkgY29uc3Q7CisgICAgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZUZvclBhaW50
ZWRJbWFnZShjb25zdCBQYWludEluZm8mKSBjb25zdDsKIAogICAgIHZvaWQgcmVtb3ZlRnJvbVJl
bmRlckZsb3dUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRGbG93VGhyZWFkQ29udGFp
bmluZ0Jsb2NrQW5kQ2hpbGRJbmZvSW5jbHVkaW5nRGVzY2VuZGFudHMoUmVuZGVyRmxvd1RocmVh
ZCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCShyZXZp
c2lvbiAyMTgxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01ODQsOCArNTg0LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFp
bnRJbnRvUmVjdChQYWludEluZgogICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdl
KS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CiAKICAgICBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbigpLCBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Ci0KLSAgICBhdXRvIGRlY29k
aW5nTW9kZSA9IChwYWludEluZm8ucGFpbnRCZWhhdmlvciAmIChQYWludEJlaGF2aW9yRmxhdHRl
bkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykpID8gRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cyA6IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOworICAgIGF1
dG8gZGVjb2RpbmdNb2RlID0gZGVjb2RpbmdNb2RlRm9yUGFpbnRlZEltYWdlKHBhaW50SW5mbyk7
CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgZGVjb2RpbmdN
b2RlLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CiB9CiAK
</data>
<flag name="review"
          id="333649"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>