<?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>13274</bug_id>
          
          <creation_ts>2007-04-03 16:48:05 -0700</creation_ts>
          <short_desc>REGRESSION: Mouse events are not always sent to the &quot;captured&quot; subframe when dragging</short_desc>
          <delta_ts>2007-04-06 14:55:28 -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>Forms</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dex Deacon">occupant4</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>15787</commentid>
    <comment_count>0</comment_count>
    <who name="Dex Deacon">occupant4</who>
    <bug_when>2007-04-03 16:48:05 -0700</bug_when>
    <thetext>If you click and hold the mouse in a subframe, then drag the mouse out of that subframe, it will stop receiving mousemove events.  Interestingly, if you drag the mouse over a *different* subframe, the original subframe will receive the events.  This is because of some weird logic in EventHandler; passMouseMoveEventToSubframe is called only if the mouse is over a subframe, and the target is then changed to the &quot;captured&quot; subframe&apos;s view (m_mouseDownView).

I think the fix is to remember the captured subframe, and call passMouseMoveEventToSubframe if either 1) we have a capture subframe, or 2) the mouse is over a subframe.  m_capturingMouseEventsNode looks like a convenient place to store the captured subframe.

Test case coming shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15769</commentid>
    <comment_count>1</comment_count>
      <attachid>13940</attachid>
    <who name="Dex Deacon">occupant4</who>
    <bug_when>2007-04-03 16:48:54 -0700</bug_when>
    <thetext>Created attachment 13940
test page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15770</commentid>
    <comment_count>2</comment_count>
      <attachid>13941</attachid>
    <who name="Dex Deacon">occupant4</who>
    <bug_when>2007-04-03 16:52:59 -0700</bug_when>
    <thetext>Created attachment 13941
subframe for test page

Save this as &quot;subframe.html&quot; in the same place as the above file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15739</commentid>
    <comment_count>3</comment_count>
      <attachid>13950</attachid>
    <who name="Dex Deacon">occupant4</who>
    <bug_when>2007-04-04 14:43:09 -0700</bug_when>
    <thetext>Created attachment 13950
possible patch

Here&apos;s my attempt at a patch.  It uses the existing m_capturingMouseEvents variable on EventHandler to remember that future events should be routed to a subframe.  The layout tests pass, but I&apos;m not quite sure if it would interfere with other uses of m_capturingMouseEvents (or if it does, maybe it should).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15743</commentid>
    <comment_count>4</comment_count>
      <attachid>13950</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-04 15:00:54 -0700</bug_when>
    <thetext>Comment on attachment 13950
possible patch

I don&apos;t think this is the right approach.  There are really two kinds of capture: there is capture for a node within a document, and then there is widget-level capture (which can apply to plugins or to frames).

I would argue that it is a platform&apos;s responsibility to do widget-level capture (and this capture automatically takes care of the subframe problem, since events just go straight to the correct widget).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15744</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-04 15:08:01 -0700</bug_when>
    <thetext>This problem basically needs to be addressed in such a way that WebKit plugins work too.  I think it&apos;s really just a Mac-specific WebKit event routing issue and that the fix will end up being in the Mac WebKit code.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15506</commentid>
    <comment_count>6</comment_count>
    <who name="Dex Deacon">occupant4</who>
    <bug_when>2007-04-05 16:47:04 -0700</bug_when>
    <thetext>I think if you do widget-level capture, you&apos;ll end up with a weird inconsistency.  Right now, mousemove events are sent to every frame that the mouse is over (for example, in my test page, mouse over the subframe, and both the subframe and toplevel receive mousemove events).  With widget-level capture, only the captured widget will receive events.  So you&apos;ll have this situation where the toplevel frame always receives mousemove events, unless a subframe has capture.

Not sure if that really matters, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15508</commentid>
    <comment_count>7</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-05 17:06:36 -0700</bug_when>
    <thetext>I agree that it would be inconsistent, but I think it&apos;s a bug that the mousemove goes to the parent at all.

The parent frame should not be getting mousemoves while you are in the child frame in my opinion (and you&apos;ll see that it does not in Firefox).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15509</commentid>
    <comment_count>8</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-05 17:07:15 -0700</bug_when>
    <thetext>We&apos;re effectively firing two unique mousemove events and sending them to each frame.  That&apos;s not correct and is worthy of a completely separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15510</commentid>
    <comment_count>9</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-05 17:40:25 -0700</bug_when>
    <thetext>Looking into this more, this code is a total mess.

The lastMouseMovedFrame (whose purpose is really just to properly send a mouseout) is improperly interacting with the Mac-specific m_mouseDownView.

The m_mouseDownView code is also broken and doesn&apos;t even work.

I&apos;m going to look into patching this.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15480</commentid>
    <comment_count>10</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-05 21:22:03 -0700</bug_when>
    <thetext>Safari 2 behaves correctly regarding capture behavior,  so this is a P1 regression.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15481</commentid>
    <comment_count>11</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-05 21:23:35 -0700</bug_when>
    <thetext>Note that in Safari 2, the capture mousemoves also go to all frames in the chain (just like non-capturing mousemoves), so Safari 2 is consistent.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15472</commentid>
    <comment_count>12</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-05 22:49:56 -0700</bug_when>
    <thetext>So I&apos;ve basically done a complete 180 here and now think your patch is the way to go.  It has the advantage of still working even if a widget toolkit sends things directly to a specific widget.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15473</commentid>
    <comment_count>13</comment_count>
      <attachid>13975</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-05 23:06:56 -0700</bug_when>
    <thetext>Created attachment 13975
Build upon previous patch

This builds on the previous patch and also fixes the mouse move problem.

I also tweaked invalidateClick for the case where a widget toolkit does end up going directly to a specific subframe so that m_mousePressed won&apos;t get &quot;stuck&quot; but clears immediately as mouse down delivers events to subframes.

So now we basically have three kinds of capture: frame capture, widget capture and node capture.  Frame and node capture are at least using a similar cross-platform mechanism.  

Widget capture is basically buggy on the Mac now, but we&apos;ve wallpapered over the most obvious bugs by getting frame capture right.  Eventually Mac will start sending events right to subviews, but in the mean time adding this extra frame capture layer seems pretty straightforward and safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15474</commentid>
    <comment_count>14</comment_count>
      <attachid>13975</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-05 23:13:27 -0700</bug_when>
    <thetext>Comment on attachment 13975
Build upon previous patch

Hmmm still have some issues with this patch.

(1) It&apos;s bad to do extra hit testing if you are already capturing.  Should restructure the code to not waste time doing that.

(2) Clearing capturing has to be robust and crawl up the frame tree to future-proof for widget toolkits sending events straight to specific subframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15444</commentid>
    <comment_count>15</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-06 14:55:28 -0700</bug_when>
    <thetext>Fixed in r20761.


</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>13940</attachid>
            <date>2007-04-03 16:48:54 -0700</date>
            <delta_ts>2007-04-03 16:48:54 -0700</delta_ts>
            <desc>test page</desc>
            <filename>mousemove.html</filename>
            <type>text/html</type>
            <size>106</size>
            <attacher name="Dex Deacon">occupant4</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8aWZyYW1lIHNyYz0ic3ViZnJhbWUuaHRtbCI+PC9pZnJhbWU+CjxpZnJh
bWUgc3JjPSJzdWJmcmFtZS5odG1sIj48L2lmcmFtZT4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>13941</attachid>
            <date>2007-04-03 16:52:59 -0700</date>
            <delta_ts>2007-04-03 16:52:59 -0700</delta_ts>
            <desc>subframe for test page</desc>
            <filename>subframe.html</filename>
            <type>text/html</type>
            <size>1908</size>
            <attacher name="Dex Deacon">occupant4</attacher>
            
              <data encoding="base64">PGh0bWw+CjxzY3JpcHQ+CmZ1bmN0aW9uIG9uX21vdXNlbW92ZShlKSB7CiAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImRpc3AiKS5pbm5lckhUTUwgPSAnPHByZT4nICsgZS5jbGllbnRYICsgJywn
ICsgZS5jbGllbnRZICsgJzwvcHJlPic7Cn0Kd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
bW92ZSIsIG9uX21vdXNlbW92ZSwgZmFsc2UpOwo8L3NjcmlwdD4KPGJvZHk+CjxkaXYgc3R5bGU9
InBvc2l0aW9uOiBmaXhlZDsgcmlnaHQ6IDA7IHRvcDogMDsgYmFja2dyb3VuZDogbGlnaHRncmVl
bjsgd2lkdGg6IDYwcHg7IGhlaWdodDogMjVweDsiIGlkPSJkaXNwIj48L2Rpdj4KTG9yZW0gaXBz
dW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVlciBhZGlwaXNjaW5nIGVsaXQuIFBoYXNlbGx1
cyBtYXR0aXMsCmp1c3RvIG5lYyB2YXJpdXMgdnVscHV0YXRlLCBudW5jIHJpc3VzIHBvcnR0aXRv
ciB0ZWxsdXMsIHNpdCBhbWV0IHRlbXBvciBtZXR1cwpkaWFtIHF1aXMgYXJjdS4gSW4gcmhvbmN1
cyBsZWN0dXMgaWQgbWkuIFBoYXNlbGx1cyBub251bW15IHVsbGFtY29ycGVyIGlwc3VtLgpQaGFz
ZWxsdXMgZWxpdCB0ZWxsdXMsIGZhY2lsaXNpcyBxdWlzLCBncmF2aWRhIGluLCBwb3J0dGl0b3Ig
dml0YWUsIG1ldHVzLgpEb25lYyBpbnRlcmR1bSBwcmV0aXVtIGxvcmVtLiBDdW0gc29jaWlzIG5h
dG9xdWUgcGVuYXRpYnVzIGV0IG1hZ25pcyBkaXMKcGFydHVyaWVudCBtb250ZXMsIG5hc2NldHVy
IHJpZGljdWx1cyBtdXMuIFBlbGxlbnRlc3F1ZSB2b2x1dHBhdCwgbWV0dXMgbmVjCnBsYWNlcmF0
IGFkaXBpc2NpbmcsIGFudGUgZXJvcyBwcmV0aXVtIG1pLCBmZXJtZW50dW0gdWx0cmljaWVzIGVy
b3MgbGVjdHVzCnF1aXMgcGVkZS4gTnVuYyBzb2xsaWNpdHVkaW4sIHNhcGllbiBuZWMgYXVjdG9y
IGxhb3JlZXQsIGVyYXQgYW50ZSBhbGlxdWFtCmVyYXQsIGEgdWxsYW1jb3JwZXIgb3JjaSBlbmlt
IHNlZCBxdWFtLiBOYW0gYW50ZSBudWxsYSwgaWFjdWxpcyB1dCwKdWxsYW1jb3JwZXIgdnVscHV0
YXRlLCB1bGxhbWNvcnBlciBvcm5hcmUsIG5pc2kuIE5hbSBtZXR1cyBhcmN1LCBsYWNpbmlhIHNl
ZCwKcmhvbmN1cyBub24sIGV1aXNtb2QgdmVsLCBhbnRlLiBTdXNwZW5kaXNzZSBlbGVpZmVuZCBt
YXNzYSBpbiBtYWduYS4KU3VzcGVuZGlzc2UgcXVpcyB2ZWxpdC4gTmFtIGF1Z3VlIG9yY2ksIHZh
cml1cyBzZWQsIHNjZWxlcmlzcXVlIGEsIHZpdmVycmEKbmVjLCB1cm5hLiBNYWVjZW5hcyBmZXJt
ZW50dW0gdnVscHV0YXRlIGxlY3R1cy4gQWxpcXVhbSBtYXVyaXMgdXJuYSwgbW9sbGlzCnZlbCwg
YmxhbmRpdCBlZ2V0LCBjb25kaW1lbnR1bSBxdWlzLCBsZWN0dXMuIFByb2luIG9kaW8gbGVjdHVz
LCBub251bW15IGF0LAphY2N1bXNhbiB2ZWwsIG1hbGVzdWFkYSB0ZW1wdXMsIG1hc3NhLiBEdWlz
IG1hc3NhIHRlbGx1cywgY29uc2VjdGV0dWVyIGFjLAp2YXJpdXMgc2VkLCBtYXR0aXMgYXQsIGxv
cmVtLgoKTnVsbGFtIHNlZCBlbGl0LiBQcmFlc2VudCBjb252YWxsaXMgYW50ZSBub24gbWFnbmEu
IFNlZCB0b3J0b3IuIEV0aWFtIHBoYXJldHJhCm5lcXVlIHZpdGFlIGVzdC4gTnVsbGFtIGlkIGF1
Z3VlLiBJbiB2aXRhZSBzYXBpZW4gYSB0dXJwaXMgY29uZ3VlIHByZXRpdW0uCk51bmMgY29udmFs
bGlzIG9yY2kgcXVpcyBvcmNpLiBEb25lYyBzZWQgYW50ZS4gUXVpc3F1ZSBwaGFyZXRyYSBmZWxp
cyBhIHF1YW0uCk51bGxhbSBlcm9zIGFudGUsIGNvbnNlY3RldHVlciBldSwgaW50ZXJkdW0gbmVj
LCBzdXNjaXBpdCBpYWN1bGlzLCBtYWduYS4KRG9uZWMgZWdldCBwZWRlLiBNYXVyaXMgZXVpc21v
ZCBzY2VsZXJpc3F1ZSBtYWduYS4gQ3VyYWJpdHVyIHZlbCBuaWJoIHV0IG9kaW8KdGVtcG9yIHVs
bGFtY29ycGVyLgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13950</attachid>
            <date>2007-04-04 14:43:09 -0700</date>
            <delta_ts>2007-04-05 23:08:06 -0700</delta_ts>
            <desc>possible patch</desc>
            <filename>mousemove.patch</filename>
            <type>text/plain</type>
            <size>2811</size>
            <attacher name="Dex Deacon">occupant4</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDcwOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDctMDQtMDQgIERleCBEZWFjb24gIDxvY2N1cGFudDRAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdB
Uk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICBTZXQgbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUg
dG8gdGhlIHRhcmdldHRlZCBzdWJmcmFtZSdzIG5vZGUgd2hpbGUgdGhlIG1vdXNlCisgICAgICAg
IGJ1dHRvbiBpcyBwcmVzc2VkLCBzbyBtb3ZlIGFuZCByZWxlYXNlIGV2ZW50cyBnZXQgc2VudCB0
byB0aGF0CisgICAgICAgIHN1YmZyYW1lIGV2ZW4gaWYgdGhlIG1vdXNlIGlzIG5vdCBvdmVyIGl0
LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50
KToKKwogMjAwNy0wNC0wMyAgSnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IGRhcmluCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAko
cmV2aXNpb24gMjA3MDQpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzg1LDYgKzc4NSwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VQcmVzc0V2ZW50CiAKICAgICBGcmFtZSogc3ViZnJhbWUgPSBzdWJmcmFtZUZvclRhcmdldE5v
ZGUobWV2LnRhcmdldE5vZGUoKSk7CiAgICAgaWYgKHN1YmZyYW1lICYmIHBhc3NNb3VzZVByZXNz
RXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUpKSB7CisgICAgICAgIC8vIFN0YXJ0IGNhcHR1
cmluZyBmdXR1cmUgZXZlbnRzIHRvIHRoaXMgZnJhbWUuICBXZSBvbmx5IGRvIHRoaXMgaWYgd2Ug
ZGlkbid0IGNsZWFyCisgICAgICAgIC8vIHRoZSBtX21vdXNlUHJlc3NlZCBmbGFnLCB3aGljaCBt
YXkgaGFwcGVuIGlmIGFuIEFwcEtpdCB3aWRnZXQgZW50ZXJlZCBhIG1vZGFsIGV2ZW50IGxvb3Au
CisgICAgICAgIGlmIChtX21vdXNlUHJlc3NlZCkKKyAgICAgICAgICAgIG1fY2FwdHVyaW5nTW91
c2VFdmVudHNOb2RlID0gbWV2LnRhcmdldE5vZGUoKTsKICAgICAgICAgaW52YWxpZGF0ZUNsaWNr
KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTkxMiw3ICs5MTYsOCBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoCiAgICAgaWYgKCFzd2FsbG93RXZl
bnQpCiAgICAgICAgIHN3YWxsb3dFdmVudCA9IGhhbmRsZU1vdXNlTW92ZUV2ZW50KG1ldik7CiAg
ICAgCi0gICAgUmVmUHRyPEZyYW1lPiBuZXdTdWJmcmFtZSA9IHN1YmZyYW1lRm9yVGFyZ2V0Tm9k
ZShtZXYudGFyZ2V0Tm9kZSgpKTsKKyAgICBOb2RlKiB0YXJnZXROb2RlID0gbV9jYXB0dXJpbmdN
b3VzZUV2ZW50c05vZGUuZ2V0KCkgPyBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZS5nZXQoKSA6
IG1ldi50YXJnZXROb2RlKCk7CisgICAgUmVmUHRyPEZyYW1lPiBuZXdTdWJmcmFtZSA9IHN1YmZy
YW1lRm9yVGFyZ2V0Tm9kZSh0YXJnZXROb2RlKTsKICAgICBpZiAobmV3U3ViZnJhbWUpIHsKICAg
ICAgICAgaWYgKG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUgIT0gbmV3U3ViZnJhbWUpCiAg
ICAgICAgICAgICBzd2FsbG93RXZlbnQgfD0gcGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZSht
ZXYsIG5ld1N1YmZyYW1lLmdldCgpKTsKQEAgLTk0OCw3ICs5NTMsOSBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlCiAgICAgICAgIHJldHVybiBkaXNwYXRjaE1vdXNl
RXZlbnQobW91c2V1cEV2ZW50LCBtX2ZyYW1lU2V0QmVpbmdSZXNpemVkLmdldCgpLCB0cnVlLCBt
X2NsaWNrQ291bnQsIG1vdXNlRXZlbnQsIGZhbHNlKTsKIAogICAgIE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQoSGl0VGVzdFJlcXVlc3QoZmFsc2Us
IGZhbHNlLCBmYWxzZSwgdHJ1ZSksIG1vdXNlRXZlbnQpOwotICAgIEZyYW1lKiBzdWJmcmFtZSA9
IHN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShtZXYudGFyZ2V0Tm9kZSgpKTsKKyAgICBOb2RlKiB0YXJn
ZXROb2RlID0gbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUuZ2V0KCkgPyBtX2NhcHR1cmluZ01v
dXNlRXZlbnRzTm9kZS5nZXQoKSA6IG1ldi50YXJnZXROb2RlKCk7CisgICAgRnJhbWUqIHN1YmZy
YW1lID0gc3ViZnJhbWVGb3JUYXJnZXROb2RlKHRhcmdldE5vZGUpOworICAgIG1fY2FwdHVyaW5n
TW91c2VFdmVudHNOb2RlID0gMDsgLy8gc3RvcCBjYXB0dXJpbmcKICAgICBpZiAoc3ViZnJhbWUg
JiYgcGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAK
</data>
<flag name="review"
          id="5614"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13975</attachid>
            <date>2007-04-05 23:06:56 -0700</date>
            <delta_ts>2007-04-05 23:13:27 -0700</delta_ts>
            <desc>Build upon previous patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4622</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IHBhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0V2ZW50SGFu
ZGxlci5jcHAJKHJldmlzaW9uIDIwNjY5KQorKysgcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1v
dXNlUHJlc3NFdmVudAogICAgcmV0dXJuIHN3YWxsb3dFdmVudDsKIH0KIAotYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIGV2ZW50KQorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewogICAgIGlmICho
YW5kbGVEcmFnKGV2ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01OTIsNyArNTkyLDcg
QEAgSW50UG9pbnQgRXZlbnRIYW5kbGVyOjpjdXJyZW50TW91c2VQb3NpdAogICAgIHJldHVybiBt
X2N1cnJlbnRNb3VzZVBvc2l0aW9uOwogfQogCi1zdGF0aWMgRnJhbWUqIHN1YmZyYW1lRm9yVGFy
Z2V0Tm9kZShOb2RlKiBub2RlKQorRnJhbWUqIHN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShOb2RlKiBu
b2RlKQogewogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC03ODUsNiArNzg1
LDEwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKIAogICAgIEZy
YW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShtZXYudGFyZ2V0Tm9kZSgpKTsK
ICAgICBpZiAoc3ViZnJhbWUgJiYgcGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUobWV2LCBz
dWJmcmFtZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgY2FwdHVyaW5nIGZ1dHVyZSBldmVudHMgZm9y
IHRoaXMgZnJhbWUuICBXZSBvbmx5IGRvIHRoaXMgaWYgd2UgZGlkbid0IGNsZWFyCisgICAgICAg
IC8vIHRoZSBtX21vdXNlUHJlc3NlZCBmbGFnLCB3aGljaCBtYXkgaGFwcGVuIGlmIGFuIEFwcEtp
dCB3aWRnZXQgZW50ZXJlZCBhIG1vZGFsIGV2ZW50IGxvb3AuCisgICAgICAgIGlmIChtX21vdXNl
UHJlc3NlZCkKKyAgICAgICAgICAgIG1fY2FwdHVyaW5nTW91c2VFdmVudHNOb2RlID0gbWV2LnRh
cmdldE5vZGUoKTsKICAgICAgICAgaW52YWxpZGF0ZUNsaWNrKCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KQEAgLTg4NywxMSArODkxLDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZU1vdXNlTW92ZUV2ZW50KAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QobV9tb3VzZVByZXNz
ZWQgJiYgbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCwgbV9tb3VzZVByZXNzZWQsIHRydWUpOwog
ICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQo
cmVxdWVzdCwgbW91c2VFdmVudCk7CiAKLSAgICBpZiAobV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJm
cmFtZSAmJiBtX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZyYW1lLT50cmVlKCktPmlzRGVzY2VuZGFu
dE9mKG1fZnJhbWUpKQotICAgICAgICBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKG1ldiwg
bV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZS5nZXQoKSk7Ci0KLSAgICBib29sIHN3YWxsb3dF
dmVudCA9IGRpc3BhdGNoTW91c2VFdmVudChtb3VzZW1vdmVFdmVudCwgbWV2LnRhcmdldE5vZGUo
KSwgZmFsc2UsIDAsIG1vdXNlRXZlbnQsIHRydWUpOwotCiAgICAgUGxhdGZvcm1TY3JvbGxiYXIq
IHNjcm9sbGJhciA9IDA7CiAgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgc2Nyb2xs
YmFyID0gbV9mcmFtZS0+dmlldygpLT5zY3JvbGxiYXJVbmRlck1vdXNlKG1vdXNlRXZlbnQpOwpA
QCAtOTA5LDIyICs5MDgsMjkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2
ZW50KAogICAgIGlmIChtX3Jlc2l6ZUxheWVyICYmIG1fcmVzaXplTGF5ZXItPmluUmVzaXplTW9k
ZSgpKQogICAgICAgICBtX3Jlc2l6ZUxheWVyLT5yZXNpemUobW91c2VFdmVudCwgbV9vZmZzZXRG
cm9tUmVzaXplQ29ybmVyKTsKIAotICAgIGlmICghc3dhbGxvd0V2ZW50KQotICAgICAgICBzd2Fs
bG93RXZlbnQgPSBoYW5kbGVNb3VzZU1vdmVFdmVudChtZXYpOwotICAgIAotICAgIFJlZlB0cjxG
cmFtZT4gbmV3U3ViZnJhbWUgPSBzdWJmcmFtZUZvclRhcmdldE5vZGUobWV2LnRhcmdldE5vZGUo
KSk7Ci0gICAgaWYgKG5ld1N1YmZyYW1lKSB7Ci0gICAgICAgIGlmIChtX2xhc3RNb3VzZU1vdmVF
dmVudFN1YmZyYW1lICE9IG5ld1N1YmZyYW1lKQotICAgICAgICAgICAgc3dhbGxvd0V2ZW50IHw9
IHBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUobWV2LCBuZXdTdWJmcmFtZS5nZXQoKSk7Ci0g
ICAgfSBlbHNlIHsKKyAgICBib29sIHN3YWxsb3dFdmVudCA9IGZhbHNlOworICAgIE5vZGUqIHRh
cmdldE5vZGUgPSBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZS5nZXQoKSA/IG1fY2FwdHVyaW5n
TW91c2VFdmVudHNOb2RlLmdldCgpIDogbWV2LnRhcmdldE5vZGUoKTsKKyAgICBSZWZQdHI8RnJh
bWU+IG5ld1N1YmZyYW1lID0gc3ViZnJhbWVGb3JUYXJnZXROb2RlKHRhcmdldE5vZGUpOworICAg
IGlmIChtX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZyYW1lICYmIG1fbGFzdE1vdXNlTW92ZUV2ZW50
U3ViZnJhbWUtPnRyZWUoKS0+aXNEZXNjZW5kYW50T2YobV9mcmFtZSkgJiYgbV9sYXN0TW91c2VN
b3ZlRXZlbnRTdWJmcmFtZSAhPSBuZXdTdWJmcmFtZSkKKyAgICAgICAgcGFzc01vdXNlTW92ZUV2
ZW50VG9TdWJmcmFtZShtZXYsIG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUuZ2V0KCkpOwor
ICAgIGlmIChuZXdTdWJmcmFtZSkKKyAgICAgICAgc3dhbGxvd0V2ZW50IHw9IHBhc3NNb3VzZU1v
dmVFdmVudFRvU3ViZnJhbWUobWV2LCBuZXdTdWJmcmFtZS5nZXQoKSk7CisgICAgZWxzZSB7CiAg
ICAgICAgIGlmIChzY3JvbGxiYXIgJiYgIW1fbW91c2VQcmVzc2VkKQogICAgICAgICAgICAgc2Ny
b2xsYmFyLT5oYW5kbGVNb3VzZU1vdmVFdmVudChtb3VzZUV2ZW50KTsgLy8gSGFuZGxlIGhvdmVy
IGVmZmVjdHMgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCB2aXN1YWwgZmVlZGJhY2sgb24gc2Ny
b2xsYmFyIGhvdmVyaW5nLgogICAgICAgICBpZiAoKCFtX3Jlc2l6ZUxheWVyIHx8ICFtX3Jlc2l6
ZUxheWVyLT5pblJlc2l6ZU1vZGUoKSkgJiYgbV9mcmFtZS0+dmlldygpKQogICAgICAgICAgICAg
bV9mcmFtZS0+dmlldygpLT5zZXRDdXJzb3Ioc2VsZWN0Q3Vyc29yKG1ldiwgbV9mcmFtZSwgbV9t
b3VzZVByZXNzZWQsIHNjcm9sbGJhcikpOwogICAgIH0KLQorICAgIAogICAgIG1fbGFzdE1vdXNl
TW92ZUV2ZW50U3ViZnJhbWUgPSBuZXdTdWJmcmFtZTsKIAorICAgIGlmIChzd2FsbG93RXZlbnQp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAgICBzd2FsbG93RXZlbnQgPSBkaXNw
YXRjaE1vdXNlRXZlbnQobW91c2Vtb3ZlRXZlbnQsIG1ldi50YXJnZXROb2RlKCksIGZhbHNlLCAw
LCBtb3VzZUV2ZW50LCB0cnVlKTsKKyAgICBpZiAoIXN3YWxsb3dFdmVudCkKKyAgICAgICAgc3dh
bGxvd0V2ZW50ID0gaGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQobWV2KTsKKwogICAgIHJldHVybiBz
d2FsbG93RXZlbnQ7CiB9CiAKQEAgLTkzMiw2ICs5MzgsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
aW52YWxpZGF0ZUNsaWNrKCkKIHsKICAgICBtX2NsaWNrQ291bnQgPSAwOwogICAgIG1fY2xpY2tO
b2RlID0gMDsKKyAgICBtX21vdXNlUHJlc3NlZCA9IGZhbHNlOwogfQogCiBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBt
b3VzZUV2ZW50KQpAQCAtOTQ4LDcgKzk1NSw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVN
b3VzZVJlbGVhc2VFdmUKICAgICAgICAgcmV0dXJuIGRpc3BhdGNoTW91c2VFdmVudChtb3VzZXVw
RXZlbnQsIG1fZnJhbWVTZXRCZWluZ1Jlc2l6ZWQuZ2V0KCksIHRydWUsIG1fY2xpY2tDb3VudCwg
bW91c2VFdmVudCwgZmFsc2UpOwogCiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBt
ZXYgPSBwcmVwYXJlTW91c2VFdmVudChIaXRUZXN0UmVxdWVzdChmYWxzZSwgZmFsc2UsIGZhbHNl
LCB0cnVlKSwgbW91c2VFdmVudCk7Ci0gICAgRnJhbWUqIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JU
YXJnZXROb2RlKG1ldi50YXJnZXROb2RlKCkpOworICAgIE5vZGUqIHRhcmdldE5vZGUgPSBtX2Nh
cHR1cmluZ01vdXNlRXZlbnRzTm9kZS5nZXQoKSA/IG1fY2FwdHVyaW5nTW91c2VFdmVudHNOb2Rl
LmdldCgpIDogbWV2LnRhcmdldE5vZGUoKTsKKyAgICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9k
ZSA9IDA7IC8vIHN0b3AgY2FwdHVyaW5nCisgICAgRnJhbWUqIHN1YmZyYW1lID0gc3ViZnJhbWVG
b3JUYXJnZXROb2RlKHRhcmdldE5vZGUpOwogICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VS
ZWxlYXNlRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAo=
</data>
<flag name="review"
          id="5632"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>