<?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>156039</bug_id>
          
          <creation_ts>2016-03-30 13:30:18 -0700</creation_ts>
          <short_desc>putImageData leaves visible artifacts on retina display</short_desc>
          <delta_ts>2016-04-05 21:19:53 -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>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>HTTPS://bertfreudenberg.github.io/SqueakJS</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="Vanessa Freudenberg">vanessa</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1179169</commentid>
    <comment_count>0</comment_count>
    <who name="Vanessa Freudenberg">vanessa</who>
    <bug_when>2016-03-30 13:30:18 -0700</bug_when>
    <thetext>On a retina display, putImageData leaves gribblies around the affected area&apos;s border. Changing the page zoom clears these artifacts, proving that the actual canvas content is correct.

To reproduce I have isolated a simple test case here:
http://bertfreudenberg.github.io/SqueakJS/test/putImageData.html

In production this manifests e.g. when trying to move a window here:
https://bertfreudenberg.github.io/SqueakJS/demo/simple.html

Note that the gribblies do not show up when using pixelated image-rendering:
https://bertfreudenberg.github.io/SqueakJS/demo/simple.html#pixelated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179582</commentid>
    <comment_count>1</comment_count>
      <attachid>275327</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-03-31 14:24:45 -0700</bug_when>
    <thetext>Created attachment 275327
Test reduction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179742</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-03-31 21:06:49 -0700</bug_when>
    <thetext>This should fix it. 
diff --git a/Source/WebCore/html/HTMLCanvasElement.cpp b/Source/WebCore/html/HTMLCanvasElement.cpp
index 0021486..d687335 100644
--- a/Source/WebCore/html/HTMLCanvasElement.cpp
+++ b/Source/WebCore/html/HTMLCanvasElement.cpp
@@ -314,9 +314,12 @@ void HTMLCanvasElement::didDraw(const FloatRect&amp; rect)
             return;
 
         m_dirtyRect.unite(r);
+        if (drawingContext() &amp;&amp; drawingContext()-&gt;shouldAntialias() &amp;&amp; document().deviceScaleFactor() &gt; 1) {
+            // Inflate dirty rect to cover antialiasing on image buffers where CSS px size != device px size.
+            m_dirtyRect.inflate(1 / document().deviceScaleFactor());
+        }
         ro-&gt;repaintRectangle(enclosingIntRect(m_dirtyRect));
     }
-
     notifyObserversCanvasChanged(rect);
 }

Patch is coming up soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179743</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-31 21:07:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/25482243&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179747</commentid>
    <comment_count>4</comment_count>
      <attachid>275369</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-03-31 21:50:11 -0700</bug_when>
    <thetext>Created attachment 275369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179895</commentid>
    <comment_count>5</comment_count>
      <attachid>275369</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-04-01 11:16:09 -0700</bug_when>
    <thetext>Comment on attachment 275369
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179964</commentid>
    <comment_count>6</comment_count>
      <attachid>275439</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-04-01 16:01:05 -0700</bug_when>
    <thetext>Created attachment 275439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179966</commentid>
    <comment_count>7</comment_count>
      <attachid>275439</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-04-01 16:03:13 -0700</bug_when>
    <thetext>Comment on attachment 275439
Patch

Simon says r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179967</commentid>
    <comment_count>8</comment_count>
      <attachid>275439</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-01 16:04:10 -0700</bug_when>
    <thetext>Comment on attachment 275439
Patch

Rejecting attachment 275439 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 275439, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/1083408</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179969</commentid>
    <comment_count>9</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-04-01 16:25:46 -0700</bug_when>
    <thetext>Committed r198958: &lt;http://trac.webkit.org/changeset/198958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180201</commentid>
    <comment_count>10</comment_count>
      <attachid>275439</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-03 12:29:28 -0700</bug_when>
    <thetext>Comment on attachment 275439
Patch

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

&gt; Source/WebCore/html/HTMLCanvasElement.cpp:314
&gt; +            dirtyRect.inflate(1);

Why is 1 always correct? Shouldn’t this depend on the scale factor somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180981</commentid>
    <comment_count>11</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-04-05 14:39:24 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 275439 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=275439&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLCanvasElement.cpp:314
&gt; &gt; +            dirtyRect.inflate(1);
&gt; 
&gt; Why is 1 always correct? Shouldn’t this depend on the scale factor somehow?
If by scale factor, you mean 
1. pinch-zoom scale, then the answer is no. repaint rects are in document coordinates.
2. canvas scale by setting a different width/height on the canvas and the canvas element, then the answer is yes and that scaling happens in mapRect().  
3. retina vs. non-retina, the answer is yes but according to Simon it&apos;s better to inflate always with 1 canvas pixel since we don&apos;t control antialias painting behaviour.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>275327</attachid>
            <date>2016-03-31 14:24:45 -0700</date>
            <delta_ts>2016-03-31 14:24:45 -0700</delta_ts>
            <desc>Test reduction</desc>
            <filename>canvas-repaint.html</filename>
            <type>text/html</type>
            <size>727</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">PHN0eWxlPgpjYW52YXMgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMHB4Owog
ICAgdG9wOiAwcHg7Cn0KPC9zdHlsZT4KPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjEwMCI+PC9jYW52YXM+CjxwIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7ICI+UEFT
UyBpZiB0aGUgdGhlIHJlZCBzcXVhcmUgbW92ZXMgd2l0aG91dCBhcnRpZmFjdHMgKHRvcCBsZWZ0
IGNvcm5lcikuPC9wPgo8c2NyaXB0PgogICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIy
ZCIpOwogICAgdmFyIGJnID0gY3R4LmNyZWF0ZUltYWdlRGF0YSg1MCwgNTApOwogICAgdmFyIGlt
ZyA9IGN0eC5jcmVhdGVJbWFnZURhdGEoNTAsIDUwKTsKICAgIHZhciBwaXggPSBuZXcgVWludDMy
QXJyYXkoaW1nLmRhdGEuYnVmZmVyKTsKICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaW1nLmhlaWdo
dDsgeSsrKQogICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgaW1nLndpZHRoOyB4KyspCiAgICAg
ICAgICAgIHBpeFtpbWcud2lkdGggKiB5ICsgeF0gPSAweEZGMDAwMEZGOwogICAgCiAgICBjdHgu
cHV0SW1hZ2VEYXRhKGltZywgMSwgMSk7CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAg
CWN0eC5wdXRJbWFnZURhdGEoYmcsIDEsIDEpOwogICAgCWN0eC5wdXRJbWFnZURhdGEoaW1nLCAy
LCAyKTsKICAgIH0sIDEwMCk7Cjwvc2NyaXB0Pgo8L2JvZHk+PC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275369</attachid>
            <date>2016-03-31 21:50:11 -0700</date>
            <delta_ts>2016-04-01 16:01:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156039-20160331215015.patch</filename>
            <type>text/plain</type>
            <size>4204</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYyNjNjNmIxODMzNDVk
NWQyYmUwN2MzYTFlNTQ4MmUxYWU0MGIwNy4uNDFkZjgwOTcwMjNjOTljY2E5ZDdjNWRhZmY5YzA5
M2VhOTk2ZDUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTAzLTMxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgcHV0SW1hZ2VEYXRhIGxlYXZl
cyB2aXNpYmxlIGFydGlmYWN0cyBvbiByZXRpbmEgZGlzcGxheQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDM5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yNTQ4MjI0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmZsYXRlIHRoZSByZXBhaW50IHJlY3QgdG8gY292ZXIgYW50aS1hbGlhc2luZyBi
aXRzIHdoZW4gdGhlIHBpeGVsIHNpemUgb2YgdGhlIGltYWdlIGJ1ZmZlciBmb3IgdGhlIGNhbnZh
cyBjb250ZXh0CisgICAgICAgIGRvZXMgbm90IG1hdGNoIENTUyBwaXhlbCBzaXplLgorCisgICAg
ICAgIFRlc3Q6IGZhc3QvY2FudmFzL2hpZHBpLXJlcGFpbnQtb24tcmV0aW5hLWxlYXZlcy1iaXRz
LWJlaGluZC5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpkaWREcmF3KToKKwogMjAxNi0wMy0z
MSAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBhcmlhLWhpZGRl
bj1mYWxzZSBjYXVzZXMgdmlkZW8gZmFsbGJhY2sgY29udGVudCB0byBiZSBleHBvc2VkIHRvIEFY
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCAwMDIx
NDg2OThhYmI0MGU4MjJjYmY2YWY4N2RjNDBjM2IyNDA1MDVhLi5kNjg3MzM1YjdlYzg4NmZhZGYz
MTNkNTFhMjBjMGU5OWZhNTgyYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcApAQCAtMzE0LDkgKzMxNCwxMiBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50Ojpk
aWREcmF3KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBtX2RpcnR5UmVjdC51bml0ZShyKTsKKyAgICAgICAgaWYgKGRyYXdpbmdDb250ZXh0KCkg
JiYgZHJhd2luZ0NvbnRleHQoKS0+c2hvdWxkQW50aWFsaWFzKCkgJiYgZG9jdW1lbnQoKS5kZXZp
Y2VTY2FsZUZhY3RvcigpID4gMSkgeworICAgICAgICAgICAgLy8gSW5mbGF0ZSBkaXJ0eSByZWN0
IHRvIGNvdmVyIGFudGlhbGlhc2luZyBvbiBpbWFnZSBidWZmZXJzIHdoZXJlIENTUyBweCBzaXpl
ICE9IGRldmljZSBweCBzaXplLgorICAgICAgICAgICAgbV9kaXJ0eVJlY3QuaW5mbGF0ZSgxIC8g
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgfQogICAgICAgICByby0+
cmVwYWludFJlY3RhbmdsZShlbmNsb3NpbmdJbnRSZWN0KG1fZGlydHlSZWN0KSk7CiAgICAgfQot
CiAgICAgbm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChyZWN0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNl
ODcyMDA0Y2U1ZGM2ZTZlZjdhNmQyYTg1ODY3ZTI2MzZhMWQwNWUuLjBmZjY2ODRlMmFkNDU0MDli
OGY0NWYwYmM2MGY0MWMyZmE1MDE3YTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOSBAQAogMjAxNi0wMy0z
MSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCisgICAgICAgIHB1dEltYWdlRGF0
YSBsZWF2ZXMgdmlzaWJsZSBhcnRpZmFjdHMgb24gcmV0aW5hIGRpc3BsYXkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAzOQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjU0ODIyNDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW5mbGF0ZSB0aGUgcmVwYWludCByZWN0IHRvIGNvdmVyIGFudGktYWxp
YXNpbmcgYml0cyB3aGVuIHRoZSBwaXhlbCBzaXplIG9mIHRoZSBpbWFnZSBidWZmZXIgZm9yIHRo
ZSBjYW52YXMgY29udGV4dAorICAgICAgICBkb2VzIG5vdCBtYXRjaCBDU1MgcGl4ZWwgc2l6ZS4K
KworICAgICAgICAqIGZhc3QvY2FudmFzL2hpZHBpLXJlcGFpbnQtb24tcmV0aW5hLWxlYXZlcy1i
aXRzLWJlaGluZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9o
aWRwaS1yZXBhaW50LW9uLXJldGluYS1sZWF2ZXMtYml0cy1iZWhpbmQuaHRtbDogQWRkZWQuCisK
KzIwMTYtMDMtMzEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKwogICAgICAgICBB
ZGQgYSAtbWlzbWF0Y2ggdGVzdCBjYXNlIGZvciByMTk4Nzg1LgogICAgICAgICBzZWUgd2Via2l0
Lm9yZy9iLzE1NTk3MwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9oaWRw
aS1yZXBhaW50LW9uLXJldGluYS1sZWF2ZXMtYml0cy1iZWhpbmQtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2hpZHBpLXJlcGFpbnQtb24tcmV0aW5hLWxlYXZlcy1iaXRz
LWJlaGluZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwNGIzNzhkMjNkMDk1OGMxNjFiNTBj
MmJmZTM1YTdlNjc4OGJlODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9oaWRwaS1yZXBhaW50LW9uLXJldGluYS1sZWF2ZXMtYml0cy1iZWhpbmQtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5UaGlzIHRlc3RzIHRoYXQgd2UgZG9uJ3QgbGVhdmUgYml0cyBiZWhpbmQgb24gdGhlIGNh
bnZhcyBjb250ZXh0LjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9oaWRwaS1yZXBhaW50LW9uLXJldGluYS1sZWF2ZXMtYml0cy1iZWhpbmQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2hpZHBpLXJlcGFpbnQtb24tcmV0aW5hLWxlYXZlcy1i
aXRzLWJlaGluZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4Mjc1NDNhNGY0YzdkMjA3MDM0OWNmZTZhMzVj
OGY2MzNjNTBlZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9o
aWRwaS1yZXBhaW50LW9uLXJldGluYS1sZWF2ZXMtYml0cy1iZWhpbmQuaHRtbApAQCAtMCwwICsx
LDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGhpcyB0ZXN0
cyB0aGF0IHdlIGRvbid0IGxlYXZlIGJpdHMgYmVoaW5kIG9uIHRoZSBjYW52YXMgY29udGV4dC48
L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIxMDAi
IGhlaWdodD0iMTAwIj48L2NhbnZhcz4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB2YXIgY3R4ID0g
Y2FudmFzLmdldENvbnRleHQoIjJkIik7CisJY3R4LmZpbGxSZWN0KDEsIDEsIDUwLCA1MCkKKyAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworCQljdHguY2xlYXJSZWN0KDEsIDEsIDUwLCA1MCk7
CisJCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgfSwgMTApOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275439</attachid>
            <date>2016-04-01 16:01:05 -0700</date>
            <delta_ts>2016-04-01 16:04:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156039-20160401160110.patch</filename>
            <type>text/plain</type>
            <size>4806</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYyNjNjNmIxODMzNDVk
NWQyYmUwN2MzYTFlNTQ4MmUxYWU0MGIwNy4uOGQ5NzA3NGIyOTljNmI2OTQ2YjMxNmRhNmI4MTk2
ZDQyY2JmZDY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2LTAzLTMxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgcHV0SW1hZ2VEYXRhIGxlYXZl
cyB2aXNpYmxlIGFydGlmYWN0cyBvbiByZXRpbmEgZGlzcGxheQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDM5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yNTQ4MjI0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmZsYXRlIHRoZSByZXBhaW50IHJlY3QgdG8gY292ZXIgYW50aS1hbGlhc2luZyBi
aXRzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2hpZHBpLXJlcGFpbnQtb24tcmV0aW5h
LWxlYXZlcy1iaXRzLWJlaGluZC5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpkaWREcmF3KToK
KwogMjAxNi0wMy0zMSAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFY
OiBhcmlhLWhpZGRlbj1mYWxzZSBjYXVzZXMgdmlkZW8gZmFsbGJhY2sgY29udGVudCB0byBiZSBl
eHBvc2VkIHRvIEFYIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cAppbmRleCAwMDIxNDg2OThhYmI0MGU4MjJjYmY2YWY4N2RjNDBjM2IyNDA1MDVhLi44NWY2NWYx
ZWZjMmFhNGFjM2EwNzhhZGYwMzJkYzkxZWM4M2JhNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzA2LDkgKzMwNiwxMyBAQCB2b2lkIEhUTUxDYW52
YXNFbGVtZW50OjpkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBjbGVhckNv
cGllZEltYWdlKCk7CiAKKyAgICBGbG9hdFJlY3QgZGlydHlSZWN0ID0gcmVjdDsKICAgICBpZiAo
UmVuZGVyQm94KiBybyA9IHJlbmRlckJveCgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVj
dCA9IHJvLT5jb250ZW50Qm94UmVjdCgpOwotICAgICAgICBGbG9hdFJlY3QgciA9IG1hcFJlY3Qo
cmVjdCwgRmxvYXRSZWN0KDAsIDAsIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpLCBk
ZXN0UmVjdCk7CisgICAgICAgIC8vIEluZmxhdGUgZGlydHkgcmVjdCB0byBjb3ZlciBhbnRpYWxp
YXNpbmcgb24gaW1hZ2UgYnVmZmVycy4KKyAgICAgICAgaWYgKGRyYXdpbmdDb250ZXh0KCkgJiYg
ZHJhd2luZ0NvbnRleHQoKS0+c2hvdWxkQW50aWFsaWFzKCkpCisgICAgICAgICAgICBkaXJ0eVJl
Y3QuaW5mbGF0ZSgxKTsKKyAgICAgICAgRmxvYXRSZWN0IHIgPSBtYXBSZWN0KGRpcnR5UmVjdCwg
RmxvYXRSZWN0KDAsIDAsIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpLCBkZXN0UmVj
dCk7CiAgICAgICAgIHIuaW50ZXJzZWN0KGRlc3RSZWN0KTsKICAgICAgICAgaWYgKHIuaXNFbXB0
eSgpIHx8IG1fZGlydHlSZWN0LmNvbnRhaW5zKHIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MzE2LDggKzMyMCw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmRpZERyYXcoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogICAgICAgICBtX2RpcnR5UmVjdC51bml0ZShyKTsKICAgICAgICAgcm8t
PnJlcGFpbnRSZWN0YW5nbGUoZW5jbG9zaW5nSW50UmVjdChtX2RpcnR5UmVjdCkpOwogICAgIH0K
LQotICAgIG5vdGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWQocmVjdCk7CisgICAgbm90aWZ5T2Jz
ZXJ2ZXJzQ2FudmFzQ2hhbmdlZChkaXJ0eVJlY3QpOwogfQogCiB2b2lkIEhUTUxDYW52YXNFbGVt
ZW50Ojpub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjZTg3MjAwNGNlNWRjNmU2ZWY3YTZkMmE4NTg2N2UyNjM2YTFkMDVlLi4xOWUyMzky
YWRmZDIxZDg5MDQ2ODliOWNmZDIzOTNiZWU4ODdiZTdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAK
IDIwMTYtMDMtMzEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAorICAgICAgICBw
dXRJbWFnZURhdGEgbGVhdmVzIHZpc2libGUgYXJ0aWZhY3RzIG9uIHJldGluYSBkaXNwbGF5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMzkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1NDgyMjQzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZmxhdGUgdGhlIHJlcGFpbnQgcmVjdCB0byBjb3Zl
ciBhbnRpLWFsaWFzaW5nIGJpdHMuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9oaWRwaS1yZXBh
aW50LW9uLXJldGluYS1sZWF2ZXMtYml0cy1iZWhpbmQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jYW52YXMvaGlkcGktcmVwYWludC1vbi1yZXRpbmEtbGVhdmVzLWJpdHMt
YmVoaW5kLmh0bWw6IEFkZGVkLgorCisyMDE2LTAzLTMxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CisKICAgICAgICAgQWRkIGEgLW1pc21hdGNoIHRlc3QgY2FzZSBmb3IgcjE5ODc4
NS4KICAgICAgICAgc2VlIHdlYmtpdC5vcmcvYi8xNTU5NzMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvaGlkcGktcmVwYWludC1vbi1yZXRpbmEtbGVhdmVzLWJpdHMtYmVo
aW5kLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9oaWRwaS1yZXBhaW50
LW9uLXJldGluYS1sZWF2ZXMtYml0cy1iZWhpbmQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MDRiMzc4ZDIzZDA5NThjMTYxYjUwYzJiZmUzNWE3ZTY3ODhiZTgzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvaGlkcGktcmVwYWludC1vbi1yZXRpbmEtbGVhdmVz
LWJpdHMtYmVoaW5kLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGhpcyB0ZXN0cyB0aGF0IHdlIGRvbid0IGxlYXZl
IGJpdHMgYmVoaW5kIG9uIHRoZSBjYW52YXMgY29udGV4dC48L3RpdGxlPgorPC9oZWFkPgorPGJv
ZHk+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvaGlkcGktcmVwYWludC1vbi1yZXRpbmEtbGVh
dmVzLWJpdHMtYmVoaW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9oaWRwaS1yZXBh
aW50LW9uLXJldGluYS1sZWF2ZXMtYml0cy1iZWhpbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTY4ZDE2
YWFlMTVlOTNlZTcyMDQ0MGNmZTEyMWYwZjRkMTJkZDliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvaGlkcGktcmVwYWludC1vbi1yZXRpbmEtbGVhdmVzLWJpdHMt
YmVoaW5kLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPlRoaXMgdGVzdHMgdGhhdCB3ZSBkb24ndCBsZWF2ZSBiaXRzIGJlaGluZCBv
biB0aGUgY2FudmFzIGNvbnRleHQuPC90aXRsZT4KKzxzdHlsZT4KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxjYW52YXMgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweCIgaWQ9
ImNhbnZhcyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjwvY2FudmFzPgorPGNhbnZhcyBzdHls
ZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4IiBpZD0ic3RyZXRjaGVkQ2FudmFzIiB3aWR0
aD0iMTAwIiBoZWlnaHQ9IjEwMCI+PC9jYW52YXM+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdmFy
IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgIHZhciBzdHJldGNoZWRDdHggPSBz
dHJldGNoZWRDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKwljdHguZmlsbFJlY3QoMSwgMSwgNTAs
IDUwKTsKKwlzdHJldGNoZWRDdHguZmlsbFJlY3QoMSwgMSwgNTAsIDUwKTsKKyAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeworCQljdHguY2xlYXJSZWN0KDEsIDEsIDUwLCA1MCk7CisJCXN0cmV0
Y2hlZEN0eC5jbGVhclJlY3QoMSwgMSwgNTAsIDUwKTsKKwkJaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorCQkgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAxMCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="299785"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>