<?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>27104</bug_id>
          
          <creation_ts>2009-07-08 17:22:22 -0700</creation_ts>
          <short_desc>[V8] evaluateInNewContext should send a notification that a context was created</short_desc>
          <delta_ts>2009-07-14 15:35:19 -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>WebCore JavaScript</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="Matt Perry">mpComplete</reporter>
          <assigned_to name="Matt Perry">mpComplete</assigned_to>
          <cc>fishd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>130578</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2009-07-08 17:22:22 -0700</bug_when>
    <thetext>Content scripts want this notification as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130580</commentid>
    <comment_count>1</comment_count>
      <attachid>32490</attachid>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2009-07-08 17:23:56 -0700</bug_when>
    <thetext>Created attachment 32490
simple patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130711</commentid>
    <comment_count>2</comment_count>
      <attachid>32490</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-07-09 13:07:23 -0700</bug_when>
    <thetext>Comment on attachment 32490
simple patch

&gt; Index: WebCore/bindings/v8/V8Proxy.cpp
&gt; ===================================================================
&gt; --- WebCore/bindings/v8/V8Proxy.cpp	(revision 45651)
&gt; +++ WebCore/bindings/v8/V8Proxy.cpp	(working copy)
&gt; @@ -1050,6 +1050,8 @@ void V8Proxy::evaluateInNewContext(const
&gt;      // original context.
&gt;      global-&gt;Set(v8::String::New(&quot;contentWindow&quot;), windowGlobal);
&gt;  
&gt; +    m_frame-&gt;loader()-&gt;client()-&gt;didCreateScriptContext();
&gt; +
&gt;      // Run code in the new context.
&gt;      for (size_t i = 0; i &lt; sources.size(); ++i)
&gt;          evaluate(sources[i], 0);

Shouldn&apos;t we also call didDestroyScriptContext()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130713</commentid>
    <comment_count>3</comment_count>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2009-07-09 13:19:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Shouldn&apos;t we also call didDestroyScriptContext()?

There&apos;s no definitive place where this context is destroyed.  It&apos;s just garbage collected when it&apos;s not used.

The chrome side of this change listens for its GC, and also associates sub-contexts with their frame so that we can notify the script and clean up after it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130831</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-07-09 21:21:17 -0700</bug_when>
    <thetext>&gt; &gt; Shouldn&apos;t we also call didDestroyScriptContext()?
&gt; 
&gt; There&apos;s no definitive place where this context is destroyed.  It&apos;s just garbage
&gt; collected when it&apos;s not used.

A didCreateScriptContext without a corresponding didDestroyScriptContext seems like a recipe for memory leaks.  Someone not knowing any better might assume that for each &quot;create&quot; call they will get a &quot;destroy&quot; call, and on the destroy call expect to free resources.  Can you do anything to mitigate that kind of problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130924</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2009-07-10 12:50:13 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Can you do anything to mitigate that kind of
&gt; problem?

The first idea I had was to add a GC callback, and send out the didDestroyScriptContext then.  Unfortunately, since the content script context can outlive the frame, and we need to use the frameloader to send the event, we have nowhere to send it.  Maybe these events should be on the ChromiumClient API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131030</commentid>
    <comment_count>6</comment_count>
      <attachid>32598</attachid>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2009-07-10 17:54:32 -0700</bug_when>
    <thetext>Created attachment 32598
new notification

OK, instead of having didDestroyScriptContext only sometimes getting called, I renamed the create/destroy notifications for frames, and added a new one for evaluateInNewContext.  Hopefully this will make it clearer to callers what to expect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131709</commentid>
    <comment_count>7</comment_count>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2009-07-14 15:35:19 -0700</bug_when>
    <thetext>Committed http://trac.webkit.org/changeset/45871.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32490</attachid>
            <date>2009-07-08 17:23:56 -0700</date>
            <delta_ts>2009-07-10 17:54:32 -0700</delta_ts>
            <desc>simple patch</desc>
            <filename>cs.patch</filename>
            <type>text/plain</type>
            <size>1161</size>
            <attacher name="Matt Perry">mpComplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTY1MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMDggIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbVjhdIFNlbmQgb3V0IHRoZSBjb250ZXh0LWNyZWF0ZWQgbm90aWZpY2F0aW9uIHdoZW4gZXZh
bHVhdGluZyBzY3JpcHQKKyAgICAgICAgaW4gYSBuZXcgY29udGV4dC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MTA0CisKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmV2YWx1YXRl
SW5OZXdDb250ZXh0KToKKwogMjAwOS0wNy0wOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuY3BwCShyZXZpc2lvbiA0NTY1MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTAsNiArMTA1MCw4IEBAIHZvaWQgVjhQcm94
eTo6ZXZhbHVhdGVJbk5ld0NvbnRleHQoY29uc3QKICAgICAvLyBvcmlnaW5hbCBjb250ZXh0Lgog
ICAgIGdsb2JhbC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiY29udGVudFdpbmRvdyIpLCB3aW5kb3dH
bG9iYWwpOwogCisgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaWRDcmVhdGVTY3Jp
cHRDb250ZXh0KCk7CisKICAgICAvLyBSdW4gY29kZSBpbiB0aGUgbmV3IGNvbnRleHQuCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzb3VyY2VzLnNpemUoKTsgKytpKQogICAgICAgICBldmFs
dWF0ZShzb3VyY2VzW2ldLCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32598</attachid>
            <date>2009-07-10 17:54:32 -0700</date>
            <delta_ts>2009-07-14 10:50:24 -0700</delta_ts>
            <desc>new notification</desc>
            <filename>new-context.patch</filename>
            <type>text/plain</type>
            <size>3722</size>
            <attacher name="Matt Perry">mpComplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTczOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMDctMTAgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbVjhdIFJlbmFtZSB0aGUgZGlkQ3JlYXRlL0Rlc3Ryb3lTY3JpcHRDb250ZXh0IGNhbGxzIHRv
IG1ha2UgaXQKKyAgICAgICAgY2xlYXIgdGhhdCB0aGF0IHRob3NlIHJlZmVyIHRvIHRoZSBmcmFt
ZSdzIGNvbnR4dC4gIEFkZCBhbm90aGVyCisgICAgICAgIHNpbWlsYXIgY2FsbCBmb3Igd2hlbiBj
cmVhdGluZyBjb250ZXh0cyB2aWEgZXZhbHVhdGVJbk5ld0NvbnRleHQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzEwNAorCisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpldmFsdWF0
ZUluTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpkaXNwb3NlQ29udGV4
dEhhbmRsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6aW5pdENvbnRleHRJZk5lZWRl
ZCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlU2NyaXB0Q29udGV4dEZvckZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpZERlc3Ryb3lTY3Jp
cHRDb250ZXh0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6ZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAwOS0wNy0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgU3R5bGUgY2xlYW51cCBvdmVyIG15IGxhc3QgcGF0Y2gu
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHJldmlzaW9uIDQ1NjUxKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1MCw2ICsxMDUw
LDggQEAgdm9pZCBWOFByb3h5OjpldmFsdWF0ZUluTmV3Q29udGV4dChjb25zdAogICAgIC8vIG9y
aWdpbmFsIGNvbnRleHQuCiAgICAgZ2xvYmFsLT5TZXQodjg6OlN0cmluZzo6TmV3KCJjb250ZW50
V2luZG93IiksIHdpbmRvd0dsb2JhbCk7CiAKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCktPmRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29udGV4dCgpOworCiAgICAgLy8gUnVuIGNvZGUg
aW4gdGhlIG5ldyBjb250ZXh0LgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc291cmNlcy5z
aXplKCk7ICsraSkKICAgICAgICAgZXZhbHVhdGUoc291cmNlc1tpXSwgMCk7CkBAIC0xNzIzLDcg
KzE3MjUsNyBAQCB2b2lkIFY4UHJveHk6OmNsZWFyRG9jdW1lbnRXcmFwcGVyQ2FjaGUoCiB2b2lk
IFY4UHJveHk6OmRpc3Bvc2VDb250ZXh0SGFuZGxlcygpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQu
SXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkRGVz
dHJveVNjcmlwdENvbnRleHQoKTsKKyAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
LT5kaWREZXN0cm95U2NyaXB0Q29udGV4dEZvckZyYW1lKCk7CiAgICAgICAgIG1fY29udGV4dC5E
aXNwb3NlKCk7CiAgICAgICAgIG1fY29udGV4dC5DbGVhcigpOwogICAgIH0KQEAgLTIwOTgsNyAr
MjEwMCw3IEBAIHZvaWQgVjhQcm94eTo6aW5pdENvbnRleHRJZk5lZWRlZCgpCiAKICAgICBzZXRT
ZWN1cml0eVRva2VuKCk7CiAKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZENy
ZWF0ZVNjcmlwdENvbnRleHQoKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRp
ZENyZWF0ZVNjcmlwdENvbnRleHRGb3JGcmFtZSgpOwogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5k
aXNwYXRjaFdpbmRvd09iamVjdEF2YWlsYWJsZSgpOwogfQogCkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAkocmV2aXNpb24gNDU2NTEpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjg0LDggKzI4NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpIHsgfQogCiAjaWYgVVNFKFY4KQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTY3JpcHRDb250ZXh0KCkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpZERlc3Ryb3lTY3JpcHRDb250ZXh0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZVNjcmlwdENvbnRleHRGb3JGcmFtZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRE
ZXN0cm95U2NyaXB0Q29udGV4dEZvckZyYW1lKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUlzb2xhdGVkU2NyaXB0Q29udGV4dCgpIHsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDQ1NjUxKQor
KysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjEzLDggKzIxMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24oKSBjb25zdCA9IDA7IC8vICJOYXZpZ2F0aW9uIiBo
ZXJlIG1lYW5zIGEgdHJhbnNpdGlvbiBmcm9tIG9uZSBwYWdlIHRvIGFub3RoZXIgdGhhdCBlbmRz
IHVwIGluIHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4KIAogI2lmIFVTRShWOCkKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENvbnRleHQoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBkaWREZXN0cm95U2NyaXB0Q29udGV4dCgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZVNjcmlwdENvbnRleHRGb3JGcmFtZSgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZERlc3Ryb3lTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVJc29sYXRlZFNjcmlwdENvbnRleHQoKSA9IDA7CiAjZW5kaWYKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wgbGlz
dGVuID0gdHJ1ZSkgPSAwOwo=
</data>
<flag name="review"
          id="17013"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>