<?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>29336</bug_id>
          
          <creation_ts>2009-09-17 09:53:41 -0700</creation_ts>
          <short_desc>WebInspector.log() function not protected if console not yet created</short_desc>
          <delta_ts>2009-09-22 10:41:56 -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 Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>0</everconfirmed>
          <reporter name="Patrick Mueller">pmuellr</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kmccullough</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>147822</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-09-17 09:53:41 -0700</bug_when>
    <thetext>The code for WebInspector.log, in inspector.js, looks like this:

    {
       var msg = new WebInspector.ConsoleMessage(...);
       this.console.addMessage();
    }

Unfortunately, this code can be invoked before this.console is set, and so an exception will occur.

Suggest we figure out a way to queue the message if the console is not set, and then do the this.console() on them when it&apos;s safe to do so.

Probably means checking for queued messages within this method itself, as well as doing a setInterval() to check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148062</commentid>
    <comment_count>1</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-09-18 06:50:44 -0700</bug_when>
    <thetext>Here&apos;s the code I&apos;m currently playing with, didn&apos;t want to lose it, due to other changes I&apos;m making in the file:

Also note this fixes the broken repeat-count feature that these messages didn&apos;t really support.

WebInspector.log = function(message)
{
    // if we can&apos;t log the message, queue it
    if (!WebInspector.ConsoleMessage || !this.console) {
        if (!WebInspector.log.queued)
            WebInspector.log.queued = [];
        WebInspector.log.queued.push(message);
        
        // check for log liveness on a timer
        if (!WebInspector.log.interval) {
            var func = function() {WebInspector.log(null)};
            WebInspector.log.interval = setInterval(func, 1000);
        }
            
        return;
    }
    
    // clear the timer
    if (WebInspector.log.interval) {
        clearInterval(WebInspector.log.interval);
        WebInspector.log.interval = null;
    }
    
    // if there are queued messages, log them
    if (WebInspector.log.queued) {
        var queued = WebInspector.log.queued;
        WebInspector.log.queued = null;
        for (var i = 0; i &lt; queued.length; ++i) {
            WebInspector.log(queued[i]);
        }
    }
    
    // ignore null messages, specifically the one sent by queued timer
    if (!message)
        return;
        
    // calculate the repeat count
    var repeatCount = 1;
    if (message == WebInspector.log.lastMessage) {
        repeatCount = WebInspector.log.repeatCount + 1;
    }

    WebInspector.log.lastMessage = message;
    WebInspector.log.repeatCount = repeatCount;
    
    // post the message
    var msg = new WebInspector.ConsoleMessage(
        WebInspector.ConsoleMessage.MessageSource.Other,
        WebInspector.ConsoleMessage.MessageType.Log,
        WebInspector.ConsoleMessage.MessageLevel.Debug,
        -1,
        null,
        null,
        repeatCount,
        message);

    this.console.addMessage(msg);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148635</commentid>
    <comment_count>2</comment_count>
      <attachid>39848</attachid>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-09-21 06:18:34 -0700</bug_when>
    <thetext>Created attachment 39848
proposed patch - 2009/09/21

fixes problem of using WebInspector.log() early.  Also fixes repeatCount problem for repeated messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148850</commentid>
    <comment_count>3</comment_count>
      <attachid>39848</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-09-21 14:54:00 -0700</bug_when>
    <thetext>Comment on attachment 39848
proposed patch - 2009/09/21


&gt; +            var func = function() {WebInspector.log(null)};
&gt; +            WebInspector.log.interval = setInterval(func, 1000);

&gt; +    // ignore null messages, specifically the one sent by queued timer
&gt; +    if (!message)
&gt; +        return;

I am not sure passing &quot;null&quot; is the best way to check. What if I want to log somthing and it happens to be undefined/null, I would like you know that. Just make the check function do the &quot;WebInspector.ConsoleMessage &amp;&amp; this.console&quot; test and then replay the messages if that passes.

Also just pass the function inline to setInterval or give the variable a better name than func. Put spaces inside the curly braces too.


&gt; +        WebInspector.log.interval = null;

A better way to write this is:

delete WebInspector.log.interval;


&gt; +        for (var i = 0; i &lt; queued.length; ++i) {
&gt; +            WebInspector.log(queued[i]);
&gt; +        }

No need for the braces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149091</commentid>
    <comment_count>4</comment_count>
      <attachid>39928</attachid>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-09-22 10:24:35 -0700</bug_when>
    <thetext>Created attachment 39928
proposed patch - 2009/09/22

issues resolved; split out the function into a number of inner functions for reuse

ConsoleView changed recently so that it requires the messages being logged to be proxy objects, so you&apos;ll see that I&apos;m creating a proxy now for the message passed into WebInspector.log() before sending it along to WebInspector.ConsoleMessage()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149108</commentid>
    <comment_count>5</comment_count>
      <attachid>39928</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-22 10:41:52 -0700</bug_when>
    <thetext>Comment on attachment 39928
proposed patch - 2009/09/22

Clearing flags on attachment: 39928

Committed r48641: &lt;http://trac.webkit.org/changeset/48641&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149109</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-22 10:41:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39848</attachid>
            <date>2009-09-21 06:18:34 -0700</date>
            <delta_ts>2009-09-22 10:24:35 -0700</delta_ts>
            <desc>proposed patch - 2009/09/21</desc>
            <filename>29336.patch</filename>
            <type>text/plain</type>
            <size>2827</size>
            <attacher name="Patrick Mueller">pmuellr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODU3OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDktMjEgIFBhdHJpY2sgTXVlbGxlciAgPFBhdHJpY2tfTXVl
bGxlckB1cy5pYm0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlYkluc3BlY3Rvci5sb2coKSBmdW5jdGlvbiBub3QgcHJvdGVjdGVkIGlmIGNv
bnNvbGUgbm90IHlldCBjcmVhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI5MzM2CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAgT25seSBhZmZlY3Rz
IFdlYiBJbnNwZWN0b3IgZGV2ZWxvcGVycyBhZGRpbmcgbG9nZ2luZworICAgICAgICB0byB0aGVp
ciBjb2RlIGR1cmluZyBkZXZlbG9wbWVudC4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvZy5mdW5jKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5sb2cpOgorCiAyMDA5LTA5LTIxICBHdXN0YXZvIE5vcm9uaGEgU2ls
dmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgbWFrZSBkaXN0IGJ1aWxkIGZpeC4gTWlzc2luZyBmaWxlcy4KSW5kZXg6IFdlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwkocmV2aXNpb24gNDg1MTgpCisrKyBXZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI4
LDYgKzExMjgsNDkgQEAgV2ViSW5zcGVjdG9yLmFkZE1lc3NhZ2VUb0NvbnNvbGUgPSBmdW5jdAog
CiBXZWJJbnNwZWN0b3IubG9nID0gZnVuY3Rpb24obWVzc2FnZSkKIHsKKyAgICAvLyBpZiB3ZSBj
YW4ndCBsb2cgdGhlIG1lc3NhZ2UsIHF1ZXVlIGl0CisgICAgaWYgKCFXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UgfHwgIXRoaXMuY29uc29sZSkgeworICAgICAgICBpZiAoIVdlYkluc3BlY3Rv
ci5sb2cucXVldWVkKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmxvZy5xdWV1ZWQgPSBbXTsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLmxvZy5xdWV1ZWQucHVzaChtZXNzYWdlKTsKKworICAgICAg
ICAvLyBjaGVjayBmb3IgbG9nIGxpdmVuZXNzIG9uIGEgdGltZXIKKyAgICAgICAgaWYgKCFXZWJJ
bnNwZWN0b3IubG9nLmludGVydmFsKSB7CisgICAgICAgICAgICB2YXIgZnVuYyA9IGZ1bmN0aW9u
KCkge1dlYkluc3BlY3Rvci5sb2cobnVsbCl9OworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmxv
Zy5pbnRlcnZhbCA9IHNldEludGVydmFsKGZ1bmMsIDEwMDApOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIGNsZWFyIHRoZSB0aW1lcgorICAgIGlmIChXZWJJ
bnNwZWN0b3IubG9nLmludGVydmFsKSB7CisgICAgICAgIGNsZWFySW50ZXJ2YWwoV2ViSW5zcGVj
dG9yLmxvZy5pbnRlcnZhbCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5sb2cuaW50ZXJ2YWwgPSBu
dWxsOworICAgIH0KKworICAgIC8vIGlmIHRoZXJlIGFyZSBxdWV1ZWQgbWVzc2FnZXMsIGxvZyB0
aGVtCisgICAgaWYgKFdlYkluc3BlY3Rvci5sb2cucXVldWVkKSB7CisgICAgICAgIHZhciBxdWV1
ZWQgPSBXZWJJbnNwZWN0b3IubG9nLnF1ZXVlZDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmxvZy5x
dWV1ZWQgPSBudWxsOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlZC5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmxvZyhxdWV1ZWRbaV0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gaWdub3JlIG51bGwgbWVzc2FnZXMsIHNwZWNpZmljYWxseSB0
aGUgb25lIHNlbnQgYnkgcXVldWVkIHRpbWVyCisgICAgaWYgKCFtZXNzYWdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBjYWxjdWxhdGUgdGhlIHJlcGVhdCBjb3VudAorICAgIHZhciByZXBl
YXRDb3VudCA9IDE7CisgICAgaWYgKG1lc3NhZ2UgPT0gV2ViSW5zcGVjdG9yLmxvZy5sYXN0TWVz
c2FnZSkKKyAgICAgICAgcmVwZWF0Q291bnQgPSBXZWJJbnNwZWN0b3IubG9nLnJlcGVhdENvdW50
ICsgMTsKKworICAgIFdlYkluc3BlY3Rvci5sb2cubGFzdE1lc3NhZ2UgPSBtZXNzYWdlOworICAg
IFdlYkluc3BlY3Rvci5sb2cucmVwZWF0Q291bnQgPSByZXBlYXRDb3VudDsKKyAgICAKKyAgICAv
LyBwb3N0IHRoZSBtZXNzYWdlCiAgICAgdmFyIG1zZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UoCiAgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291
cmNlLk90aGVyLAogICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5
cGUuTG9nLApAQCAtMTEzNSw4ICsxMTc4LDkgQEAgV2ViSW5zcGVjdG9yLmxvZyA9IGZ1bmN0aW9u
KG1lc3NhZ2UpCiAgICAgICAgIC0xLAogICAgICAgICBudWxsLAogICAgICAgICBudWxsLAotICAg
ICAgICAxLAorICAgICAgICByZXBlYXRDb3VudCwKICAgICAgICAgbWVzc2FnZSk7CisKICAgICB0
aGlzLmNvbnNvbGUuYWRkTWVzc2FnZShtc2cpOwogfQogCg==
</data>
<flag name="review"
          id="20985"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39928</attachid>
            <date>2009-09-22 10:24:35 -0700</date>
            <delta_ts>2009-09-22 10:41:52 -0700</delta_ts>
            <desc>proposed patch - 2009/09/22</desc>
            <filename>29336.patch</filename>
            <type>text/plain</type>
            <size>3970</size>
            <attacher name="Patrick Mueller">pmuellr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODYzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMDktMjIgIFBhdHJpY2sgTXVlbGxlciAgPFBhdHJpY2tfTXVl
bGxlckB1cy5pYm0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlYkluc3BlY3Rvci5sb2coKSBmdW5jdGlvbiBub3QgcHJvdGVjdGVkIGlmIGNv
bnNvbGUgbm90IHlldCBjcmVhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yOTMzNgorICAgICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAgT25s
eSBhZmZlY3RzIFdlYiBJbnNwZWN0b3IgZGV2ZWxvcGVycyBhZGRpbmcgbG9nZ2luZworICAgICAg
ICB0byB0aGVpciBjb2RlIGR1cmluZyBkZXZlbG9wbWVudC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvZy5pc0xv
Z0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9nLmZsdXNoUXVldWUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLmxvZy5mbHVzaFF1ZXVlSWZBdmFpbGFibGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLmxvZy5sb2dNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5sb2cp
OgorCiAyMDA5LTA5LTIyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwkocmV2aXNpb24gNDg1OTIpCisrKyBXZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI4
LDE2ICsxMTI4LDg2IEBAIFdlYkluc3BlY3Rvci5hZGRNZXNzYWdlVG9Db25zb2xlID0gZnVuY3QK
IAogV2ViSW5zcGVjdG9yLmxvZyA9IGZ1bmN0aW9uKG1lc3NhZ2UpCiB7Ci0gICAgdmFyIG1zZyA9
IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UoCi0gICAgICAgIFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLk90aGVyLAotICAgICAgICBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLAotICAgICAgICBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkRlYnVnLAotICAgICAgICAtMSwKLSAgICAgICAgbnVs
bCwKLSAgICAgICAgbnVsbCwKLSAgICAgICAgMSwKLSAgICAgICAgbWVzc2FnZSk7Ci0gICAgdGhp
cy5jb25zb2xlLmFkZE1lc3NhZ2UobXNnKTsKKyAgICAvLyByZW1lbWJlciAndGhpcycgZm9yIHNl
dEludGVydmFsKCkgY2FsbGJhY2sKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgCisgICAgLy8g
cmV0dXJuIGluZGljYXRpb24gaWYgd2UgY2FuIGFjdHVhbGx5IGxvZyBhIG1lc3NhZ2UKKyAgICBm
dW5jdGlvbiBpc0xvZ0F2YWlsYWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlICYmIFdlYkluc3BlY3Rvci5PYmplY3RQcm94eSAmJiBzZWxmLmNv
bnNvbGU7CisgICAgfQorICAgIAorICAgIC8vIGZsdXNoIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIG1l
c3NhZ2VzCisgICAgZnVuY3Rpb24gZmx1c2hRdWV1ZSgpCisgICAgeworICAgICAgICB2YXIgcXVl
dWVkID0gV2ViSW5zcGVjdG9yLmxvZy5xdWV1ZWQ7CisgICAgICAgIGlmICghcXVldWVkKSAKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHF1ZXVlZC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGxvZ01lc3NhZ2UocXVldWVkW2ld
KTsKKyAgICAgICAgCisgICAgICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IubG9nLnF1ZXVlZDsKKyAg
ICB9CisKKyAgICAvLyBmbHVzaCB0aGUgcXVldWUgaWYgaXQgY29uc29sZSBpcyBhdmFpbGFibGUK
KyAgICAvLyAtIHRoaXMgZnVuY3Rpb24gaXMgcnVuIG9uIGFuIGludGVydmFsCisgICAgZnVuY3Rp
b24gZmx1c2hRdWV1ZUlmQXZhaWxhYmxlKCkKKyAgICB7CisgICAgICAgIGlmICghaXNMb2dBdmFp
bGFibGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBjbGVh
ckludGVydmFsKFdlYkluc3BlY3Rvci5sb2cuaW50ZXJ2YWwpOworICAgICAgICBkZWxldGUgV2Vi
SW5zcGVjdG9yLmxvZy5pbnRlcnZhbDsKKyAgICAgICAgCisgICAgICAgIGZsdXNoUXVldWUoKTsK
KyAgICB9CisgICAgCisgICAgLy8gYWN0dWFsbHkgbG9nIHRoZSBtZXNzYWdlCisgICAgZnVuY3Rp
b24gbG9nTWVzc2FnZShtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFyIHJlcGVhdENvdW50ID0g
MTsKKyAgICAgICAgaWYgKG1lc3NhZ2UgPT0gV2ViSW5zcGVjdG9yLmxvZy5sYXN0TWVzc2FnZSkK
KyAgICAgICAgICAgIHJlcGVhdENvdW50ID0gV2ViSW5zcGVjdG9yLmxvZy5yZXBlYXRDb3VudCAr
IDE7CisgICAgCisgICAgICAgIFdlYkluc3BlY3Rvci5sb2cubGFzdE1lc3NhZ2UgPSBtZXNzYWdl
OworICAgICAgICBXZWJJbnNwZWN0b3IubG9nLnJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7Cisg
ICAgICAgIAorICAgICAgICAvLyBDb25zb2xlTWVzc2FnZSBleHBlY3RzIGEgcHJveHkgb2JqZWN0
CisgICAgICAgIG1lc3NhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFByb3h5KG51bGwsIFtd
LCAwLCBtZXNzYWdlLCBmYWxzZSk7CisgICAgICAgIAorICAgICAgICAvLyBwb3N0IHRoZSBtZXNz
YWdlCisgICAgICAgIHZhciBtc2cgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKAor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuT3Ro
ZXIsCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUu
TG9nLAorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZl
bC5EZWJ1ZywKKyAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgbnVsbCwKKyAgICAgICAgICAg
IG51bGwsCisgICAgICAgICAgICByZXBlYXRDb3VudCwKKyAgICAgICAgICAgIG1lc3NhZ2UpOwor
ICAgIAorICAgICAgICBzZWxmLmNvbnNvbGUuYWRkTWVzc2FnZShtc2cpOworICAgIH0KKyAgICAK
KyAgICAvLyBpZiB3ZSBjYW4ndCBsb2cgdGhlIG1lc3NhZ2UsIHF1ZXVlIGl0CisgICAgaWYgKCFp
c0xvZ0F2YWlsYWJsZSgpKSB7CisgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLmxvZy5xdWV1ZWQp
CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IubG9nLnF1ZXVlZCA9IFtdOworICAgICAgICAgICAg
CisgICAgICAgIFdlYkluc3BlY3Rvci5sb2cucXVldWVkLnB1c2gobWVzc2FnZSk7CisgICAgICAg
IAorICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5sb2cuaW50ZXJ2YWwpCisgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IubG9nLmludGVydmFsID0gc2V0SW50ZXJ2YWwoZmx1c2hRdWV1ZUlmQXZhaWxh
YmxlLCAxMDAwKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBm
bHVzaCB0aGUgcGVuZGluZyBxdWV1ZSBpZiBhbnkKKyAgICBmbHVzaFF1ZXVlKCk7CisKKyAgICAv
LyBsb2cgdGhlIG1lc3NhZ2UKKyAgICBsb2dNZXNzYWdlKG1lc3NhZ2UpOwogfQogCiBXZWJJbnNw
ZWN0b3IuYWRkUHJvZmlsZSA9IGZ1bmN0aW9uKHByb2ZpbGUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>