<?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>144124</bug_id>
          
          <creation_ts>2015-04-23 15:03:29 -0700</creation_ts>
          <short_desc>Web Inspector: run a customizable bootstrap function after the UI has fully loaded</short_desc>
          <delta_ts>2015-07-15 18:06: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</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1088022</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-04-23 15:03:29 -0700</bug_when>
    <thetext>The point of a &quot;bootstrap script&quot; is to reduce amount of time clicking on the UI to get the inspector to a useful state for debugging.
Instead, you write commands in a function that runs after the inspector has loaded. These commands automate reproduction steps, and can be shared as part of a bug report (if obvious).

Some things you might want to do include opening different sidebars, browsing between web pages, evaluating text in the console.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088025</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-04-23 15:04:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/20674800&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088063</commentid>
    <comment_count>2</comment_count>
      <attachid>251503</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-04-23 15:52:00 -0700</bug_when>
    <thetext>Created attachment 251503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088074</commentid>
    <comment_count>3</comment_count>
      <attachid>251503</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-23 16:03:24 -0700</bug_when>
    <thetext>Comment on attachment 251503
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Main.html:539
&gt; +    &lt;script src=&quot;Base/Bootstrap.js&quot;&gt;&lt;/script&gt;

Should this file be skipped when combining for Release/Production?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088096</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-04-23 16:46:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 251503 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251503&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Main.html:539
&gt; &gt; +    &lt;script src=&quot;Base/Bootstrap.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; Should this file be skipped when combining for Release/Production?

I suppose that&apos;s possible, though I don&apos;t think we do that anywhere else? It would require blacklisting in inline-and-minify-stylesheets-and-scripts.py, and maybe other parts to avoid copying the resource.

I wasn&apos;t planning to have anything in the function body on trunk; developers can revert or exclude their little scripts from patches. Reusable snippets can live in comments in Bootstrap.js (to be stripped out) or on the wiki.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088105</commentid>
    <comment_count>5</comment_count>
      <attachid>251503</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-23 17:06:37 -0700</bug_when>
    <thetext>Comment on attachment 251503
Patch

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

Seems fine to me. Do you have an example of a bootstrap you might use?

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:361
&gt; +    if (this.runBootstrapOperations &amp;&amp; typeof this.runBootstrapOperations === &quot;function&quot;)
&gt; +        this.runBootstrapOperations();

No need to if-check? It is guaranteed right now.

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Main.html:539
&gt;&gt;&gt; +    &lt;script src=&quot;Base/Bootstrap.js&quot;&gt;&lt;/script&gt;
&gt;&gt; 
&gt;&gt; Should this file be skipped when combining for Release/Production?
&gt; 
&gt; I suppose that&apos;s possible, though I don&apos;t think we do that anywhere else? It would require blacklisting in inline-and-minify-stylesheets-and-scripts.py, and maybe other parts to avoid copying the resource.
&gt; 
&gt; I wasn&apos;t planning to have anything in the function body on trunk; developers can revert or exclude their little scripts from patches. Reusable snippets can live in comments in Bootstrap.js (to be stripped out) or on the wiki.

This should minify down to:
WebInspector.runBootstrapOperations=function(){};

So it may be fine to leave in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088162</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-04-23 20:09:39 -0700</bug_when>
    <thetext>Committed r183238: &lt;http://trac.webkit.org/changeset/183238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088174</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-04-23 21:20:05 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 251503 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251503&amp;action=review
&gt; 
&gt; Seems fine to me. Do you have an example of a bootstrap you might use?

Something I did over and over when doing element tracking feature is to load a page, select the same element in the DOM, and invoke &quot;Start Tracking&quot;. This could have been automated by doing querySelector to get the node, then passing it to DOMTracingManager.startTracking(). Further work on specific screens could have been automated by programmatically changing the content browser&apos;s represented object.

I&apos;ll update the wiki page (https://trac.webkit.org/wiki/WebInspectorDebugging) as I make use of this feature to help share some useful snippets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088195</commentid>
    <comment_count>8</comment_count>
      <attachid>251503</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-23 23:33:34 -0700</bug_when>
    <thetext>Comment on attachment 251503
Patch

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

&gt;&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Main.html:539
&gt;&gt;&gt;&gt; +    &lt;script src=&quot;Base/Bootstrap.js&quot;&gt;&lt;/script&gt;
&gt;&gt;&gt; 
&gt;&gt;&gt; Should this file be skipped when combining for Release/Production?
&gt;&gt; 
&gt;&gt; I suppose that&apos;s possible, though I don&apos;t think we do that anywhere else? It would require blacklisting in inline-and-minify-stylesheets-and-scripts.py, and maybe other parts to avoid copying the resource.
&gt;&gt; 
&gt;&gt; I wasn&apos;t planning to have anything in the function body on trunk; developers can revert or exclude their little scripts from patches. Reusable snippets can live in comments in Bootstrap.js (to be stripped out) or on the wiki.
&gt; 
&gt; This should minify down to:
&gt; WebInspector.runBootstrapOperations=function(){};
&gt; 
&gt; So it may be fine to leave in.

We skip combining (or combine separately) files in External/*.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251503</attachid>
            <date>2015-04-23 15:52:00 -0700</date>
            <delta_ts>2015-04-23 21:20:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144124-20150423155055.patch</filename>
            <type>text/plain</type>
            <size>4579</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA4
NzFhNzE0NGJmOTQzNjhiMjQ4YTQwOGY5MjRlY2MxNjUyZDFhNDIwLi5jYjcxYmUwYjRhMjY2NDJl
NjA1M2UzMTE4MGViZTVmY2JhMDFkZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNS0wNC0yMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcnVuIGEgY3VzdG9taXphYmxlIGJvb3Rz
dHJhcCBmdW5jdGlvbiBhZnRlciB0aGUgVUkgaGFzIGZ1bGx5IGxvYWRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MTI0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgY2FuIGJlIHJlYWxseSBhbm5v
eWluZyB0byBjbGljayB0aHJvdWdoIHRoZSBJbnNwZWN0b3IgVUkgZG96ZW5zIG9mIHRpbWVzIHRv
IGRlYnVnIG9uZQorICAgICAgICBpbnRlcmFjdGlvbiBvciBpdGVyYXRlIG9uIGEgc3BlY2lmaWMg
d2lkZ2V0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGJsYW5rICJib290c3RyYXAiIGZ1
bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gaGFyZC13aXJlIGNvbW1hbmRzIHRvCisgICAgICAg
IGF1dG9tYXRlIHJlcGV0aXRpdmUgVUkgc3RhdGUgc2V0dXAuIFRoZSBmdW5jdGlvbiBpcyBydW4g
aW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGluc3BlY3RvciBsb2Fkcy4KKyAgICAgICAgU2V0dXAgY29t
bWFuZHMgY2FuIGJlIHNoYXJlZCBhcyBidWcgcmVwb3J0IHJlcHJvZHVjdGlvbiBzdGVwcy4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9Cb290c3RyYXAuanM6IEFkZGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMpOiBBZGRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5jb250
ZW50TG9hZGVkKTogQm9vdHN0cmFwIGFmdGVyIHNldHRpbmcgdXAgZXZlcnl0aGluZyBhbmQgcmVz
dG9yaW5nIHZpZXcgc3RhdGUgZnJvbSBjb29raWUuCisgICAgICAgICogVXNlckludGVyZmFjZS9N
YWluLmh0bWw6CisKIDIwMTUtMDQtMjIgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNsaWNraW5nIFRpbWVsaW5lcyB0cmVlIHZpZXcg
bm9kZXMgc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIGN1cnJlbnQgY29udGVudCB2aWV3CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0Jvb3RzdHJhcC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvQm9vdHN0cmFwLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU2YzIxY2Y1OGI0Mjk4ZjE0MTliZTk4Zjc1YmVjZjk2NjE1MDY0MmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L0Jvb3RzdHJhcC5qcwpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLnJ1bkJv
b3RzdHJhcE9wZXJhdGlvbnMgPSBmdW5jdGlvbigpIHsKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlz
IGludm9rZWQgYWZ0ZXIgdGhlIGluc3BlY3RvciBoYXMgbG9hZGVkLgorICAgIC8vIEFkZCB0byBp
dCBkdXJpbmcgZGV2ZWxvcG1lbnQgdG8gaGFyZC13aXJlIHNldHVwIG9wZXJhdGlvbnMsCisgICAg
Ly8gcmF0aGVyIHRoYW4gbWFudWFsbHkgY2xpY2tpbmcgdGhyb3VnaCB0aGUgdXNlciBpbnRlcmZh
Y2UuCisKKyAgICAvLyBJZiBhIG1vZGVsIG9iamVjdCBvciBVSSBjb21wb25lbnQgaXMgbm90IGVh
c3kgdG8gc2NyaXB0LCB0aGVuIGZpbGUgYSBidWchCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXggNjkxZWMwOWNkM2M0MDZlZTkx
YjkwNGNmMmFhOTA4OTY4MTNhZDQ4Yy4uMDFkN2Y1NGM1NGNlOTM1YzM4ZmY2NGMxNzM0MmFiNmRk
OTgyNjcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvTWFpbi5qcwpAQCAtMzU2LDYgKzM1Niw5IEBAIFdlYkluc3BlY3Rvci5jb250ZW50TG9hZGVk
ID0gZnVuY3Rpb24oKQogICAgICAgICB0aGlzLnNob3dTcGxpdENvbnNvbGUoKTsKIAogICAgIHRo
aXMuX2NvbnRlbnRMb2FkZWQgPSB0cnVlOworCisgICAgaWYgKHRoaXMucnVuQm9vdHN0cmFwT3Bl
cmF0aW9ucyAmJiB0eXBlb2YgdGhpcy5ydW5Cb290c3RyYXBPcGVyYXRpb25zID09PSAiZnVuY3Rp
b24iKQorICAgICAgICB0aGlzLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMoKTsKIH07CiAKIFdlYklu
c3BlY3Rvci5hY3RpdmF0ZUV4dHJhRG9tYWlucyA9IGZ1bmN0aW9uKGRvbWFpbnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggMjFhMTRiMTE3
MTE3ZGI3Y2E0MjFkMTllM2VmYTFiNDQ4MDE0MDBiMS4uMWE5ZTk0ZjBhZmFkNzQ4MWFkMTljN2Y5
NTRjM2I4ZjE5ZjVlNWYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01haW4uaHRtbApAQCAtNTM2LDYgKzUzNiw4IEBACiAKICAgICA8c2NyaXB0IHNyYz0iQmFz
ZS9NYWluLmpzIj48L3NjcmlwdD4KIAorICAgIDxzY3JpcHQgc3JjPSJCYXNlL0Jvb3RzdHJhcC5q
cyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0PgogICAgICAgICBXZWJJbnNwZWN0b3IubG9hZGVk
KCk7CiAgICAgPC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="276292"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>