<?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>54633</bug_id>
          
          <creation_ts>2011-02-17 04:06:49 -0800</creation_ts>
          <short_desc>[Gtk] webkit_web_view_popup_menu_handler should call SelectionController::localCaretRect</short_desc>
          <delta_ts>2011-04-04 07:23:51 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</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>
          
          <blocked>52099</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kalman</cc>
    
    <cc>leviw</cc>
    
    <cc>mario</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rniwa</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>352746</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-17 04:06:49 -0800</bug_when>
    <thetext>webkit_web_view_popup_menu_handler currently obtains selection start&apos;s coordinates by manually accessing selection start&apos;s renderer.  But it should instead call SelectionController::localCaretRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352750</commentid>
    <comment_count>1</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-02-17 04:09:11 -0800</bug_when>
    <thetext>The a11y code uses boundsForVisiblePositionRange to get the text extents, Ryosuke says that&apos;s likely wrong too. CCing Mario.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353077</commentid>
    <comment_count>2</comment_count>
      <attachid>82842</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-17 12:07:24 -0800</bug_when>
    <thetext>Created attachment 82842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353212</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-17 15:39:37 -0800</bug_when>
    <thetext>Ryosuke, Xan asked me to ping you for the review for this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360552</commentid>
    <comment_count>4</comment_count>
      <attachid>82842</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-01 21:24:48 -0800</bug_when>
    <thetext>Comment on attachment 82842
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=82842&amp;action=review

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:387
&gt; +    if (!selection-&gt;start().node() || !selection-&gt;end().node()

You must be using an old checkout.  Position::node() no longer exists.  What you want to do here is probably selection-&gt;selection()-&gt;isNonOrphanedCaretOrRange() since when start() or end() is orphaned, meaning that they&apos;re detached from the document, it doesn&apos;t make sense to query the firstRectForRange on that selection.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:397
&gt; +    IntRect firstRect = frame-&gt;editor()-&gt;firstRectForRange(selection-&gt;selection().firstRange().get());

firstRange() will return 0 if selection-&gt;isNone().  You probably need to check this condition above as well (fortunately, if isNonOrphanedCaretOrRange returns true, then isNone is false so the suggested change above will fix this as well).

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:417
&gt; -    location = view-&gt;contentsToWindow(location) + IntSize(0, -1);
&gt; -    if (location.y() &lt; 0)
&gt; -        location.setY(contextMenuMargin);
&gt; -    else if (location.y() &gt; view-&gt;height())
&gt; -        location.setY(view-&gt;height() - contextMenuMargin);
&gt; -    if (location.x() &lt; 0)
&gt; -        location.setX(contextMenuMargin);
&gt; -    else if (location.x() &gt; view-&gt;width())
&gt; -        location.setX(view-&gt;width() - contextMenuMargin);
&gt; -    IntPoint global(globalPointForClientPoint(gtk_widget_get_window(widget), location));
&gt; -
&gt; -    PlatformMouseEvent event(location, global, RightButton, MouseEventPressed, 0, false, false, false, false, gtk_get_current_event_time());
&gt; +        return FALSE;
&gt;  
&gt; +    // Never let the context menu abut very edge of the view.
&gt; +    location = view-&gt;contentsToWindow(location);
&gt; +    location.setY(max(gContextMenuMargin, location.y()));
&gt; +    location.setY(min(view-&gt;height() - gContextMenuMargin, location.y()));
&gt; +    location.setX(max(gContextMenuMargin, location.x()));
&gt; +    location.setX(min(view-&gt;width() - gContextMenuMargin, location.x()));
&gt; +    IntPoint globalPoint(globalPointForClientPoint(gtk_widget_get_window(widget), location));
&gt; +    PlatformMouseEvent event(location, globalPoint, RightButton, MouseEventPressed, 0, false, false, false, false, gtk_get_current_event_time());

I can&apos;t review these changes.  Xan or someone else should do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360843</commentid>
    <comment_count>5</comment_count>
      <attachid>84426</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-02 09:25:00 -0800</bug_when>
    <thetext>Created attachment 84426
Patch with rniwa&apos;s suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360845</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-02 09:26:00 -0800</bug_when>
    <thetext>(In reply to comment #4)

Thanks so much for the review!

&gt; (From update of attachment 82842 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82842&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:387
&gt; &gt; +    if (!selection-&gt;start().node() || !selection-&gt;end().node()
&gt; 
&gt; You must be using an old checkout.  Position::node() no longer exists.  What you want to do here is probably selection-&gt;selection()-&gt;isNonOrphanedCaretOrRange() since when start() or end() is orphaned, meaning that they&apos;re detached from the document, it doesn&apos;t make sense to query the firstRectForRange on that selection.

This patch was written before the change to ::node, I think. Made the fix you suggested here.

&gt; 
&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:397
&gt; &gt; +    IntRect firstRect = frame-&gt;editor()-&gt;firstRectForRange(selection-&gt;selection().firstRange().get());
&gt; 
&gt; firstRange() will return 0 if selection-&gt;isNone().  You probably need to check this condition above as well (fortunately, if isNonOrphanedCaretOrRange returns true, then isNone is false so the suggested change above will fix this as well).

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367084</commentid>
    <comment_count>7</comment_count>
      <attachid>84426</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-14 11:25:53 -0700</bug_when>
    <thetext>Comment on attachment 84426
Patch with rniwa&apos;s suggestions

View in context: https://bugs.webkit.org/attachment.cgi?id=84426&amp;action=review

Sorry for the delayed response.  I didn&apos;t realize you had uploaded a new patch.  The editing part of the change looks good to me.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:388
&gt; +         || (selection-&gt;selection().isCaret() &amp;&amp; !selection-&gt;selection().isContentEditable())) {

Don&apos;t you want to avoid doing this check when caret navigation is on?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367085</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-14 11:26:28 -0700</bug_when>
    <thetext>Xan, can you review GTK part of it so that Martin can land this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367690</commentid>
    <comment_count>9</comment_count>
      <attachid>84426</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-15 09:02:06 -0700</bug_when>
    <thetext>Comment on attachment 84426
Patch with rniwa&apos;s suggestions

View in context: https://bugs.webkit.org/attachment.cgi?id=84426&amp;action=review

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:413
&gt; +    // Never let the context menu abut very edge of the view.

I will change this to &quot;Never let the context menu touch the very edge of the view.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373770</commentid>
    <comment_count>10</comment_count>
      <attachid>86992</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-25 16:10:04 -0700</bug_when>
    <thetext>Created attachment 86992
Patch simplifying context menu margin and modifying comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378149</commentid>
    <comment_count>11</comment_count>
      <attachid>86992</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-04-01 15:47:47 -0700</bug_when>
    <thetext>Comment on attachment 86992
Patch simplifying context menu margin and modifying comment

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378776</commentid>
    <comment_count>12</comment_count>
      <attachid>86992</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-04 07:23:37 -0700</bug_when>
    <thetext>Comment on attachment 86992
Patch simplifying context menu margin and modifying comment

Clearing flags on attachment: 86992

Committed r82831: &lt;http://trac.webkit.org/changeset/82831&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378777</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-04 07:23:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82842</attachid>
            <date>2011-02-17 12:07:24 -0800</date>
            <delta_ts>2011-03-02 09:24:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54633-20110217120723.patch</filename>
            <type>text/plain</type>
            <size>7243</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg4MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAyYWU5ZTY4NGJl
NmJiNDAyYWZkNGQ1ZDExZGMyYmZmYzU0OGVhYmM5Li44NWVkM2VlNjE3ZDhmYTI1YTYxNTI2OTRm
NzZjNDExZGJkZjZiNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEt
MDItMTcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHdGtdIHdlYmtpdF93ZWJf
dmlld19wb3B1cF9tZW51X2hhbmRsZXIgc2hvdWxkIGNhbGwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
bG9jYWxDYXJldFJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU0NjMzCisKKyAgICAgICAgUmVtb3ZlIHVzZSBvZiBsZWdhY3kgZWRpdGluZyBwb3Np
dGlvbnMgd2hlbiBwb3NpdGlvbmluZyBrZXlib2FyZC1kcml2ZW4gY29udGV4dAorICAgICAgICBt
ZW51cy4gU2ltcGxpZnkgdGhlIGNvZGUgZ3JlYXRseS4KKworICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKGdldExvY2F0aW9uRm9yS2V5Ym9hcmRHZW5lcmF0ZWRD
b250ZXh0TWVudSk6IEFkZGVkIHRoaXMgaGVscGVyIHdoaWNoIGNhbGN1bGF0ZXMKKyAgICAgICAg
dGhlIGNvbnRleHQgbWVudSBwb3NpdGlvbi4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19wb3B1
cF9tZW51X2hhbmRsZXIpOiBTaW1wbGlmeSBjb2RlIHByZXZlbnRpbmcgdGhlIG1lbnUgZnJvbSBi
dW1waW5nCisgICAgICAgIGludG8gdGhlIGVkZ2VzIG9mIHRoZSB2aWV3LiBSZW1vdmUgKDAsLTEp
IGhhY2sgYXMgaXQgbm8gbG9uZ2VyIHNlZW1zIHRvIGJlIGltcG9ydGFudC4KKwogMjAxMS0wMi0x
NiAgSm9vbmUgSHVyICA8am9vbmUuaHVyQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKaW5kZXggZDJiMGFlMGViNzJiOWUxMTNlMjgzZDkxNWFmYjY5MDdjNDQ0YzJjNC4uNTQ0
YjllOWFkMGU4Mjk2NjU3YmY4ZjY3M2Y0ZDliOWU3MzNmNTQxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMzgwLDg0ICszODAsNDEgQEAgc3RhdGlj
IGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWUKICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGNvbnN0IGlu
dCBnQ29udGV4dE1lbnVNYXJnaW4gPSAxOworc3RhdGljIEludFBvaW50IGdldExvY2F0aW9uRm9y
S2V5Ym9hcmRHZW5lcmF0ZWRDb250ZXh0TWVudShGcmFtZSogZnJhbWUpCit7CisgICAgU2VsZWN0
aW9uQ29udHJvbGxlciogc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpOworICAgIGlmICgh
c2VsZWN0aW9uLT5zdGFydCgpLm5vZGUoKSB8fCAhc2VsZWN0aW9uLT5lbmQoKS5ub2RlKCkKKyAg
ICAgICAgIHx8IChzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmlzQ2FyZXQoKSAmJiAhc2VsZWN0aW9u
LT5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKSkgeworICAgICAgICBpZiAoTm9kZSog
Zm9jdXNlZE5vZGUgPSBnZXRGb2N1c2VkTm9kZShmcmFtZSkpCisgICAgICAgICAgICByZXR1cm4g
Zm9jdXNlZE5vZGUtPmdldFJlY3QoKS5sb2NhdGlvbigpOworCisgICAgICAgIC8vIFRoZXJlIHdh
cyBubyBzZWxlY3Rpb24gYW5kIG5vIGZvY3VzZWQgbm9kZSwgc28ganVzdCBwdXQgdGhlIGNvbnRl
eHQKKyAgICAgICAgLy8gbWVudSBpbnRvIHRoZSBjb3JuZXIgb2YgdGhlIHZpZXcsIG9mZnNldCBz
bGlnaHRseS4KKyAgICAgICAgcmV0dXJuIEludFBvaW50KGdDb250ZXh0TWVudU1hcmdpbiwgZ0Nv
bnRleHRNZW51TWFyZ2luKTsKKyAgICB9CisKKyAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IGZyYW1l
LT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2Uoc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS5maXJz
dFJhbmdlKCkuZ2V0KCkpOworICAgIHJldHVybiBJbnRQb2ludChmaXJzdFJlY3QueCgpLCBmaXJz
dFJlY3QubWF4WSgpKTsKK30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19wb3B1
cF9tZW51X2hhbmRsZXIoR3RrV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGlu
dCBjb250ZXh0TWVudU1hcmdpbiA9IDE7CisgICAgRnJhbWUqIGZyYW1lID0gY29yZShXRUJLSVRf
V0VCX1ZJRVcod2lkZ2V0KSktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKKyAgICBJbnRQb2ludCBsb2NhdGlvbiA9IGdldExvY2F0aW9uRm9yS2V5Ym9hcmRHZW5lcmF0
ZWRDb250ZXh0TWVudShmcmFtZSk7CiAKLSAgICAvLyBUaGUgY29udGV4dCBtZW51IGV2ZW50IHdh
cyBnZW5lcmF0ZWQgZnJvbSB0aGUga2V5Ym9hcmQsIHNvIHNob3cgdGhlIGNvbnRleHQgbWVudSBi
eSB0aGUgY3VycmVudCBzZWxlY3Rpb24uCi0gICAgUGFnZSogcGFnZSA9IGNvcmUoV0VCS0lUX1dF
Ql9WSUVXKHdpZGdldCkpOwotICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+
dmlldygpOwogICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIEZBTFNFOyAgICAKLQotICAg
IFBvc2l0aW9uIHN0YXJ0ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zdGFydCgp
OwotICAgIFBvc2l0aW9uIGVuZCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuZW5k
KCk7Ci0KLSAgICBpbnQgcmlnaHRBbGlnbmVkID0gRkFMU0U7Ci0gICAgSW50UG9pbnQgbG9jYXRp
b247Ci0KLSAgICBpZiAoIXN0YXJ0Lm5vZGUoKSB8fCAhZW5kLm5vZGUoKQotICAgICAgICB8fCAo
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgIWZyYW1lLT5zZWxl
Y3Rpb24oKS0+c2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkpIHsKLSAgICAgICAgLy8g
SWYgdGhlcmUncyBhIGZvY3VzZWQgZWxtZW50LCB1c2UgaXRzIGxvY2F0aW9uLgotICAgICAgICBp
ZiAoTm9kZSogZm9jdXNlZE5vZGUgPSBnZXRGb2N1c2VkTm9kZShmcmFtZSkpIHsKLSAgICAgICAg
ICAgIEludFJlY3QgZm9jdXNlZE5vZGVSZWN0ID0gZm9jdXNlZE5vZGUtPmdldFJlY3QoKTsKLSAg
ICAgICAgICAgIGxvY2F0aW9uID0gSW50UG9pbnQocmlnaHRBbGlnbmVkID8gZm9jdXNlZE5vZGVS
ZWN0Lm1heFgoKSA6IGZvY3VzZWROb2RlUmVjdC54KCksIGZvY3VzZWROb2RlUmVjdC5tYXhZKCkp
OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGxvY2F0aW9uID0gSW50UG9pbnQocmlnaHRB
bGlnbmVkID8gdmlldy0+Y29udGVudHNXaWR0aCgpIC0gY29udGV4dE1lbnVNYXJnaW4gOiBjb250
ZXh0TWVudU1hcmdpbiwgY29udGV4dE1lbnVNYXJnaW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydC5ub2RlKCktPnJlbmRlcmVyKCk7Ci0gICAg
ICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0KLSAgICAgICAg
Ly8gQ2FsY3VsYXRlIHRoZSByZWN0IG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzZWxlY3Rpb24g
KGNyaWJiZWQgZnJvbSAtW1dlYkNvcmVGcmFtZUJyaWRnZSBmaXJzdFJlY3RGb3JET01SYW5nZTpd
LAotICAgICAgICAvLyBub3cgRnJhbWU6OmZpcnN0UmVjdEZvclJhbmdlKCksIHdoaWNoIHBlcmhh
cHMgdGhpcyBzaG91bGQgY2FsbCkuCi0gICAgICAgIGludCBleHRyYVdpZHRoVG9FbmRPZkxpbmUg
PSAwOwotCi0gICAgICAgIElubGluZUJveCogc3RhcnRJbmxpbmVCb3g7Ci0gICAgICAgIGludCBz
dGFydENhcmV0T2Zmc2V0OwotICAgICAgICBzdGFydC5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoRE9X
TlNUUkVBTSwgc3RhcnRJbmxpbmVCb3gsIHN0YXJ0Q2FyZXRPZmZzZXQpOwotICAgICAgICBJbnRS
ZWN0IHN0YXJ0Q2FyZXRSZWN0ID0gcmVuZGVyZXItPmxvY2FsQ2FyZXRSZWN0KHN0YXJ0SW5saW5l
Qm94LCBzdGFydENhcmV0T2Zmc2V0LCAmZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKLSAgICAgICAg
aWYgKHN0YXJ0Q2FyZXRSZWN0ICE9IEludFJlY3QoKSkKLSAgICAgICAgICAgIHN0YXJ0Q2FyZXRS
ZWN0ID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHN0YXJ0Q2FyZXRS
ZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKLQotICAgICAgICBJbmxpbmVCb3gqIGVuZElu
bGluZUJveDsKLSAgICAgICAgaW50IGVuZENhcmV0T2Zmc2V0OwotICAgICAgICBlbmQuZ2V0SW5s
aW5lQm94QW5kT2Zmc2V0KFVQU1RSRUFNLCBlbmRJbmxpbmVCb3gsIGVuZENhcmV0T2Zmc2V0KTsK
LSAgICAgICAgSW50UmVjdCBlbmRDYXJldFJlY3QgPSByZW5kZXJlci0+bG9jYWxDYXJldFJlY3Qo
ZW5kSW5saW5lQm94LCBlbmRDYXJldE9mZnNldCk7Ci0gICAgICAgIGlmIChlbmRDYXJldFJlY3Qg
IT0gSW50UmVjdCgpKQotICAgICAgICAgICAgZW5kQ2FyZXRSZWN0ID0gcmVuZGVyZXItPmxvY2Fs
VG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGVuZENhcmV0UmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5n
Qm94KCk7Ci0KLSAgICAgICAgSW50UmVjdCBmaXJzdFJlY3Q7Ci0gICAgICAgIGlmIChzdGFydENh
cmV0UmVjdC55KCkgPT0gZW5kQ2FyZXRSZWN0LnkoKSkKLSAgICAgICAgICAgIGZpcnN0UmVjdCA9
IEludFJlY3QoTUlOKHN0YXJ0Q2FyZXRSZWN0LngoKSwgZW5kQ2FyZXRSZWN0LngoKSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q2FyZXRSZWN0LnkoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWJzKGVuZENhcmV0UmVjdC54KCkgLSBzdGFydENhcmV0
UmVjdC54KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVgoc3RhcnRDYXJl
dFJlY3QuaGVpZ2h0KCksIGVuZENhcmV0UmVjdC5oZWlnaHQoKSkpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBmaXJzdFJlY3QgPSBJbnRSZWN0KHN0YXJ0Q2FyZXRSZWN0LngoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXJldFJlY3QueSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhcmV0UmVjdC53aWR0aCgpICsgZXh0cmFXaWR0
aFRvRW5kT2ZMaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhcmV0
UmVjdC5oZWlnaHQoKSk7Ci0KLSAgICAgICAgbG9jYXRpb24gPSBJbnRQb2ludChyaWdodEFsaWdu
ZWQgPyBmaXJzdFJlY3QubWF4WCgpIDogZmlyc3RSZWN0LngoKSwgZmlyc3RSZWN0Lm1heFkoKSk7
Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFRoZSBJbnRTaXplKDAsIC0xKSBpcyBhIGhhY2sgdG8g
Z2V0IHRoZSBoaXQtdGVzdGluZyB0byByZXN1bHQgaW4gdGhlIHNlbGVjdGVkIGVsZW1lbnQuCi0g
ICAgLy8gSWRlYWxseSB3ZSdkIGhhdmUgdGhlIHBvc2l0aW9uIG9mIGEgY29udGV4dCBtZW51IGV2
ZW50IGJlIHNlcGFyYXRlIGZyb20gaXRzIHRhcmdldCBub2RlLgotICAgIGxvY2F0aW9uID0gdmll
dy0+Y29udGVudHNUb1dpbmRvdyhsb2NhdGlvbikgKyBJbnRTaXplKDAsIC0xKTsKLSAgICBpZiAo
bG9jYXRpb24ueSgpIDwgMCkKLSAgICAgICAgbG9jYXRpb24uc2V0WShjb250ZXh0TWVudU1hcmdp
bik7Ci0gICAgZWxzZSBpZiAobG9jYXRpb24ueSgpID4gdmlldy0+aGVpZ2h0KCkpCi0gICAgICAg
IGxvY2F0aW9uLnNldFkodmlldy0+aGVpZ2h0KCkgLSBjb250ZXh0TWVudU1hcmdpbik7Ci0gICAg
aWYgKGxvY2F0aW9uLngoKSA8IDApCi0gICAgICAgIGxvY2F0aW9uLnNldFgoY29udGV4dE1lbnVN
YXJnaW4pOwotICAgIGVsc2UgaWYgKGxvY2F0aW9uLngoKSA+IHZpZXctPndpZHRoKCkpCi0gICAg
ICAgIGxvY2F0aW9uLnNldFgodmlldy0+d2lkdGgoKSAtIGNvbnRleHRNZW51TWFyZ2luKTsKLSAg
ICBJbnRQb2ludCBnbG9iYWwoZ2xvYmFsUG9pbnRGb3JDbGllbnRQb2ludChndGtfd2lkZ2V0X2dl
dF93aW5kb3cod2lkZ2V0KSwgbG9jYXRpb24pKTsKLQotICAgIFBsYXRmb3JtTW91c2VFdmVudCBl
dmVudChsb2NhdGlvbiwgZ2xvYmFsLCBSaWdodEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIDAs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBndGtfZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSgp
KTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOwogCisgICAgLy8gTmV2ZXIgbGV0IHRoZSBjb250ZXh0
IG1lbnUgYWJ1dCB2ZXJ5IGVkZ2Ugb2YgdGhlIHZpZXcuCisgICAgbG9jYXRpb24gPSB2aWV3LT5j
b250ZW50c1RvV2luZG93KGxvY2F0aW9uKTsKKyAgICBsb2NhdGlvbi5zZXRZKG1heChnQ29udGV4
dE1lbnVNYXJnaW4sIGxvY2F0aW9uLnkoKSkpOworICAgIGxvY2F0aW9uLnNldFkobWluKHZpZXct
PmhlaWdodCgpIC0gZ0NvbnRleHRNZW51TWFyZ2luLCBsb2NhdGlvbi55KCkpKTsKKyAgICBsb2Nh
dGlvbi5zZXRYKG1heChnQ29udGV4dE1lbnVNYXJnaW4sIGxvY2F0aW9uLngoKSkpOworICAgIGxv
Y2F0aW9uLnNldFgobWluKHZpZXctPndpZHRoKCkgLSBnQ29udGV4dE1lbnVNYXJnaW4sIGxvY2F0
aW9uLngoKSkpOworICAgIEludFBvaW50IGdsb2JhbFBvaW50KGdsb2JhbFBvaW50Rm9yQ2xpZW50
UG9pbnQoZ3RrX3dpZGdldF9nZXRfd2luZG93KHdpZGdldCksIGxvY2F0aW9uKSk7CisgICAgUGxh
dGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGxvY2F0aW9uLCBnbG9iYWxQb2ludCwgUmlnaHRCdXR0b24s
IE1vdXNlRXZlbnRQcmVzc2VkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZ3RrX2dl
dF9jdXJyZW50X2V2ZW50X3RpbWUoKSk7CiAgICAgcmV0dXJuIHdlYmtpdF93ZWJfdmlld19mb3J3
YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSwgZXZlbnQpOwog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84426</attachid>
            <date>2011-03-02 09:25:00 -0800</date>
            <delta_ts>2011-03-25 16:10:01 -0700</delta_ts>
            <desc>Patch with rniwa&apos;s suggestions</desc>
            <filename>bug-54633-20110302092459.patch</filename>
            <type>text/plain</type>
            <size>7535</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAxMzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAzYTFhZDJlODI4
NGY0NTllNDgzZjU0ODk4NGJiZGJmMDNjNDA4MjU5Li4wOGJjOWUwMGYxMDdlNjAxZTE4NGFhMDg0
ZDVjNDZmYmMyZmFlNjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEt
MDItMTcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHdGtdIHdlYmtpdF93ZWJf
dmlld19wb3B1cF9tZW51X2hhbmRsZXIgc2hvdWxkIGNhbGwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
bG9jYWxDYXJldFJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU0NjMzCisKKyAgICAgICAgUmVtb3ZlIHVzZSBvZiBsZWdhY3kgZWRpdGluZyBwb3Np
dGlvbnMgd2hlbiBwb3NpdGlvbmluZyBrZXlib2FyZC1kcml2ZW4gY29udGV4dAorICAgICAgICBt
ZW51cy4gU2ltcGxpZnkgdGhlIGNvZGUgZ3JlYXRseS4KKworICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKGdldExvY2F0aW9uRm9yS2V5Ym9hcmRHZW5lcmF0ZWRD
b250ZXh0TWVudSk6IEFkZGVkIHRoaXMgaGVscGVyIHdoaWNoIGNhbGN1bGF0ZXMKKyAgICAgICAg
dGhlIGNvbnRleHQgbWVudSBwb3NpdGlvbi4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19wb3B1
cF9tZW51X2hhbmRsZXIpOiBTaW1wbGlmeSBjb2RlIHByZXZlbnRpbmcgdGhlIG1lbnUgZnJvbSBi
dW1waW5nCisgICAgICAgIGludG8gdGhlIGVkZ2VzIG9mIHRoZSB2aWV3LiBSZW1vdmUgKDAsLTEp
IGhhY2sgYXMgaXQgbm8gbG9uZ2VyIHNlZW1zIHRvIGJlIGltcG9ydGFudC4KKwogMjAxMS0wMy0w
MSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuIFJvbGwgb3V0IHI4MDA2OCBhbmQgcjgwMDczIGR1ZSB0byBicmVha2luZyBXZWJLaXQy
IFF0IHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5k
ZXggNzk2NjVhOTE0NTY3YjM3Zjg1YjkxOTU4YjhlMmU1NzcxZjVkM2FjYi4uYmM1M2JlNTAyNzAx
OWJmYzI2ZjVjM2Y4MzVkMWQzODc2MDBmYjU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMzgwLDg0ICszODAsNDQgQEAgc3RhdGljIGdib29sZWFu
IHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWUKICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGNvbnN0IGludCBnQ29udGV4
dE1lbnVNYXJnaW4gPSAxOworc3RhdGljIEludFBvaW50IGdldExvY2F0aW9uRm9yS2V5Ym9hcmRH
ZW5lcmF0ZWRDb250ZXh0TWVudShGcmFtZSogZnJhbWUpCit7CisgICAgU2VsZWN0aW9uQ29udHJv
bGxlciogc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpOworICAgIGlmICghc2VsZWN0aW9u
LT5zZWxlY3Rpb24oKS5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkKKyAgICAgICAgIHx8IChz
ZWxlY3Rpb24tPnNlbGVjdGlvbigpLmlzQ2FyZXQoKSAmJiAhc2VsZWN0aW9uLT5zZWxlY3Rpb24o
KS5pc0NvbnRlbnRFZGl0YWJsZSgpKSkgeworICAgICAgICBpZiAoTm9kZSogZm9jdXNlZE5vZGUg
PSBnZXRGb2N1c2VkTm9kZShmcmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZm9jdXNlZE5vZGUt
PmdldFJlY3QoKS5sb2NhdGlvbigpOworCisgICAgICAgIC8vIFRoZXJlIHdhcyBubyBzZWxlY3Rp
b24gYW5kIG5vIGZvY3VzZWQgbm9kZSwgc28ganVzdCBwdXQgdGhlIGNvbnRleHQKKyAgICAgICAg
Ly8gbWVudSBpbnRvIHRoZSBjb3JuZXIgb2YgdGhlIHZpZXcsIG9mZnNldCBzbGlnaHRseS4KKyAg
ICAgICAgcmV0dXJuIEludFBvaW50KGdDb250ZXh0TWVudU1hcmdpbiwgZ0NvbnRleHRNZW51TWFy
Z2luKTsKKyAgICB9CisKKyAgICAvLyBzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmZpcnN0UmFuZ2Ug
Y2FuIHJldHVybiAwIGhlcmUsIGJ1dCBpZiB0aGF0IHdhcyB0aGUgY2FzZQorICAgIC8vIHNlbGVj
dGlvbi0+c2VsZWN0aW9uKCkuaXNOb25PcnBoYW5lZENhcmV0T3JSYW5nZSgpIHdvdWxkIGhhdmUg
cmV0dXJuZWQgZmFsc2UKKyAgICAvLyBhYm92ZSwgc28gd2UgZG8gbm90IGhhdmUgdG8gY2hlY2sg
aXQuCisgICAgSW50UmVjdCBmaXJzdFJlY3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZv
clJhbmdlKHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpLmdldCgpKTsKKyAgICBy
ZXR1cm4gSW50UG9pbnQoZmlyc3RSZWN0LngoKSwgZmlyc3RSZWN0Lm1heFkoKSk7Cit9CisKIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9oYW5kbGVyKEd0a1dpZGdl
dCogd2lkZ2V0KQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgY29udGV4dE1lbnVNYXJnaW4gPSAx
OworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCkpLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgSW50UG9pbnQgbG9jYXRp
b24gPSBnZXRMb2NhdGlvbkZvcktleWJvYXJkR2VuZXJhdGVkQ29udGV4dE1lbnUoZnJhbWUpOwog
Ci0gICAgLy8gVGhlIGNvbnRleHQgbWVudSBldmVudCB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGtl
eWJvYXJkLCBzbyBzaG93IHRoZSBjb250ZXh0IG1lbnUgYnkgdGhlIGN1cnJlbnQgc2VsZWN0aW9u
LgotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKFdFQktJVF9XRUJfVklFVyh3aWRnZXQpKTsKLSAgICBG
cmFtZSogZnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcp
Ci0gICAgICAgIHJldHVybiBGQUxTRTsgICAgCi0KLSAgICBQb3NpdGlvbiBzdGFydCA9IGZyYW1l
LT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuc3RhcnQoKTsKLSAgICBQb3NpdGlvbiBlbmQgPSBm
cmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLmVuZCgpOwotCi0gICAgaW50IHJpZ2h0QWxp
Z25lZCA9IEZBTFNFOwotICAgIEludFBvaW50IGxvY2F0aW9uOwotCi0gICAgaWYgKCFzdGFydC5k
ZXByZWNhdGVkTm9kZSgpIHx8ICFlbmQuZGVwcmVjYXRlZE5vZGUoKQotICAgICAgICB8fCAoZnJh
bWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgIWZyYW1lLT5zZWxlY3Rp
b24oKS0+c2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkpIHsKLSAgICAgICAgLy8gSWYg
dGhlcmUncyBhIGZvY3VzZWQgZWxtZW50LCB1c2UgaXRzIGxvY2F0aW9uLgotICAgICAgICBpZiAo
Tm9kZSogZm9jdXNlZE5vZGUgPSBnZXRGb2N1c2VkTm9kZShmcmFtZSkpIHsKLSAgICAgICAgICAg
IEludFJlY3QgZm9jdXNlZE5vZGVSZWN0ID0gZm9jdXNlZE5vZGUtPmdldFJlY3QoKTsKLSAgICAg
ICAgICAgIGxvY2F0aW9uID0gSW50UG9pbnQocmlnaHRBbGlnbmVkID8gZm9jdXNlZE5vZGVSZWN0
Lm1heFgoKSA6IGZvY3VzZWROb2RlUmVjdC54KCksIGZvY3VzZWROb2RlUmVjdC5tYXhZKCkpOwot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGxvY2F0aW9uID0gSW50UG9pbnQocmlnaHRBbGln
bmVkID8gdmlldy0+Y29udGVudHNXaWR0aCgpIC0gY29udGV4dE1lbnVNYXJnaW4gOiBjb250ZXh0
TWVudU1hcmdpbiwgY29udGV4dE1lbnVNYXJnaW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigp
OwotICAgICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotCi0g
ICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgcmVjdCBvZiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgc2Vs
ZWN0aW9uIChjcmliYmVkIGZyb20gLVtXZWJDb3JlRnJhbWVCcmlkZ2UgZmlyc3RSZWN0Rm9yRE9N
UmFuZ2U6XSwKLSAgICAgICAgLy8gbm93IEZyYW1lOjpmaXJzdFJlY3RGb3JSYW5nZSgpLCB3aGlj
aCBwZXJoYXBzIHRoaXMgc2hvdWxkIGNhbGwpLgotICAgICAgICBpbnQgZXh0cmFXaWR0aFRvRW5k
T2ZMaW5lID0gMDsKLQotICAgICAgICBJbmxpbmVCb3gqIHN0YXJ0SW5saW5lQm94OwotICAgICAg
ICBpbnQgc3RhcnRDYXJldE9mZnNldDsKLSAgICAgICAgc3RhcnQuZ2V0SW5saW5lQm94QW5kT2Zm
c2V0KERPV05TVFJFQU0sIHN0YXJ0SW5saW5lQm94LCBzdGFydENhcmV0T2Zmc2V0KTsKLSAgICAg
ICAgSW50UmVjdCBzdGFydENhcmV0UmVjdCA9IHJlbmRlcmVyLT5sb2NhbENhcmV0UmVjdChzdGFy
dElubGluZUJveCwgc3RhcnRDYXJldE9mZnNldCwgJmV4dHJhV2lkdGhUb0VuZE9mTGluZSk7Ci0g
ICAgICAgIGlmIChzdGFydENhcmV0UmVjdCAhPSBJbnRSZWN0KCkpCi0gICAgICAgICAgICBzdGFy
dENhcmV0UmVjdCA9IHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChzdGFy
dENhcmV0UmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7Ci0KLSAgICAgICAgSW5saW5lQm94
KiBlbmRJbmxpbmVCb3g7Ci0gICAgICAgIGludCBlbmRDYXJldE9mZnNldDsKLSAgICAgICAgZW5k
LmdldElubGluZUJveEFuZE9mZnNldChVUFNUUkVBTSwgZW5kSW5saW5lQm94LCBlbmRDYXJldE9m
ZnNldCk7Ci0gICAgICAgIEludFJlY3QgZW5kQ2FyZXRSZWN0ID0gcmVuZGVyZXItPmxvY2FsQ2Fy
ZXRSZWN0KGVuZElubGluZUJveCwgZW5kQ2FyZXRPZmZzZXQpOwotICAgICAgICBpZiAoZW5kQ2Fy
ZXRSZWN0ICE9IEludFJlY3QoKSkKLSAgICAgICAgICAgIGVuZENhcmV0UmVjdCA9IHJlbmRlcmVy
LT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChlbmRDYXJldFJlY3QpKS5lbmNsb3NpbmdC
b3VuZGluZ0JveCgpOwotCi0gICAgICAgIEludFJlY3QgZmlyc3RSZWN0OwotICAgICAgICBpZiAo
c3RhcnRDYXJldFJlY3QueSgpID09IGVuZENhcmV0UmVjdC55KCkpCi0gICAgICAgICAgICBmaXJz
dFJlY3QgPSBJbnRSZWN0KE1JTihzdGFydENhcmV0UmVjdC54KCksIGVuZENhcmV0UmVjdC54KCkp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhcmV0UmVjdC55KCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicyhlbmRDYXJldFJlY3QueCgpIC0gc3Rh
cnRDYXJldFJlY3QueCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYKHN0
YXJ0Q2FyZXRSZWN0LmhlaWdodCgpLCBlbmRDYXJldFJlY3QuaGVpZ2h0KCkpKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZmlyc3RSZWN0ID0gSW50UmVjdChzdGFydENhcmV0UmVjdC54KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q2FyZXRSZWN0LnkoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXJldFJlY3Qud2lkdGgoKSArIGV4
dHJhV2lkdGhUb0VuZE9mTGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
cnRDYXJldFJlY3QuaGVpZ2h0KCkpOwotCi0gICAgICAgIGxvY2F0aW9uID0gSW50UG9pbnQocmln
aHRBbGlnbmVkID8gZmlyc3RSZWN0Lm1heFgoKSA6IGZpcnN0UmVjdC54KCksIGZpcnN0UmVjdC5t
YXhZKCkpOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBUaGUgSW50U2l6ZSgwLCAtMSkgaXMgYSBo
YWNrIHRvIGdldCB0aGUgaGl0LXRlc3RpbmcgdG8gcmVzdWx0IGluIHRoZSBzZWxlY3RlZCBlbGVt
ZW50LgotICAgIC8vIElkZWFsbHkgd2UnZCBoYXZlIHRoZSBwb3NpdGlvbiBvZiBhIGNvbnRleHQg
bWVudSBldmVudCBiZSBzZXBhcmF0ZSBmcm9tIGl0cyB0YXJnZXQgbm9kZS4KLSAgICBsb2NhdGlv
biA9IHZpZXctPmNvbnRlbnRzVG9XaW5kb3cobG9jYXRpb24pICsgSW50U2l6ZSgwLCAtMSk7Ci0g
ICAgaWYgKGxvY2F0aW9uLnkoKSA8IDApCi0gICAgICAgIGxvY2F0aW9uLnNldFkoY29udGV4dE1l
bnVNYXJnaW4pOwotICAgIGVsc2UgaWYgKGxvY2F0aW9uLnkoKSA+IHZpZXctPmhlaWdodCgpKQot
ICAgICAgICBsb2NhdGlvbi5zZXRZKHZpZXctPmhlaWdodCgpIC0gY29udGV4dE1lbnVNYXJnaW4p
OwotICAgIGlmIChsb2NhdGlvbi54KCkgPCAwKQotICAgICAgICBsb2NhdGlvbi5zZXRYKGNvbnRl
eHRNZW51TWFyZ2luKTsKLSAgICBlbHNlIGlmIChsb2NhdGlvbi54KCkgPiB2aWV3LT53aWR0aCgp
KQotICAgICAgICBsb2NhdGlvbi5zZXRYKHZpZXctPndpZHRoKCkgLSBjb250ZXh0TWVudU1hcmdp
bik7Ci0gICAgSW50UG9pbnQgZ2xvYmFsKGdsb2JhbFBvaW50Rm9yQ2xpZW50UG9pbnQoZ3RrX3dp
ZGdldF9nZXRfd2luZG93KHdpZGdldCksIGxvY2F0aW9uKSk7Ci0KLSAgICBQbGF0Zm9ybU1vdXNl
RXZlbnQgZXZlbnQobG9jYXRpb24sIGdsb2JhbCwgUmlnaHRCdXR0b24sIE1vdXNlRXZlbnRQcmVz
c2VkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZ3RrX2dldF9jdXJyZW50X2V2ZW50
X3RpbWUoKSk7CisgICAgICAgIHJldHVybiBGQUxTRTsKIAorICAgIC8vIE5ldmVyIGxldCB0aGUg
Y29udGV4dCBtZW51IGFidXQgdmVyeSBlZGdlIG9mIHRoZSB2aWV3LgorICAgIGxvY2F0aW9uID0g
dmlldy0+Y29udGVudHNUb1dpbmRvdyhsb2NhdGlvbik7CisgICAgbG9jYXRpb24uc2V0WShtYXgo
Z0NvbnRleHRNZW51TWFyZ2luLCBsb2NhdGlvbi55KCkpKTsKKyAgICBsb2NhdGlvbi5zZXRZKG1p
bih2aWV3LT5oZWlnaHQoKSAtIGdDb250ZXh0TWVudU1hcmdpbiwgbG9jYXRpb24ueSgpKSk7Cisg
ICAgbG9jYXRpb24uc2V0WChtYXgoZ0NvbnRleHRNZW51TWFyZ2luLCBsb2NhdGlvbi54KCkpKTsK
KyAgICBsb2NhdGlvbi5zZXRYKG1pbih2aWV3LT53aWR0aCgpIC0gZ0NvbnRleHRNZW51TWFyZ2lu
LCBsb2NhdGlvbi54KCkpKTsKKyAgICBJbnRQb2ludCBnbG9iYWxQb2ludChnbG9iYWxQb2ludEZv
ckNsaWVudFBvaW50KGd0a193aWRnZXRfZ2V0X3dpbmRvdyh3aWRnZXQpLCBsb2NhdGlvbikpOwor
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChsb2NhdGlvbiwgZ2xvYmFsUG9pbnQsIFJpZ2h0
QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOwogICAgIHJldHVybiB3ZWJraXRfd2ViX3Zp
ZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCksIGV2
ZW50KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86992</attachid>
            <date>2011-03-25 16:10:04 -0700</date>
            <delta_ts>2011-04-04 07:23:37 -0700</delta_ts>
            <desc>Patch simplifying context menu margin and modifying comment</desc>
            <filename>bug-54633-20110325161005.patch</filename>
            <type>text/plain</type>
            <size>7403</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE5OTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBiMDY4M2ZhOTRl
MzcyODA1YzBiY2UxMThlZjg5ZjQ1YTkwMTBmYWYzLi43OTZhNmMyN2ViYTAwZTlkNDJlOTE4ODgw
NzdlNjRhNDFmM2MwM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEt
MDItMTcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHdGtdIHdlYmtpdF93ZWJf
dmlld19wb3B1cF9tZW51X2hhbmRsZXIgc2hvdWxkIGNhbGwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
bG9jYWxDYXJldFJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU0NjMzCisKKyAgICAgICAgUmVtb3ZlIHVzZSBvZiBsZWdhY3kgZWRpdGluZyBwb3Np
dGlvbnMgd2hlbiBwb3NpdGlvbmluZyBrZXlib2FyZC1kcml2ZW4gY29udGV4dAorICAgICAgICBt
ZW51cy4gU2ltcGxpZnkgdGhlIGNvZGUgZ3JlYXRseS4KKworICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKGdldExvY2F0aW9uRm9yS2V5Ym9hcmRHZW5lcmF0ZWRD
b250ZXh0TWVudSk6IEFkZGVkIHRoaXMgaGVscGVyIHdoaWNoIGNhbGN1bGF0ZXMKKyAgICAgICAg
dGhlIGNvbnRleHQgbWVudSBwb3NpdGlvbi4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19wb3B1
cF9tZW51X2hhbmRsZXIpOiBTaW1wbGlmeSBjb2RlIHByZXZlbnRpbmcgdGhlIG1lbnUgZnJvbSBi
dW1waW5nCisgICAgICAgIGludG8gdGhlIGVkZ2VzIG9mIHRoZSB2aWV3LiBSZW1vdmUgKDAsLTEp
IGhhY2sgYXMgaXQgbm8gbG9uZ2VyIHNlZW1zIHRvIGJlIGltcG9ydGFudC4KKwogMjAxMS0wMy0y
NSAgUHJpaXQgTGFlcyAgPHBsYWVzQHBsYWVzLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBN
YXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAKaW5kZXggMTc2MzdjYzAzNTZiMjY5ZTQ0MTlmMDkxY2Y4NjQ1OWJkZmNjOTUzZS4uZWM5NWQ3
MDY4Mjg1ZWFhM2YwMmVlZDAxODFkMjMyMGVjZDk3ZDUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMzgxLDg0ICszODEsNDMgQEAgc3RhdGljIGdi
b29sZWFuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWUKICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGNvbnN0IGludCBn
Q29udGV4dE1lbnVNYXJnaW4gPSAxOworc3RhdGljIEludFBvaW50IGdldExvY2F0aW9uRm9yS2V5
Ym9hcmRHZW5lcmF0ZWRDb250ZXh0TWVudShGcmFtZSogZnJhbWUpCit7CisgICAgU2VsZWN0aW9u
Q29udHJvbGxlciogc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpOworICAgIGlmICghc2Vs
ZWN0aW9uLT5zZWxlY3Rpb24oKS5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkKKyAgICAgICAg
IHx8IChzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmlzQ2FyZXQoKSAmJiAhc2VsZWN0aW9uLT5zZWxl
Y3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKSkgeworICAgICAgICBpZiAoTm9kZSogZm9jdXNl
ZE5vZGUgPSBnZXRGb2N1c2VkTm9kZShmcmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZm9jdXNl
ZE5vZGUtPmdldFJlY3QoKS5sb2NhdGlvbigpOworCisgICAgICAgIC8vIFRoZXJlIHdhcyBubyBz
ZWxlY3Rpb24gYW5kIG5vIGZvY3VzZWQgbm9kZSwgc28ganVzdCBwdXQgdGhlIGNvbnRleHQKKyAg
ICAgICAgLy8gbWVudSBpbnRvIHRoZSBjb3JuZXIgb2YgdGhlIHZpZXcsIG9mZnNldCBzbGlnaHRs
eS4KKyAgICAgICAgcmV0dXJuIEludFBvaW50KGdDb250ZXh0TWVudU1hcmdpbiwgZ0NvbnRleHRN
ZW51TWFyZ2luKTsKKyAgICB9CisKKyAgICAvLyBzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmZpcnN0
UmFuZ2UgY2FuIHJldHVybiAwIGhlcmUsIGJ1dCBpZiB0aGF0IHdhcyB0aGUgY2FzZQorICAgIC8v
IHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuaXNOb25PcnBoYW5lZENhcmV0T3JSYW5nZSgpIHdvdWxk
IGhhdmUgcmV0dXJuZWQgZmFsc2UKKyAgICAvLyBhYm92ZSwgc28gd2UgZG8gbm90IGhhdmUgdG8g
Y2hlY2sgaXQuCisgICAgSW50UmVjdCBmaXJzdFJlY3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0
UmVjdEZvclJhbmdlKHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpLmdldCgpKTsK
KyAgICByZXR1cm4gSW50UG9pbnQoZmlyc3RSZWN0LngoKSwgZmlyc3RSZWN0Lm1heFkoKSk7Cit9
CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9oYW5kbGVyKEd0
a1dpZGdldCogd2lkZ2V0KQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgY29udGV4dE1lbnVNYXJn
aW4gPSAxOworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCkp
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgSW50UG9pbnQg
bG9jYXRpb24gPSBnZXRMb2NhdGlvbkZvcktleWJvYXJkR2VuZXJhdGVkQ29udGV4dE1lbnUoZnJh
bWUpOwogCi0gICAgLy8gVGhlIGNvbnRleHQgbWVudSBldmVudCB3YXMgZ2VuZXJhdGVkIGZyb20g
dGhlIGtleWJvYXJkLCBzbyBzaG93IHRoZSBjb250ZXh0IG1lbnUgYnkgdGhlIGN1cnJlbnQgc2Vs
ZWN0aW9uLgotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKFdFQktJVF9XRUJfVklFVyh3aWRnZXQpKTsK
LSAgICBGcmFtZSogZnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICBpZiAo
IXZpZXcpCi0gICAgICAgIHJldHVybiBGQUxTRTsgICAgCi0KLSAgICBQb3NpdGlvbiBzdGFydCA9
IGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuc3RhcnQoKTsKLSAgICBQb3NpdGlvbiBl
bmQgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLmVuZCgpOwotCi0gICAgaW50IHJp
Z2h0QWxpZ25lZCA9IEZBTFNFOwotICAgIEludFBvaW50IGxvY2F0aW9uOwotCi0gICAgaWYgKCFz
dGFydC5kZXByZWNhdGVkTm9kZSgpIHx8ICFlbmQuZGVwcmVjYXRlZE5vZGUoKQotICAgICAgICB8
fCAoZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgIWZyYW1lLT5z
ZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkpIHsKLSAgICAgICAg
Ly8gSWYgdGhlcmUncyBhIGZvY3VzZWQgZWxtZW50LCB1c2UgaXRzIGxvY2F0aW9uLgotICAgICAg
ICBpZiAoTm9kZSogZm9jdXNlZE5vZGUgPSBnZXRGb2N1c2VkTm9kZShmcmFtZSkpIHsKLSAgICAg
ICAgICAgIEludFJlY3QgZm9jdXNlZE5vZGVSZWN0ID0gZm9jdXNlZE5vZGUtPmdldFJlY3QoKTsK
LSAgICAgICAgICAgIGxvY2F0aW9uID0gSW50UG9pbnQocmlnaHRBbGlnbmVkID8gZm9jdXNlZE5v
ZGVSZWN0Lm1heFgoKSA6IGZvY3VzZWROb2RlUmVjdC54KCksIGZvY3VzZWROb2RlUmVjdC5tYXhZ
KCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGxvY2F0aW9uID0gSW50UG9pbnQocmln
aHRBbGlnbmVkID8gdmlldy0+Y29udGVudHNXaWR0aCgpIC0gY29udGV4dE1lbnVNYXJnaW4gOiBj
b250ZXh0TWVudU1hcmdpbiwgY29udGV4dE1lbnVNYXJnaW4pOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5k
ZXJlcigpOwotICAgICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICAgICAgcmV0dXJuIEZBTFNF
OwotCi0gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgcmVjdCBvZiB0aGUgZmlyc3QgbGluZSBvZiB0
aGUgc2VsZWN0aW9uIChjcmliYmVkIGZyb20gLVtXZWJDb3JlRnJhbWVCcmlkZ2UgZmlyc3RSZWN0
Rm9yRE9NUmFuZ2U6XSwKLSAgICAgICAgLy8gbm93IEZyYW1lOjpmaXJzdFJlY3RGb3JSYW5nZSgp
LCB3aGljaCBwZXJoYXBzIHRoaXMgc2hvdWxkIGNhbGwpLgotICAgICAgICBpbnQgZXh0cmFXaWR0
aFRvRW5kT2ZMaW5lID0gMDsKLQotICAgICAgICBJbmxpbmVCb3gqIHN0YXJ0SW5saW5lQm94Owot
ICAgICAgICBpbnQgc3RhcnRDYXJldE9mZnNldDsKLSAgICAgICAgc3RhcnQuZ2V0SW5saW5lQm94
QW5kT2Zmc2V0KERPV05TVFJFQU0sIHN0YXJ0SW5saW5lQm94LCBzdGFydENhcmV0T2Zmc2V0KTsK
LSAgICAgICAgSW50UmVjdCBzdGFydENhcmV0UmVjdCA9IHJlbmRlcmVyLT5sb2NhbENhcmV0UmVj
dChzdGFydElubGluZUJveCwgc3RhcnRDYXJldE9mZnNldCwgJmV4dHJhV2lkdGhUb0VuZE9mTGlu
ZSk7Ci0gICAgICAgIGlmIChzdGFydENhcmV0UmVjdCAhPSBJbnRSZWN0KCkpCi0gICAgICAgICAg
ICBzdGFydENhcmV0UmVjdCA9IHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVj
dChzdGFydENhcmV0UmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7Ci0KLSAgICAgICAgSW5s
aW5lQm94KiBlbmRJbmxpbmVCb3g7Ci0gICAgICAgIGludCBlbmRDYXJldE9mZnNldDsKLSAgICAg
ICAgZW5kLmdldElubGluZUJveEFuZE9mZnNldChVUFNUUkVBTSwgZW5kSW5saW5lQm94LCBlbmRD
YXJldE9mZnNldCk7Ci0gICAgICAgIEludFJlY3QgZW5kQ2FyZXRSZWN0ID0gcmVuZGVyZXItPmxv
Y2FsQ2FyZXRSZWN0KGVuZElubGluZUJveCwgZW5kQ2FyZXRPZmZzZXQpOwotICAgICAgICBpZiAo
ZW5kQ2FyZXRSZWN0ICE9IEludFJlY3QoKSkKLSAgICAgICAgICAgIGVuZENhcmV0UmVjdCA9IHJl
bmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChlbmRDYXJldFJlY3QpKS5lbmNs
b3NpbmdCb3VuZGluZ0JveCgpOwotCi0gICAgICAgIEludFJlY3QgZmlyc3RSZWN0OwotICAgICAg
ICBpZiAoc3RhcnRDYXJldFJlY3QueSgpID09IGVuZENhcmV0UmVjdC55KCkpCi0gICAgICAgICAg
ICBmaXJzdFJlY3QgPSBJbnRSZWN0KE1JTihzdGFydENhcmV0UmVjdC54KCksIGVuZENhcmV0UmVj
dC54KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhcmV0UmVjdC55
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicyhlbmRDYXJldFJlY3QueCgp
IC0gc3RhcnRDYXJldFJlY3QueCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TUFYKHN0YXJ0Q2FyZXRSZWN0LmhlaWdodCgpLCBlbmRDYXJldFJlY3QuaGVpZ2h0KCkpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZmlyc3RSZWN0ID0gSW50UmVjdChzdGFydENhcmV0UmVj
dC54KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q2FyZXRSZWN0Lnko
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXJldFJlY3Qud2lkdGgo
KSArIGV4dHJhV2lkdGhUb0VuZE9mTGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhcnRDYXJldFJlY3QuaGVpZ2h0KCkpOwotCi0gICAgICAgIGxvY2F0aW9uID0gSW50UG9p
bnQocmlnaHRBbGlnbmVkID8gZmlyc3RSZWN0Lm1heFgoKSA6IGZpcnN0UmVjdC54KCksIGZpcnN0
UmVjdC5tYXhZKCkpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgLy8gRklY
TUU6IFRoZSBJbnRTaXplKDAsIC0xKSBpcyBhIGhhY2sgdG8gZ2V0IHRoZSBoaXQtdGVzdGluZyB0
byByZXN1bHQgaW4gdGhlIHNlbGVjdGVkIGVsZW1lbnQuCi0gICAgLy8gSWRlYWxseSB3ZSdkIGhh
dmUgdGhlIHBvc2l0aW9uIG9mIGEgY29udGV4dCBtZW51IGV2ZW50IGJlIHNlcGFyYXRlIGZyb20g
aXRzIHRhcmdldCBub2RlLgotICAgIGxvY2F0aW9uID0gdmlldy0+Y29udGVudHNUb1dpbmRvdyhs
b2NhdGlvbikgKyBJbnRTaXplKDAsIC0xKTsKLSAgICBpZiAobG9jYXRpb24ueSgpIDwgMCkKLSAg
ICAgICAgbG9jYXRpb24uc2V0WShjb250ZXh0TWVudU1hcmdpbik7Ci0gICAgZWxzZSBpZiAobG9j
YXRpb24ueSgpID4gdmlldy0+aGVpZ2h0KCkpCi0gICAgICAgIGxvY2F0aW9uLnNldFkodmlldy0+
aGVpZ2h0KCkgLSBjb250ZXh0TWVudU1hcmdpbik7Ci0gICAgaWYgKGxvY2F0aW9uLngoKSA8IDAp
Ci0gICAgICAgIGxvY2F0aW9uLnNldFgoY29udGV4dE1lbnVNYXJnaW4pOwotICAgIGVsc2UgaWYg
KGxvY2F0aW9uLngoKSA+IHZpZXctPndpZHRoKCkpCi0gICAgICAgIGxvY2F0aW9uLnNldFgodmll
dy0+d2lkdGgoKSAtIGNvbnRleHRNZW51TWFyZ2luKTsKLSAgICBJbnRQb2ludCBnbG9iYWwoZ2xv
YmFsUG9pbnRGb3JDbGllbnRQb2ludChndGtfd2lkZ2V0X2dldF93aW5kb3cod2lkZ2V0KSwgbG9j
YXRpb24pKTsKLQotICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChsb2NhdGlvbiwgZ2xvYmFs
LCBSaWdodEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBndGtfZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSgpKTsKKyAgICAvLyBOZXZlciBsZXQg
dGhlIGNvbnRleHQgbWVudSB0b3VjaCB0aGUgdmVyeSBlZGdlIG9mIHRoZSB2aWV3LgorICAgIGxv
Y2F0aW9uID0gdmlldy0+Y29udGVudHNUb1dpbmRvdyhsb2NhdGlvbik7CisgICAgbG9jYXRpb24u
ZXhwYW5kZWRUbyhJbnRQb2ludChnQ29udGV4dE1lbnVNYXJnaW4sIGdDb250ZXh0TWVudU1hcmdp
bikpOworICAgIGxvY2F0aW9uLnNocnVua1RvKEludFBvaW50KHZpZXctPndpZHRoKCkgLSBnQ29u
dGV4dE1lbnVNYXJnaW4sIHZpZXctPmhlaWdodCgpIC0gZ0NvbnRleHRNZW51TWFyZ2luKSk7CiAK
KyAgICBJbnRQb2ludCBnbG9iYWxQb2ludChnbG9iYWxQb2ludEZvckNsaWVudFBvaW50KGd0a193
aWRnZXRfZ2V0X3dpbmRvdyh3aWRnZXQpLCBsb2NhdGlvbikpOworICAgIFBsYXRmb3JtTW91c2VF
dmVudCBldmVudChsb2NhdGlvbiwgZ2xvYmFsUG9pbnQsIFJpZ2h0QnV0dG9uLCBNb3VzZUV2ZW50
UHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGd0a19nZXRfY3VycmVudF9l
dmVudF90aW1lKCkpOwogICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0
X21lbnVfZXZlbnQoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCksIGV2ZW50KTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>