<?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>207232</bug_id>
          
          <creation_ts>2020-02-04 14:58:10 -0800</creation_ts>
          <short_desc>Web Inspector: ensure that `didClearWindowObjectInWorld` is dispatched for the main world first</short_desc>
          <delta_ts>2020-02-07 16:40:39 -0800</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>WebKit Local 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>206110</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>pfeldman</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1614764</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-02-04 14:58:10 -0800</bug_when>
    <thetext>(In reply to Devin Rousso from comment https://webkit.org/b/206110#c16)
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388830&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp:178
&gt; &gt;&gt; +    auto injectedScript = injectedScriptManager().injectedScriptFor(globalObject);
&gt; &gt; 
&gt; &gt; I believe there is a subtle issue here - when didClearWindowObjectInWorld is called for the User world before it is called for the Normal world, subsequent call to clear the normal world will erase this injected script from the InjectedScriptManager through m_injectedScriptManager-&gt;discardInjectedScripts().
&gt; &gt; 
&gt; &gt; This can either be patched via the following change to the dispatchDidClearWindowObjectsInAllWorlds (that is somewhat hacky), or via going back to instrumenting only normal worlds and iterating over the remaining worlds within agents explicitly.
&gt; &gt; 
&gt; &gt; void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds()
&gt; &gt; {
&gt; &gt;     Vector&lt;Ref&lt;DOMWrapperWorld&gt;&gt; worlds;
&gt; &gt;     ScriptController::getAllWorlds(worlds);
&gt; &gt;     // It is essential that the normal world is cleared first.
&gt; &gt;     // Various subsystem (InjectedScriptManager) will reset state upon normal
&gt; &gt;     // world initialization.
&gt; &gt;     Vector&lt;DOMWrapperWorld*&gt; nonNormalWorlds;
&gt; &gt;     for (auto&amp; world : worlds) {
&gt; &gt;         if (world-&gt;type() == DOMWrapperWorld::Type::Normal)
&gt; &gt;             dispatchDidClearWindowObjectInWorld(world);
&gt; &gt;         else
&gt; &gt;             nonNormalWorlds.append(&amp;world.get());
&gt; &gt;     }
&gt; &gt;     for (auto* world : nonNormalWorlds)
&gt; &gt;         dispatchDidClearWindowObjectInWorld(*world);
&gt; &gt; }
&gt; 
&gt; Interesting!  That is super subtle :P
&gt; 
&gt; I think we&apos;d ideally want to dispatch for the `mainThreadNormalWorld()`
&gt; first (as that&apos;s really the &quot;signpost&quot; for resetting all the injected
&gt; scripts and debugger state), then all other normal worlds, and then all
&gt; other worlds.  IIUC, there should only ever be one normal world though (and
&gt; the current code supports that), so I think we can just do as you suggest.
&gt; 
&gt; @Pavel Feldman, do you want to fix this, or should I?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614768</commentid>
    <comment_count>1</comment_count>
      <attachid>389716</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-02-04 15:01:21 -0800</bug_when>
    <thetext>Created attachment 389716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615461</commentid>
    <comment_count>2</comment_count>
      <attachid>389716</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-05 18:13:52 -0800</bug_when>
    <thetext>Comment on attachment 389716
Patch

Clearing flags on attachment: 389716

Committed r255885: &lt;https://trac.webkit.org/changeset/255885&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615462</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-05 18:13:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615463</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-05 18:14:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/59210284&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616459</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-02-07 16:40:39 -0800</bug_when>
    <thetext>*** Bug 207408 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389716</attachid>
            <date>2020-02-04 15:01:21 -0800</date>
            <delta_ts>2020-02-05 18:13:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207232-20200204150120.patch</filename>
            <type>text/plain</type>
            <size>2906</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4YmRlNzViZGNjMDA2YjJkMmUxOTlmMGM0ZWJkMWFjNWUzNjkzZmI1Li4y
YjZiN2NhYTBmZmQ3NTkyNWNlNDE1OGMzYjdlNDBjMzc3ODI1YmE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMjAtMDItMDQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGVuc3VyZSB0aGF0IGBkaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGRgIGlzIGRpc3BhdGNoZWQgZm9yIHRoZSBtYWluIHdvcmxkIGZpcnN0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyMzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBpcyBuZWNlc3Nh
cnkgdG8gb3JkZXIgdGhlIGBET01XcmFwcGVyV29ybGRgcyBiZWNhdXNlIGNlcnRhaW4gY2FsbGVy
cyBleHBlY3QgdGhlIG1haW4KKyAgICAgICAgd29ybGQgdG8gYmUgdGhlIGZpcnN0IGl0ZW0gaW4g
dGhlIGxpc3QsIGFzIHRoZXkgdXNlIHRoZSBtYWluIHdvcmxkIGFzIGFuIGluZGljYXRvciBvZiB3
aGVuCisgICAgICAgIHRoZSBwYWdlIGlzIHJlYWR5IHRvIHN0YXJ0IGV2YWx1YXRpbmcgSmF2YVNj
cmlwdC4gRm9yIGV4YW1wbGUsIFdlYiBJbnNwZWN0b3Igd2FpdHMgZm9yIHRoZQorICAgICAgICBt
YWluIHdvcmxkIGNoYW5nZSB0byBjbGVhciBhbnkgaW5qZWN0ZWQgc2NyaXB0cyBhbmQgZGVidWdn
ZXIvYnJlYWtwb2ludCBzdGF0ZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0Ns
aWVudERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OmdldEFsbFdv
cmxkcyk6CisKIDIwMjAtMDItMDQgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBiZSBub3RpZmllZCBieSBVSVByb2Nlc3Mg
d2hlbiBpdHMgc2VydmljZSB3b3JrZXIgcHJvY2VzcyBjb25uZWN0aW9uIHNob3VsZCBiZSBvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNw
cAppbmRleCBlZmU4YmExMzgzNjUzNmRiN2VjNmFkMTJkNjE2YjA3ZTIwMGRhZjY4Li43Mzc2MjJh
OTA2YTNlYTc4M2RkYzA0ZTYyZjdlZDBiNjZiZWMzMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcApAQCAtMTA0LDEwICsxMDQs
MzUgQEAgSlNWTUNsaWVudERhdGE6On5KU1ZNQ2xpZW50RGF0YSgpCiB2b2lkIEpTVk1DbGllbnRE
YXRhOjpnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiYgd29ybGRzKQog
ewogICAgIEFTU0VSVCh3b3JsZHMuaXNFbXB0eSgpKTsKLSAgICAKKwogICAgIHdvcmxkcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG1fd29ybGRTZXQuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8gaXQg
PSBtX3dvcmxkU2V0LmJlZ2luKCksIGVuZCA9IG1fd29ybGRTZXQuZW5kKCk7IGl0ICE9IGVuZDsg
KytpdCkKLSAgICAgICAgd29ybGRzLnVuY2hlY2tlZEFwcGVuZCgqKCppdCkpOworCisgICAgLy8g
SXQgaXMgbmVjZXNzYXJ5IHRvIG9yZGVyIHRoZSBgRE9NV3JhcHBlcldvcmxkYHMgYmVjYXVzZSBj
ZXJ0YWluIGNhbGxlcnMgZXhwZWN0IHRoZSBtYWluIHdvcmxkCisgICAgLy8gdG8gYmUgdGhlIGZp
cnN0IGl0ZW0gaW4gdGhlIGxpc3QsIGFzIHRoZXkgdXNlIHRoZSBtYWluIHdvcmxkIGFzIGFuIGlu
ZGljYXRvciBvZiB3aGVuIHRoZSBwYWdlCisgICAgLy8gaXMgcmVhZHkgdG8gc3RhcnQgZXZhbHVh
dGluZyBKYXZhU2NyaXB0LiBGb3IgZXhhbXBsZSwgV2ViIEluc3BlY3RvciB3YWl0cyBmb3IgdGhl
IG1haW4gd29ybGQKKyAgICAvLyBjaGFuZ2UgdG8gY2xlYXIgYW55IGluamVjdGVkIHNjcmlwdHMg
YW5kIGRlYnVnZ2VyL2JyZWFrcG9pbnQgc3RhdGUuCisKKyAgICBhdXRvJiBtYWluTm9ybWFsV29y
bGQgPSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKTsKKworICAgIC8vIEFkZCBtYWluIG5vcm1hbCB3
b3JsZC4KKyAgICBpZiAobV93b3JsZFNldC5jb250YWlucygmbWFpbk5vcm1hbFdvcmxkKSkKKyAg
ICAgICAgd29ybGRzLnVuY2hlY2tlZEFwcGVuZChtYWluTm9ybWFsV29ybGQpOworCisgICAgLy8g
QWRkIG90aGVyIG5vcm1hbCB3b3JsZHMuCisgICAgZm9yIChhdXRvKiB3b3JsZCA6IG1fd29ybGRT
ZXQpIHsKKyAgICAgICAgaWYgKHdvcmxkLT50eXBlKCkgIT0gRE9NV3JhcHBlcldvcmxkOjpUeXBl
OjpOb3JtYWwpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHdvcmxkID09ICZt
YWluTm9ybWFsV29ybGQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgd29ybGRzLnVu
Y2hlY2tlZEFwcGVuZCgqd29ybGQpOworICAgIH0KKworICAgIC8vIEFkZCBub24tbm9ybWFsIHdv
cmxkcy4KKyAgICBmb3IgKGF1dG8qIHdvcmxkIDogbV93b3JsZFNldCkgeworICAgICAgICBpZiAo
d29ybGQtPnR5cGUoKSA9PSBET01XcmFwcGVyV29ybGQ6OlR5cGU6Ok5vcm1hbCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB3b3JsZHMudW5jaGVja2VkQXBwZW5kKCp3b3JsZCk7Cisg
ICAgfQogfQogCiB2b2lkIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQoVk0qIHZtKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>