<?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>127029</bug_id>
          
          <creation_ts>2014-01-14 18:53:24 -0800</creation_ts>
          <short_desc>SubresourceLoader::didFinishLoading() should not assert when a decode error occurs</short_desc>
          <delta_ts>2014-02-28 09:25:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>koivisto</cc>
    
    <cc>psolanki</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>yongjun_zhang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>968144</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-14 18:53:24 -0800</bug_when>
    <thetext>Debug iOS WebKit in the Simulator loading apple.com produces:
ASSERT(!m_resource-&gt;errorOccurred()); in WebCore::SubresourceLoader::didFinishLoading

--

lldb&gt; p m_resource-&gt;status()
(WebCore::CachedResource::Status) $23 = DecodeError

-- 

    bool CachedImage::canBeDrawn() const
    {
        if (!m_image || m_image-&gt;isNull())
            return false;

        if (!m_loader || m_loader-&gt;reachedTerminalState())
            return true;

        size_t estimatedDecodedImageSize = m_image-&gt;width() * m_image-&gt;height() * 4; // no overflow check
        return estimatedDecodedImageSize &lt;= m_loader-&gt;frameLoader()-&gt;frame().settings().maximumDecodedImageSize();
    }

--

lldb&gt; p m_resource-&gt;url().m_string.m_impl.m_ptr
(WTF::StringImpl *const) $21 = 0x000000011a2643c0 { length = 63, is8bit = 1, contents = &apos;http://images.apple.com/v/home/am/images/your_verse_hero_2x.jpg&apos; }

lldb&gt; p m_loader-&gt;frameLoader()-&gt;frame().settings().maximumDecodedImageSize();
20971520

lldb&gt; p m_image-&gt;width() * m_image-&gt;height() * 4
27302400

--

Is the maximumDecodedImageSize smaller then it should be, or is this a valid path and the ASSERT should be handled appropriately?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968413</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-15 11:37:48 -0800</bug_when>
    <thetext>&gt; Is the maximumDecodedImageSize smaller then it should be

No. This is 20 * 1024 * 1024, which is the expected size on iOS.


&gt; or is this a valid path and the ASSERT should be handled appropriately?

I think this is the issue. I think a DecodeError should probably have been handled higher up in the stack to not reach this ASSERT. The reason this ASSERT is not seen on Mac is that there is no max decoded size, and such a DecodeError never gets triggered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968463</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-15 14:10:23 -0800</bug_when>
    <thetext>Would WebKit hit this assertion on Mac if there is a true decode error (e.g. garbage bytes instead of an image resource)? If not, what prevents that from happening?

That said, it seems strange that a platform limitation like this is implemented via simulating a load failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970318</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-21 10:46:42 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Would WebKit hit this assertion on Mac if there is a true decode error (e.g. garbage bytes instead of an image resource)? 

No.

&gt; If not, what prevents that from happening?

Either decoding happens after the resource is loaded (e.g. a font) or, in the case of a CachedImage, we don&apos;t explicitly query the status of the image decoder and hence don&apos;t update the status of the CachedResource (i.e. CachedResource::setStatus()) when an actual decoder error occurs. CachedImage is implicitly (*) informed about a decode error by the return value of calling Image::setData() in CachedImage::addIncrementalDataBuffer(), &lt;http://trac.webkit.org/browser/trunk/Source/WebCore/loader/cache/CachedImage.cpp?rev=161309#L406&gt; and CachedImage::finishLoading(), &lt;http://trac.webkit.org/browser/trunk/Source/WebCore/loader/cache/CachedImage.cpp?rev=161309#L447&gt;. As aforementioned, we don&apos;t use this return value to update the status of the resource.

(*) Looking at the control flow for a bitmap image, Image::setData() =&gt; BitmapImage::dataChanged() =&gt; ImageSource::isSizeAvailable() =&gt; BitmapImage::isSizeAvailable() =&gt; ImageSource::isSizeAvailable(). And ImageSource::isSizeAvailable() (as defined in ImageSourceCG.cpp) will return false if the status of the decoder is EOF was encountered unexpectedly (kCGImageStatusUnexpectedEOF), invalid data (kCGImageStatusInvalidData), the image is an unknown type (kCGImageStatusUnknownType), the decoder is in the process of reading the header of the image (kCGImageStatusReadingHeader), and &quot;the operation is not complete&quot; (kCGImageStatusIncomplete). See &lt;https://developer.apple.com/library/ios/documentation/graphicsimaging/reference/CGImageSource/Reference/reference.html&gt; for more details on the aforementioned status codes.

&gt; That said, it seems strange that a platform limitation like this is implemented via simulating a load failure.

This platform limitation doesn&apos;t trigger a load failure therefore the assertion failure. That is, when a decode error occurs we continue the load through to completion and hence SubresourceLoader::didFinishLoading() is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982007</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-02-18 11:26:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/16093385&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984885</commentid>
    <comment_count>5</comment_count>
      <attachid>225292</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-02-26 13:45:59 -0800</bug_when>
    <thetext>Created attachment 225292
Work-in-progress patch

Work-in-progress patch. There are some FIXME comments that need to be addressed in this patch. I&apos;m not happy with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984991</commentid>
    <comment_count>6</comment_count>
      <attachid>225323</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-02-26 16:52:06 -0800</bug_when>
    <thetext>Created attachment 225323
Patch and Layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984996</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-02-26 17:01:03 -0800</bug_when>
    <thetext>After speaking with Alexey Proskuryakov in-person today (02/26) we may want to consider removing the setting Settings::maximumDecodedImageSize() and related logic since the logic for this feature is broken. Specifically, when a maximum decoded image size is specified and an image exceeds it during an incremental load we don&apos;t cancel the load, see bug #129394. Additionally, when we determine that an image exceeds the maximum decoded image size on load completion we allow it to be decoded (though we may use subsampling) instead of preventing it from being decoded. Although when an image exceeds the maximum decoded image size we remove it from the memory cache, Simon Fraser raised a concern that we may subsequently download it again (and fail with the same decoding error) because we remove it from the memory cache without telling WebKit to prevent subsequent loads for the image. A minor issue is that Settings::maximumDecodedImageSize() seems too stringent for image documents. That is, loading an image file directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985592</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-02-28 09:25:11 -0800</bug_when>
    <thetext>Committed r164863: &lt;http://trac.webkit.org/changeset/164863&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225292</attachid>
            <date>2014-02-26 13:45:59 -0800</date>
            <delta_ts>2014-02-26 16:52:03 -0800</delta_ts>
            <desc>Work-in-progress patch</desc>
            <filename>WIP27029.patch</filename>
            <type>text/plain</type>
            <size>5070</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBkODMyZTk3Y2E2YmI2ZjM0YjA0ZGNmNzc2YzdlMDUyZWQzM2Y4MDA5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDIxIEZlYiAyMDE0IDE0OjExOjQ5IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gV0lQIC0g
RGVjb2RlIEVycm9yCgotLS0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAg
ICAgICAgICAgICB8ICAyICsrCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwICAgICAgfCAxOCArKysrKysrKysrKysrKysrLS0KIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5oICAgICAgICB8ICAxICsKIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwICB8ICAxICsKIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcCB8ICA2ICsrKysrKwogNSBmaWxlcyBjaGFuZ2Vk
LCAyNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwCmluZGV4IDUxZGIxYjIuLmNlNTM3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcApAQCAtMTM2LDYgKzEzNiw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudFBh
cnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KQog
ICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gZnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBjYWNoZWRJbWFnZS0+
YWRkRGF0YUJ1ZmZlcihyZXNvdXJjZURhdGEuZ2V0KCkpOwogCisgICAgLy8gRklYTUU6IFdoYXQg
c2hvdWxkIHdlIGRvIGlmIGEgZGVjb2RlIGVycm9yIG9jY3VycyBoZXJlPwogICAgIGRvY3VtZW50
KCktPmltYWdlVXBkYXRlZCgpOwogfQogCkBAIC0xNTAsNiArMTUxLDcgQEAgdm9pZCBJbWFnZURv
Y3VtZW50UGFyc2VyOjpmaW5pc2goKQogICAgICAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpKQog
ICAgICAgICAgICAgZGF0YSA9IGRhdGEtPmNvcHkoKTsKIAorICAgICAgICAvLyBGSVhNRTogV2hh
dCBzaG91bGQgd2UgZG8gaWYgYSBkZWNvZGUgZXJyb3Igb2NjdXJzIGhlcmU/CiAgICAgICAgIGNh
Y2hlZEltYWdlLT5maW5pc2hMb2FkaW5nKGRhdGEuZ2V0KCkpOwogICAgICAgICBjYWNoZWRJbWFn
ZS0+ZmluaXNoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQzNmUzMTQuLjNkNjFlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMjQxLDggKzI0MSw5IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+c3VicmVzb3VyY2VMb2FkZXJGaW5pc2hlZExv
YWRpbmdPbmVQYXJ0KHRoaXMpOwogICAgICAgICBkaWRGaW5pc2hMb2FkaW5nT25lUGFydCgwKTsK
ICAgICB9Ci0KLSAgICBjaGVja0ZvckhUVFBTdGF0dXNDb2RlRXJyb3IoKTsKKyAgICBpZiAoY2hl
Y2tGb3JIVFRQU3RhdHVzQ29kZUVycm9yKCkpCisgICAgICAgIHJldHVybjsKKyAgICBjaGVja0Zv
ckRlY29kZUVycm9yKCk7CiB9CiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQpAQCAtMjc1LDYgKzI3
NiwxNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIFBhcwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX3Jlc291cmNlLT5hZGREYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KKyAgICBjaGVja0ZvckRlY29k
ZUVycm9yKCk7Cit9CisKK2Jvb2wgU3VicmVzb3VyY2VMb2FkZXI6OmNoZWNrRm9yRGVjb2RlRXJy
b3IoKQoreworICAgIGlmIChtX3Jlc291cmNlLT5zdGF0dXMoKSAhPSBDYWNoZWRSZXNvdXJjZTo6
RGVjb2RlRXJyb3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fc3RhdGUgPSBGaW5p
c2hpbmc7CisgICAgY2FuY2VsKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgU3VicmVz
b3VyY2VMb2FkZXI6OmNoZWNrRm9ySFRUUFN0YXR1c0NvZGVFcnJvcigpCkBAIC0zMDgsNiArMzIw
LDggQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmlu
aXNoVGltZSkKICAgICBtX3Jlc291cmNlLT5zZXRMb2FkRmluaXNoVGltZShmaW5pc2hUaW1lKTsK
ICAgICBtX3Jlc291cmNlLT5maW5pc2hMb2FkaW5nKHJlc291cmNlRGF0YSgpKTsKIAorICAgIGlm
IChjaGVja0ZvckRlY29kZUVycm9yKCkpCisgICAgICAgIHJldHVybjsKICAgICBpZiAod2FzQ2Fu
Y2VsbGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX3Jlc291cmNlLT5maW5pc2goKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggNThhNzgxNy4uYzUw
ZGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTg0
LDYgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1
ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKSBvdmVycmlkZTsK
ICNlbmRpZgogCisgICAgYm9vbCBjaGVja0ZvckRlY29kZUVycm9yKCk7CiAgICAgYm9vbCBjaGVj
a0ZvckhUVFBTdGF0dXNDb2RlRXJyb3IoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCBjaGFyKiwgaW50LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggOTQ5NzRhNS4uYjlmMWU0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5j
cHAKQEAgLTYyLDYgKzYyLDcgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmFkZERhdGFCdWZmZXIo
UmVzb3VyY2VCdWZmZXIqIGRhdGEpCiB2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUJ1ZmZlciogZGF0YSkKIHsKICAgICBhZGREYXRhQnVmZmVyKGRhdGEpOworICAg
IC8vIEZJWE1FOiBXaGF0IHNob3VsZCB3ZSBkbyBpZiBhIGRlY29kZSBlcnJvciBvY2N1cnMgaGVy
ZT8KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwCmluZGV4IDU3
Njc2MDQuLjBmZWYzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9TdWJy
ZXNvdXJjZUxvYWRlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVz
b3VyY2VMb2FkZXJDRi5jcHAKQEAgLTQyLDYgKzQyLDkgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKICAgICBpZiAoY2hl
Y2tGb3JIVFRQU3RhdHVzQ29kZUVycm9yKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChj
aGVja0ZvckRlY29kZUVycm9yKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIEEgc3VicmVz
b3VyY2UgbG9hZGVyIGRvZXMgbm90IGxvYWQgbXVsdGlwYXJ0IHNlY3Rpb25zIHByb2dyZXNzaXZl
bHkuCiAgICAgLy8gU28gZG9uJ3QgZGVsaXZlciBhbnkgZGF0YSB0byB0aGUgbG9hZGVyIHlldC4K
ICAgICBpZiAoIW1fbG9hZGluZ011bHRpcGFydENvbnRlbnQpIHsKQEAgLTYwLDggKzYzLDExIEBA
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBk
YXRhQXJyYXkpCiAgICAgICAgICAgICAgICAgQVNTRVJUKGxlbmd0aCA8PSBzdGQ6Om51bWVyaWNf
bGltaXRzPENGSW5kZXg+OjptYXgoKSk7CiAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZS0+YWRk
RGF0YShkYXRhLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKSk7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoY2hlY2tGb3JEZWNvZGVFcnJvcigpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KKyAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSk7CiB9CiAjZW5kaWYKIAotLSAKMS44LjUuMiAoQXBwbGUgR2l0LTQ4KQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225323</attachid>
            <date>2014-02-26 16:52:06 -0800</date>
            <delta_ts>2014-02-27 11:12:29 -0800</delta_ts>
            <desc>Patch and Layout test</desc>
            <filename>bug-127029-20140226165222.patch</filename>
            <type>text/plain</type>
            <size>4829</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjljMzU4OThhZjczZmMw
Y2JkNDM2MTQyNjViZDQzYTBiMjQ1YmVmYS4uMmU2NzRhM2IzNTZhODVlZGFjNzQzYzdlM2RiOGU3
MDU3NGQ0ZjliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTAyLTI2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZygpIHNob3VsZCBub3QgYXNzZXJ0IHdoZW4gYSBkZWNvZGUgZXJy
b3Igb2NjdXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjcwMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygpIGNhbiBiZSBjYWxsZWQgZm9y
IGEgcmVzb3VyY2UgKGUuZy4gYW4gaW1hZ2UpIHRoYXQKKyAgICAgICAgZmFpbGVkIHRvIGJlIGRl
Y29kZWQgb3IsIGluIHRoZSBjYXNlIG9mIGFuIGltYWdlLCB3aG9zZSBlc3RpbWF0ZWQgZGVjb2Rl
ZCBzaXplIGV4Y2VlZHMKKyAgICAgICAgdGhlIG1heGltdW0gZGVjb2RlZCBzaXplIChTZXR0aW5n
czo6bWF4aW11bURlY29kZWRJbWFnZVNpemUoKSkuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFn
ZXMvZGVjb2RlZC1zaXplLWV4Y2VlZHMtbWF4LWRlY29kZWQtc2l6ZS5odG1sCisKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorCiAyMDE0LTAyLTI2ICBEZWFuIEphY2tz
b24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIE9ubHkgc2tpcCBjb250ZXh0
IGVycm9yIHJldHJpZXZhbCBpZiBhIHBlbmRpbmcgY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDM2ZTMxNDI5NzE0YWQyMzFhMTk1ODYx
ZDc5MmUyMDg0M2VlN2FiNS4uYmIyYjU0Mzc1NzFhZmZkOWU2NjI0OTk1MDBkNjBhZTk5Zjc1ZjA4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0y
OTQsNyArMjk0LDggQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhk
b3VibGUgZmluaXNoVGltZSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCghcmVhY2hlZFRl
cm1pbmFsU3RhdGUoKSk7CiAgICAgQVNTRVJUKCFtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxp
ZGF0ZSgpKTsKLSAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSk7CisgICAg
Ly8gRklYTUUgKDEyOTM5NCk6IFdlIHNob3VsZCBjYW5jZWwgdGhlIGxvYWQgd2hlbiBhIGRlY29k
ZSBlcnJvciBvY2N1cnMgaW5zdGVhZCBvZiBjb250aW51aW5nIHRoZSBsb2FkIHRvIGNvbXBsZXRp
b24uCisgICAgQVNTRVJUKCFtX3Jlc291cmNlLT5lcnJvck9jY3VycmVkKCkgfHwgbV9yZXNvdXJj
ZS0+c3RhdHVzKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkRlY29kZUVycm9yKTsKICAgICBMT0coUmVz
b3VyY2VMb2FkaW5nLCAiUmVjZWl2ZWQgJyVzJy4iLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCkpOwogCiAgICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0
KCp0aGlzKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBlMTdkN2Q1Mzk2MWMxYjA2YTEzZWY4ZmE1NTQ4ZTJiM2Q1NzVjZGI2
Li42YjFhOTJmZGExOTJhZGRmNjJmYzRlMjI2OTNmNTY0NTI2MzVhMDk3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTQtMDItMjYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgor
CisgICAgICAgIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkgc2hvdWxkIG5v
dCBhc3NlcnQgd2hlbiBhIGRlY29kZSBlcnJvciBvY2N1cnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzAyOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgdGVzdCB0byBlbnN1cmUgdGhhdCB3
ZSBkb24ndCBjYXVzZSBhbiBhc3NlcnRpb24gZmFpbHVyZSB3aGVuIGFuIGltYWdlIGZhaWxzCisg
ICAgICAgIHRvIGxvYWQgYmVjYXVzZSBvZiBhIGRlY29kZSBlcnJvci4gSW4gcGFydGljdWxhciwg
dGhlIGVzdGltYXRlZCBkZWNvZGVkIGltYWdlIHNpemUKKyAgICAgICAgZXhjZWVkcyB0aGUgbWF4
aW11bSBkZWNvZGVkIGltYWdlIHNpemUuCisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9kZWNvZGVk
LXNpemUtZXhjZWVkcy1tYXgtZGVjb2RlZC1zaXplLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9pbWFnZXMvZGVjb2RlZC1zaXplLWV4Y2VlZHMtbWF4LWRlY29kZWQtc2l6ZS5o
dG1sOiBBZGRlZC4KKwogMjAxNC0wMi0yNiAgQmVtIEpvbmVzLUJleSAgPGJqb25lc2JlQGFkb2Jl
LmNvbT4KIAogICAgICAgICBbQ1NTIFNoYXBlc10gaW5zZXQgYW5kIGluc2V0LXJlY3RhbmdsZSB0
cmlnZ2VyIGFzc2VydCB3aXRoIHJlcGxhY2VkIGVsZW1lbnQgYW5kIGxhcmdlIHBlcmNlbnRhZ2Ug
ZGltZW5zaW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGVkLXNp
emUtZXhjZWVkcy1tYXgtZGVjb2RlZC1zaXplLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL2RlY29kZWQtc2l6ZS1leGNlZWRzLW1heC1kZWNvZGVkLXNpemUtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAwZTAyNjliNDA2NzM5Zjg1MjdkZjVjMTE0NjljMTFlMDA5MzkyMmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kZWNvZGVkLXNpemUt
ZXhjZWVkcy1tYXgtZGVjb2RlZC1zaXplLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitU
ZXN0cyB0aGF0IGFuIGltYWdlIHdob3NlIHNpemUgZXhjZWVkcyB0aGUgbWF4aW11bSBkZWNvZGVk
IHNpemUgZGlzcGF0Y2hlcyBhIERPTSBlcnJvciBldmVudC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgZXZlbnQudHlwZSBpcyAnZXJyb3InLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2RlY29kZWQtc2l6ZS1leGNlZWRzLW1heC1kZWNvZGVkLXNpemUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2RlY29kZWQtc2l6ZS1leGNlZWRzLW1heC1kZWNv
ZGVkLXNpemUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDk3NjY1MDczZTllMmUxZjNlNjdmMWYzYzgzNTA3
NzI2MmI3OTNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVj
b2RlZC1zaXplLWV4Y2VlZHMtbWF4LWRlY29kZWQtc2l6ZS5odG1sCkBAIC0wLDAgKzEsMjYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0TWF4aW11bURlY29kZWRJbWFnZVNpemUoMCk7IC8vIGJ5dGVzCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGltZyBzcmM9InJlc291cmNlcy9yZWQtMjU2eDI1Ni5q
cGciIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBvbmVycm9yPSJjaGVja0Rpc3BhdGNoZWRFdmVu
dChldmVudCkiIG9ubG9hZD0iY2hlY2tEaXNwYXRjaGVkRXZlbnQoZXZlbnQpIj4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhbiBpbWFnZSB3aG9zZSBzaXplIGV4Y2VlZHMgdGhl
IG1heGltdW0gZGVjb2RlZCBzaXplIGRpc3BhdGNoZXMgYSBET00gZXJyb3IgZXZlbnQuIik7Citm
dW5jdGlvbiBjaGVja0Rpc3BhdGNoZWRFdmVudChldmVudCkKK3sKKyAgICBpZiAoZXZlbnQudHlw
ZSA9PT0gImVycm9yIikKKyAgICAgICAgdGVzdFBhc3NlZCgiZXZlbnQudHlwZSBpcyAnZXJyb3In
LiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdFBhc3NlZCgiZXZlbnQudHlwZSBzaG91bGQgaGF2
ZSBiZWVuICdlcnJvcicuIFdhcyAnIiArIGV2ZW50LnR5cGUgKyAiJy4iKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="249449"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>