<?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>27628</bug_id>
          
          <creation_ts>2009-07-23 15:52:22 -0700</creation_ts>
          <short_desc>[v8] Simplify weak handlers callback</short_desc>
          <delta_ts>2009-07-28 01:27: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>WebCore Misc.</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="anton muhin">antonm</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ager</cc>
    
    <cc>christian.plesner.hansen</cc>
    
    <cc>iposva</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>134297</commentid>
    <comment_count>0</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-07-23 15:52:22 -0700</bug_when>
    <thetext>As current wisdom is Nodes should be only managed from main thread, that simplifies management of near to death DOM nodes notably.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134303</commentid>
    <comment_count>1</comment_count>
      <attachid>33390</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-07-23 16:11:20 -0700</bug_when>
    <thetext>Created attachment 33390
Initial version

I&apos;d say management of DOM node map should be simplidied, esp. fi Adam&apos;s patcj is in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134351</commentid>
    <comment_count>2</comment_count>
      <attachid>33390</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-07-23 19:34:54 -0700</bug_when>
    <thetext>Comment on attachment 33390
Initial version

Sorry, forgot to mark as a patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134352</commentid>
    <comment_count>3</comment_count>
      <attachid>33390</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-07-23 19:36:11 -0700</bug_when>
    <thetext>Comment on attachment 33390
Initial version

&gt; Index: third_party/WebKit/WebCore/ChangeLog
&gt; ===================================================================
&gt; --- third_party/WebKit/WebCore/ChangeLog	(revision 46295)
&gt; +++ third_party/WebKit/WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,13 @@
&gt; +2009-07-23  Anton Muhin  &lt;antonm@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Simplify management of Nodes in weak handles callbacks.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=27628
&gt; +
&gt; +        * bindings/v8/V8DOMMap.cpp:
&gt; +        (WebCore::weakNodeCallback):
&gt; +
&gt;  2009-07-23  Dan Bernstein  &lt;mitz@apple.com&gt;
&gt;  
&gt;          Reviewed by Dave Hyatt.
&gt; Index: third_party/WebKit/WebCore/bindings/v8/V8DOMMap.cpp
&gt; ===================================================================
&gt; --- third_party/WebKit/WebCore/bindings/v8/V8DOMMap.cpp	(revision 46194)
&gt; +++ third_party/WebKit/WebCore/bindings/v8/V8DOMMap.cpp	(working copy)
&gt; @@ -504,9 +504,12 @@ void weakActiveDOMObjectCallback(v8::Per
&gt;  
&gt;  static void weakNodeCallback(v8::Persistent&lt;v8::Value&gt; v8Object, void* domObject)
&gt;  {
&gt; -    v8::HandleScope scope;
&gt; -    ASSERT(v8Object-&gt;IsObject());
&gt; -    DOMData::handleWeakObject&lt;Node&gt;(DOMDataStore::DOMNodeMap, v8::Handle&lt;v8::Object&gt;::Cast(v8Object), static_cast&lt;Node*&gt;(domObject));
&gt; +    DOMDataStore* store = DOMDataStore::allStores()[0];
&gt; +    DOMDataStore::InternalDOMWrapperMap&lt;Node&gt;&amp; domMap = store-&gt;domNodeMap();
&gt; +    Node* node = static_cast&lt;Node*&gt;(domObject);
&gt; +    v8Object.Dispose();
&gt; +    domMap.impl().remove(node);
&gt; +    node-&gt;deref();  // Nobody overrides Node::deref so it&apos;s safe
&gt;  }
&gt;  
&gt;  #if ENABLE(SVG)

The code to retrieve DOM Node map should be merged with Adam&apos;s patch obviously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134399</commentid>
    <comment_count>4</comment_count>
      <attachid>33390</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-23 23:47:26 -0700</bug_when>
    <thetext>Comment on attachment 33390
Initial version

+    DOMDataStore* store = DOMDataStore::allStores()[0];

Why is it sufficient only to look in the zeroth DOMDataStore?  What about the DOMDataStore for isolated worlds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134438</commentid>
    <comment_count>5</comment_count>
    <who name="Christian Plesner Hansen">christian.plesner.hansen</who>
    <bug_when>2009-07-24 01:03:27 -0700</bug_when>
    <thetext>I&apos;m still a little unclear on how the dom node mappings work.  This only works for nodes on the main thread right?  So with Adam&apos;s changes you would use DOMData::getCurrentMainThread()-&gt;getStore().domNodeMap() instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134443</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-24 01:12:12 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;m still a little unclear on how the dom node mappings work.  This only works
&gt; for nodes on the main thread right?  So with Adam&apos;s changes you would use
&gt; DOMData::getCurrentMainThread()-&gt;getStore().domNodeMap() instead?

You can try that, but it will crash because we&apos;re in the middle of a GC.  :)  That&apos;s why we iterate currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134451</commentid>
    <comment_count>7</comment_count>
    <who name="Christian Plesner Hansen">christian.plesner.hansen</who>
    <bug_when>2009-07-24 01:25:40 -0700</bug_when>
    <thetext>Okay.  Maybe not such a good idea then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134472</commentid>
    <comment_count>8</comment_count>
      <attachid>33415</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-07-24 02:22:32 -0700</bug_when>
    <thetext>Created attachment 33415
Addressing Adam&apos;s comments

Thanks a lot, Adam.  May you have another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134479</commentid>
    <comment_count>9</comment_count>
      <attachid>33415</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-24 02:45:59 -0700</bug_when>
    <thetext>Comment on attachment 33415
Addressing Adam&apos;s comments

This patch is still incorrect.

-    v8::HandleScope scope;

Don&apos;t we need a handle scope before talking to handles?

-    ASSERT(v8Object-&gt;IsObject());

Why drop this assert?

+        ASSERT(store-&gt;domData()-&gt;owningThread() == WTF::currentThread());

This assert is bogus.  Some of DOMDataStores belong to worker threads.

Here&apos;s what you should do:

1) Acquire the mutex before iterating through the list because items might be inserted or removed on another thread.

2) Move the ASSERT to after

+        if (it == domMapImpl.end() || it-&gt;second != *v8Object)

At that point, you&apos;ve found a DOMDataStore that holds a Node and it must be on the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134502</commentid>
    <comment_count>10</comment_count>
      <attachid>33424</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-07-24 04:14:14 -0700</bug_when>
    <thetext>Created attachment 33424
Second round

Thanks a lot for another round, Adam.  Answering in comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134503</commentid>
    <comment_count>11</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-07-24 04:16:10 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 33415 [details])
&gt; This patch is still incorrect.
&gt; 
&gt; -    v8::HandleScope scope;
&gt; 
&gt; Don&apos;t we need a handle scope before talking to handles?

We don&apos;t create any handles and thus I don&apos;t think we need it, but, please, double check.

&gt; 
&gt; -    ASSERT(v8Object-&gt;IsObject());
&gt; 
&gt; Why drop this assert?

I can easily revive it.  My thought was it was originally necessary due to the cast below (which would check the type anyway, btw).  No I don&apos;t do that cast and hence why ASSERT?

&gt; 
&gt; +        ASSERT(store-&gt;domData()-&gt;owningThread() == WTF::currentThread());
&gt; 
&gt; This assert is bogus.  Some of DOMDataStores belong to worker threads.
&gt; 
&gt; Here&apos;s what you should do:
&gt; 
&gt; 1) Acquire the mutex before iterating through the list because items might be
&gt; inserted or removed on another thread.
&gt; 
&gt; 2) Move the ASSERT to after
&gt; 
&gt; +        if (it == domMapImpl.end() || it-&gt;second != *v8Object)
&gt; 
&gt; At that point, you&apos;ve found a DOMDataStore that holds a Node and it must be on
&gt; the main thread.

You&apos;re absolutely right, I wasn&apos;t attentive enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134595</commentid>
    <comment_count>12</comment_count>
      <attachid>33424</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-24 10:41:21 -0700</bug_when>
    <thetext>Comment on attachment 33424
Second round

I think you mistakenly uploaded the old version of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134840</commentid>
    <comment_count>13</comment_count>
      <attachid>33518</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-07-26 21:59:28 -0700</bug_when>
    <thetext>Created attachment 33518
The right one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134841</commentid>
    <comment_count>14</comment_count>
      <attachid>33519</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-07-26 22:08:37 -0700</bug_when>
    <thetext>Created attachment 33519
Fixing a minor type (should have used plural)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134842</commentid>
    <comment_count>15</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-07-26 22:09:07 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 33424 [details])
&gt; I think you mistakenly uploaded the old version of the patch.

I am very sorry, Adam, may you have a look now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134843</commentid>
    <comment_count>16</comment_count>
      <attachid>33519</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-26 22:19:21 -0700</bug_when>
    <thetext>Comment on attachment 33519
Fixing a minor type (should have used plural)

This is great.  Thanks for iterating on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134860</commentid>
    <comment_count>17</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-07-27 01:34:18 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 33519 [details])
&gt; This is great.  Thanks for iterating on this.

Thanks a lot for review, Adam!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134871</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-27 02:12:45 -0700</bug_when>
    <thetext>I would land this, except the canary isn&apos;t compiling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134874</commentid>
    <comment_count>19</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-07-27 02:36:48 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; I would land this, except the canary isn&apos;t compiling.

It used to compile.  Let me sync to the most recent version and update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134875</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-27 02:37:56 -0700</bug_when>
    <thetext>Oh, the patch is probably fine.  The tree is red:

http://build.chromium.org/buildbot/waterfall.fyi/waterfall?builder=Webkit%20(webkit.org)&amp;builder=Webkit%20Mac%20(webkit.org)&amp;builder=Webkit%20Linux%20(webkit.org)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135136</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-28 01:27:09 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/bindings/v8/DOMDataStore.cpp
Committed r46462
	M	WebCore/ChangeLog
	M	WebCore/bindings/v8/DOMDataStore.cpp
r46462 = f0f290bb233ca9ad7eef395908089c6c4f307085 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/46462</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33390</attachid>
            <date>2009-07-23 16:11:20 -0700</date>
            <delta_ts>2009-07-24 02:22:32 -0700</delta_ts>
            <desc>Initial version</desc>
            <filename>webcore.patch</filename>
            <type>text/plain</type>
            <size>1560</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2Mjk1KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDktMDctMjMgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW1wbGlmeSBtYW5hZ2VtZW50IG9mIE5vZGVzIGluIHdlYWsgaGFuZGxlcyBjYWxsYmFja3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzYyOAorCisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2Vh
a05vZGVDYWxsYmFjayk6CisKIDIwMDktMDctMjMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpJbmRleDogdGhpcmRfcGFy
dHkvV2ViS2l0L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAkocmV2
aXNpb24gNDYxOTQpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNCw5ICs1MDQsMTIgQEAgdm9pZCB3ZWFr
QWN0aXZlRE9NT2JqZWN0Q2FsbGJhY2sodjg6OlBlcgogCiBzdGF0aWMgdm9pZCB3ZWFrTm9kZUNh
bGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdjhPYmplY3QsIHZvaWQqIGRvbU9iamVj
dCkKIHsKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgQVNTRVJUKHY4T2JqZWN0LT5J
c09iamVjdCgpKTsKLSAgICBET01EYXRhOjpoYW5kbGVXZWFrT2JqZWN0PE5vZGU+KERPTURhdGFT
dG9yZTo6RE9NTm9kZU1hcCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OE9iamVjdCks
IHN0YXRpY19jYXN0PE5vZGUqPihkb21PYmplY3QpKTsKKyAgICBET01EYXRhU3RvcmUqIHN0b3Jl
ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKVswXTsKKyAgICBET01EYXRhU3RvcmU6OkludGVy
bmFsRE9NV3JhcHBlck1hcDxOb2RlPiYgZG9tTWFwID0gc3RvcmUtPmRvbU5vZGVNYXAoKTsKKyAg
ICBOb2RlKiBub2RlID0gc3RhdGljX2Nhc3Q8Tm9kZSo+KGRvbU9iamVjdCk7CisgICAgdjhPYmpl
Y3QuRGlzcG9zZSgpOworICAgIGRvbU1hcC5pbXBsKCkucmVtb3ZlKG5vZGUpOworICAgIG5vZGUt
PmRlcmVmKCk7ICAvLyBOb2JvZHkgb3ZlcnJpZGVzIE5vZGU6OmRlcmVmIHNvIGl0J3Mgc2FmZQog
fQogCiAjaWYgRU5BQkxFKFNWRykK
</data>
<flag name="review"
          id="17694"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33415</attachid>
            <date>2009-07-24 02:22:32 -0700</date>
            <delta_ts>2009-07-24 04:14:14 -0700</delta_ts>
            <desc>Addressing Adam&apos;s comments</desc>
            <filename>webcore.patch</filename>
            <type>text/plain</type>
            <size>1977</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2MzQ2KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDktMDctMjMgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW1wbGlmeSBtYW5hZ2VtZW50IG9mIE5vZGVzIGluIHdlYWsgaGFuZGxlcyBjYWxsYmFja3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzYyOAorCisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2Vh
a05vZGVDYWxsYmFjayk6CisKIDIwMDktMDctMjQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiB0aGlyZF9wYXJ0
eS9XZWJLaXQvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCShyZXZp
c2lvbiA0NjI4OCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDkgKzUxMCwyMCBAQCB2b2lkIHdlYWtB
Y3RpdmVET01PYmplY3RDYWxsYmFjayh2ODo6UGVyCiAKIHN0YXRpYyB2b2lkIHdlYWtOb2RlQ2Fs
bGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2OE9iamVjdCwgdm9pZCogZG9tT2JqZWN0
KQogewotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICBBU1NFUlQodjhPYmplY3QtPklz
T2JqZWN0KCkpOwotICAgIERPTURhdGE6OmhhbmRsZVdlYWtPYmplY3Q8Tm9kZT4oRE9NRGF0YVN0
b3JlOjpET01Ob2RlTWFwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4T2JqZWN0KSwg
c3RhdGljX2Nhc3Q8Tm9kZSo+KGRvbU9iamVjdCkpOworICAgIE5vZGUqIG5vZGUgPSBzdGF0aWNf
Y2FzdDxOb2RlKj4oZG9tT2JqZWN0KTsKKyAgICBET01EYXRhTGlzdCYgbGlzdCA9IERPTURhdGFT
dG9yZTo6YWxsU3RvcmVzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LnNpemUo
KTsgKytpKSB7CisgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0W2ldOworICAgICAg
ICBBU1NFUlQoc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50
VGhyZWFkKCkpOworICAgICAgICBIYXNoTWFwPE5vZGUqLCB2ODo6T2JqZWN0Kj4mIGRvbU1hcElt
cGwgPSBzdG9yZS0+ZG9tTm9kZU1hcCgpLmltcGwoKTsKKyAgICAgICAgSGFzaE1hcDxOb2RlKiwg
djg6Ok9iamVjdCo+OjppdGVyYXRvciBpdCA9IGRvbU1hcEltcGwuZmluZChub2RlKTsKKyAgICAg
ICAgaWYgKGl0ID09IGRvbU1hcEltcGwuZW5kKCkgfHwgaXQtPnNlY29uZCAhPSAqdjhPYmplY3Qp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdjhPYmplY3QuRGlzcG9zZSgpOworICAg
ICAgICBkb21NYXBJbXBsLnJlbW92ZShpdCk7CisgICAgICAgIG5vZGUtPmRlcmVmKCk7ICAvLyBO
b2JvZHkgb3ZlcnJpZGVzIE5vZGU6OmRlcmVmIHNvIGl0J3Mgc2FmZQorICAgICAgICBicmVhazsg
IC8vIFRoZXJlIG1pZ2h0IGJlIGF0IG1vc3Qgb25lIHdyYXBwZXIgZm9yIHRoZSBub2RlIGluIHdv
cmxkJ3MgbWFwCisgICAgfQogfQogCiAjaWYgRU5BQkxFKFNWRykK
</data>
<flag name="review"
          id="17706"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33424</attachid>
            <date>2009-07-24 04:14:14 -0700</date>
            <delta_ts>2009-07-26 21:59:28 -0700</delta_ts>
            <desc>Second round</desc>
            <filename>webcore.patch</filename>
            <type>text/plain</type>
            <size>1977</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2MzQ2KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDktMDctMjMgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW1wbGlmeSBtYW5hZ2VtZW50IG9mIE5vZGVzIGluIHdlYWsgaGFuZGxlcyBjYWxsYmFja3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzYyOAorCisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2Vh
a05vZGVDYWxsYmFjayk6CisKIDIwMDktMDctMjQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiB0aGlyZF9wYXJ0
eS9XZWJLaXQvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCShyZXZp
c2lvbiA0NjI4OCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDkgKzUxMCwyMCBAQCB2b2lkIHdlYWtB
Y3RpdmVET01PYmplY3RDYWxsYmFjayh2ODo6UGVyCiAKIHN0YXRpYyB2b2lkIHdlYWtOb2RlQ2Fs
bGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2OE9iamVjdCwgdm9pZCogZG9tT2JqZWN0
KQogewotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICBBU1NFUlQodjhPYmplY3QtPklz
T2JqZWN0KCkpOwotICAgIERPTURhdGE6OmhhbmRsZVdlYWtPYmplY3Q8Tm9kZT4oRE9NRGF0YVN0
b3JlOjpET01Ob2RlTWFwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4T2JqZWN0KSwg
c3RhdGljX2Nhc3Q8Tm9kZSo+KGRvbU9iamVjdCkpOworICAgIE5vZGUqIG5vZGUgPSBzdGF0aWNf
Y2FzdDxOb2RlKj4oZG9tT2JqZWN0KTsKKyAgICBET01EYXRhTGlzdCYgbGlzdCA9IERPTURhdGFT
dG9yZTo6YWxsU3RvcmVzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LnNpemUo
KTsgKytpKSB7CisgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0W2ldOworICAgICAg
ICBBU1NFUlQoc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50
VGhyZWFkKCkpOworICAgICAgICBIYXNoTWFwPE5vZGUqLCB2ODo6T2JqZWN0Kj4mIGRvbU1hcElt
cGwgPSBzdG9yZS0+ZG9tTm9kZU1hcCgpLmltcGwoKTsKKyAgICAgICAgSGFzaE1hcDxOb2RlKiwg
djg6Ok9iamVjdCo+OjppdGVyYXRvciBpdCA9IGRvbU1hcEltcGwuZmluZChub2RlKTsKKyAgICAg
ICAgaWYgKGl0ID09IGRvbU1hcEltcGwuZW5kKCkgfHwgaXQtPnNlY29uZCAhPSAqdjhPYmplY3Qp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdjhPYmplY3QuRGlzcG9zZSgpOworICAg
ICAgICBkb21NYXBJbXBsLnJlbW92ZShpdCk7CisgICAgICAgIG5vZGUtPmRlcmVmKCk7ICAvLyBO
b2JvZHkgb3ZlcnJpZGVzIE5vZGU6OmRlcmVmIHNvIGl0J3Mgc2FmZQorICAgICAgICBicmVhazsg
IC8vIFRoZXJlIG1pZ2h0IGJlIGF0IG1vc3Qgb25lIHdyYXBwZXIgZm9yIHRoZSBub2RlIGluIHdv
cmxkJ3MgbWFwCisgICAgfQogfQogCiAjaWYgRU5BQkxFKFNWRykK
</data>
<flag name="review"
          id="17712"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33518</attachid>
            <date>2009-07-26 21:59:28 -0700</date>
            <delta_ts>2009-07-26 22:08:37 -0700</delta_ts>
            <desc>The right one</desc>
            <filename>webcore.patch</filename>
            <type>text/plain</type>
            <size>2081</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2MzY5KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDktMDctMjMgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW1wbGlmeSBtYW5hZ2VtZW50IG9mIE5vZGVzIGluIHdlYWsgaGFuZGxlcyBjYWxsYmFja3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzYyOAorCisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2Vh
a05vZGVDYWxsYmFjayk6CisKIDIwMDktMDctMjQgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHRoaXJkX3BhcnR5L1dlYktpdC9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAko
cmV2aXNpb24gNDYzNjkpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw5ICs1MTAsMjQgQEAgdm9pZCB3
ZWFrQWN0aXZlRE9NT2JqZWN0Q2FsbGJhY2sodjg6OlBlcgogCiBzdGF0aWMgdm9pZCB3ZWFrTm9k
ZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdjhPYmplY3QsIHZvaWQqIGRvbU9i
amVjdCkKIHsKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgQVNTRVJUKHY4T2JqZWN0
LT5Jc09iamVjdCgpKTsKLSAgICBET01EYXRhOjpoYW5kbGVXZWFrT2JqZWN0PE5vZGU+KERPTURh
dGFTdG9yZTo6RE9NTm9kZU1hcCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OE9iamVj
dCksIHN0YXRpY19jYXN0PE5vZGUqPihkb21PYmplY3QpKTsKKyAgICBBU1NFUlQoV1RGOjppc01h
aW5UaHJlYWQoKSk7CisKKyAgICBOb2RlKiBub2RlID0gc3RhdGljX2Nhc3Q8Tm9kZSo+KGRvbU9i
amVjdCk7CisKKyAgICBXVEY6Ok11dGV4TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0
b3Jlc011dGV4KCkpOworICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxT
dG9yZXMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGxpc3RbaV07CisgICAgICAgIEhhc2hNYXA8
Tm9kZSosIHY4OjpPYmplY3QqPiYgZG9tTWFwSW1wbCA9IHN0b3JlLT5kb21Ob2RlTWFwKCkuaW1w
bCgpOworICAgICAgICBIYXNoTWFwPE5vZGUqLCB2ODo6T2JqZWN0Kj46Oml0ZXJhdG9yIGl0ID0g
ZG9tTWFwSW1wbC5maW5kKG5vZGUpOworICAgICAgICBpZiAoaXQgPT0gZG9tTWFwSW1wbC5lbmQo
KSB8fCBpdC0+c2Vjb25kICE9ICp2OE9iamVjdCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBBU1NFUlQoc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJy
ZW50VGhyZWFkKCkpOworICAgICAgICB2OE9iamVjdC5EaXNwb3NlKCk7CisgICAgICAgIGRvbU1h
cEltcGwucmVtb3ZlKGl0KTsKKyAgICAgICAgbm9kZS0+ZGVyZWYoKTsgIC8vIE5vYm9keSBvdmVy
cmlkZXMgTm9kZTo6ZGVyZWYgc28gaXQncyBzYWZlCisgICAgICAgIGJyZWFrOyAgLy8gVGhlcmUg
bWlnaHQgYmUgYXQgbW9zdCBvbmUgd3JhcHBlciBmb3IgdGhlIG5vZGUgaW4gd29ybGQncyBtYXAK
KyAgICB9CiB9CiAKICNpZiBFTkFCTEUoU1ZHKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33519</attachid>
            <date>2009-07-26 22:08:37 -0700</date>
            <delta_ts>2009-07-26 22:19:20 -0700</delta_ts>
            <desc>Fixing a minor type (should have used plural)</desc>
            <filename>webcore.patch</filename>
            <type>text/plain</type>
            <size>2082</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2MzY5KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDktMDctMjMgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW1wbGlmeSBtYW5hZ2VtZW50IG9mIE5vZGVzIGluIHdlYWsgaGFuZGxlcyBjYWxsYmFja3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzYyOAorCisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2Vh
a05vZGVDYWxsYmFjayk6CisKIDIwMDktMDctMjQgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHRoaXJkX3BhcnR5L1dlYktpdC9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAko
cmV2aXNpb24gNDYzNjkpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw5ICs1MTAsMjQgQEAgdm9pZCB3
ZWFrQWN0aXZlRE9NT2JqZWN0Q2FsbGJhY2sodjg6OlBlcgogCiBzdGF0aWMgdm9pZCB3ZWFrTm9k
ZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdjhPYmplY3QsIHZvaWQqIGRvbU9i
amVjdCkKIHsKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgQVNTRVJUKHY4T2JqZWN0
LT5Jc09iamVjdCgpKTsKLSAgICBET01EYXRhOjpoYW5kbGVXZWFrT2JqZWN0PE5vZGU+KERPTURh
dGFTdG9yZTo6RE9NTm9kZU1hcCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OE9iamVj
dCksIHN0YXRpY19jYXN0PE5vZGUqPihkb21PYmplY3QpKTsKKyAgICBBU1NFUlQoV1RGOjppc01h
aW5UaHJlYWQoKSk7CisKKyAgICBOb2RlKiBub2RlID0gc3RhdGljX2Nhc3Q8Tm9kZSo+KGRvbU9i
amVjdCk7CisKKyAgICBXVEY6Ok11dGV4TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0
b3Jlc011dGV4KCkpOworICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxT
dG9yZXMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGxpc3RbaV07CisgICAgICAgIEhhc2hNYXA8
Tm9kZSosIHY4OjpPYmplY3QqPiYgZG9tTWFwSW1wbCA9IHN0b3JlLT5kb21Ob2RlTWFwKCkuaW1w
bCgpOworICAgICAgICBIYXNoTWFwPE5vZGUqLCB2ODo6T2JqZWN0Kj46Oml0ZXJhdG9yIGl0ID0g
ZG9tTWFwSW1wbC5maW5kKG5vZGUpOworICAgICAgICBpZiAoaXQgPT0gZG9tTWFwSW1wbC5lbmQo
KSB8fCBpdC0+c2Vjb25kICE9ICp2OE9iamVjdCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBBU1NFUlQoc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJy
ZW50VGhyZWFkKCkpOworICAgICAgICB2OE9iamVjdC5EaXNwb3NlKCk7CisgICAgICAgIGRvbU1h
cEltcGwucmVtb3ZlKGl0KTsKKyAgICAgICAgbm9kZS0+ZGVyZWYoKTsgIC8vIE5vYm9keSBvdmVy
cmlkZXMgTm9kZTo6ZGVyZWYgc28gaXQncyBzYWZlCisgICAgICAgIGJyZWFrOyAgLy8gVGhlcmUg
bWlnaHQgYmUgYXQgbW9zdCBvbmUgd3JhcHBlciBmb3IgdGhlIG5vZGUgaW4gd29ybGQncyBtYXBz
CisgICAgfQogfQogCiAjaWYgRU5BQkxFKFNWRykK
</data>
<flag name="review"
          id="17784"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>