<?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>83747</bug_id>
          
          <creation_ts>2012-04-11 22:29:40 -0700</creation_ts>
          <short_desc>Add layout test case for JavaScriptAudioNode.</short_desc>
          <delta_ts>2012-04-13 18:30:57 -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>Web Audio</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Raymond">rgbbones</reporter>
          <assigned_to name="Raymond">rgbbones</assigned_to>
          <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>600892</commentid>
    <comment_count>0</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-11 22:29:40 -0700</bug_when>
    <thetext>Add layout test case for JavaScriptAudioNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600893</commentid>
    <comment_count>1</comment_count>
      <attachid>136827</attachid>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-11 22:30:24 -0700</bug_when>
    <thetext>Created attachment 136827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600895</commentid>
    <comment_count>2</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-11 22:33:37 -0700</bug_when>
    <thetext>Hi Chris

Layout test case for JavaScriptAudioNode.Please take a review.

Btw, I found JavaScriptAudioNode have some race condition issue when swap buffer. Might need to be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601418</commentid>
    <comment_count>3</comment_count>
      <attachid>136827</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-12 12:07:33 -0700</bug_when>
    <thetext>Comment on attachment 136827
Patch

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

Raymond, thanks for the test.  There will need to be some changes in JavaScriptAudioNode to be able to run properly in an &quot;OfflineAudioContext&quot; since it currently has some timing assumptions that the process() method is being called in &quot;real-time&quot; and not much faster than real-time like the OfflineAudioContext calls JavaScriptAudioNode::process()

&gt; LayoutTests/webaudio/javascriptaudionode-expected.txt:13
&gt; +PASS Successfully created JavaScriptNode with bufferSize = 16384.

nit: the correct name is JavaScriptAudioNode not JavaScriptNode

&gt; LayoutTests/webaudio/javascriptaudionode.html:14
&gt; +description(&quot;Tests JavascriptAudioNode.&quot;);

nit: JavaScriptAudioNode   (capitalize the &quot;S&quot;)

&gt; LayoutTests/webaudio/javascriptaudionode.html:80
&gt; +    }

It seems unfortunate to copy/paste all of this code.  Could you please have a look at the layout test for RealtimeAnalyserNode (where we test the different FFT sizes) for a better approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601723</commentid>
    <comment_count>4</comment_count>
      <attachid>137017</attachid>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-12 18:33:38 -0700</bug_when>
    <thetext>Created attachment 137017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601725</commentid>
    <comment_count>5</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-12 18:34:29 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; It seems unfortunate to copy/paste all of this code.  Could you please have a look at the layout test for RealtimeAnalyserNode (where we test the different FFT sizes) for a better approach.

Hi Chris
Thanks for the review. Patch updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601752</commentid>
    <comment_count>6</comment_count>
      <attachid>137017</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-12 19:04:37 -0700</bug_when>
    <thetext>Comment on attachment 137017
Patch

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

&gt; LayoutTests/webaudio/javascriptaudionode-expected.txt:6
&gt; +PASS Exception been thrown for illegal bufferSize.

been -&gt; was

&gt; LayoutTests/webaudio/javascriptaudionode-expected.txt:14
&gt; +PASS onaudioprocess been triggered with correct data.

&quot;been triggered&quot; -&gt; &quot;was called&quot;

&gt; LayoutTests/webaudio/javascriptaudionode.html:76
&gt; +        layoutTestController.overridePreference(&quot;WebKitWebAudioEnabled&quot;, &quot;1&quot;);

Do we really need this here?  Most of the other layout tests use the audio-testing.js script (in &lt;head&gt;) which handles this automatically I think.

&gt; LayoutTests/webaudio/javascriptaudionode.html:120
&gt; +    context.oncomplete = finishJSTest;

I&apos;m assuming that the processAudioData() method gets called before finishJSTest() is called because of the way callOnMainThread() works.

In general, the JavaScriptAudioNode is not really ready for use with an OfflineAudioContext (for longer render times), but it looks like you&apos;ve carefully arranged to
have the renderLengthInFrames *exactly* equal the *bufferSize* to avoid this problem?

If my understanding of this is correct, then it&apos;s probably worth describing this in a comment (just before line 120) to explain the current raciness with JavaScriptAudioNode and how we avoid it in this test...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601785</commentid>
    <comment_count>7</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-12 20:10:32 -0700</bug_when>
    <thetext>(In reply to comment #6)

Hi Chris. Thanks for the review.

&gt; &gt; LayoutTests/webaudio/javascriptaudionode.html:76
&gt; &gt; +        layoutTestController.overridePreference(&quot;WebKitWebAudioEnabled&quot;, &quot;1&quot;);
&gt; 
&gt; Do we really need this here?  Most of the other layout tests use the audio-testing.js script (in &lt;head&gt;) which handles this automatically I think.

I just try to not use audio-testing.js ;) But anyway, fixed.

&gt; 
&gt; &gt; LayoutTests/webaudio/javascriptaudionode.html:120
&gt; &gt; +    context.oncomplete = finishJSTest;
&gt; 
&gt; I&apos;m assuming that the processAudioData() method gets called before finishJSTest() is called because of the way callOnMainThread() works.
&gt; 
&gt; In general, the JavaScriptAudioNode is not really ready for use with an OfflineAudioContext (for longer render times), but it looks like you&apos;ve carefully arranged to
&gt; have the renderLengthInFrames *exactly* equal the *bufferSize* to avoid this problem?
&gt; 
&gt; If my understanding of this is correct, then it&apos;s probably worth describing this in a comment (just before line 120) to explain the current raciness with JavaScriptAudioNode and how we avoid it in this test...

Actually, since offlineAudioContext also notify finish event through callOnMainThread(), the oncomplete will be triggered after onaudioprocess.

However, I did arrange the renderLengthInFrames and bufferSize to avoid the swap buffer issue in order to not have the event.inputBuffer been overwrite will next batch of data. otherwise, if the renderLengthInFrames is not multi time of the bufferSize, the remaining part of the inputBuffer will be filled with zeros and fail the test case.

I will add a comments above renderLengthInFrames and bufferSize</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601788</commentid>
    <comment_count>8</comment_count>
      <attachid>137032</attachid>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-12 20:15:52 -0700</bug_when>
    <thetext>Created attachment 137032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601790</commentid>
    <comment_count>9</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-12 20:21:43 -0700</bug_when>
    <thetext>patch updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601801</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-12 21:01:09 -0700</bug_when>
    <thetext>Raymond, I really appreciate the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602580</commentid>
    <comment_count>11</comment_count>
      <attachid>137032</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-13 18:30:53 -0700</bug_when>
    <thetext>Comment on attachment 137032
Patch

Clearing flags on attachment: 137032

Committed r114196: &lt;http://trac.webkit.org/changeset/114196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602581</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-13 18:30:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136827</attachid>
            <date>2012-04-11 22:30:24 -0700</date>
            <delta_ts>2012-04-12 18:33:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83747-20120412133612.patch</filename>
            <type>text/plain</type>
            <size>7068</size>
            <attacher name="Raymond">rgbbones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTE5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmJiODVmYzdiYmNiYjNlYmZlZjMz
ZDNjZmNjYTEyOTc4NzRlZDg4YS4uNDhiM2E2MGFlMDZjYmEwMDAxN2E2NDBiNTQ2ZDkwZTRmNjBm
ZTk3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA0LTExICBSYXltb25kIExpdSAgPHJh
eW1vbmQubGl1QGludGVsLmNvbT4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY2FzZSBmb3Ig
SmF2YVNjcmlwdEF1ZGlvTm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS5odG1sOiBBZGRl
ZC4KKwogMjAxMi0wNC0xMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCB0d28gZmxha3kgcGx1Zy1pbiB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzRkZmVhY2M2MjIzYmRlMWE0ZDliODc3MjVhNTA4N2M5Y2EyMzQ5YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3RzIEphdmFzY3JpcHRBdWRpb05vZGUuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBFeGNlcHRpb24gYmVlbiB0aHJvd24gZm9yIGls
bGVnYWwgbnVtZXJPZk91dHB1dENoYW5uZWxzLgorUEFTUyBFeGNlcHRpb24gYmVlbiB0aHJvd24g
Zm9yIGlsbGVnYWwgYnVmZmVyU2l6ZS4KK1BBU1MgU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgSmF2YVNj
cmlwdE5vZGUgd2l0aCBidWZmZXJTaXplID0gMjU2LgorUEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRl
ZCBKYXZhU2NyaXB0Tm9kZSB3aXRoIGJ1ZmZlclNpemUgPSA1MTIuCitQQVNTIFN1Y2Nlc3NmdWxs
eSBjcmVhdGVkIEphdmFTY3JpcHROb2RlIHdpdGggYnVmZmVyU2l6ZSA9IDEwMjQuCitQQVNTIFN1
Y2Nlc3NmdWxseSBjcmVhdGVkIEphdmFTY3JpcHROb2RlIHdpdGggYnVmZmVyU2l6ZSA9IDIwNDgu
CitQQVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIEphdmFTY3JpcHROb2RlIHdpdGggYnVmZmVyU2l6
ZSA9IDQwOTYuCitQQVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIEphdmFTY3JpcHROb2RlIHdpdGgg
YnVmZmVyU2l6ZSA9IDgxOTIuCitQQVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIEphdmFTY3JpcHRO
b2RlIHdpdGggYnVmZmVyU2l6ZSA9IDE2Mzg0LgorUEFTUyBvbmF1ZGlvcHJvY2VzcyBiZWVuIHRy
aWdnZXJlZCB3aXRoIGNvcnJlY3QgZGF0YS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9q
YXZhc2NyaXB0YXVkaW9ub2RlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9qYXZhc2NyaXB0
YXVkaW9ub2RlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNiOGE4M2JmMWE3YTUzY2Q0ZmMxZjNmYzg4NmZi
YjE0YTRiNmE5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2phdmFz
Y3JpcHRhdWRpb25vZGUuaHRtbApAQCAtMCwwICsxLDE2MCBAQAorPCFET0NUWVBFIGh0bWw+CisK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdHMgSmF2YXNjcmlwdEF1ZGlvTm9kZS4iKTsKKwordmFyIHNhbXBsZVJhdGUg
PSA0NDEwMC4wOwordmFyIHJlbmRlckxlbmd0aEluRnJhbWVzID0gNTEyOwordmFyIG91dHB1dENo
YW5uZWxzID0gNjsKK3ZhciBidWZmZXJTaXplID0gNTEyOworCitmdW5jdGlvbiBjcmVhdGVCdWZm
ZXIoY29udGV4dCwgbGVuZ3RoKSB7CisgICAgdmFyIGF1ZGlvQnVmZmVyID0gY29udGV4dC5jcmVh
dGVCdWZmZXIoMiwgbGVuZ3RoLCBzYW1wbGVSYXRlKTsKKyAgICB2YXIgbiA9IGF1ZGlvQnVmZmVy
Lmxlbmd0aDsKKyAgICB2YXIgZGF0YUwgPSBhdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTsK
KyAgICB2YXIgZGF0YVIgPSBhdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YSgxKTsKKworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIGRhdGFMW2ldID0gLTE7CisgICAg
ICAgIGRhdGFSW2ldID0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gYXVkaW9CdWZmZXI7Cit9CisK
K2Z1bmN0aW9uIHByb2Nlc3NBdWRpb0RhdGEoZXZlbnQpIHsKKyAgICBidWZmZXIgPSBldmVudC5v
dXRwdXRCdWZmZXI7CisgICAgaWYgKGJ1ZmZlci5udW1iZXJPZkNoYW5uZWxzICE9IG91dHB1dENo
YW5uZWxzKQorICAgICAgICB0ZXN0RmFpbGVkKCJudW1iZXJPZk91dHB1dENoYW5uZWxzIGRvZXNu
J3QgbWF0Y2ghIik7CisKKyAgICBpZiAoYnVmZmVyLmxlbmd0aCAhPSBidWZmZXJTaXplKQorICAg
ICAgICB0ZXN0RmFpbGVkKCJudW1iZXJPZk91dHB1dENoYW5uZWxzIGRvZXNuJ3QgbWF0Y2ghIik7
CisKKyAgICBidWZmZXIgPSBldmVudC5pbnB1dEJ1ZmZlcjsKKyAgICB2YXIgYnVmZmVyRGF0YUwg
PSBidWZmZXIuZ2V0Q2hhbm5lbERhdGEoMCk7CisgICAgdmFyIGJ1ZmZlckRhdGFSID0gYnVmZmVy
LmdldENoYW5uZWxEYXRhKDEpOworICAgIAorICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsKKyAgICAv
LyBHbyB0aHJvdWdoIGV2ZXJ5IHNhbXBsZSBhbmQgbWFrZSBzdXJlIGl0J3MgYWxsIC0xIGZvciB0
aGUgbGVmdC1jaGFubmVsLCBhbmQgYWxsICsxIGZvciB0aGUgcmlnaHQtY2hhbm5lbC4KKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoYnVm
ZmVyRGF0YUxbaV0gIT0gLTEgfHwgYnVmZmVyRGF0YVJbaV0gIT0gMSkgeworICAgICAgICAgICAg
c3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAoc3VjY2VzcykgeworICAgICAgICB0ZXN0UGFzc2VkKCJvbmF1ZGlvcHJvY2VzcyBi
ZWVuIHRyaWdnZXJlZCB3aXRoIGNvcnJlY3QgZGF0YS4iKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJvbmF1ZGlvcHJvY2VzcyBiZWVuIHRyaWdnZXJlZCB3aXRoIHdyb25nIGRh
dGEuIik7CisgICAgfQorfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJBdWRpb0VuYWJsZWQiLCAiMSIpOworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAvLyBDcmVhdGUgb2ZmbGluZSBhdWRpbyBjb250ZXh0LgorICAgIHZh
ciBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgyLCByZW5kZXJMZW5ndGhJbkZyYW1l
cywgc2FtcGxlUmF0ZSk7CisKKyAgICB0cnkgeworICAgICAgICB2YXIganNub2RlID0gY29udGV4
dC5jcmVhdGVKYXZhU2NyaXB0Tm9kZSg1MTIsIDEsIDApOworICAgICAgICB0ZXN0RmFpbGVkKCJF
eGNlcHRpb24gc2hvdWxkIGJlIHRocm93biBmb3IgaWxsZWdhbCBudW1lck9mT3V0cHV0Q2hhbm5l
bHMuIik7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkV4Y2VwdGlvbiBi
ZWVuIHRocm93biBmb3IgaWxsZWdhbCBudW1lck9mT3V0cHV0Q2hhbm5lbHMuIik7CisgICAgfQor
CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGpzbm9kZSA9IGNvbnRleHQuY3JlYXRlSmF2YVNjcmlw
dE5vZGUoNTExLCAxLCAxKTsKKyAgICAgICAgdGVzdEZhaWxlZCgiRXhjZXB0aW9uIHNob3VsZCBi
ZSB0aHJvd24gZm9yIGlsbGVnYWwgYnVmZmVyU2l6ZS4iKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgdGVzdFBhc3NlZCgiRXhjZXB0aW9uIGJlZW4gdGhyb3duIGZvciBpbGxlZ2FsIGJ1ZmZl
clNpemUuIik7CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGpzbm9kZSA9IGNvbnRl
eHQuY3JlYXRlSmF2YVNjcmlwdE5vZGUoMjU2LCAxLCAxKTsKKyAgICAgICAgdGVzdFBhc3NlZCgi
U3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgSmF2YVNjcmlwdE5vZGUgd2l0aCBidWZmZXJTaXplID0gMjU2
LiIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsIHRvIGNyZWF0
ZSBKYXZhU2NyaXB0Tm9kZSB3aXRoIGJ1ZmZlclNpemUgPSAyNTYuIik7CisgICAgfQorCisgICAg
dHJ5IHsKKyAgICAgICAgdmFyIGpzbm9kZSA9IGNvbnRleHQuY3JlYXRlSmF2YVNjcmlwdE5vZGUo
NTEyLCAxLCAxKTsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgSmF2
YVNjcmlwdE5vZGUgd2l0aCBidWZmZXJTaXplID0gNTEyLiIpOworICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsIHRvIGNyZWF0ZSBKYXZhU2NyaXB0Tm9kZSB3aXRoIGJ1
ZmZlclNpemUgPSA1MTIuIik7CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGpzbm9k
ZSA9IGNvbnRleHQuY3JlYXRlSmF2YVNjcmlwdE5vZGUoMTAyNCwgMSwgMSk7CisgICAgICAgIHRl
c3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIEphdmFTY3JpcHROb2RlIHdpdGggYnVmZmVy
U2l6ZSA9IDEwMjQuIik7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkZh
aWwgdG8gY3JlYXRlIEphdmFTY3JpcHROb2RlIHdpdGggYnVmZmVyU2l6ZSA9IDEwMjQuIik7Cisg
ICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGpzbm9kZSA9IGNvbnRleHQuY3JlYXRlSmF2
YVNjcmlwdE5vZGUoMjA0OCwgMSwgMSk7CisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxs
eSBjcmVhdGVkIEphdmFTY3JpcHROb2RlIHdpdGggYnVmZmVyU2l6ZSA9IDIwNDguIik7CisgICAg
fSBjYXRjaChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkZhaWwgdG8gY3JlYXRlIEphdmFTY3Jp
cHROb2RlIHdpdGggYnVmZmVyU2l6ZSA9IDIwNDguIik7CisgICAgfQorCisgICAgdHJ5IHsKKyAg
ICAgICAgdmFyIGpzbm9kZSA9IGNvbnRleHQuY3JlYXRlSmF2YVNjcmlwdE5vZGUoNDA5NiwgMSwg
MSk7CisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIEphdmFTY3JpcHRO
b2RlIHdpdGggYnVmZmVyU2l6ZSA9IDQwOTYuIik7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAg
IHRlc3RGYWlsZWQoIkZhaWwgdG8gY3JlYXRlIEphdmFTY3JpcHROb2RlIHdpdGggYnVmZmVyU2l6
ZSA9IDQwOTYuIik7CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGpzbm9kZSA9IGNv
bnRleHQuY3JlYXRlSmF2YVNjcmlwdE5vZGUoODE5MiwgMSwgMSk7CisgICAgICAgIHRlc3RQYXNz
ZWQoIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIEphdmFTY3JpcHROb2RlIHdpdGggYnVmZmVyU2l6ZSA9
IDgxOTIuIik7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkZhaWwgdG8g
Y3JlYXRlIEphdmFTY3JpcHROb2RlIHdpdGggYnVmZmVyU2l6ZSA9IDgxOTIuIik7CisgICAgfQor
CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGpzbm9kZSA9IGNvbnRleHQuY3JlYXRlSmF2YVNjcmlw
dE5vZGUoMTYzODQsIDEsIDEpOworICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgY3Jl
YXRlZCBKYXZhU2NyaXB0Tm9kZSB3aXRoIGJ1ZmZlclNpemUgPSAxNjM4NC4iKTsKKyAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiRmFpbCB0byBjcmVhdGUgSmF2YVNjcmlwdE5v
ZGUgd2l0aCBidWZmZXJTaXplID0gMTYzODQuIik7CisgICAgfQorCisgICAgdmFyIHNvdXJjZUJ1
ZmZlciA9IGNyZWF0ZUJ1ZmZlcihjb250ZXh0LCByZW5kZXJMZW5ndGhJbkZyYW1lcyk7CisKKyAg
ICB2YXIgYnVmZmVyU291cmNlID0gY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKKyAgICBi
dWZmZXJTb3VyY2UuYnVmZmVyID0gc291cmNlQnVmZmVyOworCisgICAgdmFyIGpzbm9kZSA9IGNv
bnRleHQuY3JlYXRlSmF2YVNjcmlwdE5vZGUoYnVmZmVyU2l6ZSwgMiwgb3V0cHV0Q2hhbm5lbHMp
OworCisgICAgYnVmZmVyU291cmNlLmNvbm5lY3QoanNub2RlKTsKKyAgICBqc25vZGUuY29ubmVj
dChjb250ZXh0LmRlc3RpbmF0aW9uKTsKKyAgICBqc25vZGUub25hdWRpb3Byb2Nlc3MgPSBwcm9j
ZXNzQXVkaW9EYXRhOworCisgICAgYnVmZmVyU291cmNlLm5vdGVPbigwKTsKKyAgICBjb250ZXh0
Lm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7CisgICAgY29udGV4dC5zdGFydFJlbmRlcmluZygp
OworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137017</attachid>
            <date>2012-04-12 18:33:38 -0700</date>
            <delta_ts>2012-04-12 20:15:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83747-20120413093926.patch</filename>
            <type>text/plain</type>
            <size>5796</size>
            <attacher name="Raymond">rgbbones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MDQyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2UwNmI5ZjhkZTI0YjczNzNhZWIx
OGM4NzExODVhNDRhYjc3YjFmYy4uNTMxYjUwMTM5YWY2ZTcyYmQxZTk0MWY4YmZlY2Q2Zjg5NDgx
ZWIzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA0LTEyICBSYXltb25kIExpdSAgPHJh
eW1vbmQubGl1QGludGVsLmNvbT4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY2FzZSBmb3Ig
SmF2YVNjcmlwdEF1ZGlvTm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS5odG1sOiBBZGRl
ZC4KKwogMjAxMi0wNC0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIE1vcmUgcmViYXNlbGluaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJh
dWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzIzYTIw
YTFjYjgwMTU1MWVjNjA5MThhYWZjYjZkM2ExMmU3NTNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxOCBAQAorVGVzdHMgSmF2YVNjcmlwdEF1ZGlvTm9kZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCitQQVNTIEV4Y2VwdGlvbiBiZWVuIHRocm93biBmb3IgaWxsZWdhbCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLgorUEFTUyBFeGNlcHRpb24gYmVlbiB0aHJvd24gZm9yIGlsbGVn
YWwgYnVmZmVyU2l6ZS4KK1BBU1MgU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgSmF2YVNjcmlwdEF1ZGlv
Tm9kZSB3aXRoIGJ1ZmZlclNpemUgPSAyNTYuCitQQVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIEph
dmFTY3JpcHRBdWRpb05vZGUgd2l0aCBidWZmZXJTaXplID0gNTEyLgorUEFTUyBTdWNjZXNzZnVs
bHkgY3JlYXRlZCBKYXZhU2NyaXB0QXVkaW9Ob2RlIHdpdGggYnVmZmVyU2l6ZSA9IDEwMjQuCitQ
QVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIEphdmFTY3JpcHRBdWRpb05vZGUgd2l0aCBidWZmZXJT
aXplID0gMjA0OC4KK1BBU1MgU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgSmF2YVNjcmlwdEF1ZGlvTm9k
ZSB3aXRoIGJ1ZmZlclNpemUgPSA0MDk2LgorUEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRlZCBKYXZh
U2NyaXB0QXVkaW9Ob2RlIHdpdGggYnVmZmVyU2l6ZSA9IDgxOTIuCitQQVNTIFN1Y2Nlc3NmdWxs
eSBjcmVhdGVkIEphdmFTY3JpcHRBdWRpb05vZGUgd2l0aCBidWZmZXJTaXplID0gMTYzODQuCitQ
QVNTIG9uYXVkaW9wcm9jZXNzIGJlZW4gdHJpZ2dlcmVkIHdpdGggY29ycmVjdCBkYXRhLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDIx
M2U2MzgxNmY5YmE3YTAyN2JmMjYwYzUxYWJmNzc2YjkyMjFmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS5odG1sCkBAIC0wLDAgKzEs
MTMwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisK
Kzxib2R5PgorCis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBKYXZhU2NyaXB0QXVkaW9O
b2RlLiIpOworCit2YXIgc2FtcGxlUmF0ZSA9IDQ0MTAwLjA7Cit2YXIgcmVuZGVyTGVuZ3RoSW5G
cmFtZXMgPSA1MTI7Cit2YXIgb3V0cHV0Q2hhbm5lbHMgPSA2OwordmFyIGJ1ZmZlclNpemUgPSA1
MTI7CisKK3ZhciBjb250ZXh0OworCitmdW5jdGlvbiBjcmVhdGVCdWZmZXIoY29udGV4dCwgbGVu
Z3RoKSB7CisgICAgdmFyIGF1ZGlvQnVmZmVyID0gY29udGV4dC5jcmVhdGVCdWZmZXIoMiwgbGVu
Z3RoLCBzYW1wbGVSYXRlKTsKKyAgICB2YXIgbiA9IGF1ZGlvQnVmZmVyLmxlbmd0aDsKKyAgICB2
YXIgZGF0YUwgPSBhdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTsKKyAgICB2YXIgZGF0YVIg
PSBhdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YSgxKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbjsgKytpKSB7CisgICAgICAgIGRhdGFMW2ldID0gLTE7CisgICAgICAgIGRhdGFSW2ldID0g
MTsKKyAgICB9CisKKyAgICByZXR1cm4gYXVkaW9CdWZmZXI7Cit9CisKK2Z1bmN0aW9uIHByb2Nl
c3NBdWRpb0RhdGEoZXZlbnQpIHsKKyAgICBidWZmZXIgPSBldmVudC5vdXRwdXRCdWZmZXI7Cisg
ICAgaWYgKGJ1ZmZlci5udW1iZXJPZkNoYW5uZWxzICE9IG91dHB1dENoYW5uZWxzKQorICAgICAg
ICB0ZXN0RmFpbGVkKCJudW1iZXJPZk91dHB1dENoYW5uZWxzIGRvZXNuJ3QgbWF0Y2ghIik7CisK
KyAgICBpZiAoYnVmZmVyLmxlbmd0aCAhPSBidWZmZXJTaXplKQorICAgICAgICB0ZXN0RmFpbGVk
KCJudW1iZXJPZk91dHB1dENoYW5uZWxzIGRvZXNuJ3QgbWF0Y2ghIik7CisKKyAgICBidWZmZXIg
PSBldmVudC5pbnB1dEJ1ZmZlcjsKKyAgICB2YXIgYnVmZmVyRGF0YUwgPSBidWZmZXIuZ2V0Q2hh
bm5lbERhdGEoMCk7CisgICAgdmFyIGJ1ZmZlckRhdGFSID0gYnVmZmVyLmdldENoYW5uZWxEYXRh
KDEpOworICAgIAorICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsKKyAgICAvLyBHbyB0aHJvdWdoIGV2
ZXJ5IHNhbXBsZSBhbmQgbWFrZSBzdXJlIGl0J3MgYWxsIC0xIGZvciB0aGUgbGVmdC1jaGFubmVs
LCBhbmQgYWxsICsxIGZvciB0aGUgcmlnaHQtY2hhbm5lbC4KKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGJ1ZmZlci5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoYnVmZmVyRGF0YUxbaV0gIT0g
LTEgfHwgYnVmZmVyRGF0YVJbaV0gIT0gMSkgeworICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3VjY2Vz
cykgeworICAgICAgICB0ZXN0UGFzc2VkKCJvbmF1ZGlvcHJvY2VzcyBiZWVuIHRyaWdnZXJlZCB3
aXRoIGNvcnJlY3QgZGF0YS4iKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJv
bmF1ZGlvcHJvY2VzcyBiZWVuIHRyaWdnZXJlZCB3aXRoIHdyb25nIGRhdGEuIik7CisgICAgfQor
fQorCitmdW5jdGlvbiBkb0J1ZmZlclNpemVUZXN0KHNpemUpIHsKKyAgICB0cnkgeworICAgICAg
ICB2YXIganNub2RlID0gY29udGV4dC5jcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplLCAxLCAxKTsK
KyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgSmF2YVNjcmlwdEF1ZGlv
Tm9kZSB3aXRoIGJ1ZmZlclNpemUgPSAiICsgc2l6ZSArICIuIik7CisgICAgfSBjYXRjaChlKSB7
CisgICAgICAgIHRlc3RGYWlsZWQoIkZhaWwgdG8gY3JlYXRlIEphdmFTY3JpcHRBdWRpb05vZGUg
d2l0aCBidWZmZXJTaXplID0gIiArIHNpemUgKyAiLiIpOworICAgIH0KK30KKworZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViQXVk
aW9FbmFibGVkIiwgIjEiKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
fQorCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgLy8gQ3JlYXRlIG9m
ZmxpbmUgYXVkaW8gY29udGV4dC4KKyAgICBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4
dCgyLCByZW5kZXJMZW5ndGhJbkZyYW1lcywgc2FtcGxlUmF0ZSk7CisKKyAgICB0cnkgeworICAg
ICAgICB2YXIganNub2RlID0gY29udGV4dC5jcmVhdGVKYXZhU2NyaXB0Tm9kZSg1MTIsIDEsIDAp
OworICAgICAgICB0ZXN0RmFpbGVkKCJFeGNlcHRpb24gc2hvdWxkIGJlIHRocm93biBmb3IgaWxs
ZWdhbCBudW1iZXJPZk91dHB1dENoYW5uZWxzLiIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gYmVlbiB0aHJvd24gZm9yIGlsbGVnYWwgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscy4iKTsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICB2YXIganNub2Rl
ID0gY29udGV4dC5jcmVhdGVKYXZhU2NyaXB0Tm9kZSg1MTEsIDEsIDEpOworICAgICAgICB0ZXN0
RmFpbGVkKCJFeGNlcHRpb24gc2hvdWxkIGJlIHRocm93biBmb3IgaWxsZWdhbCBidWZmZXJTaXpl
LiIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gYmVl
biB0aHJvd24gZm9yIGlsbGVnYWwgYnVmZmVyU2l6ZS4iKTsKKyAgICB9CisKKyAgICBkb0J1ZmZl
clNpemVUZXN0KDI1Nik7CisgICAgZG9CdWZmZXJTaXplVGVzdCg1MTIpOworICAgIGRvQnVmZmVy
U2l6ZVRlc3QoMTAyNCk7CisgICAgZG9CdWZmZXJTaXplVGVzdCgyMDQ4KTsKKyAgICBkb0J1ZmZl
clNpemVUZXN0KDQwOTYpOworICAgIGRvQnVmZmVyU2l6ZVRlc3QoODE5Mik7CisgICAgZG9CdWZm
ZXJTaXplVGVzdCgxNjM4NCk7CisgCisgICAgdmFyIHNvdXJjZUJ1ZmZlciA9IGNyZWF0ZUJ1ZmZl
cihjb250ZXh0LCByZW5kZXJMZW5ndGhJbkZyYW1lcyk7CisKKyAgICB2YXIgYnVmZmVyU291cmNl
ID0gY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKKyAgICBidWZmZXJTb3VyY2UuYnVmZmVy
ID0gc291cmNlQnVmZmVyOworCisgICAgdmFyIGpzbm9kZSA9IGNvbnRleHQuY3JlYXRlSmF2YVNj
cmlwdE5vZGUoYnVmZmVyU2l6ZSwgMiwgb3V0cHV0Q2hhbm5lbHMpOworCisgICAgYnVmZmVyU291
cmNlLmNvbm5lY3QoanNub2RlKTsKKyAgICBqc25vZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0
aW9uKTsKKyAgICBqc25vZGUub25hdWRpb3Byb2Nlc3MgPSBwcm9jZXNzQXVkaW9EYXRhOworCisg
ICAgYnVmZmVyU291cmNlLm5vdGVPbigwKTsKKyAgICBjb250ZXh0Lm9uY29tcGxldGUgPSBmaW5p
c2hKU1Rlc3Q7CisgICAgY29udGV4dC5zdGFydFJlbmRlcmluZygpOworfQorCitydW5UZXN0KCk7
CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137032</attachid>
            <date>2012-04-12 20:15:52 -0700</date>
            <delta_ts>2012-04-13 18:30:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83747-20120413112140.patch</filename>
            <type>text/plain</type>
            <size>6137</size>
            <attacher name="Raymond">rgbbones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MDQyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2UwNmI5ZjhkZTI0YjczNzNhZWIx
OGM4NzExODVhNDRhYjc3YjFmYy4uNTMxYjUwMTM5YWY2ZTcyYmQxZTk0MWY4YmZlY2Q2Zjg5NDgx
ZWIzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA0LTEyICBSYXltb25kIExpdSAgPHJh
eW1vbmQubGl1QGludGVsLmNvbT4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY2FzZSBmb3Ig
SmF2YVNjcmlwdEF1ZGlvTm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS5odG1sOiBBZGRl
ZC4KKwogMjAxMi0wNC0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIE1vcmUgcmViYXNlbGluaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJh
dWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWUxYTA1
MWI4YjY2ZDhjZmFjYzYxODcxZDRjMDExMmJmYjc0MTg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxOCBAQAorVGVzdHMgSmF2YVNjcmlwdEF1ZGlvTm9kZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duIGZvciBpbGxlZ2FsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMuCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duIGZvciBpbGxlZ2Fs
IGJ1ZmZlclNpemUuCitQQVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIEphdmFTY3JpcHRBdWRpb05v
ZGUgd2l0aCBidWZmZXJTaXplID0gMjU2LgorUEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRlZCBKYXZh
U2NyaXB0QXVkaW9Ob2RlIHdpdGggYnVmZmVyU2l6ZSA9IDUxMi4KK1BBU1MgU3VjY2Vzc2Z1bGx5
IGNyZWF0ZWQgSmF2YVNjcmlwdEF1ZGlvTm9kZSB3aXRoIGJ1ZmZlclNpemUgPSAxMDI0LgorUEFT
UyBTdWNjZXNzZnVsbHkgY3JlYXRlZCBKYXZhU2NyaXB0QXVkaW9Ob2RlIHdpdGggYnVmZmVyU2l6
ZSA9IDIwNDguCitQQVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIEphdmFTY3JpcHRBdWRpb05vZGUg
d2l0aCBidWZmZXJTaXplID0gNDA5Ni4KK1BBU1MgU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgSmF2YVNj
cmlwdEF1ZGlvTm9kZSB3aXRoIGJ1ZmZlclNpemUgPSA4MTkyLgorUEFTUyBTdWNjZXNzZnVsbHkg
Y3JlYXRlZCBKYXZhU2NyaXB0QXVkaW9Ob2RlIHdpdGggYnVmZmVyU2l6ZSA9IDE2Mzg0LgorUEFT
UyBvbmF1ZGlvcHJvY2VzcyB3YXMgY2FsbGVkIHdpdGggY29ycmVjdCBkYXRhLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMWE2MTcyYjYz
ODFhMmU4MzYzYTJhYjJjNzNjZTRjZGJhZWMwNmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS5odG1sCkBAIC0wLDAgKzEsMTM0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBKYXZh
U2NyaXB0QXVkaW9Ob2RlLiIpOworCit2YXIgc2FtcGxlUmF0ZSA9IDQ0MTAwLjA7Cit2YXIgb3V0
cHV0Q2hhbm5lbHMgPSA2OworCisvLyBGb3IgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2Yg
SmF2YVNjcmlwdEF1ZGlvTm9kZSwgd2hlbiBpdCB3b3JrcyB3aXRoIE9mZmxpbmVBdWRpb0NvbnRl
eHQgKHdoaWNoIHJ1bnMgbXVjaCBmYXN0ZXIKKy8vIHRoYW4gcmVhbC10aW1lKSB0aGUgZXZlbnQu
aW5wdXRCdWZmZXIgbWlnaHQgYmUgb3ZlcndyaXRlIGFnYWluIGJlZm9yZSBvbmF1ZGlvcHJvY2Vz
cyBldmVyIGdldCBjaGFuY2UgdG8gYmUgY2FsbGVkLgorLy8gV2UgY2FyZWZ1bGx5IGFycmFuZ2Ug
dGhlIHJlbmRlckxlbmd0aEluRnJhbWVzIGFuZCBidWZmZXJTaXplIHRvIGhhdmUgZXhhY3RseSB0
aGUgc2FtZSB2YWx1ZSB0byBhdm9pZCB0aGlzIGlzc3VlLgordmFyIHJlbmRlckxlbmd0aEluRnJh
bWVzID0gNTEyOwordmFyIGJ1ZmZlclNpemUgPSA1MTI7CisKK3ZhciBjb250ZXh0OworCitmdW5j
dGlvbiBjcmVhdGVCdWZmZXIoY29udGV4dCwgbGVuZ3RoKSB7CisgICAgdmFyIGF1ZGlvQnVmZmVy
ID0gY29udGV4dC5jcmVhdGVCdWZmZXIoMiwgbGVuZ3RoLCBzYW1wbGVSYXRlKTsKKyAgICB2YXIg
biA9IGF1ZGlvQnVmZmVyLmxlbmd0aDsKKyAgICB2YXIgZGF0YUwgPSBhdWRpb0J1ZmZlci5nZXRD
aGFubmVsRGF0YSgwKTsKKyAgICB2YXIgZGF0YVIgPSBhdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0
YSgxKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIGRhdGFM
W2ldID0gLTE7CisgICAgICAgIGRhdGFSW2ldID0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gYXVk
aW9CdWZmZXI7Cit9CisKK2Z1bmN0aW9uIHByb2Nlc3NBdWRpb0RhdGEoZXZlbnQpIHsKKyAgICBi
dWZmZXIgPSBldmVudC5vdXRwdXRCdWZmZXI7CisgICAgaWYgKGJ1ZmZlci5udW1iZXJPZkNoYW5u
ZWxzICE9IG91dHB1dENoYW5uZWxzKQorICAgICAgICB0ZXN0RmFpbGVkKCJudW1iZXJPZk91dHB1
dENoYW5uZWxzIGRvZXNuJ3QgbWF0Y2ghIik7CisKKyAgICBpZiAoYnVmZmVyLmxlbmd0aCAhPSBi
dWZmZXJTaXplKQorICAgICAgICB0ZXN0RmFpbGVkKCJudW1iZXJPZk91dHB1dENoYW5uZWxzIGRv
ZXNuJ3QgbWF0Y2ghIik7CisKKyAgICBidWZmZXIgPSBldmVudC5pbnB1dEJ1ZmZlcjsKKyAgICB2
YXIgYnVmZmVyRGF0YUwgPSBidWZmZXIuZ2V0Q2hhbm5lbERhdGEoMCk7CisgICAgdmFyIGJ1ZmZl
ckRhdGFSID0gYnVmZmVyLmdldENoYW5uZWxEYXRhKDEpOworICAgIAorICAgIHZhciBzdWNjZXNz
ID0gdHJ1ZTsKKyAgICAvLyBHbyB0aHJvdWdoIGV2ZXJ5IHNhbXBsZSBhbmQgbWFrZSBzdXJlIGl0
J3MgYWxsIC0xIGZvciB0aGUgbGVmdC1jaGFubmVsLCBhbmQgYWxsICsxIGZvciB0aGUgcmlnaHQt
Y2hhbm5lbC4KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7ICsraSkgewor
ICAgICAgICBpZiAoYnVmZmVyRGF0YUxbaV0gIT0gLTEgfHwgYnVmZmVyRGF0YVJbaV0gIT0gMSkg
eworICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3VjY2VzcykgeworICAgICAgICB0ZXN0UGFzc2VkKCJv
bmF1ZGlvcHJvY2VzcyB3YXMgY2FsbGVkIHdpdGggY29ycmVjdCBkYXRhLiIpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIm9uYXVkaW9wcm9jZXNzIHdhcyBjYWxsZWQgd2l0aCB3
cm9uZyBkYXRhLiIpOworICAgIH0KK30KKworZnVuY3Rpb24gZG9CdWZmZXJTaXplVGVzdChzaXpl
KSB7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGpzbm9kZSA9IGNvbnRleHQuY3JlYXRlSmF2YVNj
cmlwdE5vZGUoc2l6ZSwgMSwgMSk7CisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBj
cmVhdGVkIEphdmFTY3JpcHRBdWRpb05vZGUgd2l0aCBidWZmZXJTaXplID0gIiArIHNpemUgKyAi
LiIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsZWQgdG8gY3Jl
YXRlIEphdmFTY3JpcHRBdWRpb05vZGUgd2l0aCBidWZmZXJTaXplID0gIiArIHNpemUgKyAiLiIp
OworICAgIH0KK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
IH0KKworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIC8vIENyZWF0ZSBv
ZmZsaW5lIGF1ZGlvIGNvbnRleHQuCisgICAgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRl
eHQoMiwgcmVuZGVyTGVuZ3RoSW5GcmFtZXMsIHNhbXBsZVJhdGUpOworCisgICAgdHJ5IHsKKyAg
ICAgICAgdmFyIGpzbm9kZSA9IGNvbnRleHQuY3JlYXRlSmF2YVNjcmlwdE5vZGUoNTEyLCAxLCAw
KTsKKyAgICAgICAgdGVzdEZhaWxlZCgiRXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gZm9yIGls
bGVnYWwgbnVtYmVyT2ZPdXRwdXRDaGFubmVscy4iKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgdGVzdFBhc3NlZCgiRXhjZXB0aW9uIHdhcyB0aHJvd24gZm9yIGlsbGVnYWwgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscy4iKTsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICB2YXIganNub2Rl
ID0gY29udGV4dC5jcmVhdGVKYXZhU2NyaXB0Tm9kZSg1MTEsIDEsIDEpOworICAgICAgICB0ZXN0
RmFpbGVkKCJFeGNlcHRpb24gc2hvdWxkIGJlIHRocm93biBmb3IgaWxsZWdhbCBidWZmZXJTaXpl
LiIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gd2Fz
IHRocm93biBmb3IgaWxsZWdhbCBidWZmZXJTaXplLiIpOworICAgIH0KKworICAgIGRvQnVmZmVy
U2l6ZVRlc3QoMjU2KTsKKyAgICBkb0J1ZmZlclNpemVUZXN0KDUxMik7CisgICAgZG9CdWZmZXJT
aXplVGVzdCgxMDI0KTsKKyAgICBkb0J1ZmZlclNpemVUZXN0KDIwNDgpOworICAgIGRvQnVmZmVy
U2l6ZVRlc3QoNDA5Nik7CisgICAgZG9CdWZmZXJTaXplVGVzdCg4MTkyKTsKKyAgICBkb0J1ZmZl
clNpemVUZXN0KDE2Mzg0KTsKKyAKKyAgICB2YXIgc291cmNlQnVmZmVyID0gY3JlYXRlQnVmZmVy
KGNvbnRleHQsIHJlbmRlckxlbmd0aEluRnJhbWVzKTsKKworICAgIHZhciBidWZmZXJTb3VyY2Ug
PSBjb250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworICAgIGJ1ZmZlclNvdXJjZS5idWZmZXIg
PSBzb3VyY2VCdWZmZXI7CisKKyAgICB2YXIganNub2RlID0gY29udGV4dC5jcmVhdGVKYXZhU2Ny
aXB0Tm9kZShidWZmZXJTaXplLCAyLCBvdXRwdXRDaGFubmVscyk7CisKKyAgICBidWZmZXJTb3Vy
Y2UuY29ubmVjdChqc25vZGUpOworICAgIGpzbm9kZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRp
b24pOworICAgIGpzbm9kZS5vbmF1ZGlvcHJvY2VzcyA9IHByb2Nlc3NBdWRpb0RhdGE7CisKKyAg
ICBidWZmZXJTb3VyY2Uubm90ZU9uKDApOworICAgIGNvbnRleHQub25jb21wbGV0ZSA9IGZpbmlz
aEpTVGVzdDsKKyAgICBjb250ZXh0LnN0YXJ0UmVuZGVyaW5nKCk7Cit9CisKK3J1blRlc3QoKTsK
KworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>