<?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>135367</bug_id>
          
          <creation_ts>2014-07-28 16:27:56 -0700</creation_ts>
          <short_desc>Web Inspector: ProbeSetDetailsSection should not create live location links for unresolved breakpoints</short_desc>
          <delta_ts>2014-07-30 14:47:09 -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</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>135396</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>burg</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1025300</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-07-28 16:27:56 -0700</bug_when>
    <thetext>* SUMMARY
Opening the inspector in local builds I see a lot of asserts trying to make a display string for an non-resolved breakpoint. The Breakpoint&apos;s SourceCodeLocation will have a null sourceCode, and produces an assert.

* STEPS TO REPRODUCE
1. Set breakpoints with probes on multiple domains (e.g. bogojoker.com/shell/, nytimes)
2. Load apple.com
3. Open inspector
  =&gt; asserts

* DETAILS

console.assert(sourceCode);
[Error] Assertion failed: 
	_locationString (SourceCodeLocation.js, line 294)
	originalLocationString (SourceCodeLocation.js, line 174)
	tooltipString (SourceCodeLocation.js, line 190)
	populateLiveDisplayLocationTooltip (SourceCodeLocation.js, line 243)
	createSourceCodeLocationLink (Main.js, line 1558)
	_probeSetPositionTextOrLink (ProbeSetDetailsSection.js, line 92)
	ProbeSetDetailsSection (ProbeSetDetailsSection.js, line 50)
	_probeSetAdded (ProbeDetailsSidebarPanel.js, line 93)
	dispatch (Object.js, line 141)
	dispatchEventToListeners (Object.js, line 148)
	_probeSetForBreakpoint (ProbeManager.js, line 178)
	(anonymous function) (ProbeManager.js, line 137)
	forEach
	_breakpointActionsChanged (ProbeManager.js, line 129)
	_breakpointAdded (ProbeManager.js, line 98)
	dispatch (Object.js, line 141)
	dispatchEventToListeners (Object.js, line 148)
	addBreakpoint (DebuggerManager.js, line 256)
	restoreBreakpointsSoon (DebuggerManager.js, line 71)
	restoreBreakpointsSoon ([native code], line 0)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025302</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-07-28 16:28:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/17836190&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025591</commentid>
    <comment_count>2</comment_count>
      <attachid>235708</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-07-29 16:06:49 -0700</bug_when>
    <thetext>Created attachment 235708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025606</commentid>
    <comment_count>3</comment_count>
      <attachid>235708</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-07-29 16:34:07 -0700</bug_when>
    <thetext>Comment on attachment 235708
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/ProbeSetDetailsSection.js:98
&gt; +            var location = breakpoint.sourceCodeLocation;
&gt; +            titleElement = WebInspector.linkifyLocation(breakpoint.url, location.displayLineNumber, location.displayColumnNumber);

This could use a comment. Maybe an assert that breakpoint.sourceCodeLocation.sourceCode is null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025657</commentid>
    <comment_count>4</comment_count>
      <attachid>235708</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-07-29 21:19:51 -0700</bug_when>
    <thetext>Comment on attachment 235708
Patch

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

&gt; Source/WebInspectorUI/ChangeLog:9
&gt; +        Regenerate the source code link whenever the breakpoint resolved status changes. If it is
&gt; +        resolved, then we can create a live location link that respects source maps.

Why do we need ProbeSet* objects for every breakpoints, resolved or not?

Is it needed in order to support WebReplay recordings? If these objects only existed for resolved breakpoints, then almost all the changes in this patch could go away. That was my first take on how we would approach this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025723</commentid>
    <comment_count>5</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-07-30 09:46:41 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 235708 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235708&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/ChangeLog:9
&gt; &gt; +        Regenerate the source code link whenever the breakpoint resolved status changes. If it is
&gt; &gt; +        resolved, then we can create a live location link that respects source maps.
&gt; 
&gt; Why do we need ProbeSet* objects for every breakpoints, resolved or not?
&gt; 
&gt; Is it needed in order to support WebReplay recordings? If these objects only existed for resolved breakpoints, then almost all the changes in this patch could go away. That was my first take on how we would approach this.

The view objects (probe section, etc) could be lazily created. The model objects should not be lazily loaded.

It would be nice to not lose samples when the page is reloaded, just like the console. To do this, the probe set needs to stay alive across resolved-unresolved-resolved transitions when reloading. Navigating away could clear the probe samples, but the UI should be clearly delineating when the samples are from a previous load anyway.

There are replay implications. In the replay setting, we want to retain probe sets across multiple executions of the same recording so that users can fill in missing table values in future playbacks. (RemoteObjects for old executions are clearly flushed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025800</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-07-30 14:47:09 -0700</bug_when>
    <thetext>Committed r171819: &lt;http://trac.webkit.org/changeset/171819&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235708</attachid>
            <date>2014-07-29 16:06:49 -0700</date>
            <delta_ts>2014-07-29 21:19:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135367-20140729160610.patch</filename>
            <type>text/plain</type>
            <size>4145</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxNzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAx
ZGJhMDc1NTU0NDg3YWQ5NDg4YjU1ZTY1YTEzZDgwNjZhMWM3NGQwLi5lNDgyYzU1N2Q5OTY2M2Fi
ZmI3ODdmZWM4NjcwMzcxZTc5MDZhNmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMCBAQAogMjAxNC0wNy0yOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvYmVTZXREZXRhaWxzU2VjdGlvbiBz
aG91bGQgbm90IGNyZWF0ZSBsaXZlIGxvY2F0aW9uIGxpbmtzIGZvciB1bnJlc29sdmVkIGJyZWFr
cG9pbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzUzNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWdlbmVyYXRlIHRoZSBzb3VyY2UgY29kZSBsaW5rIHdoZW5ldmVyIHRoZSBicmVha3BvaW50IHJl
c29sdmVkIHN0YXR1cyBjaGFuZ2VzLiBJZiBpdCBpcworICAgICAgICByZXNvbHZlZCwgdGhlbiB3
ZSBjYW4gY3JlYXRlIGEgbGl2ZSBsb2NhdGlvbiBsaW5rIHRoYXQgcmVzcGVjdHMgc291cmNlIG1h
cHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rp
b24uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUuX3Vw
ZGF0ZUxpbmtFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvYmVTZXRE
ZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUuX3Byb2JlU2V0UG9zaXRpb25UZXh0T3JMaW5rKTogRGVs
ZXRlZC4KKworMjAxNC0wNy0yOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5l
ZHU+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogYnJlYWtwb2ludHMgYXJlIGFsd2F5cyBzcGVj
dWxhdGl2ZWx5IHJlc29sdmVkIHdoZW4gcmVzdG9yZWQgZnJvbSBsb2NhbCBzdG9yYWdlCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzOTYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVT
ZXREZXRhaWxzU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24uanMKaW5kZXggZGZmNzIxNjA5MTMzZDJiNzJk
YjA5OTlkZGNiMDc4OWE4Y2YzZTkzNC4uNzY5YWQzODhkNDMwYWFjMzdhMTM2ZWIwNmM5MDVmZTg0
Y2EzMDc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0aW9uLmpzCkBAIC0zMCw3
ICszMCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uID0gZnVuY3Rpb24o
cHJvYmVTZXQpCiAgICAgdGhpcy5fbGlzdGVuZXJzID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExp
c3RlbmVyU2V0KHRoaXMsICJQcm9iZVNldERldGFpbHNTZWN0aW9uIFVJIGxpc3RlbmVycyIpOwog
ICAgIHRoaXMuX3Byb2JlU2V0ID0gcHJvYmVTZXQ7CiAKLSAgICB2YXIgb3B0aW9uc0VsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB2YXIgb3B0aW9uc0VsZW1lbnQg
PSB0aGlzLl9vcHRpb25zRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgIG9wdGlvbnNFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0
YWlsc1NlY3Rpb24uU2VjdGlvbk9wdGlvbnNTdHlsZUNsYXNzTmFtZSk7CiAKICAgICB2YXIgcmVt
b3ZlUHJvYmVCdXR0b24gPSBvcHRpb25zRWxlbWVudC5jcmVhdGVDaGlsZCgiaW1nIik7CkBAIC00
Nyw5ICs0NywxMCBAQCBXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbiA9IGZ1bmN0
aW9uKHByb2JlU2V0KQogICAgIGFkZFByb2JlQnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uQWRkUHJvYmVWYWx1ZVN0eWxlQ2xhc3NOYW1lKTsK
ICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoYWRkUHJvYmVCdXR0b24sICJjbGljayIsIHRo
aXMuX2FkZFByb2JlQnV0dG9uQ2xpY2tlZCk7CiAKLSAgICB2YXIgdGl0bGVFbGVtZW50ID0gdGhp
cy5fcHJvYmVTZXRQb3NpdGlvblRleHRPckxpbmsoKTsKLSAgICB0aXRsZUVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Eb250RmxvYXRMaW5r
U3R5bGVDbGFzc05hbWUpOwotICAgIG9wdGlvbnNFbGVtZW50LmFwcGVuZENoaWxkKHRpdGxlRWxl
bWVudCk7CisgICAgLy8gVXBkYXRlIHRoZSBzb3VyY2UgbGluayB3aGVuIHRoZSBicmVha3BvaW50
J3MgcmVzb2x2ZWQgc3RhdGUgY2hhbmdlcywKKyAgICAvLyBzbyB0aGF0IGl0IGNhbiBiZWNvbWUg
YSBsaXZlIGxvY2F0aW9uIGxpbmsgd2hlbiBwb3NzaWJsZS4KKyAgICB0aGlzLl91cGRhdGVMaW5r
RWxlbWVudCgpOworICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcih0aGlzLl9wcm9iZVNldC5i
cmVha3BvaW50LCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlk
Q2hhbmdlLCB0aGlzLl91cGRhdGVMaW5rRWxlbWVudCk7CiAKICAgICB0aGlzLl9kYXRhR3JpZCA9
IG5ldyBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZChwcm9iZVNldCk7CiAgICAgdmFyIHNp
bmdsZXRvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CkBAIC04Niwx
MCArODcsMjQgQEAgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24ucHJvdG90eXBl
ID0gewogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Byb2JlU2V0UG9zaXRpb25UZXh0T3JMaW5r
OiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZUxpbmtFbGVtZW50OiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICB2YXIgYnJlYWtwb2ludCA9IHRoaXMuX3Byb2JlU2V0LmJyZWFrcG9pbnQ7Ci0gICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uTGluayhicmVh
a3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIHZhciB0aXRsZUVsZW1lbnQgPSBu
dWxsOworICAgICAgICBpZiAoYnJlYWtwb2ludC5yZXNvbHZlZCkKKyAgICAgICAgICAgIHRpdGxl
RWxlbWVudCA9IFdlYkluc3BlY3Rvci5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb25MaW5rKGJyZWFr
cG9pbnQuc291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2
YXIgbG9jYXRpb24gPSBicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKKyAgICAgICAgICAg
IHRpdGxlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5saW5raWZ5TG9jYXRpb24oYnJlYWtwb2ludC51
cmwsIGxvY2F0aW9uLmRpc3BsYXlMaW5lTnVtYmVyLCBsb2NhdGlvbi5kaXNwbGF5Q29sdW1uTnVt
YmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHRpdGxlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLkRvbnRGbG9hdExpbmtTdHlsZUNsYXNz
TmFtZSk7CisKKyAgICAgICAgaWYgKHRoaXMuX2xpbmtFbGVtZW50KQorICAgICAgICAgICAgdGhp
cy5fb3B0aW9uc0VsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5fbGlua0VsZW1lbnQpOworCisgICAg
ICAgIHRoaXMuX2xpbmtFbGVtZW50ID0gdGl0bGVFbGVtZW50OworICAgICAgICB0aGlzLl9vcHRp
b25zRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9saW5rRWxlbWVudCk7CiAgICAgfSwKIAogICAg
IF9hZGRQcm9iZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQo=
</data>
<flag name="review"
          id="260285"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>