<?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>89788</bug_id>
          
          <creation_ts>2012-06-22 14:55:40 -0700</creation_ts>
          <short_desc>[chromium] Introduce way to reload a page using the original request URL</short_desc>
          <delta_ts>2012-06-28 13:30: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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Android</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>66687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>dfalcantara</reporter>
          <assigned_to>dfalcantara</assigned_to>
          <cc>abarth</cc>
    
    <cc>creis</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>655806</commentid>
    <comment_count>0</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-22 14:55:40 -0700</bug_when>
    <thetext>Servers may redirect a browser to a different location based on the user agent being used.  If the user agent is changed to get access to a different version of the page, simply reloading the page will fail because the user agent often isn&apos;t checked at the final location.  These situations require reloading the page using a URL from earlier in the chain, before the user agent gets checked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657097</commentid>
    <comment_count>1</comment_count>
      <attachid>149415</attachid>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-25 18:08:56 -0700</bug_when>
    <thetext>Created attachment 149415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657098</commentid>
    <comment_count>2</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-25 18:09:43 -0700</bug_when>
    <thetext>Uploaded patch to get context for e-mails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657667</commentid>
    <comment_count>3</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-26 09:50:06 -0700</bug_when>
    <thetext>Link to the Chromium half of the changes:
https://chromiumcodereview.appspot.com/10667028/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657765</commentid>
    <comment_count>4</comment_count>
      <attachid>149415</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-26 11:15:40 -0700</bug_when>
    <thetext>Comment on attachment 149415
Patch

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

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:976
&gt; +    m_frame-&gt;loader()-&gt;documentLoader()-&gt;request().setURL(url);

I know you said that this patch wasn&apos;t ready for general review, but this line looks very strange.  It&apos;s odd that the WebFrame is reaching this far into the loading machinery to mutate this state.  If you look at the implementations of reload() and loadRequest(), you&apos;ll see that they prepare a request and then hand it off to the loader.

I guess I don&apos;t fully understand what you&apos;re trying to achieve by &quot;reloading&quot; a page with a different URL.  Do you mean that you want to load a document in the frame and replace the current history item (and perhaps preserve the scroll state)?  If so, there might already be a more direct way to do that which we use to implement location.replace(...).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657903</commentid>
    <comment_count>5</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-26 13:11:24 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 149415 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149415&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:976
&gt; &gt; +    m_frame-&gt;loader()-&gt;documentLoader()-&gt;request().setURL(url);
&gt; 
&gt; I know you said that this patch wasn&apos;t ready for general review, but this line looks very strange.  It&apos;s odd that the WebFrame is reaching this far into the loading machinery to mutate this state.  If you look at the implementations of reload() and loadRequest(), you&apos;ll see that they prepare a request and then hand it off to the loader.
&gt;
&gt; I guess I don&apos;t fully understand what you&apos;re trying to achieve by &quot;reloading&quot; a page with a different URL.  Do you mean that you want to load a document in the frame and replace the current history item (and perhaps preserve the scroll state)?  If so, there might already be a more direct way to do that which we use to implement location.replace(...).

I guess it&apos;d make sense to plop down and summarize my various e-mail threads here:

This is part of upstreaming the &quot;Request desktop site&quot; stuff for Chrome for Android.  When the user agent is overridden, we need to reload the page using a URL earlier in the redirect chain to get around any redirects caused by user agent detection; e.g. cnn.com will redirect m.cnn.com for mobile browsers.  If you do a normal reload using a new desktop user agent, you&apos;ll still be served m.cnn.com because that&apos;s the URL you&apos;re reloading.  This is kind of an odd case because it falls between a reload and a load: you&apos;re technically reloading the same navigation, but you might not get the same content.

There are two routes to go here: either the page could be reloaded with the original request URL or the page could be loaded as a new entry.  I put out a couple of feelers on this a month or so ago, and Darin suggested going with the reload route and trying to pull the originalRequest URL from the WebHistoryItem or some other location in WebKit code.  Problematically, the originalRequest URL isn&apos;t &quot;properly&quot; saved Chromium side -- the WebHistoryItem stored by a NavigationEntry can be overwritten several times per page with different original request URLs.  Rather than try to preserve the original request URL we needed inside the WebHistoryItem (which would require pickling and de-pickling it every time it was updated), we opted to store it separately (https://chromiumcodereview.appspot.com/9999010/).  This leads to the function prototype you see here, where we explicitly pass in the URL that should be reloaded.

The extra bits for the page scale and scrolling state are there because reloading a page in this way causes the page to zoom back in erroneously; if you load slashdot.org with a mobile UA and switch to a desktop UA, it will retain the same page scale and zoom in.

reloadWithGivenURL() calls reload() at its end, which pulls the request from the same document loader that we change the URL in.  Unfortunately, the only way to get reload() to load up a different URL is if it was unreachable the first time, so we explicitly change it here.  If we avoided calling reload(), then we could get around the issue, but we&apos;d likely have to dive into WebCore.  I&apos;ll look into the location.replace() thing, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657946</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-26 13:45:09 -0700</bug_when>
    <thetext>Thanks for the explanation.  It sounds like what you want to do is very similar to what we&apos;re doing on http://trac.webkit.org/browser/trunk/Source/WebCore/loader/FrameLoader.cpp#L1453 when reloading an error page.

Perhaps the best course of action is to introduce FrameLoader::reloadWithOverrideURL (following reloadWithOverrideEncoding) that takes a URL as a parameter.  We can then change FrameLoader:reload to call reloadWithOverrideURL around line 1457 (after it has decided whether to reload the current URL or the unreachableURL).

That ends up being very similar to what you&apos;ve got in this patch, it just moves the detailed work of talking to the DocumentLoader into the FrameLoader class, which is much more interested in talking directly with the DocumentLoader than WebView is.

I&apos;m less sure what to do precisely with the page scale aspect of this change.  Perhaps we should make this change in two parts, and think about the page scale aspects in the second patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658032</commentid>
    <comment_count>7</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-26 15:15:05 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Thanks for the explanation.  It sounds like what you want to do is very similar to what we&apos;re doing on http://trac.webkit.org/browser/trunk/Source/WebCore/loader/FrameLoader.cpp#L1453 when reloading an error page.
Yeah, that sounds about right.

&gt; Perhaps the best course of action is to introduce FrameLoader::reloadWithOverrideURL (following reloadWithOverrideEncoding) that takes a URL as a parameter.  We can then change FrameLoader:reload to call reloadWithOverrideURL around line 1457 (after it has decided whether to reload the current URL or the unreachableURL).
&gt;
&gt; That ends up being very similar to what you&apos;ve got in this patch, it just moves the detailed work of talking to the DocumentLoader into the FrameLoader class, which is much more interested in talking directly with the DocumentLoader than WebView is.
Is there a logical place to stick and set the override URL so that we can pull it out in FrameLoader::reload()?

&gt; I&apos;m less sure what to do precisely with the page scale aspect of this change.  Perhaps we should make this change in two parts, and think about the page scale aspects in the second patch?
Sure, we can push it to another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658038</commentid>
    <comment_count>8</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-06-26 15:23:30 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Thanks for the explanation.  It sounds like what you want to do is very similar to what we&apos;re doing on http://trac.webkit.org/browser/trunk/Source/WebCore/loader/FrameLoader.cpp#L1453 when reloading an error page.
&gt; Yeah, that sounds about right.
&gt; 
&gt; &gt; Perhaps the best course of action is to introduce FrameLoader::reloadWithOverrideURL (following reloadWithOverrideEncoding) that takes a URL as a parameter.  We can then change FrameLoader:reload to call reloadWithOverrideURL around line 1457 (after it has decided whether to reload the current URL or the unreachableURL).
&gt; &gt;
&gt; &gt; That ends up being very similar to what you&apos;ve got in this patch, it just moves the detailed work of talking to the DocumentLoader into the FrameLoader class, which is much more interested in talking directly with the DocumentLoader than WebView is.
&gt; Is there a logical place to stick and set the override URL so that we can pull it out in FrameLoader::reload()?
&gt; 
&gt; &gt; I&apos;m less sure what to do precisely with the page scale aspect of this change.  Perhaps we should make this change in two parts, and think about the page scale aspects in the second patch?
&gt; Sure, we can push it to another patch.

Perhaps, instead of reloadWithOverrideURL(), we should consider reloadOriginalRequest() with no parameters? DocumentLoader::originalRequest() should have the desired URL already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658044</commentid>
    <comment_count>9</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-26 15:38:58 -0700</bug_when>
    <thetext>&gt; Perhaps, instead of reloadWithOverrideURL(), we should consider reloadOriginalRequest() with no parameters? DocumentLoader::originalRequest() should have the desired URL already.

That&apos;s what I expected, but it doesn&apos;t always seem to.  Chromium appears to overwrite the WebHistoryItem for the same NavigationEntry sometimes, which causes us to replace the original request URL we need with a different one.  I&apos;m pretty sure this happens when a redirect occurs, but I&apos;ll double check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658050</commentid>
    <comment_count>10</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-06-26 15:45:05 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Perhaps, instead of reloadWithOverrideURL(), we should consider reloadOriginalRequest() with no parameters? DocumentLoader::originalRequest() should have the desired URL already.
&gt; 
&gt; That&apos;s what I expected, but it doesn&apos;t always seem to.  Chromium appears to overwrite the WebHistoryItem for the same NavigationEntry sometimes, which causes us to replace the original request URL we need with a different one.  I&apos;m pretty sure this happens when a redirect occurs, but I&apos;ll double check.

Note that DocumentLoader::originalRequest() and DocumentLoader::originalRequestCopy() are different in corner cases. To make matters worse:

FrameLoader::initialRequest() == DocumentLoader::originalRequest()
FrameLoader::originalRequest() == DocumentLoader::originalRequestCopy()

I assert that DocumentLoader::originalRequest() (aka FrameLoader::initialRequest()) will never change for the life of the DocumentLoader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658074</commentid>
    <comment_count>11</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-26 16:06:59 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; &gt; Perhaps, instead of reloadWithOverrideURL(), we should consider reloadOriginalRequest() with no parameters? DocumentLoader::originalRequest() should have the desired URL already.
&gt; &gt; 
&gt; &gt; That&apos;s what I expected, but it doesn&apos;t always seem to.  Chromium appears to overwrite the WebHistoryItem for the same NavigationEntry sometimes, which causes us to replace the original request URL we need with a different one.  I&apos;m pretty sure this happens when a redirect occurs, but I&apos;ll double check.
&gt; 
&gt; Note that DocumentLoader::originalRequest() and DocumentLoader::originalRequestCopy() are different in corner cases. To make matters worse:
&gt; 
&gt; FrameLoader::initialRequest() == DocumentLoader::originalRequest()
&gt; FrameLoader::originalRequest() == DocumentLoader::originalRequestCopy()
&gt; 
&gt; I assert that DocumentLoader::originalRequest() (aka FrameLoader::initialRequest()) will never change for the life of the DocumentLoader.

Changed the function to look like this in my branch:
 987 void WebFrameImpl::reloadWithGivenURL(const WebURL&amp; url)
 988 {
 989     const KURL&amp; initialURL = m_frame-&gt;loader()-&gt;initialRequest().url();
 990     const KURL&amp; originalURL = m_frame-&gt;loader()-&gt;originalRequest().url();
 991     fprintf(stderr, &quot;Initial URL: %s\n&quot;, initialURL.string().utf8().data());
 992     fprintf(stderr, &quot;Original URL: %s\n&quot;, originalURL.string().utf8().data());
 993     fprintf(stderr, &quot;Passed in URL: %s\n&quot;, url.spec().data());
 994 
 995     m_frame-&gt;loader()-&gt;activeDocumentLoader()-&gt;request().setURL(originalURL);
 996 
 997     // We&apos;re reloading with a different URL than the loader used the last time,
 998     // so ignore the contents of the cache.
 999     viewImpl()-&gt;clearPageScaleFactorForReload();
1000     reload(true);
1001 }   
The passed in URL is the original request URL that I manually track in Chromium&apos;s NavigationEntries.

ESPN&apos;s site is one of the cases that redirects for mobile user agents; when I navigated to http://espn.com on a Chrome for Android build, I ended up with this output when I called the function:
06-26 16:03:03.036 15200 15204 I stderr  : Initial URL: http://m.espn.go.com/wireless/?i=COMR
06-26 16:03:03.036 15200 15204 I stderr  : Original URL: http://m.espn.go.com/wireless/?i=COMR
06-26 16:03:03.036 15200 15204 I stderr  : Passed in URL: http://espn.com/

Am I checking the wrong ones?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658085</commentid>
    <comment_count>12</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-06-26 16:27:03 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; &gt; Perhaps, instead of reloadWithOverrideURL(), we should consider reloadOriginalRequest() with no parameters? DocumentLoader::originalRequest() should have the desired URL already.
&gt; &gt; &gt; 
&gt; &gt; &gt; That&apos;s what I expected, but it doesn&apos;t always seem to.  Chromium appears to overwrite the WebHistoryItem for the same NavigationEntry sometimes, which causes us to replace the original request URL we need with a different one.  I&apos;m pretty sure this happens when a redirect occurs, but I&apos;ll double check.
&gt; &gt; 
&gt; &gt; Note that DocumentLoader::originalRequest() and DocumentLoader::originalRequestCopy() are different in corner cases. To make matters worse:
&gt; &gt; 
&gt; &gt; FrameLoader::initialRequest() == DocumentLoader::originalRequest()
&gt; &gt; FrameLoader::originalRequest() == DocumentLoader::originalRequestCopy()
&gt; &gt; 
&gt; &gt; I assert that DocumentLoader::originalRequest() (aka FrameLoader::initialRequest()) will never change for the life of the DocumentLoader.
&gt; 
&gt; Changed the function to look like this in my branch:
&gt;  987 void WebFrameImpl::reloadWithGivenURL(const WebURL&amp; url)
&gt;  988 {
&gt;  989     const KURL&amp; initialURL = m_frame-&gt;loader()-&gt;initialRequest().url();
&gt;  990     const KURL&amp; originalURL = m_frame-&gt;loader()-&gt;originalRequest().url();
&gt;  991     fprintf(stderr, &quot;Initial URL: %s\n&quot;, initialURL.string().utf8().data());
&gt;  992     fprintf(stderr, &quot;Original URL: %s\n&quot;, originalURL.string().utf8().data());
&gt;  993     fprintf(stderr, &quot;Passed in URL: %s\n&quot;, url.spec().data());
&gt;  994 
&gt;  995     m_frame-&gt;loader()-&gt;activeDocumentLoader()-&gt;request().setURL(originalURL);
&gt;  996 
&gt;  997     // We&apos;re reloading with a different URL than the loader used the last time,
&gt;  998     // so ignore the contents of the cache.
&gt;  999     viewImpl()-&gt;clearPageScaleFactorForReload();
&gt; 1000     reload(true);
&gt; 1001 }   
&gt; The passed in URL is the original request URL that I manually track in Chromium&apos;s NavigationEntries.
&gt; 
&gt; ESPN&apos;s site is one of the cases that redirects for mobile user agents; when I navigated to http://espn.com on a Chrome for Android build, I ended up with this output when I called the function:
&gt; 06-26 16:03:03.036 15200 15204 I stderr  : Initial URL: http://m.espn.go.com/wireless/?i=COMR
&gt; 06-26 16:03:03.036 15200 15204 I stderr  : Original URL: http://m.espn.go.com/wireless/?i=COMR
&gt; 06-26 16:03:03.036 15200 15204 I stderr  : Passed in URL: http://espn.com/
&gt; 
&gt; Am I checking the wrong ones?


Doh, I bet chrome is swapping out the renderer. So we wouldn&apos;t necessarily have the URL in the current renderer already. Bah.

I guess that means we would have to go the route of reloadWithOverrideURL() after all. Sorry for leading you astray :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658095</commentid>
    <comment_count>13</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-26 16:36:49 -0700</bug_when>
    <thetext>&gt; Doh, I bet chrome is swapping out the renderer. So we wouldn&apos;t necessarily have the URL in the current renderer already. Bah.
&gt; 
&gt; I guess that means we would have to go the route of reloadWithOverrideURL() after all. Sorry for leading you astray :(

No worries; I was hoping that you were right ;)  I&apos;ll prep a patch with the new function and see how that goes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658990</commentid>
    <comment_count>14</comment_count>
      <attachid>149827</attachid>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-27 17:08:34 -0700</bug_when>
    <thetext>Created attachment 149827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658997</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-27 17:12:21 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659005</commentid>
    <comment_count>16</comment_count>
      <attachid>149827</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-27 17:26:21 -0700</bug_when>
    <thetext>Comment on attachment 149827
Patch

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

If I were writing this patch, I would include a simple API test that showed that reloading a WebFrame with an override URL preserved some state about the page that you cared about (like the scroll position) but ended up at a different URL.  Note: It&apos;s not important for the test to involve a redirect---it just needs two URLs.

&gt; Source/WebCore/loader/FrameLoader.cpp:1446
&gt; +    // If the URL is empty, don&apos;t bother with reloading.

I would remove this comment because it just states what the code does.

&gt; Source/WebCore/loader/FrameLoader.cpp:1452
&gt; +    ResourceRequest initialRequest = m_documentLoader-&gt;request();
&gt; +    initialRequest.setURL(overrideUrl);
&gt; +    reloadInitialRequest(initialRequest, endToEndReload);

nit: I would just call initialRequest &quot;request&quot;.  The word &quot;initial&quot; doesn&apos;t really mean much here.

&gt; Source/WebCore/loader/FrameLoader.cpp:1478
&gt; +    if (!m_documentLoader)
&gt; +        return;
&gt; +

Given that this is a private method, we don&apos;t need to re-check m_documentLoader for being 0.  If you like, you can ASSERT that it&apos;s non-0 instead.

&gt; Source/WebCore/loader/FrameLoader.h:118
&gt; +    void reloadWithOverrideURL(const KURL&amp; overrideUrl, bool endToEndReload);

Should endToEndReload default to false, like for reload() ?

&gt; Source/WebCore/loader/FrameLoader.h:348
&gt; +    void reloadInitialRequest(const ResourceRequest&amp;, bool endToEndReload);

Maybe reloadInitialRequest -&gt; reloadWithRequest ?  Again, there&apos;s nothing particularly &quot;initial&quot; about the request at this point.

&gt; Source/WebKit/chromium/public/WebFrame.h:323
&gt; +    // Reload the current document, but change the URL to the given one first.
&gt; +    // This is used for situations where we need to avoid a redirect.

I might say something like:

// This is used for situations where we want to reload a different URL because of a redirect.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:981
&gt; +void WebFrameImpl::reloadWithOverrideURL(const WebURL&amp; overrideUrl, bool endToEndReload)

It&apos;s slightly odd that the second parameter changed names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659033</commentid>
    <comment_count>17</comment_count>
      <attachid>149827</attachid>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-27 17:59:59 -0700</bug_when>
    <thetext>Comment on attachment 149827
Patch

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

&gt; If I were writing this patch, I would include a simple API test that showed that reloading a WebFrame with an override URL preserved some state about the page that you cared about (like the scroll position) but ended up at a different URL.  Note: It&apos;s not important for the test to involve a redirect---it just needs two URLs.

I&apos;ll get started on adding one.  I&apos;m uploading a patch in the meantime that addresses your other comments.

I&apos;m slightly confused about why the WebFrameImpl::reload() preserves the document and scroll state when it&apos;s reloaded from scratch and the cache is ignored, though.  Is that intentional?

&gt;&gt; Source/WebCore/loader/FrameLoader.cpp:1446
&gt;&gt; +    // If the URL is empty, don&apos;t bother with reloading.
&gt; 
&gt; I would remove this comment because it just states what the code does.

Done.

&gt;&gt; Source/WebCore/loader/FrameLoader.cpp:1452
&gt;&gt; +    reloadInitialRequest(initialRequest, endToEndReload);
&gt; 
&gt; nit: I would just call initialRequest &quot;request&quot;.  The word &quot;initial&quot; doesn&apos;t really mean much here.

Done.

&gt;&gt; Source/WebCore/loader/FrameLoader.cpp:1478
&gt;&gt; +
&gt; 
&gt; Given that this is a private method, we don&apos;t need to re-check m_documentLoader for being 0.  If you like, you can ASSERT that it&apos;s non-0 instead.

Yeah, I added the if because I didn&apos;t realize ASSERTs were available.  Switched it over.

&gt;&gt; Source/WebCore/loader/FrameLoader.h:118
&gt;&gt; +    void reloadWithOverrideURL(const KURL&amp; overrideUrl, bool endToEndReload);
&gt; 
&gt; Should endToEndReload default to false, like for reload() ?

Added in the default.

&gt;&gt; Source/WebCore/loader/FrameLoader.h:348
&gt;&gt; +    void reloadInitialRequest(const ResourceRequest&amp;, bool endToEndReload);
&gt; 
&gt; Maybe reloadInitialRequest -&gt; reloadWithRequest ?  Again, there&apos;s nothing particularly &quot;initial&quot; about the request at this point.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebFrame.h:323
&gt;&gt; +    // This is used for situations where we need to avoid a redirect.
&gt; 
&gt; I might say something like:
&gt; 
&gt; // This is used for situations where we want to reload a different URL because of a redirect.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:981
&gt;&gt; +void WebFrameImpl::reloadWithOverrideURL(const WebURL&amp; overrideUrl, bool endToEndReload)
&gt; 
&gt; It&apos;s slightly odd that the second parameter changed names.

Switched it over; I think it might have been a holdover from one of my previous versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659036</commentid>
    <comment_count>18</comment_count>
      <attachid>149836</attachid>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-27 18:01:26 -0700</bug_when>
    <thetext>Created attachment 149836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659038</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-27 18:02:59 -0700</bug_when>
    <thetext>&gt; I&apos;m slightly confused about why the WebFrameImpl::reload() preserves the document and scroll state when it&apos;s reloaded from scratch and the cache is ignored, though.  Is that intentional?

Preserving the scroll state makes sense to me.  Even if you &quot;shift-reload&quot; the page, you expect the scroll state to be preserved.  I&apos;m less sure what preserving the document does.  I do think it makes sense for both the reload and reloadWithOverrideURL to do the same thing in these respects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659208</commentid>
    <comment_count>20</comment_count>
      <attachid>149836</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-27 22:31:56 -0700</bug_when>
    <thetext>Comment on attachment 149836
Patch

Looks good.  Not sure if you want to add an API test before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659379</commentid>
    <comment_count>21</comment_count>
      <attachid>149912</attachid>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-28 03:28:58 -0700</bug_when>
    <thetext>Created attachment 149912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659387</commentid>
    <comment_count>22</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-28 03:37:37 -0700</bug_when>
    <thetext>Added a test to WebFrameTest.cpp; I ended up reusing a few random HTML filenames from the data directory, but I can add new ones, if necessary.

Passes on my linux box locally, but I&apos;m still trying to set up my Chromium repo with WebKit to try it out on the trybots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659510</commentid>
    <comment_count>23</comment_count>
      <attachid>149912</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-28 08:17:20 -0700</bug_when>
    <thetext>Comment on attachment 149912
Patch

Looks great, thanks!  By the way, I would have expected EXPECT_EQ rather than ASSERT_EQ, but I&apos;m not a gtest expert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659541</commentid>
    <comment_count>24</comment_count>
      <attachid>149912</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 09:05:59 -0700</bug_when>
    <thetext>Comment on attachment 149912
Patch

Clearing flags on attachment: 149912

Committed r121434: &lt;http://trac.webkit.org/changeset/121434&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659542</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 09:06:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659751</commentid>
    <comment_count>26</comment_count>
    <who name="">dfalcantara</who>
    <bug_when>2012-06-28 13:30:51 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 149912 [details])
&gt; Looks great, thanks!  By the way, I would have expected EXPECT_EQ rather than ASSERT_EQ, but I&apos;m not a gtest expert.

Yeah, I was debating whether to use the ASSERT or the EXPECT but figured the number of checks in there was small enough.  I&apos;ll likely have to revisit the test to tackle the part of this bug that got splintered off, so I can switch over then.

Thanks for landing it!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149415</attachid>
            <date>2012-06-25 18:08:56 -0700</date>
            <delta_ts>2012-06-27 17:08:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89788-20120625180856.patch</filename>
            <type>text/plain</type>
            <size>5997</size>
            <attacher>dfalcantara</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjEyMDUpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMw
IEBACisyMDEyLTA2LTI1ICBEYW4gQWxjYW50YXJhICA8ZGZhbGNhbnRhcmFAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gSW50cm9kdWNlIHdheSB0byByZWxvYWQgYSBwYWdlIHVz
aW5nIHRoZSBvcmlnaW5hbCByZXF1ZXN0IFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk3ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBOb3QgbWVhbnQgZm9yIGdlbmVyYWwgcmV2aWV3LCB5ZXQuICBB
ZGRzIGEgbmV3IHJlbG9hZCBtZXRob2QgZm9yIGNhc2VzIHdoZXJlIHdlIG5lZWQgdG8KKyAgICAg
ICAgdXNlIHRoZSBvcmlnaW5hbCByZXF1ZXN0IFVSTCB3aGVuIHJlbG9hZGluZyBhIHBhZ2UuICBC
ZWNhdXNlIG9mIHRoZSB3YXkgdGhhdCBDaHJvbWl1bQorICAgICAgICByZXBlYXRlZGx5IG92ZXJy
aWRlcyB0aGUgb3JpZ2luYWwgcmVxdWVzdCBVUkwgaW4gdGhlIFdlYkhpc3RvcnlJdGVtLCB0aGUg
VVJMIGlzIHBhc3NlZCBpbgorICAgICAgICBtYW51YWxseS4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJGcmFtZS5oOgorICAgICAgICAoV2ViRnJhbWUpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUlt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OnJlbG9hZFdpdGhHaXZlblVS
TCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuaDoKKyAg
ICAgICAgKFdlYkZyYW1lSW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OnNldENsZWFyUGFnZVNjYWxlRmFjdG9yT25Mb2FkKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21taXRMb2FkKToK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKwog
MjAxMi0wNi0yNSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gVXNlIFdlYkdyYXBoaWNzQ29udGV4dDNEIGluIGNvbXBvc2l0b3IgaW1w
bGVtZW50YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUu
aAkocmV2aXNpb24gMTIxMTc1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEzLDYgKzMxMywxMCBAQCBwdWJsaWM6CiAgICAg
Ly8gRmFsc2UgfGlnbm9yZUNhY2hlfCByZXZhbGlkYXRlcyBhbnkgZXhpc3RpbmcgY2FjaGUgZW50
cmllcy4KICAgICB2aXJ0dWFsIHZvaWQgcmVsb2FkKGJvb2wgaWdub3JlQ2FjaGUgPSBmYWxzZSkg
PSAwOwogCisgICAgLy8gUmVsb2FkIHRoZSBjdXJyZW50IGRvY3VtZW50LCBidXQgY2hhbmdlIHRo
ZSBVUkwgdG8gdGhlIGdpdmVuIG9uZSBmaXJzdC4KKyAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIHNp
dHVhdGlvbnMgd2hlcmUgd2UgbmVlZCB0byBhdm9pZCBhIHJlZGlyZWN0LgorICAgIHZpcnR1YWwg
dm9pZCByZWxvYWRXaXRoR2l2ZW5VUkwoY29uc3QgV2ViVVJMJikgPSAwOworCiAgICAgLy8gTG9h
ZCB0aGUgZ2l2ZW4gVVJMLgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBXZWJV
UkxSZXF1ZXN0JikgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDEyMTE3NSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2OSw2ICs5NjksMTUg
QEAgdm9pZCBXZWJGcmFtZUltcGw6OnJlbG9hZChib29sIGlnbm9yZUNhYwogICAgIG1fZnJhbWUt
PmxvYWRlcigpLT5yZWxvYWQoaWdub3JlQ2FjaGUpOwogfQogCit2b2lkIFdlYkZyYW1lSW1wbDo6
cmVsb2FkV2l0aEdpdmVuVVJMKGNvbnN0IFdlYlVSTCYgdXJsKQoreworICAgIC8vIFdlJ3JlIHJl
bG9hZGluZyB3aXRoIGEgZGlmZmVyZW50IFVSTCB0aGFuIHRoZSBsb2FkZXIgdXNlZCB0aGUgbGFz
dCB0aW1lLAorICAgIC8vIHNvIGlnbm9yZSB0aGUgY29udGVudHMgb2YgdGhlIGNhY2hlLgorICAg
IG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCkuc2V0VVJMKHVy
bCk7CisgICAgdmlld0ltcGwoKS0+c2V0Q2xlYXJQYWdlU2NhbGVGYWN0b3JGb3JSZWxvYWQodHJ1
ZSk7CisgICAgcmVsb2FkKHRydWUpOworfQorCiB2b2lkIFdlYkZyYW1lSW1wbDo6bG9hZFJlcXVl
c3QoY29uc3QgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoIXJlcXVlc3Qu
aXNOdWxsKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmgJKHJldmlzaW9uIDEyMTE3NSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzRGly
ZWN0b3J5KTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCByZWxvYWQoYm9vbCBpZ25vcmVDYWNo
ZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbG9hZFdpdGhHaXZlblVSTChjb25zdCBXZWJVUkwmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlcXVlc3QoY29uc3QgV2ViVVJMUmVxdWVzdCYpOwogICAg
IHZpcnR1YWwgdm9pZCBsb2FkSGlzdG9yeUl0ZW0oY29uc3QgV2ViSGlzdG9yeUl0ZW0mKTsKICAg
ICB2aXJ0dWFsIHZvaWQgbG9hZERhdGEoCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMjExNzUpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNiw2ICs0MjYs
NyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogCiAgICAgLCBtX3Vz
ZXJNZWRpYUNsaWVudEltcGwodGhpcykKICNlbmRpZgogICAgICwgbV9mbGluZ01vZGlmaWVyKDAp
CisgICAgLCBtX2NsZWFyUGFnZVNjYWxlRmFjdG9yT25Mb2FkKGZhbHNlKQogewogICAgIC8vIFdl
YktpdC93aW4vV2ViVmlldy5jcHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2Fs
bCB0aGUKICAgICAvLyBLSlMgc3BlY2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdl
IG5lZWQgdG8gaGF2ZSB0aHJlYWRpbmcKQEAgLTMxOTIsNiArMzE5MywxMSBAQCB2b2lkIFdlYlZp
ZXc6OnJlbW92ZUFsbFVzZXJDb250ZW50KCkKICAgICBwYWdlR3JvdXAtPnJlbW92ZUFsbFVzZXJD
b250ZW50KCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNldENsZWFyUGFnZVNjYWxlRmFjdG9y
T25Mb2FkKGJvb2wgc3RhdGUpCit7CisgICAgbV9jbGVhclBhZ2VTY2FsZUZhY3Rvck9uTG9hZCA9
IHN0YXRlOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21taXRMb2FkKGJvb2wqIGlzTmV3
TmF2aWdhdGlvbiwgYm9vbCBpc05hdmlnYXRpb25XaXRoaW5QYWdlKQogewogICAgIGlmIChpc05l
d05hdmlnYXRpb24pCkBAIC0zMjAzLDYgKzMyMDksMTggQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlk
Q29tbWl0TG9hZChib29sKiBpcwogICAgIG1fbmV3TmF2aWdhdGlvbkxvYWRlciA9IDA7CiAjZW5k
aWYKICAgICBtX29ic2VydmVkTmV3TmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgLy8gV2hlbiBy
ZWxvYWRpbmcgdGhlIHBhZ2Ugd2l0aCBhIGRpZmZlcmVudCBVUkwsIHlvdSBjYW4gZ2V0IGludG8g
YSBzaXR1YXRpb24gd2hlcmUgdGhlCisgICAgLy8gcGFnZSBlcnJvbmVvdXNseSB6b29tcyBpbi4g
Q2xlYXIgb3V0IHRoZSBzZXR0aW5ncyBmb3IgdGhlc2Ugc2l0dWF0aW9ucy4KKyAgICBpZiAobV9j
bGVhclBhZ2VTY2FsZUZhY3Rvck9uTG9hZCAmJiBtX3BhZ2UgJiYgbV9wYWdlLT5tYWluRnJhbWUo
KSkgeworICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5z
YXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZSgpOworICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+
IGN1cnJlbnRJdGVtID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+
Y3VycmVudEl0ZW0oKTsKKyAgICAgICAgY3VycmVudEl0ZW0tPnNldFBhZ2VTY2FsZUZhY3Rvcigw
KTsKKyAgICAgICAgY3VycmVudEl0ZW0tPmNsZWFyU2Nyb2xsUG9pbnQoKTsKKyAgICAgICAgbV9w
YWdlU2NhbGVGYWN0b3JJc1NldCA9IGZhbHNlOworICAgICAgICBtX2NsZWFyUGFnZVNjYWxlRmFj
dG9yT25Mb2FkID0gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKCppc05ld05hdmlnYXRpb24gJiYg
IWlzTmF2aWdhdGlvbldpdGhpblBhZ2UpCiAgICAgICAgIG1fcGFnZVNjYWxlRmFjdG9ySXNTZXQg
PSBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CShyZXZpc2lvbiAxMjExNzUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsNiArNTcxLDEwIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaXNQb2ludGVyTG9ja2VkKCk7CiAjZW5kaWYKIAorICAgIC8vIFNldHMgd2hl
dGhlciBvciBub3QgYSBwYWdlIHNob3VsZCBoYXZlIGl0cyBzY2FsZSBmYWN0b3IgYW5kIHNjcm9s
bCBwb3NpdGlvbiByZXNldAorICAgIC8vIGFmdGVyIGEgcGFnZSBoYXMgbG9hZGVkLgorICAgIHZv
aWQgc2V0Q2xlYXJQYWdlU2NhbGVGYWN0b3JPbkxvYWQoYm9vbCBzdGF0ZSk7CisKIHByaXZhdGU6
CiAgICAgYm9vbCBjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKCk7CiAgICAgZmxvYXQgY2xh
bXBQYWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhmbG9hdCBzY2FsZSk7CkBAIC04MjksNiArODMzLDcg
QEAgcHJpdmF0ZToKICAgICBXZWJQb2ludCBtX2xhc3RXaGVlbFBvc2l0aW9uOwogICAgIFdlYlBv
aW50IG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb247CiAgICAgaW50IG1fZmxpbmdNb2RpZmllcjsK
KyAgICBib29sIG1fY2xlYXJQYWdlU2NhbGVGYWN0b3JPbkxvYWQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149827</attachid>
            <date>2012-06-27 17:08:34 -0700</date>
            <delta_ts>2012-06-27 18:01:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89788-20120627170834.patch</filename>
            <type>text/plain</type>
            <size>6830</size>
            <attacher>dfalcantara</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTIxMzc5
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQzOCw2ICsxNDM4LDIwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVy
cmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSwgRnJhbWVM
b2FkVHlwZVJlbG9hZCwgMCk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVy
cmlkZVVSTChjb25zdCBLVVJMJiBvdmVycmlkZVVybCwgYm9vbCBlbmRUb0VuZFJlbG9hZCkKK3sK
KyAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElm
IHRoZSBVUkwgaXMgZW1wdHksIGRvbid0IGJvdGhlciB3aXRoIHJlbG9hZGluZy4KKyAgICBpZiAo
b3ZlcnJpZGVVcmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXNvdXJjZVJl
cXVlc3QgaW5pdGlhbFJlcXVlc3QgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCk7CisgICAg
aW5pdGlhbFJlcXVlc3Quc2V0VVJMKG92ZXJyaWRlVXJsKTsKKyAgICByZWxvYWRJbml0aWFsUmVx
dWVzdChpbml0aWFsUmVxdWVzdCwgZW5kVG9FbmRSZWxvYWQpOworfQorCiB2b2lkIEZyYW1lTG9h
ZGVyOjpyZWxvYWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRM
b2FkZXIpCkBAIC0xNDQ4LDEzICsxNDYyLDIwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChi
b29sIGVuZFRvRW5kUmUKICAgICBpZiAobV9kb2N1bWVudExvYWRlci0+cmVxdWVzdCgpLnVybCgp
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IGluaXRp
YWxSZXF1ZXN0ID0gbV9kb2N1bWVudExvYWRlci0+cmVxdWVzdCgpOwotCiAgICAgLy8gUmVwbGFj
ZSBlcnJvci1wYWdlIFVSTCB3aXRoIHRoZSBVUkwgd2Ugd2VyZSB0cnlpbmcgdG8gcmVhY2guCisg
ICAgUmVzb3VyY2VSZXF1ZXN0IGluaXRpYWxSZXF1ZXN0ID0gbV9kb2N1bWVudExvYWRlci0+cmVx
dWVzdCgpOwogICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51bnJl
YWNoYWJsZVVSTCgpOwogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAg
ICBpbml0aWFsUmVxdWVzdC5zZXRVUkwodW5yZWFjaGFibGVVUkwpOwotICAgIAorCisgICAgcmVs
b2FkSW5pdGlhbFJlcXVlc3QoaW5pdGlhbFJlcXVlc3QsIGVuZFRvRW5kUmVsb2FkKTsKK30KKwor
dm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkSW5pdGlhbFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiBpbml0aWFsUmVxdWVzdCwgYm9vbCBlbmRUb0VuZFJlbG9hZCkKK3sKKyAgICBpZiAoIW1f
ZG9jdW1lbnRMb2FkZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIENyZWF0ZSBhIG5ldyBk
b2N1bWVudCBsb2FkZXIgZm9yIHRoZSByZWxvYWQsIHRoaXMgd2lsbCBiZWNvbWUgbV9kb2N1bWVu
dExvYWRlciBldmVudHVhbGx5LAogICAgIC8vIGJ1dCBmaXJzdCBpdCBoYXMgdG8gYmUgdGhlICJw
b2xpY3kiIGRvY3VtZW50IGxvYWRlciwgYW5kIHRoZW4gdGhlICJwcm92aXNpb25hbCIgZG9jdW1l
bnQgbG9hZGVyLgogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQt
PmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRpYWxSZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURh
dGFGb3JVUkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCShyZXZpc2lvbiAxMjEzNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSk7CiAgICAgdm9p
ZCByZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2Rp
bmcpOworICAgIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlVVJMKGNvbnN0IEtVUkwmIG92ZXJyaWRl
VXJsLCBib29sIGVuZFRvRW5kUmVsb2FkKTsKIAogICAgIHZvaWQgb3BlbihDYWNoZWRGcmFtZUJh
c2UmKTsKICAgICB2b2lkIGxvYWRJdGVtKEhpc3RvcnlJdGVtKiwgRnJhbWVMb2FkVHlwZSk7CkBA
IC0zNDQsNiArMzQ1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRVUkwoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCAgICAgICAg
ICAvLyBDYWxsZWQgYnkgbG9hZEZyYW1lUmVxdWVzdCwgY2FsbHMgbG9hZFdpdGhOYXZpZ2F0aW9u
QWN0aW9uIG9yIGRpc3BhdGNoZXMgdG8gbmF2aWdhdGlvbiBwb2xpY3kgZGVsZWdhdGUKICAgICAg
ICAgYm9vbCBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxFdmVudD4sIFBh
c3NSZWZQdHI8Rm9ybVN0YXRlPik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAKKyAgICB2b2lkIHJlbG9hZEluaXRpYWxSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgZW5kVG9FbmRSZWxvYWQpOworCiAgICAgYm9vbCBz
aG91bGRSZWxvYWQoY29uc3QgS1VSTCYgY3VycmVudFVSTCwgY29uc3QgS1VSTCYgZGVzdGluYXRp
b25VUkwpOwogCiAgICAgdm9pZCByZXF1ZXN0RnJvbURlbGVnYXRlKFJlc291cmNlUmVxdWVzdCYs
IHVuc2lnbmVkIGxvbmcmIGlkZW50aWZpZXIsIFJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjEzNzkpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA2
LTI1ICBEYW4gQWxjYW50YXJhICA8ZGZhbGNhbnRhcmFAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtjaHJvbWl1bV0gSW50cm9kdWNlIHdheSB0byByZWxvYWQgYSBwYWdlIHVzaW5nIHRoZSBvcmln
aW5hbCByZXF1ZXN0IFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODk3ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRzIGEgbmV3IHJlbG9hZCBtZXRob2QgZm9yIGNhc2VzIHdoZXJlIHdlIG5lZWQg
dG8gb3ZlcnJpZGUgdGhlIFVSTAorICAgICAgICB3aGVuIHJlbG9hZGluZyBhIHBhZ2UuIFRoaXMg
aXMgbmVlZGVkIGZvciBzaXR1YXRpb25zIHdoZXJlIGEgc2VydmVyCisgICAgICAgIHJlZGlyZWN0
cyBuYXZpZ2F0aW9uIGJhc2VkIG9uIGluZm9ybWF0aW9uIHRoYXQgbWF5IGhhdmUgY2hhbmdlZCBz
aW5jZQorICAgICAgICB0aGUgbGFzdCB0aW1lIHRoZSBwYWdlIHdhcyBsb2FkZWQuCisgICAgICAg
IAorICAgICAgICBVc2VyIGFnZW50cywgZm9yIGV4YW1wbGUsIGNhbiBjYXVzZSBhIHNlcnZlciB0
byByZWRpcmVjdCB0byB0aGUgbW9iaWxlCisgICAgICAgIHZlcnNpb24gb2YgYSBwYWdlLiAgQ2hh
bmdpbmcgdG8gdGhlIGRlc2t0b3AgdmVyc2lvbiBieSBzd2l0Y2hpbmcgdXNlciBhZ2VudHMKKyAg
ICAgICAgcmVxdWlyZXMgbG9hZGluZyBhIFVSTCBmcm9tIGJlZm9yZSB0aGUgcmVkaXJlY3Qgb2Nj
dXJyZWQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWUuaDoKKyAgICAgICAgKFdlYkZyYW1l
KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVJbXBsOjpyZWxvYWRXaXRoR2l2ZW5VUkwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisgICAgICAgIChXZWJGcmFtZUltcGwpOgorICAgICAg
ICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpX
ZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRDbGVhclBhZ2VT
Y2FsZUZhY3Rvck9uTG9hZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6
CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTItMDYtMjcgIEpvc2h1YSBCZWxsICA8anNi
ZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEluZGV4ZWREQjogRXhwb3Nl
IFdlYklEQlRyYW5zYWN0aW9uOjpjb21taXQoKSBtZXRob2QgaW4gcHVibGljIEFQSQpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCShyZXZpc2lvbiAxMjEzNzkp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTksNiArMzE5LDEwIEBAIHB1YmxpYzoKICAgICAvLyBGYWxzZSB8aWdub3JlQ2Fj
aGV8IHJldmFsaWRhdGVzIGFueSBleGlzdGluZyBjYWNoZSBlbnRyaWVzLgogICAgIHZpcnR1YWwg
dm9pZCByZWxvYWQoYm9vbCBpZ25vcmVDYWNoZSA9IGZhbHNlKSA9IDA7CiAKKyAgICAvLyBSZWxv
YWQgdGhlIGN1cnJlbnQgZG9jdW1lbnQsIGJ1dCBjaGFuZ2UgdGhlIFVSTCB0byB0aGUgZ2l2ZW4g
b25lIGZpcnN0LgorICAgIC8vIFRoaXMgaXMgdXNlZCBmb3Igc2l0dWF0aW9ucyB3aGVyZSB3ZSBu
ZWVkIHRvIGF2b2lkIGEgcmVkaXJlY3QuCisgICAgdmlydHVhbCB2b2lkIHJlbG9hZFdpdGhPdmVy
cmlkZVVSTChjb25zdCBXZWJVUkwmIG92ZXJyaWRlVXJsLCBib29sIGlnbm9yZUNhY2hlKSA9IDA7
CisKICAgICAvLyBMb2FkIHRoZSBnaXZlbiBVUkwuCiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXF1
ZXN0KGNvbnN0IFdlYlVSTFJlcXVlc3QmKSA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gMTIxMzc5KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTc4LDYgKzk3OCwxNCBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6cmVsb2FkKGJvb2wgaWdub3JlQ2Fj
CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPnJlbG9hZChpZ25vcmVDYWNoZSk7CiB9CiAKK3ZvaWQg
V2ViRnJhbWVJbXBsOjpyZWxvYWRXaXRoT3ZlcnJpZGVVUkwoY29uc3QgV2ViVVJMJiBvdmVycmlk
ZVVybCwgYm9vbCBlbmRUb0VuZFJlbG9hZCkKK3sKKyAgICAvLyBXZSdyZSByZWxvYWRpbmcgd2l0
aCBhIGRpZmZlcmVudCBVUkwgdGhhbiB0aGUgbG9hZGVyIHVzZWQgdGhlIGxhc3QgdGltZSwKKyAg
ICAvLyBzbyBpZ25vcmUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjYWNoZS4KKyAgICBtX2ZyYW1lLT5s
b2FkZXIoKS0+aGlzdG9yeSgpLT5zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZSgpOworICAgIG1f
ZnJhbWUtPmxvYWRlcigpLT5yZWxvYWRXaXRoT3ZlcnJpZGVVUkwob3ZlcnJpZGVVcmwsIGVuZFRv
RW5kUmVsb2FkKTsKK30KKwogdm9pZCBXZWJGcmFtZUltcGw6OmxvYWRSZXF1ZXN0KGNvbnN0IFdl
YlVSTFJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKCFyZXF1ZXN0LmlzTnVsbCgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCShyZXZpc2lv
biAxMjEzNzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0RpcmVjdG9yeSk7CiAj
ZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgcmVsb2FkKGJvb2wgaWdub3JlQ2FjaGUpOworICAgIHZp
cnR1YWwgdm9pZCByZWxvYWRXaXRoT3ZlcnJpZGVVUkwoY29uc3QgV2ViVVJMJiBvdmVycmlkZVVy
bCwgYm9vbCBpZ25vcmVDYWNoZSk7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0
IFdlYlVSTFJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZEhpc3RvcnlJdGVtKGNvbnN0
IFdlYkhpc3RvcnlJdGVtJik7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREYXRhKAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149836</attachid>
            <date>2012-06-27 18:01:26 -0700</date>
            <delta_ts>2012-06-28 03:28:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89788-20120627180126.patch</filename>
            <type>text/plain</type>
            <size>6556</size>
            <attacher>dfalcantara</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTIxMzc5
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQzOCw2ICsxNDM4LDE5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVy
cmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSwgRnJhbWVM
b2FkVHlwZVJlbG9hZCwgMCk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVy
cmlkZVVSTChjb25zdCBLVVJMJiBvdmVycmlkZVVybCwgYm9vbCBlbmRUb0VuZFJlbG9hZCkKK3sK
KyAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChv
dmVycmlkZVVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0ID0gbV9kb2N1bWVudExvYWRlci0+cmVxdWVzdCgpOworICAgIHJlcXVlc3Qu
c2V0VVJMKG92ZXJyaWRlVXJsKTsKKyAgICByZWxvYWRXaXRoUmVxdWVzdChyZXF1ZXN0LCBlbmRU
b0VuZFJlbG9hZCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5k
UmVsb2FkKQogewogICAgIGlmICghbV9kb2N1bWVudExvYWRlcikKQEAgLTE0NDgsMTMgKzE0NjEs
MTkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5kVG9FbmRSZQogICAgIGlmICht
X2RvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QgaW5pdGlhbFJlcXVlc3QgPSBtX2RvY3VtZW50TG9h
ZGVyLT5yZXF1ZXN0KCk7Ci0KICAgICAvLyBSZXBsYWNlIGVycm9yLXBhZ2UgVVJMIHdpdGggdGhl
IFVSTCB3ZSB3ZXJlIHRyeWluZyB0byByZWFjaC4KKyAgICBSZXNvdXJjZVJlcXVlc3QgaW5pdGlh
bFJlcXVlc3QgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCk7CiAgICAgS1VSTCB1bnJlYWNo
YWJsZVVSTCA9IG1fZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CiAgICAgaWYgKCF1
bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIGluaXRpYWxSZXF1ZXN0LnNldFVSTCh1
bnJlYWNoYWJsZVVSTCk7Ci0gICAgCisKKyAgICByZWxvYWRXaXRoUmVxdWVzdChpbml0aWFsUmVx
dWVzdCwgZW5kVG9FbmRSZWxvYWQpOworfQorCit2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRo
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBib29sIGVuZFRv
RW5kUmVsb2FkKQoreworICAgIEFTU0VSVChtX2RvY3VtZW50TG9hZGVyKTsKKwogICAgIC8vIENy
ZWF0ZSBhIG5ldyBkb2N1bWVudCBsb2FkZXIgZm9yIHRoZSByZWxvYWQsIHRoaXMgd2lsbCBiZWNv
bWUgbV9kb2N1bWVudExvYWRlciBldmVudHVhbGx5LAogICAgIC8vIGJ1dCBmaXJzdCBpdCBoYXMg
dG8gYmUgdGhlICJwb2xpY3kiIGRvY3VtZW50IGxvYWRlciwgYW5kIHRoZW4gdGhlICJwcm92aXNp
b25hbCIgZG9jdW1lbnQgbG9hZGVyLgogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVy
ID0gbV9jbGllbnQtPmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRpYWxSZXF1ZXN0LCBkZWZhdWx0
U3Vic3RpdHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxMjEzNzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxz
ZSk7CiAgICAgdm9pZCByZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIG92
ZXJyaWRlRW5jb2RpbmcpOworICAgIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlVVJMKGNvbnN0IEtV
UkwmIG92ZXJyaWRlVXJsLCBib29sIGVuZFRvRW5kUmVsb2FkID0gZmFsc2UpOwogCiAgICAgdm9p
ZCBvcGVuKENhY2hlZEZyYW1lQmFzZSYpOwogICAgIHZvaWQgbG9hZEl0ZW0oSGlzdG9yeUl0ZW0q
LCBGcmFtZUxvYWRUeXBlKTsKQEAgLTM0NCw2ICszNDUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
bG9hZFVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsICAgICAgICAgIC8vIENhbGxlZCBieSBsb2FkRnJhbWVSZXF1ZXN0LCBjYWxs
cyBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24gb3IgZGlzcGF0Y2hlcyB0byBuYXZpZ2F0aW9uIHBv
bGljeSBkZWxlZ2F0ZQogICAgICAgICBib29sIGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlLCBQ
YXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIAorICAgIHZvaWQgcmVs
b2FkV2l0aFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBlbmRUb0VuZFJlbG9h
ZCk7CisKICAgICBib29sIHNob3VsZFJlbG9hZChjb25zdCBLVVJMJiBjdXJyZW50VVJMLCBjb25z
dCBLVVJMJiBkZXN0aW5hdGlvblVSTCk7CiAKICAgICB2b2lkIHJlcXVlc3RGcm9tRGVsZWdhdGUo
UmVzb3VyY2VSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyYgaWRlbnRpZmllciwgUmVzb3VyY2VFcnJv
ciYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTM3OSkKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzQgQEAKKzIwMTItMDYtMjUgIERhbiBBbGNhbnRhcmEgIDxkZmFsY2FudGFyYUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBJbnRyb2R1Y2Ugd2F5IHRvIHJlbG9hZCBhIHBh
Z2UgdXNpbmcgdGhlIG9yaWdpbmFsIHJlcXVlc3QgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTc4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSBuZXcgcmVsb2FkIG1ldGhvZCBmb3IgY2Fz
ZXMgd2hlcmUgd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgVVJMCisgICAgICAgIHdoZW4gcmVsb2Fk
aW5nIGEgcGFnZS4gVGhpcyBpcyBuZWVkZWQgZm9yIHNpdHVhdGlvbnMgd2hlcmUgYSBzZXJ2ZXIK
KyAgICAgICAgcmVkaXJlY3RzIG5hdmlnYXRpb24gYmFzZWQgb24gaW5mb3JtYXRpb24gdGhhdCBt
YXkgaGF2ZSBjaGFuZ2VkIHNpbmNlCisgICAgICAgIHRoZSBsYXN0IHRpbWUgdGhlIHBhZ2Ugd2Fz
IGxvYWRlZC4KKyAgICAgICAgCisgICAgICAgIFVzZXIgYWdlbnRzLCBmb3IgZXhhbXBsZSwgY2Fu
IGNhdXNlIGEgc2VydmVyIHRvIHJlZGlyZWN0IHRvIHRoZSBtb2JpbGUKKyAgICAgICAgdmVyc2lv
biBvZiBhIHBhZ2UuICBDaGFuZ2luZyB0byB0aGUgZGVza3RvcCB2ZXJzaW9uIGJ5IHN3aXRjaGlu
ZyB1c2VyIGFnZW50cworICAgICAgICByZXF1aXJlcyBsb2FkaW5nIGEgVVJMIGZyb20gYmVmb3Jl
IHRoZSByZWRpcmVjdCBvY2N1cnJlZC4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5oOgor
ICAgICAgICAoV2ViRnJhbWUpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OnJlbG9hZFdpdGhHaXZlblVSTCk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuaDoKKyAgICAgICAgKFdlYkZy
YW1lSW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnNldENsZWFyUGFnZVNjYWxlRmFjdG9yT25Mb2FkKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKwogMjAxMi0wNi0yNyAg
Sm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0g
SW5kZXhlZERCOiBFeHBvc2UgV2ViSURCVHJhbnNhY3Rpb246OmNvbW1pdCgpIG1ldGhvZCBpbiBw
dWJsaWMgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJ
KHJldmlzaW9uIDEyMTM3OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxOSw2ICszMTksOSBAQCBwdWJsaWM6CiAgICAgLy8g
RmFsc2UgfGlnbm9yZUNhY2hlfCByZXZhbGlkYXRlcyBhbnkgZXhpc3RpbmcgY2FjaGUgZW50cmll
cy4KICAgICB2aXJ0dWFsIHZvaWQgcmVsb2FkKGJvb2wgaWdub3JlQ2FjaGUgPSBmYWxzZSkgPSAw
OwogCisgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBzaXR1YXRpb25zIHdoZXJlIHdlIHdhbnQgdG8g
cmVsb2FkIGEgZGlmZmVyZW50IFVSTCBiZWNhdXNlIG9mIGEgcmVkaXJlY3QuCisgICAgdmlydHVh
bCB2b2lkIHJlbG9hZFdpdGhPdmVycmlkZVVSTChjb25zdCBXZWJVUkwmIG92ZXJyaWRlVXJsLCBi
b29sIGlnbm9yZUNhY2hlID0gZmFsc2UpID0gMDsKKwogICAgIC8vIExvYWQgdGhlIGdpdmVuIFVS
TC4KICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlcXVlc3QoY29uc3QgV2ViVVJMUmVxdWVzdCYpID0g
MDsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3Bw
CShyZXZpc2lvbiAxMjEzNzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzgsNiArOTc4LDEyIEBAIHZvaWQgV2ViRnJh
bWVJbXBsOjpyZWxvYWQoYm9vbCBpZ25vcmVDYWMKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+cmVs
b2FkKGlnbm9yZUNhY2hlKTsKIH0KIAordm9pZCBXZWJGcmFtZUltcGw6OnJlbG9hZFdpdGhPdmVy
cmlkZVVSTChjb25zdCBXZWJVUkwmIG92ZXJyaWRlVXJsLCBib29sIGlnbm9yZUNhY2hlKQorewor
ICAgIG1fZnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0
YXRlKCk7CisgICAgbV9mcmFtZS0+bG9hZGVyKCktPnJlbG9hZFdpdGhPdmVycmlkZVVSTChvdmVy
cmlkZVVybCwgaWdub3JlQ2FjaGUpOworfQorCiB2b2lkIFdlYkZyYW1lSW1wbDo6bG9hZFJlcXVl
c3QoY29uc3QgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoIXJlcXVlc3Qu
aXNOdWxsKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmgJKHJldmlzaW9uIDEyMTM3OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzRGly
ZWN0b3J5KTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCByZWxvYWQoYm9vbCBpZ25vcmVDYWNo
ZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbG9hZFdpdGhPdmVycmlkZVVSTChjb25zdCBXZWJVUkwm
IG92ZXJyaWRlVXJsLCBib29sIGlnbm9yZUNhY2hlKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJl
cXVlc3QoY29uc3QgV2ViVVJMUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkSGlzdG9y
eUl0ZW0oY29uc3QgV2ViSGlzdG9yeUl0ZW0mKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERhdGEo
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149912</attachid>
            <date>2012-06-28 03:28:58 -0700</date>
            <delta_ts>2012-06-28 09:05:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89788-20120628032857.patch</filename>
            <type>text/plain</type>
            <size>8747</size>
            <attacher>dfalcantara</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTIxMzc5
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQzOCw2ICsxNDM4LDE5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVy
cmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSwgRnJhbWVM
b2FkVHlwZVJlbG9hZCwgMCk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVy
cmlkZVVSTChjb25zdCBLVVJMJiBvdmVycmlkZVVybCwgYm9vbCBlbmRUb0VuZFJlbG9hZCkKK3sK
KyAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChv
dmVycmlkZVVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0ID0gbV9kb2N1bWVudExvYWRlci0+cmVxdWVzdCgpOworICAgIHJlcXVlc3Qu
c2V0VVJMKG92ZXJyaWRlVXJsKTsKKyAgICByZWxvYWRXaXRoUmVxdWVzdChyZXF1ZXN0LCBlbmRU
b0VuZFJlbG9hZCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5k
UmVsb2FkKQogewogICAgIGlmICghbV9kb2N1bWVudExvYWRlcikKQEAgLTE0NDgsMTMgKzE0NjEs
MTkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5kVG9FbmRSZQogICAgIGlmICht
X2RvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QgaW5pdGlhbFJlcXVlc3QgPSBtX2RvY3VtZW50TG9h
ZGVyLT5yZXF1ZXN0KCk7Ci0KICAgICAvLyBSZXBsYWNlIGVycm9yLXBhZ2UgVVJMIHdpdGggdGhl
IFVSTCB3ZSB3ZXJlIHRyeWluZyB0byByZWFjaC4KKyAgICBSZXNvdXJjZVJlcXVlc3QgaW5pdGlh
bFJlcXVlc3QgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCk7CiAgICAgS1VSTCB1bnJlYWNo
YWJsZVVSTCA9IG1fZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CiAgICAgaWYgKCF1
bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIGluaXRpYWxSZXF1ZXN0LnNldFVSTCh1
bnJlYWNoYWJsZVVSTCk7Ci0gICAgCisKKyAgICByZWxvYWRXaXRoUmVxdWVzdChpbml0aWFsUmVx
dWVzdCwgZW5kVG9FbmRSZWxvYWQpOworfQorCit2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRo
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBib29sIGVuZFRv
RW5kUmVsb2FkKQoreworICAgIEFTU0VSVChtX2RvY3VtZW50TG9hZGVyKTsKKwogICAgIC8vIENy
ZWF0ZSBhIG5ldyBkb2N1bWVudCBsb2FkZXIgZm9yIHRoZSByZWxvYWQsIHRoaXMgd2lsbCBiZWNv
bWUgbV9kb2N1bWVudExvYWRlciBldmVudHVhbGx5LAogICAgIC8vIGJ1dCBmaXJzdCBpdCBoYXMg
dG8gYmUgdGhlICJwb2xpY3kiIGRvY3VtZW50IGxvYWRlciwgYW5kIHRoZW4gdGhlICJwcm92aXNp
b25hbCIgZG9jdW1lbnQgbG9hZGVyLgogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVy
ID0gbV9jbGllbnQtPmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRpYWxSZXF1ZXN0LCBkZWZhdWx0
U3Vic3RpdHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxMjEzNzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxz
ZSk7CiAgICAgdm9pZCByZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIG92
ZXJyaWRlRW5jb2RpbmcpOworICAgIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlVVJMKGNvbnN0IEtV
UkwmIG92ZXJyaWRlVXJsLCBib29sIGVuZFRvRW5kUmVsb2FkID0gZmFsc2UpOwogCiAgICAgdm9p
ZCBvcGVuKENhY2hlZEZyYW1lQmFzZSYpOwogICAgIHZvaWQgbG9hZEl0ZW0oSGlzdG9yeUl0ZW0q
LCBGcmFtZUxvYWRUeXBlKTsKQEAgLTM0NCw2ICszNDUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
bG9hZFVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsICAgICAgICAgIC8vIENhbGxlZCBieSBsb2FkRnJhbWVSZXF1ZXN0LCBjYWxs
cyBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24gb3IgZGlzcGF0Y2hlcyB0byBuYXZpZ2F0aW9uIHBv
bGljeSBkZWxlZ2F0ZQogICAgICAgICBib29sIGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlLCBQ
YXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIAorICAgIHZvaWQgcmVs
b2FkV2l0aFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBlbmRUb0VuZFJlbG9h
ZCk7CisKICAgICBib29sIHNob3VsZFJlbG9hZChjb25zdCBLVVJMJiBjdXJyZW50VVJMLCBjb25z
dCBLVVJMJiBkZXN0aW5hdGlvblVSTCk7CiAKICAgICB2b2lkIHJlcXVlc3RGcm9tRGVsZWdhdGUo
UmVzb3VyY2VSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyYgaWRlbnRpZmllciwgUmVzb3VyY2VFcnJv
ciYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTM3OSkKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzcgQEAKKzIwMTItMDYtMjUgIERhbiBBbGNhbnRhcmEgIDxkZmFsY2FudGFyYUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBJbnRyb2R1Y2Ugd2F5IHRvIHJlbG9hZCBhIHBh
Z2UgdXNpbmcgdGhlIG9yaWdpbmFsIHJlcXVlc3QgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTc4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSBuZXcgcmVsb2FkIG1ldGhvZCBmb3IgY2Fz
ZXMgd2hlcmUgd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgVVJMCisgICAgICAgIHdoZW4gcmVsb2Fk
aW5nIGEgcGFnZS4gVGhpcyBpcyBuZWVkZWQgZm9yIHNpdHVhdGlvbnMgd2hlcmUgYSBzZXJ2ZXIK
KyAgICAgICAgcmVkaXJlY3RzIG5hdmlnYXRpb24gYmFzZWQgb24gaW5mb3JtYXRpb24gdGhhdCBt
YXkgaGF2ZSBjaGFuZ2VkIHNpbmNlCisgICAgICAgIHRoZSBsYXN0IHRpbWUgdGhlIHBhZ2Ugd2Fz
IGxvYWRlZC4KKyAgICAgICAgCisgICAgICAgIFVzZXIgYWdlbnRzLCBmb3IgZXhhbXBsZSwgY2Fu
IGNhdXNlIGEgc2VydmVyIHRvIHJlZGlyZWN0IHRvIHRoZSBtb2JpbGUKKyAgICAgICAgdmVyc2lv
biBvZiBhIHBhZ2UuICBDaGFuZ2luZyB0byB0aGUgZGVza3RvcCB2ZXJzaW9uIGJ5IHN3aXRjaGlu
ZyB1c2VyIGFnZW50cworICAgICAgICByZXF1aXJlcyBsb2FkaW5nIGEgVVJMIGZyb20gYmVmb3Jl
IHRoZSByZWRpcmVjdCBvY2N1cnJlZC4KKworICAgICAgICBBbHNvIGFkZHMgYSB1bml0IHRlc3Qg
dG8gY29uZmlybSB0aGF0IHNjcm9sbCBwb3NpdGlvbiBhbmQgcGFnZSBzY2FsZSBhcmUKKyAgICAg
ICAgc2F2ZWQgd2hlbiB0aGUgcmVsb2FkIG9jY3Vycy4KKworICAgICAgICAqIHB1YmxpYy9XZWJG
cmFtZS5oOgorICAgICAgICAoV2ViRnJhbWUpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OnJlbG9hZFdpdGhHaXZlblVSTCk6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuaDoKKyAgICAg
ICAgKFdlYkZyYW1lSW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnNldENsZWFyUGFnZVNjYWxlRmFjdG9yT25Mb2FkKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21taXRMb2FkKToKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKwogMjAx
Mi0wNi0yNyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtD
aHJvbWl1bV0gSW5kZXhlZERCOiBFeHBvc2UgV2ViSURCVHJhbnNhY3Rpb246OmNvbW1pdCgpIG1l
dGhvZCBpbiBwdWJsaWMgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lLmgJKHJldmlzaW9uIDEyMTM3OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxOSw2ICszMTksOSBAQCBwdWJsaWM6
CiAgICAgLy8gRmFsc2UgfGlnbm9yZUNhY2hlfCByZXZhbGlkYXRlcyBhbnkgZXhpc3RpbmcgY2Fj
aGUgZW50cmllcy4KICAgICB2aXJ0dWFsIHZvaWQgcmVsb2FkKGJvb2wgaWdub3JlQ2FjaGUgPSBm
YWxzZSkgPSAwOwogCisgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBzaXR1YXRpb25zIHdoZXJlIHdl
IHdhbnQgdG8gcmVsb2FkIGEgZGlmZmVyZW50IFVSTCBiZWNhdXNlIG9mIGEgcmVkaXJlY3QuCisg
ICAgdmlydHVhbCB2b2lkIHJlbG9hZFdpdGhPdmVycmlkZVVSTChjb25zdCBXZWJVUkwmIG92ZXJy
aWRlVXJsLCBib29sIGlnbm9yZUNhY2hlID0gZmFsc2UpID0gMDsKKwogICAgIC8vIExvYWQgdGhl
IGdpdmVuIFVSTC4KICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlcXVlc3QoY29uc3QgV2ViVVJMUmVx
dWVzdCYpID0gMDsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCShyZXZpc2lvbiAxMjEzNzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzgsNiArOTc4LDEyIEBAIHZv
aWQgV2ViRnJhbWVJbXBsOjpyZWxvYWQoYm9vbCBpZ25vcmVDYWMKICAgICBtX2ZyYW1lLT5sb2Fk
ZXIoKS0+cmVsb2FkKGlnbm9yZUNhY2hlKTsKIH0KIAordm9pZCBXZWJGcmFtZUltcGw6OnJlbG9h
ZFdpdGhPdmVycmlkZVVSTChjb25zdCBXZWJVUkwmIG92ZXJyaWRlVXJsLCBib29sIGlnbm9yZUNh
Y2hlKQoreworICAgIG1fZnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPnNhdmVEb2N1bWVudEFu
ZFNjcm9sbFN0YXRlKCk7CisgICAgbV9mcmFtZS0+bG9hZGVyKCktPnJlbG9hZFdpdGhPdmVycmlk
ZVVSTChvdmVycmlkZVVybCwgaWdub3JlQ2FjaGUpOworfQorCiB2b2lkIFdlYkZyYW1lSW1wbDo6
bG9hZFJlcXVlc3QoY29uc3QgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQo
IXJlcXVlc3QuaXNOdWxsKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RnJhbWVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RnJhbWVJbXBsLmgJKHJldmlzaW9uIDEyMTM3OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzRGlyZWN0b3J5KTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCByZWxvYWQoYm9vbCBp
Z25vcmVDYWNoZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbG9hZFdpdGhPdmVycmlkZVVSTChjb25z
dCBXZWJVUkwmIG92ZXJyaWRlVXJsLCBib29sIGlnbm9yZUNhY2hlKTsKICAgICB2aXJ0dWFsIHZv
aWQgbG9hZFJlcXVlc3QoY29uc3QgV2ViVVJMUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgdm9pZCBs
b2FkSGlzdG9yeUl0ZW0oY29uc3QgV2ViSGlzdG9yeUl0ZW0mKTsKICAgICB2aXJ0dWFsIHZvaWQg
bG9hZERhdGEoCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFt
ZVRlc3QuY3BwCShyZXZpc2lvbiAxMjEzNzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1dlYkZyYW1lVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxOSw2ICs0MTksNDAgQEAg
VEVTVF9GKFdlYkZyYW1lVGVzdCwgUmVsb2FkRG9lc250U2V0UmVkaQogICAgIHdlYmtpdF9zdXBw
b3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiB9CiAKK1RFU1RfRihXZWJG
cmFtZVRlc3QsIFJlbG9hZFdpdGhPdmVycmlkZVVSTFByZXNlcnZlc1N0YXRlKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZpcnN0VVJMID0gImZpbmQuaHRtbCI7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgc2Vjb25kVVJMID0gImZvcm0uaHRtbCI7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGhp
cmRVUkwgPSAiaGlzdG9yeS5odG1sIjsKKyAgICBjb25zdCBmbG9hdCBwYWdlU2NhbGVGYWN0b3Ig
PSAxLjE2ODRmOworICAgIGNvbnN0IGludCBwYWdlV2lkdGggPSA2NDA7CisgICAgY29uc3QgaW50
IHBhZ2VIZWlnaHQgPSA0ODA7CisKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKGZpcnN0
VVJMKTsKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKHNlY29uZFVSTCk7CisgICAgcmVn
aXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCh0aGlyZFVSTCk7CisKKyAgICBXZWJWaWV3SW1wbCogd2Vi
Vmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNy
ZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArIGZpcnN0VVJMLCB0cnVlKSk7CisgICAgd2Vi
Vmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOworICAgIHdl
YlZpZXdJbXBsLT5tYWluRnJhbWUoKS0+c2V0U2Nyb2xsT2Zmc2V0KFdlYlNpemUocGFnZVdpZHRo
IC8gNCwgcGFnZUhlaWdodCAvIDQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFj
dG9yUHJlc2VydmluZ1Njcm9sbE9mZnNldChwYWdlU2NhbGVGYWN0b3IpOworCisgICAgV2ViU2l6
ZSBwcmV2aW91c09mZnNldCA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0
KCk7CisgICAgZmxvYXQgcHJldmlvdXNTY2FsZSA9IHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0
b3IoKTsKKworICAgIC8vIFJlbG9hZCB0aGUgcGFnZSB1c2luZyB0aGUgY2FjaGUuCisgICAgd2Vi
Vmlld0ltcGwtPm1haW5GcmFtZSgpLT5yZWxvYWRXaXRoT3ZlcnJpZGVVUkwoR1VSTChtX2Jhc2VV
UkwgKyBzZWNvbmRVUkwpLCBmYWxzZSk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNo
cm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICBBU1NFUlRfRVEocHJldmlvdXNPZmZzZXQsIHdl
YlZpZXdJbXBsLT5tYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkpOworICAgIEFTU0VSVF9FUShw
cmV2aW91c1NjYWxlLCB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOworCisgICAgLy8g
UmVsb2FkIHRoZSBwYWdlIHdoaWxlIGlnbm9yaW5nIHRoZSBjYWNoZS4KKyAgICB3ZWJWaWV3SW1w
bC0+bWFpbkZyYW1lKCktPnJlbG9hZFdpdGhPdmVycmlkZVVSTChHVVJMKG1fYmFzZVVSTCArIHRo
aXJkVVJMKSwgdHJ1ZSk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9j
a2VkUmVxdWVzdHMoKTsKKyAgICBBU1NFUlRfRVEocHJldmlvdXNPZmZzZXQsIHdlYlZpZXdJbXBs
LT5tYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkpOworICAgIEFTU0VSVF9FUShwcmV2aW91c1Nj
YWxlLCB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOworfQorCiBURVNUX0YoV2ViRnJh
bWVUZXN0LCBJZnJhbWVSZWRpcmVjdCkKIHsKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2Fk
KCJpZnJhbWVfcmVkaXJlY3QuaHRtbCIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>