<?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>40071</bug_id>
          
          <creation_ts>2010-06-02 11:03:17 -0700</creation_ts>
          <short_desc>Objects invoking script need to know when the relevant ScriptExecutionContext has torn down.</short_desc>
          <delta_ts>2010-06-03 03:10:00 -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 Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          
          <blocked>39879</blocked>
    
    <blocked>40054</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrei Popescu">andreip</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>jorlow</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>233334</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-02 11:03:17 -0700</bug_when>
    <thetext>Objects invoking script (e.g. geolocation, indexedDB, database) need a ScriptExecutionContext instance in order to be able to invoke script (e.g. when a new geoposition is available, an object store is open, an SQL statement finishes executing). In all these cases, Javascript should be invoked in the context in which the object&apos;s method was called. However, at Javascript invocation time, the relevant ScriptExecutionContext may have been torn down. Note that the ScriptExecutionContext may be from frames other than the one that owns the object so we cannot rely on the owner frame&apos;s &quot;disconnectFrame&quot;.  Instead, we need to if the relevant ScriptExecutionContext still exists at script invocation time. This could be achieved by adding a &quot;weak pointer&quot; wrapper around each ScriptExecutionContext instance. Objects that need a ScriptExecutionContext, can use the weak pointer instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233373</commentid>
    <comment_count>1</comment_count>
      <attachid>57675</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-02 11:44:55 -0700</bug_when>
    <thetext>Created attachment 57675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233374</commentid>
    <comment_count>2</comment_count>
      <attachid>57675</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-02 11:50:27 -0700</bug_when>
    <thetext>Comment on attachment 57675
Patch

Steve tells me that he&apos;s soon going to land code that uses this and adds test coverage.  I know we&apos;re going to be using it on IndexedDB soon as well.  (And hopefully someone can switch WebDatabase over as well.)  So r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233387</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-02 12:26:45 -0700</bug_when>
    <thetext>Ahhh!  I&apos;m an idiot.  You should be using ActiveDOMObject for this case.  Everywhere I can think of that you&apos;d need to worry about your context going away you&apos;d also need to worry about the page being suspended and such.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233391</commentid>
    <comment_count>4</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-02 12:42:44 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Ahhh!  I&apos;m an idiot.  You should be using ActiveDOMObject for this case. 
&gt; Everywhere I can think of that you&apos;d need to worry about your context going
&gt; away you&apos;d also need to worry about the page being suspended and such.
Are you sure about this? I&apos;m not very familiar with ActiveDOMObject but I&apos;d imagined that it only notifies an object about changes to the script context for the frame that owns the object. We need to know about the state of all the script contexts from which the object&apos;s methods were invoked and hence we must make callbacks in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233414</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-02 13:23:21 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Ahhh!  I&apos;m an idiot.  You should be using ActiveDOMObject for this case. 
&gt; &gt; Everywhere I can think of that you&apos;d need to worry about your context going
&gt; &gt; away you&apos;d also need to worry about the page being suspended and such.
&gt; Are you sure about this? I&apos;m not very familiar with ActiveDOMObject but I&apos;d imagined that it only notifies an object about changes to the script context for the frame that owns the object. We need to know about the state of all the script contexts from which the object&apos;s methods were invoked and hence we must make callbacks in.

When you create a subclass of ActiveDOMObject you need to supply the ScriptExecutionContext* to the constructor.  This is what determines which ScriptExecutionContext you watch.  If you&apos;re not sure what should implement the ActiveDOMObject in geoLocation, I&apos;m happy to look at that with you tomorrow.  For indexedDB, the answer is IDBRequest.  Whenever any other ____Request object instantiates it, it&apos;ll pass in the current ScriptExecutionContext and everything should work out fine.  In WebSQLDatabase, the callback object itself should be an active dom object.  I imagine geolocation is similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233678</commentid>
    <comment_count>6</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-03 02:54:55 -0700</bug_when>
    <thetext>Got it - I thought you were suggesting using ActiveDOMObject for the Database/Geolocation object. Will send a patch for Geolocation to Bug 39879 soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233682</commentid>
    <comment_count>7</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-03 03:10:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Ahhh!  I&apos;m an idiot.  You should be using ActiveDOMObject for this case.  Everywhere I can think of that you&apos;d need to worry about your context going away you&apos;d also need to worry about the page being suspended and such.

Heh, I totally forgot our IDBRequest class is already an ActiveDOMObject. Oh well, it happens :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57675</attachid>
            <date>2010-06-02 11:44:55 -0700</date>
            <delta_ts>2010-06-02 12:25:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40071-20100602194453.patch</filename>
            <type>text/plain</type>
            <size>3278</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzJlNzE5NmYwOGRkYmVmZmM3NTVmNDM0YTdkYjY5MzBjMzE5MDE4Ny4uMTFmNDBiMzEzMzBkNGQw
N2QwMWFiYmI1NWUwZjc3MWQ0ODE3YTlhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNi0wMiAgQW5k
cmVpIFBvcGVzY3UgIDxhbmRyZWlwQGRoY3AtMTcyLTE2LTE0LTEyLmxvbi5jb3JwLmdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT2Jq
ZWN0cyBpbnZva2luZyBzY3JpcHQgbmVlZCB0byBrbm93IHdoZW4gdGhlIHJlbGV2YW50IFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgaGFzIHRvcm4gZG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDcxCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBU
aGVzZSB3aWxsIGJlIGFkZGVkIGZvciBlYWNoIG9iamVjdCB1c2luZyB0aGlzIHdlYWsgcG9pbnRl
ci4KKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OndlYWtQdHIpOgor
ICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpXZWFrUHRyOjpnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6V2Vha1B0cjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OldlYWtQdHI6OldlYWtQdHIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6V2Vha1B0cjo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dERlc3Ryb3llZCk6CisKIDIwMTAtMDYtMDIgIFhhbiBMb3BleiAgPHhsb3BlekBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMjI2YWFkODYwZTM4NzMwODdjZTIw
MWNiMTcxMzc5N2ZmNDhkMGU5ZS4uMGNkNGYyMGUwMGI1ZjgzNDFiYTliNDliYjIzYjk0ZDgwMzYz
N2YyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
KysrIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTkyLDYgKzky
LDkgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQog
ICAgICAgICBtX2ZpbGVUaHJlYWQgPSAwOwogICAgIH0KICNlbmRpZgorCisgICAgaWYgKG1fd2Vh
a1B0cikKKyAgICAgICAgbV93ZWFrUHRyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0RGVzdHJveWVk
KCk7CiB9CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCkBAIC0yODYsNiArMjg5LDE0IEBAIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6On5UYXNrKCkKIHsKIH0KIAorU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6V2Vha1B0ciogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6d2Vha1B0cigpCit7Cisg
ICAgaWYgKCFtX3dlYWtQdHIpCisgICAgICAgIG1fd2Vha1B0ciA9IFdlYWtQdHI6OmNyZWF0ZSh0
aGlzKTsKKworICAgIHJldHVybiBtX3dlYWtQdHIuZ2V0KCk7Cit9CisKICNpZiBVU0UoSlNDKQog
SlNDOjpKU0dsb2JhbERhdGEqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6Omdsb2JhbERhdGEoKQog
ewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDE4ZTJjZDBjNzQ0YWVlNDBk
MjA0NTI2OGM3OGQ4MDRlZWMwODc2ODEuLmFjYTEzMDhmMDk1MmE4YzUxNDZmOGY1YzgwNzBjZWVk
ZmViMmE0NGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTEyNyw2ICsx
MjcsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJlbW92ZVRpbWVvdXQo
aW50IHRpbWVvdXRJZCk7CiAgICAgICAgIERPTVRpbWVyKiBmaW5kVGltZW91dChpbnQgdGltZW91
dElkKTsKIAorICAgICAgICBjbGFzcyBXZWFrUHRyIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vha1B0
cj4geworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICB2aXJ0dWFsIH5XZWFrUHRyKCkgeyB9
CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBnZXQoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRleHQ7IH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2Vha1B0cj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWFr
UHRyKGNvbnRleHQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFdlYWtQdHIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgOiBtX2NvbnRleHQoY29udGV4dCkgeyB9CisgICAg
ICAgICAgICB2b2lkIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHREZXN0cm95ZWQoKSB7IG1fY29udGV4
dCA9IDA7IH0KKworICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0
OworICAgICAgICAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAg
ICAgIH07CisKKyAgICAgICAgV2Vha1B0ciogd2Vha1B0cigpOworCiAjaWYgVVNFKEpTQykKICAg
ICAgICAgSlNDOjpKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKTsKICNlbmRpZgpAQCAtMTY3LDYg
KzE4Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoRklMRV9SRUFERVIpIHx8
IEVOQUJMRShGSUxFX1dSSVRFUikKICAgICAgICAgUmVmUHRyPEZpbGVUaHJlYWQ+IG1fZmlsZVRo
cmVhZDsKICNlbmRpZgorCisgICAgICAgIFJlZlB0cjxXZWFrUHRyPiBtX3dlYWtQdHI7CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="42315"
          type_id="1"
          status="-"
          setter="jorlow"
    />
          </attachment>
      

    </bug>

</bugzilla>