<?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>46854</bug_id>
          
          <creation_ts>2010-09-29 16:48:35 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: the Google Chrome port should be able to have its own test expectations overrides</short_desc>
          <delta_ts>2010-10-04 15:25:51 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>287214</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-29 16:48:35 -0700</bug_when>
    <thetext>It&apos;s possible that an official build of Google Chrome will have different test expectations as well as different baselines. We should be able to support this using just an overrides file in the Chromium repository, since (a) the file will usually be empty, and (b) it&apos;s branched at the same times as the official build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287226</commentid>
    <comment_count>1</comment_count>
      <attachid>69281</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-29 17:05:07 -0700</bug_when>
    <thetext>Created attachment 69281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287259</commentid>
    <comment_count>2</comment_count>
      <attachid>69281</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-09-29 17:41:23 -0700</bug_when>
    <thetext>Comment on attachment 69281
Patch

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

r- because of unittests, but the approach seems fine.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/google_chrome.py:39
&gt; +    except AssertionError:
&gt; +        # FIXME: when does this get raised?

This probably gets raised in a pure webkit checkout which doesn&apos;t have a chromium base (I think path_from_chromium_base raises it).

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:54
&gt; +        # FIXME: make this more robust when we have the Tree() abstraction.
&gt; +        # we should be able to test for the files existing or not, and

I don&apos;t like this test because it uses the current checked in files.  Can you just call _test_expectations_overrides directly and pass in mock objects instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287267</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-29 17:51:24 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 69281 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69281&amp;action=review
&gt; 
&gt; r- because of unittests, but the approach seems fine.
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/google_chrome.py:39
&gt; &gt; +    except AssertionError:
&gt; &gt; +        # FIXME: when does this get raised?
&gt; 
&gt; This probably gets raised in a pure webkit checkout which doesn&apos;t have a chromium base (I think path_from_chromium_base raises it).
&gt; 

Yeah, that was what I thought, too, but it looks like tkent took out that AssertionError in r60427 when he added support for DRT. Which I think is actually incorrect, because it assumes you&apos;ve done build-webkit --chromium to pull in the third_party tree. Adding tkent to confirm ...

http://trac.webkit.org/changeset/60427

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:54
&gt; &gt; +        # FIXME: make this more robust when we have the Tree() abstraction.
&gt; &gt; +        # we should be able to test for the files existing or not, and
&gt; 
&gt; I don&apos;t like this test because it uses the current checked in files.  Can you just call _test_expectations_overrides directly and pass in mock objects instead?

I agree that the current test isn&apos;t great; that&apos;s why I put in the FIXME. We can use &quot;proper&quot; mocks once the Tree() abstraction is introduced (see https://bugs.webkit.org/show_bug.cgi?id=46776 , which is currently waiting on a review). Until then, _test_expectations_overrides doesn&apos;t take any mock objects, so I&apos;d either have to mock codecs.open(), or change the signature of the file to inject the dependencies to make them testable, and I&apos;m not a big fan of that pattern.

So, I can either mock codecs.open(), or just wait for the other patch to land. I&apos;d prefer to do the latter; what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287274</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-09-29 17:58:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I agree that the current test isn&apos;t great; that&apos;s why I put in the FIXME. We can use &quot;proper&quot; mocks once the Tree() abstraction is introduced (see https://bugs.webkit.org/show_bug.cgi?id=46776 , which is currently waiting on a review). Until then, _test_expectations_overrides doesn&apos;t take any mock objects, so I&apos;d either have to mock codecs.open(), or change the signature of the file to inject the dependencies to make them testable, and I&apos;m not a big fan of that pattern.
&gt; 
&gt; So, I can either mock codecs.open(), or just wait for the other patch to land. I&apos;d prefer to do the latter; what do you think?

You can pass in a mock |port| with a mock |path_from_chromium_base| method that returns a test file (or maybe even a StringIO).  It would still touch disk, but at least it would be a test file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287286</commentid>
    <comment_count>5</comment_count>
      <attachid>69281</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-29 18:17:06 -0700</bug_when>
    <thetext>Comment on attachment 69281
Patch

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

&gt;&gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/google_chrome.py:39
&gt;&gt;&gt; +        # FIXME: when does this get raised?
&gt;&gt; 
&gt;&gt; This probably gets raised in a pure webkit checkout which doesn&apos;t have a chromium base (I think path_from_chromium_base raises it).
&gt; 
&gt; Yeah, that was what I thought, too, but it looks like tkent took out that AssertionError in r60427 when he added support for DRT. Which I think is actually incorrect, because it assumes you&apos;ve done build-webkit --chromium to pull in the third_party tree. Adding tkent to confirm ...
&gt; 
&gt; http://trac.webkit.org/changeset/60427

I&apos;m not sure whether we should raise AssertionError in path_from_chromium_base or not.  If we&apos;d like to raise it, we should check existence of os.path.join(self._chromium_base_dir, &apos;webkit&apos;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287300</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-29 18:35:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 69281 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69281&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/google_chrome.py:39
&gt; &gt;&gt;&gt; +        # FIXME: when does this get raised?
&gt; &gt;&gt; 
&gt; &gt;&gt; This probably gets raised in a pure webkit checkout which doesn&apos;t have a chromium base (I think path_from_chromium_base raises it).
&gt; &gt; 
&gt; &gt; Yeah, that was what I thought, too, but it looks like tkent took out that AssertionError in r60427 when he added support for DRT. Which I think is actually incorrect, because it assumes you&apos;ve done build-webkit --chromium to pull in the third_party tree. Adding tkent to confirm ...
&gt; &gt; 
&gt; &gt; http://trac.webkit.org/changeset/60427
&gt; 
&gt; I&apos;m not sure whether we should raise AssertionError in path_from_chromium_base or not.  If we&apos;d like to raise it, we should check existence of os.path.join(self._chromium_base_dir, &apos;webkit&apos;).

Well, as long as it&apos;s possible to try and create a chromium port and the needed fiiles might not be there, something should assert somewhere. It seems reasonable for path_from_chromium_base to assert if it can&apos;t actually find the checkout. It might also be reasonable to fail during the constructor if it figures out that it&apos;s not in a checkout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287301</commentid>
    <comment_count>7</comment_count>
      <attachid>69292</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-29 18:36:05 -0700</bug_when>
    <thetext>Created attachment 69292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287303</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-29 18:38:22 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; I agree that the current test isn&apos;t great; that&apos;s why I put in the FIXME. We can use &quot;proper&quot; mocks once the Tree() abstraction is introduced (see https://bugs.webkit.org/show_bug.cgi?id=46776 , which is currently waiting on a review). Until then, _test_expectations_overrides doesn&apos;t take any mock objects, so I&apos;d either have to mock codecs.open(), or change the signature of the file to inject the dependencies to make them testable, and I&apos;m not a big fan of that pattern.
&gt; &gt; 
&gt; &gt; So, I can either mock codecs.open(), or just wait for the other patch to land. I&apos;d prefer to do the latter; what do you think?
&gt; 
&gt; You can pass in a mock |port| with a mock |path_from_chromium_base| method that returns a test file (or maybe even a StringIO).  It would still touch disk, but at least it would be a test file.

creating a dummy file that has to be checked in and hitting disk to verify it seems like a worse solution than mocking codecs.open and os.path.exists. I&apos;ve added a patch that does the latter instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287628</commentid>
    <comment_count>9</comment_count>
      <attachid>69292</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-09-30 10:31:40 -0700</bug_when>
    <thetext>Comment on attachment 69292
Patch

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

LGTM with the try/catch removed.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/google_chrome.py:40
&gt; +    except AssertionError:
&gt; +        # FIXME: this doesn&apos;t seem to get raised after r60427, but it probably
&gt; +        # should still be possible.

If it&apos;s not possible for this to be raised, we should remove it for now.  Once we add back the AssertionError, we can put this code back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289192</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-04 15:11:29 -0700</bug_when>
    <thetext>Committed r69040: &lt;http://trac.webkit.org/changeset/69040&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289211</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-04 15:25:51 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/69040 might have broken Chromium Linux Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69281</attachid>
            <date>2010-09-29 17:05:07 -0700</date>
            <delta_ts>2010-09-29 18:36:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46854-20100929170506.patch</filename>
            <type>text/plain</type>
            <size>6731</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmZDYxMWU5NGY5NDRlM2MyN2UzMjdlOTYxMzQ0YTkwNTBmYzE3MzM5Li5mNzcyNzVl
NDQyMDcwMjlmMDllOTkwODIwYWQ4NzNjMTdhZTgzMWIyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDktMjkgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgd2F5IGZvciB1
cyB0byBoYXZlIHRlc3QgZXhwZWN0YXRpb25zIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZQorICAg
ICAgICBvZmZpY2lhbCBidWlsZHMgb2YgR29vZ2xlIENocm9tZSAoYXMgb3Bwb3NlZCB0byBDaHJv
bWl1bSkuIFRoaXMgY2hhbmdlCisgICAgICAgIGxvb2tzIGZvciBhbiBhZGRpdGlvbmFsICJ0ZXN0
X2V4cGVjdGF0aW9uc19jaHJvbWUudHh0IiBmaWxlIGluCisgICAgICAgIENocm9taXVtJ3MgcmVw
b3NpdG9yeSAod2Via2l0L3Rvb2xzL2xheW91dF90ZXN0cyksIGFuZCB1c2VzIHRoZQorICAgICAg
ICBjb25jYXRlbmF0aW9uIG9mIHRoYXQgZmlsZSBhbmQgdGhlIHJlZ3VsYXIgdGVzdF9leHBlY3Rh
dGlvbnMudHh0CisgICAgICAgIGZpbGUgZm9yIHRlc3Qgb3ZlcnJpZGVzLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njg1NAorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91
bml0dGVzdC5weToKKwogMjAxMC0wOS0yOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBObyByZXZpZXcuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUu
cHkKaW5kZXggYmZmYzg2MGUyMmE4NzllNmExNzQ0OTliMjM5OWM2Y2ZiZDQ5YmEyYS4uYjBlZTMy
MDc5OGM3YTQ3NTAyZmE3M2Y0MGM2MDY1ZGI0NWM5YmRhMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xl
X2Nocm9tZS5weQpAQCAtMjQsNiArMjQsMjcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBvcworCisKK2RlZiBfdGVzdF9leHBlY3RhdGlv
bnNfb3ZlcnJpZGVzKHBvcnQsIHN1cGVyKToKKyAgICAjIFRoZSBjaHJvbWUgcG9ydHMgdXNlIHRo
ZSByZWd1bGFyIG92ZXJyaWRlcyBwbHVzIGFueXRoaW5nIGluIHRoZQorICAgICMgb2ZmaWNpYWwg
dGVzdF9leHBlY3RhdGlvbnMgYXMgd2VsbC4gSG9wZWZ1bGx5IHdlIGRvbid0IGdldCBjb2xsaXNp
b25zLgorICAgIGNocm9taXVtX292ZXJyaWRlcyA9IHN1cGVyLnRlc3RfZXhwZWN0YXRpb25zX292
ZXJyaWRlcyhwb3J0KQorICAgIHRyeToKKyAgICAgICAgb3ZlcnJpZGVzX3BhdGggPSBwb3J0LnBh
dGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd3ZWJraXQnLCAndG9vbHMnLAorICAgICAgICAgICAgJ2xh
eW91dF90ZXN0cycsICd0ZXN0X2V4cGVjdGF0aW9uc19jaHJvbWUudHh0JykKKyAgICBleGNlcHQg
QXNzZXJ0aW9uRXJyb3I6CisgICAgICAgICMgRklYTUU6IHdoZW4gZG9lcyB0aGlzIGdldCByYWlz
ZWQ/CisgICAgICAgIHJldHVybiBjaHJvbWl1bV9vdmVycmlkZXMKKyAgICBpZiBub3Qgb3MucGF0
aC5leGlzdHMob3ZlcnJpZGVzX3BhdGgpOgorICAgICAgICByZXR1cm4gY2hyb21pdW1fb3ZlcnJp
ZGVzCisgICAgd2l0aCBjb2RlY3Mub3BlbihvdmVycmlkZXNfcGF0aCwgInIiLCAidXRmLTgiKSBh
cyBmaWxlOgorICAgICAgICBpZiBjaHJvbWl1bV9vdmVycmlkZXM6CisgICAgICAgICAgICByZXR1
cm4gY2hyb21pdW1fb3ZlcnJpZGVzICsgZmlsZS5yZWFkKCkKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQogCiBkZWYgR2V0R29vZ2xlQ2hyb21lUG9ydCgqKmt3
YXJncyk6CiAgICAgIiIiU29tZSB0ZXN0cyBoYXZlIHNsaWdodGx5IGRpZmZlcmVudCByZXN1bHRz
IHdoZW4gY29tcGlsZWQgYXMgR29vZ2xlCkBAIC00MSw2ICs2MiwxMSBAQCBkZWYgR2V0R29vZ2xl
Q2hyb21lUG9ydCgqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgcGF0aHMuaW5zZXJ0KDAsIHNl
bGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKAogICAgICAgICAgICAgICAgICAgICAnZ29vZ2xlLWNo
cm9tZS1saW51eDMyJykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGhzCisKKyAgICAgICAg
ICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZik6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIF90ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZiwKKyAgICAgICAgICAg
ICAgICAgICAgY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQpCisKICAgICAgICAgcmV0
dXJuIEdvb2dsZUNocm9tZUxpbnV4MzJQb3J0KCoqa3dhcmdzKQogICAgIGVsaWYgcG9ydF9uYW1l
ID09ICdnb29nbGUtY2hyb21lLWxpbnV4NjQnOgogICAgICAgICBpbXBvcnQgY2hyb21pdW1fbGlu
dXgKQEAgLTUyLDYgKzc4LDExIEBAIGRlZiBHZXRHb29nbGVDaHJvbWVQb3J0KCoqa3dhcmdzKToK
ICAgICAgICAgICAgICAgICBwYXRocy5pbnNlcnQoMCwgc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3Bh
dGgoCiAgICAgICAgICAgICAgICAgICAgICdnb29nbGUtY2hyb21lLWxpbnV4NjQnKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gcGF0aHMKKworICAgICAgICAgICAgZGVmIHRlc3RfZXhwZWN0YXRp
b25zX292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX3Rlc3RfZXhwZWN0
YXRpb25zX292ZXJyaWRlcyhzZWxmLAorICAgICAgICAgICAgICAgICAgICBjaHJvbWl1bV9saW51
eC5DaHJvbWl1bUxpbnV4UG9ydCkKKwogICAgICAgICByZXR1cm4gR29vZ2xlQ2hyb21lTGludXg2
NFBvcnQoKiprd2FyZ3MpCiAgICAgZWxpZiBwb3J0X25hbWUuc3RhcnRzd2l0aCgnZ29vZ2xlLWNo
cm9tZS1tYWMnKToKICAgICAgICAgaW1wb3J0IGNocm9taXVtX21hYwpAQCAtNjMsNiArOTQsMTEg
QEAgZGVmIEdldEdvb2dsZUNocm9tZVBvcnQoKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIHBh
dGhzLmluc2VydCgwLCBzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgKICAgICAgICAgICAgICAg
ICAgICAgJ2dvb2dsZS1jaHJvbWUtbWFjJykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGhz
CisKKyAgICAgICAgICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZik6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIF90ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZiwK
KyAgICAgICAgICAgICAgICAgICAgY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydCkKKwogICAg
ICAgICByZXR1cm4gR29vZ2xlQ2hyb21lTWFjUG9ydCgqKmt3YXJncykKICAgICBlbGlmIHBvcnRf
bmFtZS5zdGFydHN3aXRoKCdnb29nbGUtY2hyb21lLXdpbicpOgogICAgICAgICBpbXBvcnQgY2hy
b21pdW1fd2luCkBAIC03NCw1ICsxMTAsMTAgQEAgZGVmIEdldEdvb2dsZUNocm9tZVBvcnQoKipr
d2FyZ3MpOgogICAgICAgICAgICAgICAgIHBhdGhzLmluc2VydCgwLCBzZWxmLl93ZWJraXRfYmFz
ZWxpbmVfcGF0aCgKICAgICAgICAgICAgICAgICAgICAgJ2dvb2dsZS1jaHJvbWUtd2luJykpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHBhdGhzCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X2V4cGVj
dGF0aW9uc19vdmVycmlkZXMoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIF90ZXN0X2V4
cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgY2hyb21pdW1f
d2luLkNocm9taXVtV2luUG9ydCkKKwogICAgICAgICByZXR1cm4gR29vZ2xlQ2hyb21lV2luUG9y
dCgqKmt3YXJncykKICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCd1bnN1cHBvcnRlZCBw
b3J0OiAlcycgJSBwb3J0X25hbWUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVf
dW5pdHRlc3QucHkKaW5kZXggODVlOTMzODcyMmFmNjg3ZGU3YTFlYzMzYjZiMjI0ZGM2ZjllYmU1
NC4uZDU4MzZkMzA5MTkxYzRkNGRkZmI3NTNkZDk1ZmE3MmIzNWQwNTk1MiAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hy
b21lX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weQpAQCAtMjYsNiArMjYsOCBAQAog
CiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgZmFjdG9yeQogaW1wb3J0IGdv
b2dsZV9jaHJvbWUKIAogCkBAIC0zNSw2ICszNyw3IEBAIGNsYXNzIEdldEdvb2dsZUNocm9tZVBv
cnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICdnb29nbGUtY2hyb21lLW1h
YycsICdnb29nbGUtY2hyb21lLXdpbicpCiAgICAgICAgIGZvciBwb3J0IGluIHRlc3RfcG9ydHM6
CiAgICAgICAgICAgICBzZWxmLl92ZXJpZnlfYmFzZWxpbmVfcGF0aChwb3J0LCBwb3J0KQorICAg
ICAgICAgICAgc2VsZi5fdmVyaWZ5X2V4cGVjdGF0aW9uc19vdmVycmlkZXMocG9ydCkKIAogICAg
ICAgICBzZWxmLl92ZXJpZnlfYmFzZWxpbmVfcGF0aCgnZ29vZ2xlLWNocm9tZS1tYWMnLCAnZ29v
Z2xlLWNocm9tZS1tYWMtbGVvcGFyZCcpCiAgICAgICAgIHNlbGYuX3ZlcmlmeV9iYXNlbGluZV9w
YXRoKCdnb29nbGUtY2hyb21lLXdpbicsICdnb29nbGUtY2hyb21lLXdpbi14cCcpCkBAIC00NSwz
ICs0OCwyNiBAQCBjbGFzcyBHZXRHb29nbGVDaHJvbWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0
aW9ucz1Ob25lKQogICAgICAgICBwYXRoID0gcG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCgpWzBd
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfcGF0aCwgb3MucGF0aC5zcGxpdChw
YXRoKVsxXSkKKworICAgIGRlZiBfdmVyaWZ5X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZiwg
cG9ydF9uYW1lKToKKyAgICAgICAgIyBGSVhNRTogbWFrZSB0aGlzIG1vcmUgcm9idXN0IHdoZW4g
d2UgaGF2ZSB0aGUgVHJlZSgpIGFic3RyYWN0aW9uLgorICAgICAgICAjIHdlIHNob3VsZCBiZSBh
YmxlIHRvIHRlc3QgZm9yIHRoZSBmaWxlcyBleGlzdGluZyBvciBub3QsIGFuZAorICAgICAgICAj
IGJlIGFibGUgdG8gY29udHJvbCB0aGUgY29udGVudHMgYmV0dGVyLgorCisgICAgICAgIHBvcnQg
PSBnb29nbGVfY2hyb21lLkdldEdvb2dsZUNocm9tZVBvcnQocG9ydF9uYW1lPXBvcnRfbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25z
PU5vbmUpCisgICAgICAgIGNocm9taXVtX3BvcnQgPSBmYWN0b3J5LmdldCgiY2hyb21pdW0tbWFj
IikKKyAgICAgICAgY2hyb21pdW1fb3ZlcnJpZGVzID0gY2hyb21pdW1fcG9ydC50ZXN0X2V4cGVj
dGF0aW9uc19vdmVycmlkZXMoKQorICAgICAgICBjaHJvbWVfb3ZlcnJpZGVzID0gcG9ydC50ZXN0
X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKQorCisgICAgICAgICMgV2Ugc2hvdWxkIGVpdGhlciBn
ZXQgb3ZlcnJpZGVzIGZvciBib3RoIG9yIG5laXRoZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgoY2hyb21pdW1fb3ZlcnJpZGVzIGlzIE5vbmUpID09CisgICAgICAgICAgICAgICAgICAgICAg
ICAoY2hyb21lX292ZXJyaWRlcyBpcyBOb25lKSkKKyAgICAgICAgaWYgY2hyb21lX292ZXJyaWRl
cyAhPSBjaHJvbWl1bV9vdmVycmlkZXM6CisgICAgICAgICAgICAjIElmIHdlIGRvIGdldCBvdmVy
cmlkZXMsIGVuc3VyZSB0aGF0IHRoZSBDaHJvbWUgZXhwZWN0YXRpb25zCisgICAgICAgICAgICAj
IGFyZSBhIHN1cGVyc2V0IG9mIHRoZSBDaHJvbWl1bSBvbmVzLgorICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGNocm9tZV9vdmVycmlkZXMuc3RhcnRzd2l0aChjaHJvbWl1bV9vdmVycmlkZXMp
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJHb29nbGUgQ2hyb21lIiBpbiBjaHJvbWVf
b3ZlcnJpZGVzKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1h
aW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69292</attachid>
            <date>2010-09-29 18:36:05 -0700</date>
            <delta_ts>2010-09-30 10:31:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46854-20100929183604.patch</filename>
            <type>text/plain</type>
            <size>7699</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmZDYxMWU5NGY5NDRlM2MyN2UzMjdlOTYxMzQ0YTkwNTBmYzE3MzM5Li5mNzcyNzVl
NDQyMDcwMjlmMDllOTkwODIwYWQ4NzNjMTdhZTgzMWIyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDktMjkgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgd2F5IGZvciB1
cyB0byBoYXZlIHRlc3QgZXhwZWN0YXRpb25zIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZQorICAg
ICAgICBvZmZpY2lhbCBidWlsZHMgb2YgR29vZ2xlIENocm9tZSAoYXMgb3Bwb3NlZCB0byBDaHJv
bWl1bSkuIFRoaXMgY2hhbmdlCisgICAgICAgIGxvb2tzIGZvciBhbiBhZGRpdGlvbmFsICJ0ZXN0
X2V4cGVjdGF0aW9uc19jaHJvbWUudHh0IiBmaWxlIGluCisgICAgICAgIENocm9taXVtJ3MgcmVw
b3NpdG9yeSAod2Via2l0L3Rvb2xzL2xheW91dF90ZXN0cyksIGFuZCB1c2VzIHRoZQorICAgICAg
ICBjb25jYXRlbmF0aW9uIG9mIHRoYXQgZmlsZSBhbmQgdGhlIHJlZ3VsYXIgdGVzdF9leHBlY3Rh
dGlvbnMudHh0CisgICAgICAgIGZpbGUgZm9yIHRlc3Qgb3ZlcnJpZGVzLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njg1NAorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91
bml0dGVzdC5weToKKwogMjAxMC0wOS0yOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBObyByZXZpZXcuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUu
cHkKaW5kZXggYmZmYzg2MGUyMmE4NzllNmExNzQ0OTliMjM5OWM2Y2ZiZDQ5YmEyYS4uMzI2YWJk
ZjNkNDUzYjljZjJiNDFlMmNmNjk3NTQ4YTA5MTFmN2U5NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xl
X2Nocm9tZS5weQpAQCAtMjQsNiArMjQsMjggQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBvcworCisKK2RlZiBfdGVzdF9leHBlY3RhdGlv
bnNfb3ZlcnJpZGVzKHBvcnQsIHN1cGVyKToKKyAgICAjIFRoZSBjaHJvbWUgcG9ydHMgdXNlIHRo
ZSByZWd1bGFyIG92ZXJyaWRlcyBwbHVzIGFueXRoaW5nIGluIHRoZQorICAgICMgb2ZmaWNpYWwg
dGVzdF9leHBlY3RhdGlvbnMgYXMgd2VsbC4gSG9wZWZ1bGx5IHdlIGRvbid0IGdldCBjb2xsaXNp
b25zLgorICAgIGNocm9taXVtX292ZXJyaWRlcyA9IHN1cGVyLnRlc3RfZXhwZWN0YXRpb25zX292
ZXJyaWRlcyhwb3J0KQorICAgIHRyeToKKyAgICAgICAgb3ZlcnJpZGVzX3BhdGggPSBwb3J0LnBh
dGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd3ZWJraXQnLCAndG9vbHMnLAorICAgICAgICAgICAgJ2xh
eW91dF90ZXN0cycsICd0ZXN0X2V4cGVjdGF0aW9uc19jaHJvbWUudHh0JykKKyAgICBleGNlcHQg
QXNzZXJ0aW9uRXJyb3I6CisgICAgICAgICMgRklYTUU6IHRoaXMgZG9lc24ndCBzZWVtIHRvIGdl
dCByYWlzZWQgYWZ0ZXIgcjYwNDI3LCBidXQgaXQgcHJvYmFibHkKKyAgICAgICAgIyBzaG91bGQg
c3RpbGwgYmUgcG9zc2libGUuCisgICAgICAgIHJldHVybiBjaHJvbWl1bV9vdmVycmlkZXMKKyAg
ICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3ZlcnJpZGVzX3BhdGgpOgorICAgICAgICByZXR1cm4g
Y2hyb21pdW1fb3ZlcnJpZGVzCisgICAgd2l0aCBjb2RlY3Mub3BlbihvdmVycmlkZXNfcGF0aCwg
InIiLCAidXRmLTgiKSBhcyBmaWxlOgorICAgICAgICBpZiBjaHJvbWl1bV9vdmVycmlkZXM6Cisg
ICAgICAgICAgICByZXR1cm4gY2hyb21pdW1fb3ZlcnJpZGVzICsgZmlsZS5yZWFkKCkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQogCiBkZWYgR2V0R29vZ2xl
Q2hyb21lUG9ydCgqKmt3YXJncyk6CiAgICAgIiIiU29tZSB0ZXN0cyBoYXZlIHNsaWdodGx5IGRp
ZmZlcmVudCByZXN1bHRzIHdoZW4gY29tcGlsZWQgYXMgR29vZ2xlCkBAIC00MSw2ICs2MywxMSBA
QCBkZWYgR2V0R29vZ2xlQ2hyb21lUG9ydCgqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgcGF0
aHMuaW5zZXJ0KDAsIHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKAogICAgICAgICAgICAgICAg
ICAgICAnZ29vZ2xlLWNocm9tZS1saW51eDMyJykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBh
dGhzCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZik6
CisgICAgICAgICAgICAgICAgcmV0dXJuIF90ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2Vs
ZiwKKyAgICAgICAgICAgICAgICAgICAgY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQp
CisKICAgICAgICAgcmV0dXJuIEdvb2dsZUNocm9tZUxpbnV4MzJQb3J0KCoqa3dhcmdzKQogICAg
IGVsaWYgcG9ydF9uYW1lID09ICdnb29nbGUtY2hyb21lLWxpbnV4NjQnOgogICAgICAgICBpbXBv
cnQgY2hyb21pdW1fbGludXgKQEAgLTUyLDYgKzc5LDExIEBAIGRlZiBHZXRHb29nbGVDaHJvbWVQ
b3J0KCoqa3dhcmdzKToKICAgICAgICAgICAgICAgICBwYXRocy5pbnNlcnQoMCwgc2VsZi5fd2Vi
a2l0X2Jhc2VsaW5lX3BhdGgoCiAgICAgICAgICAgICAgICAgICAgICdnb29nbGUtY2hyb21lLWxp
bnV4NjQnKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aHMKKworICAgICAgICAgICAgZGVm
IHRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1
cm4gX3Rlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcyhzZWxmLAorICAgICAgICAgICAgICAgICAg
ICBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydCkKKwogICAgICAgICByZXR1cm4gR29v
Z2xlQ2hyb21lTGludXg2NFBvcnQoKiprd2FyZ3MpCiAgICAgZWxpZiBwb3J0X25hbWUuc3RhcnRz
d2l0aCgnZ29vZ2xlLWNocm9tZS1tYWMnKToKICAgICAgICAgaW1wb3J0IGNocm9taXVtX21hYwpA
QCAtNjMsNiArOTUsMTEgQEAgZGVmIEdldEdvb2dsZUNocm9tZVBvcnQoKiprd2FyZ3MpOgogICAg
ICAgICAgICAgICAgIHBhdGhzLmluc2VydCgwLCBzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgK
ICAgICAgICAgICAgICAgICAgICAgJ2dvb2dsZS1jaHJvbWUtbWFjJykpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHBhdGhzCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVy
cmlkZXMoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIF90ZXN0X2V4cGVjdGF0aW9uc19v
dmVycmlkZXMoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgY2hyb21pdW1fbWFjLkNocm9taXVt
TWFjUG9ydCkKKwogICAgICAgICByZXR1cm4gR29vZ2xlQ2hyb21lTWFjUG9ydCgqKmt3YXJncykK
ICAgICBlbGlmIHBvcnRfbmFtZS5zdGFydHN3aXRoKCdnb29nbGUtY2hyb21lLXdpbicpOgogICAg
ICAgICBpbXBvcnQgY2hyb21pdW1fd2luCkBAIC03NCw1ICsxMTEsMTAgQEAgZGVmIEdldEdvb2ds
ZUNocm9tZVBvcnQoKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIHBhdGhzLmluc2VydCgwLCBz
ZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgKICAgICAgICAgICAgICAgICAgICAgJ2dvb2dsZS1j
aHJvbWUtd2luJykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGhzCisKKyAgICAgICAgICAg
IGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZik6CisgICAgICAgICAgICAgICAg
cmV0dXJuIF90ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZiwKKyAgICAgICAgICAgICAg
ICAgICAgY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydCkKKwogICAgICAgICByZXR1cm4gR29v
Z2xlQ2hyb21lV2luUG9ydCgqKmt3YXJncykKICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
KCd1bnN1cHBvcnRlZCBwb3J0OiAlcycgJSBwb3J0X25hbWUpCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkKaW5kZXggODVlOTMzODcyMmFmNjg3ZGU3YTFlYzMz
YjZiMjI0ZGM2ZjllYmU1NC4uZmI5MjQyODBjNDBkM2ExOWI0NDZjYWE0N2Q5YzNkNzU4YWE1MmUw
MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9nb29nbGVfY2hyb21lX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weQpAQCAt
MjQsOCArMjQsMTIgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBj
b2RlY3MKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CisKK2ltcG9ydCBiYXNlX3VuaXR0ZXN0
CitpbXBvcnQgZmFjdG9yeQogaW1wb3J0IGdvb2dsZV9jaHJvbWUKIAogCkBAIC0zNSw2ICszOSw3
IEBAIGNsYXNzIEdldEdvb2dsZUNocm9tZVBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgICAgICdnb29nbGUtY2hyb21lLW1hYycsICdnb29nbGUtY2hyb21lLXdpbicpCiAgICAg
ICAgIGZvciBwb3J0IGluIHRlc3RfcG9ydHM6CiAgICAgICAgICAgICBzZWxmLl92ZXJpZnlfYmFz
ZWxpbmVfcGF0aChwb3J0LCBwb3J0KQorICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2V4cGVjdGF0
aW9uc19vdmVycmlkZXMocG9ydCkKIAogICAgICAgICBzZWxmLl92ZXJpZnlfYmFzZWxpbmVfcGF0
aCgnZ29vZ2xlLWNocm9tZS1tYWMnLCAnZ29vZ2xlLWNocm9tZS1tYWMtbGVvcGFyZCcpCiAgICAg
ICAgIHNlbGYuX3ZlcmlmeV9iYXNlbGluZV9wYXRoKCdnb29nbGUtY2hyb21lLXdpbicsICdnb29n
bGUtY2hyb21lLXdpbi14cCcpCkBAIC00NSwzICs1MCw1MCBAQCBjbGFzcyBHZXRHb29nbGVDaHJv
bWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1Ob25lKQogICAgICAgICBwYXRoID0gcG9y
dC5iYXNlbGluZV9zZWFyY2hfcGF0aCgpWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhw
ZWN0ZWRfcGF0aCwgb3MucGF0aC5zcGxpdChwYXRoKVsxXSkKKworICAgIGRlZiBfdmVyaWZ5X2V4
cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZiwgcG9ydF9uYW1lKToKKyAgICAgICAgIyBGSVhNRTog
bWFrZSB0aGlzIG1vcmUgcm9idXN0IHdoZW4gd2UgaGF2ZSB0aGUgVHJlZSgpIGFic3RyYWN0aW9u
LgorICAgICAgICAjIHdlIHNob3VsZCBiZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSBmaWxlcyBleGlz
dGluZyBvciBub3QsIGFuZAorICAgICAgICAjIGJlIGFibGUgdG8gY29udHJvbCB0aGUgY29udGVu
dHMgYmV0dGVyLgorCisgICAgICAgIGNocm9taXVtX3BvcnQgPSBmYWN0b3J5LmdldCgiY2hyb21p
dW0tbWFjIikKKyAgICAgICAgY2hyb21pdW1fb3ZlcnJpZGVzID0gY2hyb21pdW1fcG9ydC50ZXN0
X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKQorICAgICAgICBwb3J0ID0gZ29vZ2xlX2Nocm9tZS5H
ZXRHb29nbGVDaHJvbWVQb3J0KHBvcnRfbmFtZT1wb3J0X25hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1Ob25lKQorCisgICAgICAg
IG9yaWdfZXhpc3RzID0gb3MucGF0aC5leGlzdHMKKyAgICAgICAgb3JpZ19vcGVuID0gY29kZWNz
Lm9wZW4KKyAgICAgICAgZXhwZWN0ZWRfc3RyaW5nID0gIi8vIGhlbGxvLCB3b3JsZFxuIgorCisg
ICAgICAgIGRlZiBtb2NrX2V4aXN0c19jaHJvbWVfbm90X2ZvdW5kKHBhdGgpOgorICAgICAgICAg
ICAgaWYgJ3Rlc3RfZXhwZWN0YXRpb25zX2Nocm9tZS50eHQnIGluIHBhdGg6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gb3JpZ19leGlzdHMocGF0aCkK
KworICAgICAgICBkZWYgbW9ja19leGlzdHNfY2hyb21lX2ZvdW5kKHBhdGgpOgorICAgICAgICAg
ICAgaWYgJ3Rlc3RfZXhwZWN0YXRpb25zX2Nocm9tZS50eHQnIGluIHBhdGg6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBvcmlnX2V4aXN0cyhwYXRoKQor
CisgICAgICAgIGRlZiBtb2NrX29wZW4ocGF0aCwgbW9kZSwgZW5jb2RpbmcpOgorICAgICAgICAg
ICAgaWYgJ3Rlc3RfZXhwZWN0YXRpb25zX2Nocm9tZS50eHQnIGluIHBhdGg6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGJhc2VfdW5pdHRlc3QuTmV3U3RyaW5nSU8oZXhwZWN0ZWRfc3RyaW5nKQor
ICAgICAgICAgICAgcmV0dXJuIG9yaWdfb3BlbihwYXRoLCBtb2RlLCBlbmNvZGluZykKKworICAg
ICAgICB0cnk6CisgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyA9IG1vY2tfZXhpc3RzX2Nocm9t
ZV9ub3RfZm91bmQKKyAgICAgICAgICAgIGNocm9tZV9vdmVycmlkZXMgPSBwb3J0LnRlc3RfZXhw
ZWN0YXRpb25zX292ZXJyaWRlcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocm9t
aXVtX292ZXJyaWRlcywgY2hyb21lX292ZXJyaWRlcykKKworICAgICAgICAgICAgb3MucGF0aC5l
eGlzdHMgPSBtb2NrX2V4aXN0c19jaHJvbWVfZm91bmQKKyAgICAgICAgICAgIGNvZGVjcy5vcGVu
ID0gbW9ja19vcGVuCisgICAgICAgICAgICBjaHJvbWVfb3ZlcnJpZGVzID0gcG9ydC50ZXN0X2V4
cGVjdGF0aW9uc19vdmVycmlkZXMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHJv
bWVfb3ZlcnJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHJvbWl1bV9vdmVy
cmlkZXMgKyBleHBlY3RlZF9zdHJpbmcpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBv
cy5wYXRoLmV4aXN0cyA9IG9yaWdfZXhpc3RzCisgICAgICAgICAgICBjb2RlY3Mub3BlbiA9IG9y
aWdfb3BlbgorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFp
bigpCg==
</data>
<flag name="review"
          id="58958"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>