<?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>29616</bug_id>
          
          <creation_ts>2009-09-21 14:47:07 -0700</creation_ts>
          <short_desc>Web Inspector: completions are always evaluated against window (discarding call frames)</short_desc>
          <delta_ts>2009-09-21 15:59:13 -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>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>148841</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-21 14:47:07 -0700</bug_when>
    <thetext>1. While on web inspector stop on a breakpoint
2. Type &quot;&lt;some-scope-var&gt;.&quot; to see completions

Expected: completions
Actual: nothing

The reason is that getCompletions is working against window only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148875</commentid>
    <comment_count>1</comment_count>
      <attachid>39889</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-21 15:44:45 -0700</bug_when>
    <thetext>Created attachment 39889
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148877</commentid>
    <comment_count>2</comment_count>
      <attachid>39889</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-09-21 15:54:11 -0700</bug_when>
    <thetext>Comment on attachment 39889
patch


&gt; +        var callFrameId = WebInspector.panels.scripts &amp;&amp; WebInspector.panels.scripts.paused ? WebInspector.panels.scripts.selectedCallFrameId() : null;

Thats a bit long. Maybe just have it be:

if (WebInspector.panels.scripts &amp;&amp; WebInspector.panels.scripts.paused)
    var callFrameId = WebInspector.panels.scripts.selectedCallFrameId();

And it will be undefined by default for the normal case.

&gt; +        InjectedScriptAccess.getCompletions(expressionString, includeInspectorCommandLineAPI, callFrameId, reportCompletions);
&gt;      },
&gt;  
&gt;      _reportCompletions: function(bestMatchOnly, completionsReadyCallback, dotNotation, bracketNotation, prefix, result, isException) {
&gt; diff --git a/WebCore/inspector/front-end/InjectedScript.js b/WebCore/inspector/front-end/InjectedScript.js
&gt; index 4d96f68..726c7cc 100644
&gt; --- a/WebCore/inspector/front-end/InjectedScript.js
&gt; +++ b/WebCore/inspector/front-end/InjectedScript.js
&gt; @@ -499,11 +499,20 @@ InjectedScript.setPropertyValue = function(objectProxy, propertyName, expression
&gt;  }
&gt;  
&gt;  
&gt; -InjectedScript.getCompletions = function(expression, includeInspectorCommandLineAPI)
&gt; +InjectedScript.getCompletions = function(expression, includeInspectorCommandLineAPI, callFrameId)
&gt;  {
&gt;      var props = {};
&gt;      try {
&gt; -        var expressionResult = InjectedScript._evaluateOn(InjectedScript._window().eval, InjectedScript._window(), expression);
&gt; +        var expressionResult;
&gt; +        // Evaluate on call frame if call frame id is available.
&gt; +        if (typeof callFrameId === &quot;number&quot;) {
&gt; +            var callFrame = InjectedScript._callFrameForId(callFrameId);
&gt; +            if (!callFrame)
&gt; +                return props;
&gt; +            expressionResult = InjectedScript._evaluateOn(callFrame.evaluate, callFrame, expression);
&gt; +        } else {
&gt; +            expressionResult = InjectedScript._evaluateOn(InjectedScript._window().eval, InjectedScript._window(), expression);
&gt; +        }
&gt;          for (var prop in expressionResult)
&gt;              props[prop] = true;
&gt;          if (includeInspectorCommandLineAPI)
&gt; diff --git a/WebCore/inspector/front-end/ScriptsPanel.js b/WebCore/inspector/front-end/ScriptsPanel.js
&gt; index 04f27bb..ae918d1 100644
&gt; --- a/WebCore/inspector/front-end/ScriptsPanel.js
&gt; +++ b/WebCore/inspector/front-end/ScriptsPanel.js
&gt; @@ -351,6 +351,14 @@ WebInspector.ScriptsPanel.prototype = {
&gt;              sourceFrame.removeBreakpoint(breakpoint);
&gt;      },
&gt;  
&gt; +    selectedCallFrameId: function()
&gt; +    {
&gt; +        var selectedCallFrame = this.sidebarPanes.callstack.selectedCallFrame;
&gt; +        if (!selectedCallFrame)
&gt; +            return null;
&gt; +        return selectedCallFrame.id;
&gt; +    },
&gt; +
&gt;      evaluateInSelectedCallFrame: function(code, updateInterface, callback)
&gt;      {
&gt;          var selectedCallFrame = this.sidebarPanes.callstack.selectedCallFrame;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148878</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-21 15:56:14 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 39889 [details])
&gt; 
&gt; &gt; +        var callFrameId = WebInspector.panels.scripts &amp;&amp; WebInspector.panels.scripts.paused ? WebInspector.panels.scripts.selectedCallFrameId() : null;
&gt; 
&gt; Thats a bit long. Maybe just have it be:

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148879</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-21 15:59:13 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/ConsoleView.js
	M	WebCore/inspector/front-end/InjectedScript.js
	M	WebCore/inspector/front-end/ScriptsPanel.js
Committed r48608</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39889</attachid>
            <date>2009-09-21 15:44:45 -0700</date>
            <delta_ts>2009-09-21 15:54:11 -0700</delta_ts>
            <desc>patch</desc>
            <filename>completions</filename>
            <type>text/plain</type>
            <size>3938</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Zjg5NDc3MS4uODFjMGM2YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyMiBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IFRp
bW90aHkgSGF0Y2hlci4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb21wbGV0aW9ucyBhcmUg
YWx3YXlzIGV2YWx1YXRlZCBhZ2FpbnN0CisgICAgICAgIHdpbmRvdyAoZGlzY2FyZGluZyBjYWxs
IGZyYW1lcykuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI5NjE2CisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5jb21wbGV0aW9u
cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qczoKKyAg
ICAgICAgKEluamVjdGVkU2NyaXB0LmdldENvbXBsZXRpb25zKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlLnNlbGVjdGVkQ2FsbEZyYW1lSWQpOgorCisyMDA5LTA5LTIxICBQ
YXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFRpbW90aHkgSGF0Y2hlci4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBFdmFsdWF0aW5n
IG9uIGNhbGwgZnJhbWUgYWx3YXlzIHJldHVybnMgInVuZGVmaW5lZCIuCiAKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5NjEzCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggYWJkYTRiNS4uYTBlYjc2NCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwpAQCAtMzAzLDcgKzMw
Myw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
IAogICAgICAgICB2YXIgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJID0gKCFkb3ROb3Rh
dGlvbiAmJiAhYnJhY2tldE5vdGF0aW9uKTsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3Mu
Z2V0Q29tcGxldGlvbnMoZXhwcmVzc2lvblN0cmluZywgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRM
aW5lQVBJLCByZXBvcnRDb21wbGV0aW9ucyk7CisgICAgICAgIHZhciBjYWxsRnJhbWVJZCA9IFdl
Ykluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cyAmJiBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMu
cGF1c2VkID8gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnNlbGVjdGVkQ2FsbEZyYW1lSWQo
KSA6IG51bGw7CisgICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldENvbXBsZXRpb25zKGV4
cHJlc3Npb25TdHJpbmcsIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgY2FsbEZyYW1l
SWQsIHJlcG9ydENvbXBsZXRpb25zKTsKICAgICB9LAogCiAgICAgX3JlcG9ydENvbXBsZXRpb25z
OiBmdW5jdGlvbihiZXN0TWF0Y2hPbmx5LCBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2ssIGRvdE5v
dGF0aW9uLCBicmFja2V0Tm90YXRpb24sIHByZWZpeCwgcmVzdWx0LCBpc0V4Y2VwdGlvbikgewpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0Lmpz
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzCmluZGV4IDRk
OTZmNjguLjcyNmM3Y2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9J
bmplY3RlZFNjcmlwdC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0
ZWRTY3JpcHQuanMKQEAgLTQ5OSwxMSArNDk5LDIwIEBAIEluamVjdGVkU2NyaXB0LnNldFByb3Bl
cnR5VmFsdWUgPSBmdW5jdGlvbihvYmplY3RQcm94eSwgcHJvcGVydHlOYW1lLCBleHByZXNzaW9u
CiB9CiAKIAotSW5qZWN0ZWRTY3JpcHQuZ2V0Q29tcGxldGlvbnMgPSBmdW5jdGlvbihleHByZXNz
aW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEkpCitJbmplY3RlZFNjcmlwdC5nZXRD
b21wbGV0aW9ucyA9IGZ1bmN0aW9uKGV4cHJlc3Npb24sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5k
TGluZUFQSSwgY2FsbEZyYW1lSWQpCiB7CiAgICAgdmFyIHByb3BzID0ge307CiAgICAgdHJ5IHsK
LSAgICAgICAgdmFyIGV4cHJlc3Npb25SZXN1bHQgPSBJbmplY3RlZFNjcmlwdC5fZXZhbHVhdGVP
bihJbmplY3RlZFNjcmlwdC5fd2luZG93KCkuZXZhbCwgSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygp
LCBleHByZXNzaW9uKTsKKyAgICAgICAgdmFyIGV4cHJlc3Npb25SZXN1bHQ7CisgICAgICAgIC8v
IEV2YWx1YXRlIG9uIGNhbGwgZnJhbWUgaWYgY2FsbCBmcmFtZSBpZCBpcyBhdmFpbGFibGUuCisg
ICAgICAgIGlmICh0eXBlb2YgY2FsbEZyYW1lSWQgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICB2YXIgY2FsbEZyYW1lID0gSW5qZWN0ZWRTY3JpcHQuX2NhbGxGcmFtZUZvcklkKGNhbGxGcmFt
ZUlkKTsKKyAgICAgICAgICAgIGlmICghY2FsbEZyYW1lKQorICAgICAgICAgICAgICAgIHJldHVy
biBwcm9wczsKKyAgICAgICAgICAgIGV4cHJlc3Npb25SZXN1bHQgPSBJbmplY3RlZFNjcmlwdC5f
ZXZhbHVhdGVPbihjYWxsRnJhbWUuZXZhbHVhdGUsIGNhbGxGcmFtZSwgZXhwcmVzc2lvbik7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBleHByZXNzaW9uUmVzdWx0ID0gSW5qZWN0ZWRT
Y3JpcHQuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygpLmV2YWwsIEluamVjdGVk
U2NyaXB0Ll93aW5kb3coKSwgZXhwcmVzc2lvbik7CisgICAgICAgIH0KICAgICAgICAgZm9yICh2
YXIgcHJvcCBpbiBleHByZXNzaW9uUmVzdWx0KQogICAgICAgICAgICAgcHJvcHNbcHJvcF0gPSB0
cnVlOwogICAgICAgICBpZiAoaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggMDRmMjdiYi4uYWU5
MThkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5l
bC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBA
IC0zNTEsNiArMzUxLDE0IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgc291cmNlRnJhbWUucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsK
ICAgICB9LAogCisgICAgc2VsZWN0ZWRDYWxsRnJhbWVJZDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdmFyIHNlbGVjdGVkQ2FsbEZyYW1lID0gdGhpcy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNr
LnNlbGVjdGVkQ2FsbEZyYW1lOworICAgICAgICBpZiAoIXNlbGVjdGVkQ2FsbEZyYW1lKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHJldHVybiBzZWxlY3RlZENhbGxGcmFtZS5p
ZDsKKyAgICB9LAorCiAgICAgZXZhbHVhdGVJblNlbGVjdGVkQ2FsbEZyYW1lOiBmdW5jdGlvbihj
b2RlLCB1cGRhdGVJbnRlcmZhY2UsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdmFyIHNlbGVj
dGVkQ2FsbEZyYW1lID0gdGhpcy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnNlbGVjdGVkQ2FsbEZy
YW1lOwo=
</data>
<flag name="review"
          id="21029"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>