<?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>68662</bug_id>
          
          <creation_ts>2011-09-22 16:10:21 -0700</creation_ts>
          <short_desc>Cleanup: Extract code to launch a Mac WebKit application into a common function</short_desc>
          <delta_ts>2011-10-04 16:55:49 -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>Mac</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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>471925</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-09-22 16:10:21 -0700</bug_when>
    <thetext>We use almost identical code in webkitdirs::run{MiniBrowser, Safari, TestWebKitAPI, WebKitTestRunner}() to launch the respective application on Mac OS X. We should extract the common code into a function, say runMacWebKitApp(), so that we can remove duplicate code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471930</commentid>
    <comment_count>1</comment_count>
      <attachid>108416</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-09-22 16:14:25 -0700</bug_when>
    <thetext>Created attachment 108416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472142</commentid>
    <comment_count>2</comment_count>
      <attachid>108416</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-09-23 03:29:48 -0700</bug_when>
    <thetext>Comment on attachment 108416
Patch

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

It would be nice if run-webkit-app used this function, too.

&gt; Tools/Scripts/webkitdirs.pm:2013
&gt; +    return system $appPath, @ARGV;

While you&apos;re at it, it would be nice to switch this to the direct object form of system() so that it will work correctly even if $appPath contains spaces and @ARGV is empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472364</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-09-23 11:29:25 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 108416 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108416&amp;action=review
&gt; 
&gt; It would be nice if run-webkit-app used this function, too.

Will do.

&gt; 
&gt; &gt; Tools/Scripts/webkitdirs.pm:2013
&gt; &gt; +    return system $appPath, @ARGV;
&gt; 
&gt; While you&apos;re at it, it would be nice to switch this to the direct object form of system() so that it will work correctly even if $appPath contains spaces and @ARGV is empty.

Will change to use direct object form of system().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472385</commentid>
    <comment_count>4</comment_count>
      <attachid>108504</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-09-23 11:54:25 -0700</bug_when>
    <thetext>Created attachment 108504
Patch

Updated patch based on Adam Roben&apos;s suggestions.

I added an optional argument $useOpenCommand to runMacWebKitApp() that when equal to USE_OPEN_COMMAND will use the open(1) to launch the application.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473046</commentid>
    <comment_count>5</comment_count>
      <attachid>108504</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-09-26 03:59:56 -0700</bug_when>
    <thetext>Comment on attachment 108504
Patch

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

&gt; Tools/Scripts/webkitdirs.pm:2028
&gt; +    if ($useOpenCommand == USE_OPEN_COMMAND) {
&gt; +        exec(&quot;open&quot;, &quot;-a&quot;, $appPath, &quot;--args&quot;, @ARGV);
&gt; +    }

It&apos;s a little surprising that USE_OPEN_COMMAND also implies using exec() instead of system(). Maybe we should have a separate parameter for that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476487</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-09-30 18:27:57 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 108504 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108504&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitdirs.pm:2028
&gt; &gt; +    if ($useOpenCommand == USE_OPEN_COMMAND) {
&gt; &gt; +        exec(&quot;open&quot;, &quot;-a&quot;, $appPath, &quot;--args&quot;, @ARGV);
&gt; &gt; +    }
&gt; 
&gt; It&apos;s a little surprising that USE_OPEN_COMMAND also implies using exec() instead of system(). Maybe we should have a separate parameter for that?

For now, I&apos;ll convert this to system() and pass -W to open(1) so that it blocks until the application it opened exits. This makes the behavior of run-webkit-app consistent with the behavior of {run, debug}-safari.

Originally I thought to just use exec() so that we don&apos;t fork(2) a process for open(1), which also fork(2)s a process for the application $appPath. That is, I was looking to minimizing fork(2)ing since it seemed excessive to call fork(2) twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476491</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-09-30 18:35:46 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 108504 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108504&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitdirs.pm:2028
&gt; &gt; &gt; +    if ($useOpenCommand == USE_OPEN_COMMAND) {
&gt; &gt; &gt; +        exec(&quot;open&quot;, &quot;-a&quot;, $appPath, &quot;--args&quot;, @ARGV);
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; It&apos;s a little surprising that USE_OPEN_COMMAND also implies using exec() instead of system(). Maybe we should have a separate parameter for that?
&gt; 
&gt; For now, I&apos;ll convert this to system() and pass -W to open(1) so that it blocks until the application it opened exits. This makes the behavior of run-webkit-app consistent with the behavior of {run, debug}-safari.
&gt; 

More importantly, by using system() we can makes the usage of runMacWebKitApp() consistent. It will always return an exit status to its caller. Although the exit status of open(1) is probably not as valuable as the exit status of the application :-/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476492</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-09-30 18:39:50 -0700</bug_when>
    <thetext>Committed r96448: &lt;http://trac.webkit.org/changeset/96448&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478043</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-04 16:09:45 -0700</bug_when>
    <thetext>I&apos;m now getting an error from run-safari on Lion:

Use of uninitialized value $useOpenCommand in numeric eq (==) at /Users/ap/Safari/OpenSource/Tools/Scripts/webkitdirs.pm line 2026.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478062</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-10-04 16:55:49 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I&apos;m now getting an error from run-safari on Lion:
&gt; 
&gt; Use of uninitialized value $useOpenCommand in numeric eq (==) at /Users/ap/Safari/OpenSource/Tools/Scripts/webkitdirs.pm line 2026.

Substituted &quot;defined($useOpenCommand) &amp;&amp; $useOpenCommand == USE_OPEN_COMMAND&quot; for &quot;$useOpenCommand == USE_OPEN_COMMAND&quot; in the if-statement condition in runMacWebKitApp() (http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitdirs.pm?rev=96448#L2026).

Committed this change in changeset 96664 &lt;http://trac.webkit.org/changeset/96664&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108416</attachid>
            <date>2011-09-22 16:14:25 -0700</date>
            <delta_ts>2011-09-23 11:54:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Bug68662.patch</filename>
            <type>text/plain</type>
            <size>4823</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk1NzU1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTEtMDktMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisg
ICAgICAgIENsZWFudXA6IEV4dHJhY3QgY29kZSB0byBsYXVuY2ggYSBNYWMgV2ViS2l0IGFwcGxp
Y2F0aW9uIGludG8gYSBjb21tb24gZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdHMgY29tbW9uIGNvZGUgdG8gbGF1bmNoIGEgV2Vi
S2l0IGFwcGxpY2F0aW9uIG9uIE1hYyBPUyBYIGludG8gYSBmdW5jdGlvbgorICAgICAgICBzbyB0
aGF0IHdlIGNhbiByZW1vdmUgZHVwbGljYXRlIGNvZGUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdGRpcnMucG06CisgICAgICAgIChydW5NYWNXZWJLaXRBcHApOiBBZGRlZC4KKyAgICAgICAg
KHJ1blNhZmFyaSk6IE1vZGlmaWVkIHRvIHVzZSB3ZWJraXRkaXJzOjpydW5NYWNXZWJLaXRBcHAo
KS4KKyAgICAgICAgKHJ1bk1pbmlCcm93c2VyKTogRGl0dG8uCisgICAgICAgIChydW5XZWJLaXRU
ZXN0UnVubmVyKTogRGl0dG8uCisgICAgICAgIChydW5UZXN0V2ViS2l0QVBJKTogRGl0dG8uCisK
IDIwMTEtMDktMjIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwIHNob3VsZCBjYWxsIC1bV0tWaWV3IG1vdXNl
VXA6XSBpbnN0ZWFkIG9mIC1bV0tWaWV3IG1vdXNlRG93bjpdCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdGRpcnMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBt
CShyZXZpc2lvbiA5NTc1MikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjAwMCwyMiArMjAwMCwyOCBAQCBzdWIgc2V0UGF0aEZvclJ1bm5pbmdXZWJL
aXRBcHAKICAgICB9CiB9CiAKK3N1YiBydW5NYWNXZWJLaXRBcHAoJCkKK3sKKyAgICBteSAoJGFw
cFBhdGgpID0gQF87CisgICAgbXkgJHByb2R1Y3REaXIgPSBwcm9kdWN0RGlyKCk7CisgICAgcHJp
bnQgIlN0YXJ0aW5nIEB7W2Jhc2VuYW1lKCRhcHBQYXRoKV19IHdpdGggRFlMRF9GUkFNRVdPUktf
UEFUSCBzZXQgdG8gcG9pbnQgdG8gYnVpbHQgV2ViS2l0IGluICRwcm9kdWN0RGlyLlxuIjsKKyAg
ICAkRU5We0RZTERfRlJBTUVXT1JLX1BBVEh9ID0gJHByb2R1Y3REaXI7CisgICAgJEVOVntXRUJL
SVRfVU5TRVRfRFlMRF9GUkFNRVdPUktfUEFUSH0gPSAiWUVTIjsKKyAgICBpZiAoYXJjaGl0ZWN0
dXJlKCkpIHsKKyAgICAgICAgcmV0dXJuIHN5c3RlbSAiYXJjaCIsICItIiAuIGFyY2hpdGVjdHVy
ZSgpLCAkYXBwUGF0aCwgQEFSR1Y7CisgICAgfQorICAgIHJldHVybiBzeXN0ZW0gJGFwcFBhdGgs
IEBBUkdWOworfQorCiBzdWIgcnVuU2FmYXJpCiB7CiAgICAgbXkgKCRkZWJ1Z2dlcikgPSBAXzsK
IAogICAgIGlmIChpc0FwcGxlTWFjV2ViS2l0KCkpIHsKLSAgICAgICAgcmV0dXJuIHN5c3RlbSAi
JEZpbmRCaW46OkJpbi9nZGItc2FmYXJpIiwgYXJndW1lbnRzRm9yQ29uZmlndXJhdGlvbigpIGlm
ICRkZWJ1Z2dlcjsKLQotICAgICAgICBteSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKLSAg
ICAgICAgcHJpbnQgIlN0YXJ0aW5nIFNhZmFyaSB3aXRoIERZTERfRlJBTUVXT1JLX1BBVEggc2V0
IHRvIHBvaW50IHRvIGJ1aWx0IFdlYktpdCBpbiAkcHJvZHVjdERpci5cbiI7Ci0gICAgICAgICRF
TlZ7RFlMRF9GUkFNRVdPUktfUEFUSH0gPSAkcHJvZHVjdERpcjsKLSAgICAgICAgJEVOVntXRUJL
SVRfVU5TRVRfRFlMRF9GUkFNRVdPUktfUEFUSH0gPSAiWUVTIjsKLSAgICAgICAgaWYgKGFyY2hp
dGVjdHVyZSgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3lzdGVtICJhcmNoIiwgIi0iIC4gYXJj
aGl0ZWN0dXJlKCksIHNhZmFyaVBhdGgoKSwgQEFSR1Y7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3lzdGVtIHNhZmFyaVBhdGgoKSwgQEFSR1Y7CisgICAgICAgIGlmICgk
ZGVidWdnZXIpIHsKKyAgICAgICAgICAgIHJldHVybiBzeXN0ZW0gIiRGaW5kQmluOjpCaW4vZ2Ri
LXNhZmFyaSIsIGFyZ3VtZW50c0ZvckNvbmZpZ3VyYXRpb24oKTsKICAgICAgICAgfQorICAgICAg
ICByZXR1cm4gcnVuTWFjV2ViS2l0QXBwKHNhZmFyaVBhdGgoKSk7CiAgICAgfQogCiAgICAgaWYg
KGlzQXBwbGVXaW5XZWJLaXQoKSkgewpAQCAtMjA0MCwxNiArMjA0Niw3IEBAIHN1YiBydW5TYWZh
cmkKIHN1YiBydW5NaW5pQnJvd3NlcgogewogICAgIGlmIChpc0FwcGxlTWFjV2ViS2l0KCkpIHsK
LSAgICAgICAgbXkgJHByb2R1Y3REaXIgPSBwcm9kdWN0RGlyKCk7Ci0gICAgICAgIHByaW50ICJT
dGFydGluZyBNaW5pQnJvd3NlciB3aXRoIERZTERfRlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50
IHRvICRwcm9kdWN0RGlyLlxuIjsKLSAgICAgICAgJEVOVntEWUxEX0ZSQU1FV09SS19QQVRIfSA9
ICRwcm9kdWN0RGlyOwotICAgICAgICAkRU5We1dFQktJVF9VTlNFVF9EWUxEX0ZSQU1FV09SS19Q
QVRIfSA9ICJZRVMiOwotICAgICAgICBteSAkbWluaUJyb3dzZXJQYXRoID0gIiRwcm9kdWN0RGly
L01pbmlCcm93c2VyLmFwcC9Db250ZW50cy9NYWNPUy9NaW5pQnJvd3NlciI7Ci0gICAgICAgIGlm
IChhcmNoaXRlY3R1cmUoKSkgewotICAgICAgICAgICAgcmV0dXJuIHN5c3RlbSAiYXJjaCIsICIt
IiAuIGFyY2hpdGVjdHVyZSgpLCAkbWluaUJyb3dzZXJQYXRoLCBAQVJHVjsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHJldHVybiBzeXN0ZW0gJG1pbmlCcm93c2VyUGF0aCwgQEFSR1Y7
Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJ1bk1hY1dlYktpdEFwcChGaWxlOjpTcGVjLT5j
YXRmaWxlKHByb2R1Y3REaXIoKSwgIk1pbmlCcm93c2VyLmFwcCIsICJDb250ZW50cyIsICJNYWNP
UyIsICJNaW5pQnJvd3NlciIpKTsKICAgICB9CiAKICAgICByZXR1cm4gMTsKQEAgLTIwODAsMTYg
KzIwNzcsNyBAQCBzdWIgZGVidWdNaW5pQnJvd3Nlcgogc3ViIHJ1bldlYktpdFRlc3RSdW5uZXIK
IHsKICAgICBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7Ci0gICAgICAgIG15ICRwcm9kdWN0RGly
ID0gcHJvZHVjdERpcigpOwotICAgICAgICBwcmludCAiU3RhcnRpbmcgV2ViS2l0VGVzdFJ1bm5l
ciB3aXRoIERZTERfRlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvICRwcm9kdWN0RGlyLlxu
IjsKLSAgICAgICAgJEVOVntEWUxEX0ZSQU1FV09SS19QQVRIfSA9ICRwcm9kdWN0RGlyOwotICAg
ICAgICAkRU5We1dFQktJVF9VTlNFVF9EWUxEX0ZSQU1FV09SS19QQVRIfSA9ICJZRVMiOwotICAg
ICAgICBteSAkd2ViS2l0VGVzdFJ1bm5lclBhdGggPSAiJHByb2R1Y3REaXIvV2ViS2l0VGVzdFJ1
bm5lciI7Ci0gICAgICAgIGlmIChhcmNoaXRlY3R1cmUoKSkgewotICAgICAgICAgICAgcmV0dXJu
IHN5c3RlbSAiYXJjaCIsICItIiAuIGFyY2hpdGVjdHVyZSgpLCAkd2ViS2l0VGVzdFJ1bm5lclBh
dGgsIEBBUkdWOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHN5c3RlbSAk
d2ViS2l0VGVzdFJ1bm5lclBhdGgsIEBBUkdWOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBy
dW5NYWNXZWJLaXRBcHAoRmlsZTo6U3BlYy0+Y2F0ZmlsZShwcm9kdWN0RGlyKCksICJXZWJLaXRU
ZXN0UnVubmVyIikpOwogICAgIH0gZWxzaWYgKGlzR3RrKCkpIHsKICAgICAgICAgbXkgJHByb2R1
Y3REaXIgPSBwcm9kdWN0RGlyKCk7CiAgICAgICAgIG15ICRpbmplY3RlZEJ1bmRsZVBhdGggPSAi
JHByb2R1Y3REaXIvTGlicmFyaWVzLy5saWJzL2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZSI7
CkBAIC0yMTI2LDE2ICsyMTE0LDcgQEAgc3ViIGRlYnVnV2ViS2l0VGVzdFJ1bm5lcgogc3ViIHJ1
blRlc3RXZWJLaXRBUEkKIHsKICAgICBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7Ci0gICAgICAg
IG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwotICAgICAgICBwcmludCAiU3RhcnRpbmcg
VGVzdFdlYktpdEFQSSB3aXRoIERZTERfRlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvICRw
cm9kdWN0RGlyLlxuIjsKLSAgICAgICAgJEVOVntEWUxEX0ZSQU1FV09SS19QQVRIfSA9ICRwcm9k
dWN0RGlyOwotICAgICAgICAkRU5We1dFQktJVF9VTlNFVF9EWUxEX0ZSQU1FV09SS19QQVRIfSA9
ICJZRVMiOwotICAgICAgICBteSAkdGVzdFdlYktpdEFQSVBhdGggPSAiJHByb2R1Y3REaXIvVGVz
dFdlYktpdEFQSSI7Ci0gICAgICAgIGlmIChhcmNoaXRlY3R1cmUoKSkgewotICAgICAgICAgICAg
cmV0dXJuIHN5c3RlbSAiYXJjaCIsICItIiAuIGFyY2hpdGVjdHVyZSgpLCAkdGVzdFdlYktpdEFQ
SVBhdGgsIEBBUkdWOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHN5c3Rl
bSAkdGVzdFdlYktpdEFQSVBhdGgsIEBBUkdWOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBy
dW5NYWNXZWJLaXRBcHAoRmlsZTo6U3BlYy0+Y2F0ZmlsZShwcm9kdWN0RGlyKCksICJUZXN0V2Vi
S2l0QVBJIikpOwogICAgIH0KIAogICAgIHJldHVybiAxOwo=
</data>
<flag name="review"
          id="105372"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108504</attachid>
            <date>2011-09-23 11:54:25 -0700</date>
            <delta_ts>2011-09-26 03:59:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Bug68662_1.patch</filename>
            <type>text/plain</type>
            <size>6800</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk1ODM3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTEtMDktMjMgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisg
ICAgICAgIENsZWFudXA6IEV4dHJhY3QgY29kZSB0byBsYXVuY2ggYSBNYWMgV2ViS2l0IGFwcGxp
Y2F0aW9uIGludG8gYSBjb21tb24gZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdHMgY29tbW9uIGNvZGUgdG8gbGF1bmNoIGEgV2Vi
S2l0IGFwcGxpY2F0aW9uIG9uIE1hYyBPUyBYIGludG8gYSBmdW5jdGlvbgorICAgICAgICBzbyB0
aGF0IHdlIGNhbiByZW1vdmUgZHVwbGljYXRlIGNvZGUuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1
bi13ZWJraXQtYXBwOiBNb2RpZmllZCB0byB1c2Ugd2Via2l0ZGlyczo6cnVuTWFjV2ViS2l0QXBw
KCkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOiBTb3J0ZWQgQEVYUE9SVCBsaXN0
IGFuZCBhZGRlZCBjb25zdGFudCBVU0VfT1BFTl9DT01NQU5ELgorICAgICAgICAocnVuTWFjV2Vi
S2l0QXBwKTogQWRkZWQuCisgICAgICAgIChydW5TYWZhcmkpOiBNb2RpZmllZCB0byB1c2Ugd2Vi
a2l0ZGlyczo6cnVuTWFjV2ViS2l0QXBwKCkuCisgICAgICAgIChydW5NaW5pQnJvd3Nlcik6IERp
dHRvLgorICAgICAgICAocnVuV2ViS2l0VGVzdFJ1bm5lcik6IERpdHRvLgorICAgICAgICAocnVu
VGVzdFdlYktpdEFQSSk6IERpdHRvLgorCiAyMDExLTA5LTIzICBNYXJrIFJvd2UgIDxtcm93ZUBh
cHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBidWlsZC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMv
cnVuLXdlYmtpdC1hcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LWFw
cAkocmV2aXNpb24gOTU4MzUpCisrKyBUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtYXBwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxNyArMzQsMTEgQEAgdXNlIGxpYiAkRmluZEJpbjo6QmluOwogdXNl
IHdlYmtpdGRpcnM7CiAKIHNldENvbmZpZ3VyYXRpb24oKTsKLW15ICRwcm9kdWN0RGlyID0gcHJv
ZHVjdERpcigpOwogCiBkaWUgIkRpZCBub3Qgc3BlY2lmeSBhbiBhcHBsaWNhdGlvbiB0byBvcGVu
IChlLmcuIHJ1bi13ZWJraXQtYXBwIEFwcE5hbWUpLlxuIiB1bmxlc3MgbGVuZ3RoKCRBUkdWWzBd
KSA+IDA7CiAKICMgQ2hlY2sgdG8gc2VlIHRoYXQgYWxsIHRoZSBmcmFtZXdvcmtzIGFyZSBidWls
dC4KIGNoZWNrRnJhbWV3b3JrcygpOwogCi0jIFNldCB1cCBEWUxEX0ZSQU1FV09SS19QQVRIIHRv
IHBvaW50IHRvIHRoZSBwcm9kdWN0IGRpcmVjdG9yeS4KLXByaW50ICJTdGFydCAkQVJHVlswXSB3
aXRoIERZTERfRlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvIGJ1aWx0IFdlYktpdCBpbiAk
cHJvZHVjdERpci5cbiI7Ci0kRU5We0RZTERfRlJBTUVXT1JLX1BBVEh9ID0gJHByb2R1Y3REaXI7
Ci0kRU5We1dFQktJVF9VTlNFVF9EWUxEX0ZSQU1FV09SS19QQVRIfSA9ICJZRVMiOwotCi11bnNo
aWZ0KEBBUkdWLCAiLWEiKTsKLWV4ZWMgIm9wZW4iLCBAQVJHVjsKK215ICRhcHBQYXRoID0gc2hp
ZnQoQEFSR1YpOworcnVuTWFjV2ViS2l0QXBwKCRhcHBQYXRoLCBVU0VfT1BFTl9DT01NQU5EKTsg
IyBUaGlzIGNhbGwgbmV2ZXIgcmV0dXJucy4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0ZGly
cy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0JKHJldmlzaW9u
IDk1ODM1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCSh3b3JraW5nIGNvcHkpCkBA
IC00MywxMSArNDMsMjcgQEAgQkVHSU4gewogICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9S
VCwgQEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKICAgICRWRVJTSU9OICAgICA9IDEuMDA7CiAg
ICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7Ci0gICBARVhQT1JUICAgICAgPSBxdygmY2hk
aXJXZWJLaXQgJmJhc2VQcm9kdWN0RGlyICZwcm9kdWN0RGlyICZYY29kZU9wdGlvbnMgJlhjb2Rl
T3B0aW9uU3RyaW5nICZYY29kZU9wdGlvblN0cmluZ05vQ29uZmlnICZwYXNzZWRDb25maWd1cmF0
aW9uICZzZXRDb25maWd1cmF0aW9uICZzYWZhcmlQYXRoICZjaGVja0ZyYW1ld29ya3MgJmN1cnJl
bnRTVk5SZXZpc2lvbik7CisgICBARVhQT1JUICAgICAgPSBxdygKKyAgICAgICAmWGNvZGVPcHRp
b25TdHJpbmcKKyAgICAgICAmWGNvZGVPcHRpb25TdHJpbmdOb0NvbmZpZworICAgICAgICZYY29k
ZU9wdGlvbnMKKyAgICAgICAmYmFzZVByb2R1Y3REaXIKKyAgICAgICAmY2hkaXJXZWJLaXQKKyAg
ICAgICAmY2hlY2tGcmFtZXdvcmtzCisgICAgICAgJmN1cnJlbnRTVk5SZXZpc2lvbgorICAgICAg
ICZwYXNzZWRDb25maWd1cmF0aW9uCisgICAgICAgJnByb2R1Y3REaXIKKyAgICAgICAmcnVuTWFj
V2ViS2l0QXBwCisgICAgICAgJnNhZmFyaVBhdGgKKyAgICAgICAmc2V0Q29uZmlndXJhdGlvbgor
ICAgICAgIFVTRV9PUEVOX0NPTU1BTkQKKyAgICk7CiAgICAlRVhQT1JUX1RBR1MgPSAoICk7CiAg
ICBARVhQT1JUX09LICAgPSAoKTsKIH0KIAordXNlIGNvbnN0YW50IFVTRV9PUEVOX0NPTU1BTkQg
PT4gMTsgIyBVc2VkIGluIHJ1bk1hY1dlYktpdEFwcCgpLgorCiBvdXIgQEVYUE9SVF9PSzsKIAog
bXkgJGFyY2hpdGVjdHVyZTsKQEAgLTIwMDAsMjIgKzIwMTYsMzEgQEAgc3ViIHNldFBhdGhGb3JS
dW5uaW5nV2ViS2l0QXBwCiAgICAgfQogfQogCitzdWIgcnVuTWFjV2ViS2l0QXBwKCQ7JCkKK3sK
KyAgICBteSAoJGFwcFBhdGgsICR1c2VPcGVuQ29tbWFuZCkgPSBAXzsKKyAgICBteSAkcHJvZHVj
dERpciA9IHByb2R1Y3REaXIoKTsKKyAgICBwcmludCAiU3RhcnRpbmcgQHtbYmFzZW5hbWUoJGFw
cFBhdGgpXX0gd2l0aCBEWUxEX0ZSQU1FV09SS19QQVRIIHNldCB0byBwb2ludCB0byBidWlsdCBX
ZWJLaXQgaW4gJHByb2R1Y3REaXIuXG4iOworICAgICRFTlZ7RFlMRF9GUkFNRVdPUktfUEFUSH0g
PSAkcHJvZHVjdERpcjsKKyAgICAkRU5We1dFQktJVF9VTlNFVF9EWUxEX0ZSQU1FV09SS19QQVRI
fSA9ICJZRVMiOworICAgIGlmICgkdXNlT3BlbkNvbW1hbmQgPT0gVVNFX09QRU5fQ09NTUFORCkg
eworICAgICAgICBleGVjKCJvcGVuIiwgIi1hIiwgJGFwcFBhdGgsICItLWFyZ3MiLCBAQVJHVik7
CisgICAgfQorICAgIGlmIChhcmNoaXRlY3R1cmUoKSkgeworICAgICAgICByZXR1cm4gc3lzdGVt
ICJhcmNoIiwgIi0iIC4gYXJjaGl0ZWN0dXJlKCksICRhcHBQYXRoLCBAQVJHVjsKKyAgICB9Cisg
ICAgcmV0dXJuIHN5c3RlbSB7ICRhcHBQYXRoIH0gJGFwcFBhdGgsIEBBUkdWOworfQorCiBzdWIg
cnVuU2FmYXJpCiB7CiAgICAgbXkgKCRkZWJ1Z2dlcikgPSBAXzsKIAogICAgIGlmIChpc0FwcGxl
TWFjV2ViS2l0KCkpIHsKLSAgICAgICAgcmV0dXJuIHN5c3RlbSAiJEZpbmRCaW46OkJpbi9nZGIt
c2FmYXJpIiwgYXJndW1lbnRzRm9yQ29uZmlndXJhdGlvbigpIGlmICRkZWJ1Z2dlcjsKLQotICAg
ICAgICBteSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKLSAgICAgICAgcHJpbnQgIlN0YXJ0
aW5nIFNhZmFyaSB3aXRoIERZTERfRlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvIGJ1aWx0
IFdlYktpdCBpbiAkcHJvZHVjdERpci5cbiI7Ci0gICAgICAgICRFTlZ7RFlMRF9GUkFNRVdPUktf
UEFUSH0gPSAkcHJvZHVjdERpcjsKLSAgICAgICAgJEVOVntXRUJLSVRfVU5TRVRfRFlMRF9GUkFN
RVdPUktfUEFUSH0gPSAiWUVTIjsKLSAgICAgICAgaWYgKGFyY2hpdGVjdHVyZSgpKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3lzdGVtICJhcmNoIiwgIi0iIC4gYXJjaGl0ZWN0dXJlKCksIHNhZmFy
aVBhdGgoKSwgQEFSR1Y7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gc3lz
dGVtIHNhZmFyaVBhdGgoKSwgQEFSR1Y7CisgICAgICAgIGlmICgkZGVidWdnZXIpIHsKKyAgICAg
ICAgICAgIHJldHVybiBzeXN0ZW0gIiRGaW5kQmluOjpCaW4vZ2RiLXNhZmFyaSIsIGFyZ3VtZW50
c0ZvckNvbmZpZ3VyYXRpb24oKTsKICAgICAgICAgfQorICAgICAgICByZXR1cm4gcnVuTWFjV2Vi
S2l0QXBwKHNhZmFyaVBhdGgoKSk7CiAgICAgfQogCiAgICAgaWYgKGlzQXBwbGVXaW5XZWJLaXQo
KSkgewpAQCAtMjA0MCwxNiArMjA2NSw3IEBAIHN1YiBydW5TYWZhcmkKIHN1YiBydW5NaW5pQnJv
d3NlcgogewogICAgIGlmIChpc0FwcGxlTWFjV2ViS2l0KCkpIHsKLSAgICAgICAgbXkgJHByb2R1
Y3REaXIgPSBwcm9kdWN0RGlyKCk7Ci0gICAgICAgIHByaW50ICJTdGFydGluZyBNaW5pQnJvd3Nl
ciB3aXRoIERZTERfRlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvICRwcm9kdWN0RGlyLlxu
IjsKLSAgICAgICAgJEVOVntEWUxEX0ZSQU1FV09SS19QQVRIfSA9ICRwcm9kdWN0RGlyOwotICAg
ICAgICAkRU5We1dFQktJVF9VTlNFVF9EWUxEX0ZSQU1FV09SS19QQVRIfSA9ICJZRVMiOwotICAg
ICAgICBteSAkbWluaUJyb3dzZXJQYXRoID0gIiRwcm9kdWN0RGlyL01pbmlCcm93c2VyLmFwcC9D
b250ZW50cy9NYWNPUy9NaW5pQnJvd3NlciI7Ci0gICAgICAgIGlmIChhcmNoaXRlY3R1cmUoKSkg
ewotICAgICAgICAgICAgcmV0dXJuIHN5c3RlbSAiYXJjaCIsICItIiAuIGFyY2hpdGVjdHVyZSgp
LCAkbWluaUJyb3dzZXJQYXRoLCBAQVJHVjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHJldHVybiBzeXN0ZW0gJG1pbmlCcm93c2VyUGF0aCwgQEFSR1Y7Ci0gICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHJ1bk1hY1dlYktpdEFwcChGaWxlOjpTcGVjLT5jYXRmaWxlKHByb2R1Y3REaXIo
KSwgIk1pbmlCcm93c2VyLmFwcCIsICJDb250ZW50cyIsICJNYWNPUyIsICJNaW5pQnJvd3NlciIp
KTsKICAgICB9CiAKICAgICByZXR1cm4gMTsKQEAgLTIwODAsMTYgKzIwOTYsNyBAQCBzdWIgZGVi
dWdNaW5pQnJvd3Nlcgogc3ViIHJ1bldlYktpdFRlc3RSdW5uZXIKIHsKICAgICBpZiAoaXNBcHBs
ZU1hY1dlYktpdCgpKSB7Ci0gICAgICAgIG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwot
ICAgICAgICBwcmludCAiU3RhcnRpbmcgV2ViS2l0VGVzdFJ1bm5lciB3aXRoIERZTERfRlJBTUVX
T1JLX1BBVEggc2V0IHRvIHBvaW50IHRvICRwcm9kdWN0RGlyLlxuIjsKLSAgICAgICAgJEVOVntE
WUxEX0ZSQU1FV09SS19QQVRIfSA9ICRwcm9kdWN0RGlyOwotICAgICAgICAkRU5We1dFQktJVF9V
TlNFVF9EWUxEX0ZSQU1FV09SS19QQVRIfSA9ICJZRVMiOwotICAgICAgICBteSAkd2ViS2l0VGVz
dFJ1bm5lclBhdGggPSAiJHByb2R1Y3REaXIvV2ViS2l0VGVzdFJ1bm5lciI7Ci0gICAgICAgIGlm
IChhcmNoaXRlY3R1cmUoKSkgewotICAgICAgICAgICAgcmV0dXJuIHN5c3RlbSAiYXJjaCIsICIt
IiAuIGFyY2hpdGVjdHVyZSgpLCAkd2ViS2l0VGVzdFJ1bm5lclBhdGgsIEBBUkdWOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHN5c3RlbSAkd2ViS2l0VGVzdFJ1bm5lclBh
dGgsIEBBUkdWOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBydW5NYWNXZWJLaXRBcHAoRmls
ZTo6U3BlYy0+Y2F0ZmlsZShwcm9kdWN0RGlyKCksICJXZWJLaXRUZXN0UnVubmVyIikpOwogICAg
IH0gZWxzaWYgKGlzR3RrKCkpIHsKICAgICAgICAgbXkgJHByb2R1Y3REaXIgPSBwcm9kdWN0RGly
KCk7CiAgICAgICAgIG15ICRpbmplY3RlZEJ1bmRsZVBhdGggPSAiJHByb2R1Y3REaXIvTGlicmFy
aWVzLy5saWJzL2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZSI7CkBAIC0yMTI2LDE2ICsyMTMz
LDcgQEAgc3ViIGRlYnVnV2ViS2l0VGVzdFJ1bm5lcgogc3ViIHJ1blRlc3RXZWJLaXRBUEkKIHsK
ICAgICBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7Ci0gICAgICAgIG15ICRwcm9kdWN0RGlyID0g
cHJvZHVjdERpcigpOwotICAgICAgICBwcmludCAiU3RhcnRpbmcgVGVzdFdlYktpdEFQSSB3aXRo
IERZTERfRlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvICRwcm9kdWN0RGlyLlxuIjsKLSAg
ICAgICAgJEVOVntEWUxEX0ZSQU1FV09SS19QQVRIfSA9ICRwcm9kdWN0RGlyOwotICAgICAgICAk
RU5We1dFQktJVF9VTlNFVF9EWUxEX0ZSQU1FV09SS19QQVRIfSA9ICJZRVMiOwotICAgICAgICBt
eSAkdGVzdFdlYktpdEFQSVBhdGggPSAiJHByb2R1Y3REaXIvVGVzdFdlYktpdEFQSSI7Ci0gICAg
ICAgIGlmIChhcmNoaXRlY3R1cmUoKSkgewotICAgICAgICAgICAgcmV0dXJuIHN5c3RlbSAiYXJj
aCIsICItIiAuIGFyY2hpdGVjdHVyZSgpLCAkdGVzdFdlYktpdEFQSVBhdGgsIEBBUkdWOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHN5c3RlbSAkdGVzdFdlYktpdEFQSVBh
dGgsIEBBUkdWOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBydW5NYWNXZWJLaXRBcHAoRmls
ZTo6U3BlYy0+Y2F0ZmlsZShwcm9kdWN0RGlyKCksICJUZXN0V2ViS2l0QVBJIikpOwogICAgIH0K
IAogICAgIHJldHVybiAxOwo=
</data>
<flag name="review"
          id="105482"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>