<?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>33691</bug_id>
          
          <creation_ts>2010-01-14 15:01:05 -0800</creation_ts>
          <short_desc>Drag and Drop source/destination code needs cleanup</short_desc>
          <delta_ts>2010-01-14 16:08:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Brian Weinstein">bweinstein</reporter>
          <assigned_to name="Brian Weinstein">bweinstein</assigned_to>
          <cc>aroben</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>vicki</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>180945</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-01-14 15:01:05 -0800</bug_when>
    <thetext>Drag and Drop source/destination code needs cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180949</commentid>
    <comment_count>1</comment_count>
      <attachid>46611</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-01-14 15:01:39 -0800</bug_when>
    <thetext>Created attachment 46611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180954</commentid>
    <comment_count>2</comment_count>
      <attachid>46611</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 15:10:18 -0800</bug_when>
    <thetext>Comment on attachment 46611
Patch

&gt; -static DragOperation defaultOperationForDrag(DragOperation srcOpMask)
&gt; -{
&gt; -    // This is designed to match IE&apos;s operation fallback for the case where
&gt; -    // the page calls preventDefault() in a drag event but doesn&apos;t set dropEffect.
&gt; -    if (srcOpMask &amp; DragOperationCopy)
&gt; -         return DragOperationCopy;
&gt; -    if (srcOpMask &amp; DragOperationMove || srcOpMask &amp; DragOperationGeneric)
&gt; -        return DragOperationMove;
&gt; -    if (srcOpMask &amp; DragOperationLink)
&gt; -        return DragOperationLink;
&gt; -
&gt; -    // FIXME: Does IE really return &quot;generic&quot; even if no operations were allowed by the source?
&gt; -    return DragOperationGeneric;
&gt; -}
&gt; -
&gt;  bool DragController::tryDHTMLDrag(DragData* dragData, DragOperation&amp; operation)
&gt;  {
&gt;      ASSERT(dragData);
&gt; @@ -517,10 +502,8 @@ bool DragController::tryDHTMLDrag(DragDa
&gt;          return false;
&gt;      }
&gt;  
&gt; -    if (!clipboard-&gt;destinationOperation(operation)) {
&gt; -        // The element accepted but they didn&apos;t pick an operation, so we pick one (to match IE).
&gt; -        operation = defaultOperationForDrag(srcOpMask);
&gt; -    } else if (!(srcOpMask &amp; operation)) {
&gt; +    operation = clipboard-&gt;destinationOperation();
&gt; +    if (!(srcOpMask &amp; operation)) {
&gt;          // The element picked an operation which is not supported by the source
&gt;          operation = DragOperationNone;
&gt;      }

Is it really OK to make this change? Will we break websites that call preventDefault() but don&apos;t set dropEffect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180955</commentid>
    <comment_count>3</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-01-14 15:13:29 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 46611 [details])
&gt; &gt; -static DragOperation defaultOperationForDrag(DragOperation srcOpMask)
&gt; &gt; -{
&gt; &gt; -    // This is designed to match IE&apos;s operation fallback for the case where
&gt; &gt; -    // the page calls preventDefault() in a drag event but doesn&apos;t set dropEffect.
&gt; &gt; -    if (srcOpMask &amp; DragOperationCopy)
&gt; &gt; -         return DragOperationCopy;
&gt; &gt; -    if (srcOpMask &amp; DragOperationMove || srcOpMask &amp; DragOperationGeneric)
&gt; &gt; -        return DragOperationMove;
&gt; &gt; -    if (srcOpMask &amp; DragOperationLink)
&gt; &gt; -        return DragOperationLink;
&gt; &gt; -
&gt; &gt; -    // FIXME: Does IE really return &quot;generic&quot; even if no operations were allowed by the source?
&gt; &gt; -    return DragOperationGeneric;
&gt; &gt; -}
&gt; &gt; -
&gt; &gt;  bool DragController::tryDHTMLDrag(DragData* dragData, DragOperation&amp; operation)
&gt; &gt;  {
&gt; &gt;      ASSERT(dragData);
&gt; &gt; @@ -517,10 +502,8 @@ bool DragController::tryDHTMLDrag(DragDa
&gt; &gt;          return false;
&gt; &gt;      }
&gt; &gt;  
&gt; &gt; -    if (!clipboard-&gt;destinationOperation(operation)) {
&gt; &gt; -        // The element accepted but they didn&apos;t pick an operation, so we pick one (to match IE).
&gt; &gt; -        operation = defaultOperationForDrag(srcOpMask);
&gt; &gt; -    } else if (!(srcOpMask &amp; operation)) {
&gt; &gt; +    operation = clipboard-&gt;destinationOperation();
&gt; &gt; +    if (!(srcOpMask &amp; operation)) {
&gt; &gt;          // The element picked an operation which is not supported by the source
&gt; &gt;          operation = DragOperationNone;
&gt; &gt;      }
&gt; 
&gt; Is it really OK to make this change? Will we break websites that call
&gt; preventDefault() but don&apos;t set dropEffect?

That code will never be hit after r53287, because destinationOperation will never return false. This makes it compliant with the spec, but I haven&apos;t found any demos. I did have to make changes to some of our layout tests, that was why I had to roll out the change and roll it back in. I feel like being more compliant with the spec is important, but if there are a lot of websites that use drag and drop, then I could drop this change, and make some changes to r53287.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180956</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 15:16:13 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 46611 [details] [details])
&gt; &gt; Is it really OK to make this change? Will we break websites that call
&gt; &gt; preventDefault() but don&apos;t set dropEffect?
&gt; 
&gt; That code will never be hit after r53287, because destinationOperation will
&gt; never return false.

Ah, OK, so we&apos;ve already made this change. You&apos;re just removing dead code now.

&gt; This makes it compliant with the spec, but I haven&apos;t found
&gt; any demos. I did have to make changes to some of our layout tests, that was why
&gt; I had to roll out the change and roll it back in. I feel like being more
&gt; compliant with the spec is important, but if there are a lot of websites that
&gt; use drag and drop, then I could drop this change, and make some changes to
&gt; r53287.

We should try to find sites that rely on the old behavior. It might be useful to find out what sites were used to reverse-engineer IE&apos;s implementation in order to write WebKit&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180957</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-14 15:16:26 -0800</bug_when>
    <thetext>Attachment 46611 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/187684</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180966</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-14 15:28:06 -0800</bug_when>
    <thetext>Attachment 46611 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/186750</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180970</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 15:32:40 -0800</bug_when>
    <thetext>The old behavior was added in r6779: &lt;http://trac.webkit.org/changeset/6779#file10&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180972</commentid>
    <comment_count>8</comment_count>
      <attachid>46615</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-01-14 15:39:16 -0800</bug_when>
    <thetext>Created attachment 46615
Patch that works on Qt and Chromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180977</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 15:54:01 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; We should try to find sites that rely on the old behavior. It might be useful
&gt; to find out what sites were used to reverse-engineer IE&apos;s implementation in
&gt; order to write WebKit&apos;s.

Vicki Murley might remember!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180979</commentid>
    <comment_count>10</comment_count>
      <attachid>46615</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 15:56:19 -0800</bug_when>
    <thetext>Comment on attachment 46615
Patch that works on Qt and Chromium

&gt;  void Clipboard::setSourceOperation(DragOperation op)
&gt;  {
&gt; +    ASSERT(op != DragOperationPrivate);
&gt;      m_effectAllowed = IEOpFromDragOp(op);
&gt;  }
&gt;  
&gt;  void Clipboard::setDestinationOperation(DragOperation op)
&gt;  {
&gt; +    ASSERT(op == DragOperationCopy || op == DragOperationNone || op == DragOperationLink || op == DragOperationMove);
&gt;      m_dropEffect = IEOpFromDragOp(op);
&gt;  }

ASSERT_ARG would be better for these.

This looks fine to land. But I don&apos;t want to forget to find out if removing our old IE-compat code is going to bite us in the end. Maybe we should get a bug filed saying that we need to do more testing? (E.g., it would be useful to find out if IE even still has this behavior.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180985</commentid>
    <comment_count>11</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-01-14 16:08:06 -0800</bug_when>
    <thetext>Landed in r53296.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46611</attachid>
            <date>2010-01-14 15:01:39 -0800</date>
            <delta_ts>2010-01-14 15:39:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33691-20100114150133.patch</filename>
            <type>text/plain</type>
            <size>5470</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzI5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDEtMTQgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENsZWFuZWQgdXAgc29tZSBEcmFnIGFuZCBEcm9wIGNvZGUgdGhhdCBkZWFscyB3aXRoIGdl
dHRpbmcKKyAgICAgICAgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBvcGVyYXRpb25zLCBhbmQgYWRk
ZWQgc29tZSBBU1NFUlRTIHRvIG1ha2UKKyAgICAgICAgc3VyZSB3ZSBkb24ndCBnZXQgaW4gYmFk
IHN0YXRlcy4KKworICAgICAgICAqIGRvbS9DbGlwYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkOjpzb3VyY2VPcGVyYXRpb24pOiBNYWtlIHRoaXMgcmV0dXJuIHRoZSBvcGVy
YXRpb24gaXRzZWxmLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpkZXN0aW5hdGlvbk9w
ZXJhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpzZXRTb3VyY2VP
cGVyYXRpb24pOiBBZGQgYW4gYXNzZXJ0IHRvIG1ha2Ugc3VyZSB3ZSdyZSB2YWx1ZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6c2V0RGVzdGluYXRpb25PcGVyYXRpb24pOiBEaXR0by4K
KyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmg6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmhhbmRsZURyYWcpOgorCiAyMDEwLTAxLTE0ICBTdGVwaGVuIFdoaXRlICA8c2Vu
b3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IG1pdHpAd2Via2l0
Lm9yZy4KSW5kZXg6IFdlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vQ2xpcGJvYXJkLmNwcAkocmV2aXNpb24gNTMyODkpCisrKyBXZWJDb3JlL2RvbS9D
bGlwYm9hcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMjcgKzEwMCwyOSBAQCBzdGF0aWMg
U3RyaW5nIElFT3BGcm9tRHJhZ09wKERyYWdPcGVyYXRpCiAgICAgcmV0dXJuICJub25lIjsKIH0K
IAotYm9vbCBDbGlwYm9hcmQ6OnNvdXJjZU9wZXJhdGlvbihEcmFnT3BlcmF0aW9uJiBvcCkgY29u
c3QKK0RyYWdPcGVyYXRpb24gQ2xpcGJvYXJkOjpzb3VyY2VPcGVyYXRpb24oKSBjb25zdAogewot
ICAgIG9wID0gZHJhZ09wRnJvbUlFT3AobV9lZmZlY3RBbGxvd2VkKTsKKyAgICBEcmFnT3BlcmF0
aW9uIG9wID0gZHJhZ09wRnJvbUlFT3AobV9lZmZlY3RBbGxvd2VkKTsKICAgICBBU1NFUlQob3Ag
IT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBv
cDsKIH0KIAotYm9vbCBDbGlwYm9hcmQ6OmRlc3RpbmF0aW9uT3BlcmF0aW9uKERyYWdPcGVyYXRp
b24mIG9wKSBjb25zdAorRHJhZ09wZXJhdGlvbiBDbGlwYm9hcmQ6OmRlc3RpbmF0aW9uT3BlcmF0
aW9uKCkgY29uc3QKIHsKLSAgICBvcCA9IGRyYWdPcEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7Ci0g
ICAgQVNTRVJUKG9wID09IERyYWdPcGVyYXRpb25Db3B5IHx8IG9wID09IERyYWdPcGVyYXRpb25O
b25lIHx8IG9wID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wID09IERyYWdPcGVyYXRpb25Nb3Zl
KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBEcmFnT3BlcmF0aW9uIG9wID0gZHJhZ09wRnJvbUlF
T3AobV9kcm9wRWZmZWN0KTsKKyAgICBBU1NFUlQob3AgPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwg
b3AgPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwgb3AgPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3Ag
PT0gRHJhZ09wZXJhdGlvbkdlbmVyaWMpOworICAgIHJldHVybiBvcDsKIH0KIAogdm9pZCBDbGlw
Ym9hcmQ6OnNldFNvdXJjZU9wZXJhdGlvbihEcmFnT3BlcmF0aW9uIG9wKQogeworICAgIEFTU0VS
VChvcCAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CiAgICAgbV9lZmZlY3RBbGxvd2VkID0gSUVP
cEZyb21EcmFnT3Aob3ApOwogfQogCiB2b2lkIENsaXBib2FyZDo6c2V0RGVzdGluYXRpb25PcGVy
YXRpb24oRHJhZ09wZXJhdGlvbiBvcCkKIHsKKyAgICBBU1NFUlQob3AgPT0gRHJhZ09wZXJhdGlv
bkNvcHkgfHwgb3AgPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwgb3AgPT0gRHJhZ09wZXJhdGlvbkxp
bmsgfHwgb3AgPT0gRHJhZ09wZXJhdGlvbk1vdmUpOwogICAgIG1fZHJvcEVmZmVjdCA9IElFT3BG
cm9tRHJhZ09wKG9wKTsKIH0KIApJbmRleDogV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgJKHJldmlzaW9uIDUzMjg5KQorKysgV2Vi
Q29yZS9kb20vQ2xpcGJvYXJkLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDggKzc0LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRBY2Nlc3NQb2xpY3ko
Q2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKIAotICAgICAgICBib29sIHNvdXJjZU9wZXJhdGlvbihE
cmFnT3BlcmF0aW9uJikgY29uc3Q7Ci0gICAgICAgIGJvb2wgZGVzdGluYXRpb25PcGVyYXRpb24o
RHJhZ09wZXJhdGlvbiYpIGNvbnN0OworICAgICAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJh
dGlvbigpIGNvbnN0OworICAgICAgICBEcmFnT3BlcmF0aW9uIGRlc3RpbmF0aW9uT3BlcmF0aW9u
KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U291cmNlT3BlcmF0aW9uKERyYWdPcGVyYXRpb24p
OwogICAgICAgICB2b2lkIHNldERlc3RpbmF0aW9uT3BlcmF0aW9uKERyYWdPcGVyYXRpb24pOwog
ICAgICAgICAKSW5kZXg6IFdlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNTMyODkpCisr
KyBXZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODIs
MjEgKzQ4Miw2IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFnKERyYWcKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIERyYWdPcGVyYXRpb24gZGVmYXVsdE9wZXJhdGlv
bkZvckRyYWcoRHJhZ09wZXJhdGlvbiBzcmNPcE1hc2spCi17Ci0gICAgLy8gVGhpcyBpcyBkZXNp
Z25lZCB0byBtYXRjaCBJRSdzIG9wZXJhdGlvbiBmYWxsYmFjayBmb3IgdGhlIGNhc2Ugd2hlcmUK
LSAgICAvLyB0aGUgcGFnZSBjYWxscyBwcmV2ZW50RGVmYXVsdCgpIGluIGEgZHJhZyBldmVudCBi
dXQgZG9lc24ndCBzZXQgZHJvcEVmZmVjdC4KLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJh
dGlvbkNvcHkpCi0gICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7Ci0gICAgaWYgKHNy
Y09wTWFzayAmIERyYWdPcGVyYXRpb25Nb3ZlIHx8IHNyY09wTWFzayAmIERyYWdPcGVyYXRpb25H
ZW5lcmljKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk1vdmU7Ci0gICAgaWYgKHNyY09w
TWFzayAmIERyYWdPcGVyYXRpb25MaW5rKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkxp
bms7Ci0KLSAgICAvLyBGSVhNRTogRG9lcyBJRSByZWFsbHkgcmV0dXJuICJnZW5lcmljIiBldmVu
IGlmIG5vIG9wZXJhdGlvbnMgd2VyZSBhbGxvd2VkIGJ5IHRoZSBzb3VyY2U/Ci0gICAgcmV0dXJu
IERyYWdPcGVyYXRpb25HZW5lcmljOwotfQotCiBib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRN
TERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24pCiB7CiAg
ICAgQVNTRVJUKGRyYWdEYXRhKTsKQEAgLTUxNywxMCArNTAyLDggQEAgYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5REhUTUxEcmFnKERyYWdEYQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaWYgKCFjbGlwYm9hcmQtPmRlc3RpbmF0aW9uT3BlcmF0aW9uKG9wZXJhdGlvbikpIHsK
LSAgICAgICAgLy8gVGhlIGVsZW1lbnQgYWNjZXB0ZWQgYnV0IHRoZXkgZGlkbid0IHBpY2sgYW4g
b3BlcmF0aW9uLCBzbyB3ZSBwaWNrIG9uZSAodG8gbWF0Y2ggSUUpLgotICAgICAgICBvcGVyYXRp
b24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhzcmNPcE1hc2spOwotICAgIH0gZWxzZSBpZiAo
IShzcmNPcE1hc2sgJiBvcGVyYXRpb24pKSB7CisgICAgb3BlcmF0aW9uID0gY2xpcGJvYXJkLT5k
ZXN0aW5hdGlvbk9wZXJhdGlvbigpOworICAgIGlmICghKHNyY09wTWFzayAmIG9wZXJhdGlvbikp
IHsKICAgICAgICAgLy8gVGhlIGVsZW1lbnQgcGlja2VkIGFuIG9wZXJhdGlvbiB3aGljaCBpcyBu
b3Qgc3VwcG9ydGVkIGJ5IHRoZSBzb3VyY2UKICAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJh
dGlvbk5vbmU7CiAgICAgfQpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDUzMjg5
KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
MzMsNyArMjMzMyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXMK
ICAgICAgICAgCiAgICAgICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZykgewogICAgICAg
ICAgICAgLy8gZ2F0aGVyIHZhbHVlcyBmcm9tIERIVE1MIGVsZW1lbnQsIGlmIGl0IHNldCBhbnkK
LSAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC0+c291cmNlT3BlcmF0aW9u
KHNyY09wKTsKKyAgICAgICAgICAgIHNyY09wID0gZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJk
LT5zb3VyY2VPcGVyYXRpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gWXVjaywg
YSBkcmFnZ2VkSW1hZ2U6bW92ZVRvOiBtZXNzYWdlIGNhbiBiZSBmaXJlZCBhcyBhIHJlc3VsdCBv
ZiBraWNraW5nIG9mZiB0aGUKICAgICAgICAgICAgIC8vIGRyYWcgd2l0aCBkcmFnSW1hZ2UhICBC
ZWNhdXNlIG9mIHRoYXQgZHVtYiByZWVudHJhbmN5LCB3ZSBtYXkgdGhpbmsgd2UndmUgbm90Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46615</attachid>
            <date>2010-01-14 15:39:16 -0800</date>
            <delta_ts>2010-01-14 15:56:18 -0800</delta_ts>
            <desc>Patch that works on Qt and Chromium</desc>
            <filename>refactor_cleanup.patch</filename>
            <type>text/plain</type>
            <size>8454</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzI5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDEtMTQgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERyYWcgYW5kIERyb3Agc291cmNlL2Rlc3RpbmF0aW9uIGNvZGUgbmVlZHMgY2xlYW51cC4K
KyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzY5MT4u
CisgICAgICAgIAorICAgICAgICBDbGVhbmVkIHVwIHNvbWUgRHJhZyBhbmQgRHJvcCBjb2RlIHRo
YXQgZGVhbHMgd2l0aCBnZXR0aW5nCisgICAgICAgIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gb3Bl
cmF0aW9ucywgYW5kIGFkZGVkIHNvbWUgQVNTRVJUUyB0byBtYWtlCisgICAgICAgIHN1cmUgd2Ug
ZG9uJ3QgZ2V0IGluIGJhZCBzdGF0ZXMuCisKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6c291cmNlT3BlcmF0aW9uKTogTWFrZSB0aGlz
IHJldHVybiB0aGUgb3BlcmF0aW9uIGl0c2VsZi4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZDo6ZGVzdGluYXRpb25PcGVyYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6c2V0U291cmNlT3BlcmF0aW9uKTogQWRkIGFuIGFzc2VydCB0byBtYWtlIHN1cmUgd2Un
cmUgdmFsdWQuCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OnNldERlc3RpbmF0aW9uT3Bl
cmF0aW9uKTogRGl0dG8uCisgICAgICAgICogZG9tL0NsaXBib2FyZC5oOgorICAgICAgICAqIHBh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6
OnRyeURIVE1MRHJhZyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKwogMjAxMC0wMS0xNCAgU3Rl
cGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBtaXR6QHdlYmtpdC5vcmcuCkluZGV4OiBXZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAJKHJldmlzaW9uIDUzMjg5KQor
KysgV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDI3ICsx
MDAsMjkgQEAgc3RhdGljIFN0cmluZyBJRU9wRnJvbURyYWdPcChEcmFnT3BlcmF0aQogICAgIHJl
dHVybiAibm9uZSI7CiB9CiAKLWJvb2wgQ2xpcGJvYXJkOjpzb3VyY2VPcGVyYXRpb24oRHJhZ09w
ZXJhdGlvbiYgb3ApIGNvbnN0CitEcmFnT3BlcmF0aW9uIENsaXBib2FyZDo6c291cmNlT3BlcmF0
aW9uKCkgY29uc3QKIHsKLSAgICBvcCA9IGRyYWdPcEZyb21JRU9wKG1fZWZmZWN0QWxsb3dlZCk7
CisgICAgRHJhZ09wZXJhdGlvbiBvcCA9IGRyYWdPcEZyb21JRU9wKG1fZWZmZWN0QWxsb3dlZCk7
CiAgICAgQVNTRVJUKG9wICE9IERyYWdPcGVyYXRpb25Qcml2YXRlKTsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gb3A7CiB9CiAKLWJvb2wgQ2xpcGJvYXJkOjpkZXN0aW5hdGlvbk9wZXJh
dGlvbihEcmFnT3BlcmF0aW9uJiBvcCkgY29uc3QKK0RyYWdPcGVyYXRpb24gQ2xpcGJvYXJkOjpk
ZXN0aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgb3AgPSBkcmFnT3BGcm9tSUVPcCht
X2Ryb3BFZmZlY3QpOwotICAgIEFTU0VSVChvcCA9PSBEcmFnT3BlcmF0aW9uQ29weSB8fCBvcCA9
PSBEcmFnT3BlcmF0aW9uTm9uZSB8fCBvcCA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcCA9PSBE
cmFnT3BlcmF0aW9uTW92ZSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgRHJhZ09wZXJhdGlvbiBv
cCA9IGRyYWdPcEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7CisgICAgQVNTRVJUKG9wID09IERyYWdP
cGVyYXRpb25Db3B5IHx8IG9wID09IERyYWdPcGVyYXRpb25Ob25lIHx8IG9wID09IERyYWdPcGVy
YXRpb25MaW5rIHx8IG9wID09IERyYWdPcGVyYXRpb25HZW5lcmljKTsKKyAgICByZXR1cm4gb3A7
CiB9CiAKIHZvaWQgQ2xpcGJvYXJkOjpzZXRTb3VyY2VPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBv
cCkKIHsKKyAgICBBU1NFUlQob3AgIT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOwogICAgIG1fZWZm
ZWN0QWxsb3dlZCA9IElFT3BGcm9tRHJhZ09wKG9wKTsKIH0KIAogdm9pZCBDbGlwYm9hcmQ6OnNl
dERlc3RpbmF0aW9uT3BlcmF0aW9uKERyYWdPcGVyYXRpb24gb3ApCiB7CisgICAgQVNTRVJUKG9w
ID09IERyYWdPcGVyYXRpb25Db3B5IHx8IG9wID09IERyYWdPcGVyYXRpb25Ob25lIHx8IG9wID09
IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wID09IERyYWdPcGVyYXRpb25Nb3ZlKTsKICAgICBtX2Ry
b3BFZmZlY3QgPSBJRU9wRnJvbURyYWdPcChvcCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0Ns
aXBib2FyZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NsaXBib2FyZC5oCShyZXZpc2lv
biA1MzI4OSkKKysrIFdlYkNvcmUvZG9tL0NsaXBib2FyZC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
NCw4ICs3NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQg
c2V0QWNjZXNzUG9saWN5KENsaXBib2FyZEFjY2Vzc1BvbGljeSk7CiAKLSAgICAgICAgYm9vbCBz
b3VyY2VPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiYpIGNvbnN0OwotICAgICAgICBib29sIGRlc3Rp
bmF0aW9uT3BlcmF0aW9uKERyYWdPcGVyYXRpb24mKSBjb25zdDsKKyAgICAgICAgRHJhZ09wZXJh
dGlvbiBzb3VyY2VPcGVyYXRpb24oKSBjb25zdDsKKyAgICAgICAgRHJhZ09wZXJhdGlvbiBkZXN0
aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFNvdXJjZU9wZXJhdGlv
bihEcmFnT3BlcmF0aW9uKTsKICAgICAgICAgdm9pZCBzZXREZXN0aW5hdGlvbk9wZXJhdGlvbihE
cmFnT3BlcmF0aW9uKTsKICAgICAgICAgCkluZGV4OiBXZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDUzMjg5KQorKysgV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgyLDIxICs0ODIsNiBAQCBib29sIERyYWdDb250cm9sbGVyOjpjYW5Qcm9j
ZXNzRHJhZyhEcmFnCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9u
IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKERyYWdPcGVyYXRpb24gc3JjT3BNYXNrKQotewotICAg
IC8vIFRoaXMgaXMgZGVzaWduZWQgdG8gbWF0Y2ggSUUncyBvcGVyYXRpb24gZmFsbGJhY2sgZm9y
IHRoZSBjYXNlIHdoZXJlCi0gICAgLy8gdGhlIHBhZ2UgY2FsbHMgcHJldmVudERlZmF1bHQoKSBp
biBhIGRyYWcgZXZlbnQgYnV0IGRvZXNuJ3Qgc2V0IGRyb3BFZmZlY3QuCi0gICAgaWYgKHNyY09w
TWFzayAmIERyYWdPcGVyYXRpb25Db3B5KQotICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25D
b3B5OwotICAgIGlmIChzcmNPcE1hc2sgJiBEcmFnT3BlcmF0aW9uTW92ZSB8fCBzcmNPcE1hc2sg
JiBEcmFnT3BlcmF0aW9uR2VuZXJpYykKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Nb3Zl
OwotICAgIGlmIChzcmNPcE1hc2sgJiBEcmFnT3BlcmF0aW9uTGluaykKLSAgICAgICAgcmV0dXJu
IERyYWdPcGVyYXRpb25MaW5rOwotCi0gICAgLy8gRklYTUU6IERvZXMgSUUgcmVhbGx5IHJldHVy
biAiZ2VuZXJpYyIgZXZlbiBpZiBubyBvcGVyYXRpb25zIHdlcmUgYWxsb3dlZCBieSB0aGUgc291
cmNlPwotICAgIHJldHVybiBEcmFnT3BlcmF0aW9uR2VuZXJpYzsKLX0KLQogYm9vbCBEcmFnQ29u
dHJvbGxlcjo6dHJ5REhUTUxEcmFnKERyYWdEYXRhKiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYg
b3BlcmF0aW9uKQogewogICAgIEFTU0VSVChkcmFnRGF0YSk7CkBAIC01MTcsMTAgKzUwMiw4IEBA
IGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhEcmFnRGEKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGlmICghY2xpcGJvYXJkLT5kZXN0aW5hdGlvbk9wZXJhdGlv
bihvcGVyYXRpb24pKSB7Ci0gICAgICAgIC8vIFRoZSBlbGVtZW50IGFjY2VwdGVkIGJ1dCB0aGV5
IGRpZG4ndCBwaWNrIGFuIG9wZXJhdGlvbiwgc28gd2UgcGljayBvbmUgKHRvIG1hdGNoIElFKS4K
LSAgICAgICAgb3BlcmF0aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoc3JjT3BNYXNrKTsK
LSAgICB9IGVsc2UgaWYgKCEoc3JjT3BNYXNrICYgb3BlcmF0aW9uKSkgeworICAgIG9wZXJhdGlv
biA9IGNsaXBib2FyZC0+ZGVzdGluYXRpb25PcGVyYXRpb24oKTsKKyAgICBpZiAoIShzcmNPcE1h
c2sgJiBvcGVyYXRpb24pKSB7CiAgICAgICAgIC8vIFRoZSBlbGVtZW50IHBpY2tlZCBhbiBvcGVy
YXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc291cmNlCiAgICAgICAgIG9wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CShyZXZpc2lvbiA1MzI4OSkKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzMzLDcgKzIzMzMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
RHJhZyhjb25zdCBNb3VzCiAgICAgICAgIAogICAgICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFy
dERyYWcpIHsKICAgICAgICAgICAgIC8vIGdhdGhlciB2YWx1ZXMgZnJvbSBESFRNTCBlbGVtZW50
LCBpZiBpdCBzZXQgYW55Ci0gICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdDbGlwYm9hcmQt
PnNvdXJjZU9wZXJhdGlvbihzcmNPcCk7CisgICAgICAgICAgICBzcmNPcCA9IGRyYWdTdGF0ZSgp
Lm1fZHJhZ0NsaXBib2FyZC0+c291cmNlT3BlcmF0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIC8vIFl1Y2ssIGEgZHJhZ2dlZEltYWdlOm1vdmVUbzogbWVzc2FnZSBjYW4gYmUgZmly
ZWQgYXMgYSByZXN1bHQgb2Yga2lja2luZyBvZmYgdGhlCiAgICAgICAgICAgICAvLyBkcmFnIHdp
dGggZHJhZ0ltYWdlISAgQmVjYXVzZSBvZiB0aGF0IGR1bWIgcmVlbnRyYW5jeSwgd2UgbWF5IHRo
aW5rIHdlJ3ZlIG5vdApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzI5NCkKKysrIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
MC0wMS0xNCAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJhZyBhbmQgRHJvcCBz
b3VyY2UvZGVzdGluYXRpb24gY29kZSBuZWVkcyBjbGVhbnVwLgorICAgICAgICA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNjkxPi4KKyAgICAgICAgCisgICAgICAg
IFVwZGF0ZSB0byBuZXcgd2F5IG9mIGNhbGxpbmcgc291cmNlT3BlcmF0aW9uLgorCisgICAgICAg
ICogc3JjL0RyYWdDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0NsaWVudElt
cGw6OnN0YXJ0RHJhZyk6CisKIDIwMTAtMDEtMTQgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL0RyYWdDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL0RyYWdDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNTMyODkpCisrKyBX
ZWJLaXQvY2hyb21pdW0vc3JjL0RyYWdDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzksOSArNzksNyBAQCB2b2lkIERyYWdDbGllbnRJbXBsOjpzdGFydERyYWcoRHJhZ0ltYWdlCiAK
ICAgICBXZWJEcmFnRGF0YSBkcmFnRGF0YSA9IHN0YXRpY19jYXN0PENsaXBib2FyZENocm9taXVt
Kj4oY2xpcGJvYXJkKS0+ZGF0YU9iamVjdCgpOwogCi0gICAgRHJhZ09wZXJhdGlvbiBkcmFnT3Bl
cmF0aW9uTWFzazsKLSAgICBpZiAoIWNsaXBib2FyZC0+c291cmNlT3BlcmF0aW9uKGRyYWdPcGVy
YXRpb25NYXNrKSkKLSAgICAgICAgZHJhZ09wZXJhdGlvbk1hc2sgPSBEcmFnT3BlcmF0aW9uRXZl
cnk7CisgICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFzayA9IGNsaXBib2FyZC0+c291
cmNlT3BlcmF0aW9uKCk7CiAKICAgICBtX3dlYlZpZXctPnN0YXJ0RHJhZ2dpbmcoCiAgICAgICAg
IGV2ZW50UG9zLCBkcmFnRGF0YSwgc3RhdGljX2Nhc3Q8V2ViRHJhZ09wZXJhdGlvbnNNYXNrPihk
cmFnT3BlcmF0aW9uTWFzaykpOwpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzI5NCkKKysrIFdlYktpdC9xdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wMS0xNCAgQnJp
YW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJhZyBhbmQgRHJvcCBzb3VyY2UvZGVzdGlu
YXRpb24gY29kZSBuZWVkcyBjbGVhbnVwLgorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMzNjkxPi4KKyAgICAgICAgCisgICAgICAgIFVwZGF0ZSB0byBu
ZXcgd2F5IG9mIGNhbGxpbmcgc291cmNlT3BlcmF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHJhZ0NsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnRRdDo6
c3RhcnREcmFnKToKKwogMjAxMC0wMS0xNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFu
bkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KSW5k
ZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA1
MzI4OSkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Niw4ICs5Niw3IEBAIHZvaWQgRHJhZ0NsaWVudFF0OjpzdGFydERyYWco
RHJhZ0ltYWdlUmUKICAgICAgICAgUURyYWcgKmRyYWcgPSBuZXcgUURyYWcodmlldyk7CiAgICAg
ICAgIGlmIChjbGlwYm9hcmREYXRhICYmIGNsaXBib2FyZERhdGEtPmhhc0ltYWdlKCkpCiAgICAg
ICAgICAgICBkcmFnLT5zZXRQaXhtYXAocXZhcmlhbnRfY2FzdDxRUGl4bWFwPihjbGlwYm9hcmRE
YXRhLT5pbWFnZURhdGEoKSkpOwotICAgICAgICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25N
YXNrID0gRHJhZ09wZXJhdGlvbkV2ZXJ5OwotICAgICAgICBjbGlwYm9hcmQtPnNvdXJjZU9wZXJh
dGlvbihkcmFnT3BlcmF0aW9uTWFzayk7CisgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJh
dGlvbk1hc2sgPSBjbGlwYm9hcmQtPnNvdXJjZU9wZXJhdGlvbigpOwogICAgICAgICBkcmFnLT5z
ZXRNaW1lRGF0YShjbGlwYm9hcmREYXRhKTsKICAgICAgICAgUXQ6OkRyb3BBY3Rpb24gYWN0dWFs
RHJvcEFjdGlvbiA9IGRyYWctPmV4ZWMoZHJhZ09wZXJhdGlvbnNUb0Ryb3BBY3Rpb25zKGRyYWdP
cGVyYXRpb25NYXNrKSk7CiAK
</data>
<flag name="review"
          id="28914"
          type_id="1"
          status="+"
          setter="aroben"
    />
    <flag name="commit-queue"
          id="28915"
          type_id="3"
          status="-"
          setter="bweinstein"
    />
          </attachment>
      

    </bug>

</bugzilla>