<?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>77387</bug_id>
          
          <creation_ts>2012-01-30 16:52:31 -0800</creation_ts>
          <short_desc>Avoid Page::updateViewportArguments() if the causing frame is not the main frame</short_desc>
          <delta_ts>2012-02-07 01:11:59 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Xianzhu Wang">wangxianzhu</reporter>
          <assigned_to name="Xianzhu Wang">wangxianzhu</assigned_to>
          <cc>abarth</cc>
    
    <cc>fsamuel</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>klobag</cc>
    
    <cc>kpiascik</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>545605</commentid>
    <comment_count>0</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-01-30 16:52:31 -0800</bug_when>
    <thetext>As Page::updateViewportArguments() only processes the ViewPortArguments of the main frame document, it&apos;s wasteful to call it from frame/document which is not the main frame/document.

I saw a crash in my local testing environment caused a call to the method from a subframe.
The call stack is like the following:

  FrameView::layout() (subframe) crashed because document is null
  ...
  FrameView::layout() (main frame)
  ...
  ScrollView::updateScrollbars()
  ...
  Page::updateViewportArguments()
  Frame::setDocument(0) (subframe)
  FrameLoader::clear()
  DocumentWriter::begin()
  ...

Will create a test case when have time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546354</commentid>
    <comment_count>1</comment_count>
      <attachid>124794</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-01-31 12:17:17 -0800</bug_when>
    <thetext>Created attachment 124794
patch (for preview, no test)

This patch doesn&apos;t contain a new layout test. Uploaded for preview to see if the method is correct.
I&apos;ve run all the layout tests on chromium-linux and there was no difference before and after the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546356</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 12:19:35 -0800</bug_when>
    <thetext>Attachment 124794 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebCore/WebCore.exp.in
Auto-merging Source/WebKit/mac/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit/mac/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547131</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-02-01 09:37:42 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; As Page::updateViewportArguments() only processes the ViewPortArguments of the main frame document, it&apos;s wasteful to call it from frame/document which is not the main frame/document.
It is, indeed. However checking against mainframe() before calling updateViewportArguments() does not prevent anybody from adding a new call without the mainframe check, which could end up in a segfault again.

I&apos;d move updateViewportArguments() from Page to Document and do something like this:

Document::updateViewportArguments()
{
  if (frame() != frame()-&gt;page()-&gt;mainFrame()) // missing few checks.
      return;
  ...
  page()-&gt;chrome()-&gt;dispatchViewportPropertiesDidChange();
  ...
}

Obviously anyone can still make mainframe()-&gt;document()-&gt;updateViewportArguments() call, but that might look more suspicious and raise questions while reviewing, than a new frame-&gt;page()-&gt;updateViewportArguments() call without the mainframe() check.
Though, it is rather subjective.

(Also, Page::m_viewportArguments looks redundant to me)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547754</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-02 02:29:20 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #0)
&gt; &gt; As Page::updateViewportArguments() only processes the ViewPortArguments of the main frame document, it&apos;s wasteful to call it from frame/document which is not the main frame/document.
&gt; It is, indeed. However checking against mainframe() before calling updateViewportArguments() does not prevent anybody from adding a new call without the mainframe check, which could end up in a segfault again.
&gt; 
&gt; I&apos;d move updateViewportArguments() from Page to Document and do something like this:
&gt; 
&gt; Document::updateViewportArguments()
&gt; {
&gt;   if (frame() != frame()-&gt;page()-&gt;mainFrame()) // missing few checks.
&gt;       return;
&gt;   ...
&gt;   page()-&gt;chrome()-&gt;dispatchViewportPropertiesDidChange();
&gt;   ...
&gt; }
&gt; 
&gt; Obviously anyone can still make mainframe()-&gt;document()-&gt;updateViewportArguments() call, but that might look more suspicious and raise questions while reviewing, than a new frame-&gt;page()-&gt;updateViewportArguments() call without the mainframe() check.
&gt; Though, it is rather subjective.
&gt; 
&gt; (Also, Page::m_viewportArguments looks redundant to me)

You could assert as well, making sure people only call it from the right place</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548855</commentid>
    <comment_count>5</comment_count>
      <attachid>125366</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-02-03 10:53:25 -0800</bug_when>
    <thetext>Created attachment 125366
patch v2 (moved updateViewportArguments from Page to Document)

Thanks for suggestions. Updated patch. Not using ASSERT because I don&apos;t want the callers to know how viewport update and the main frame are related and to check that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549884</commentid>
    <comment_count>6</comment_count>
      <attachid>125366</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-06 03:58:17 -0800</bug_when>
    <thetext>Comment on attachment 125366
patch v2 (moved updateViewportArguments from Page to Document)

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

&gt; Source/WebCore/ChangeLog:5
&gt; +        Avoid Page::updateViewportArguments() if the causing frame is not the main frame
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=77387
&gt; +

I am not sure how this should affect frames going to fullscreen (http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550053</commentid>
    <comment_count>7</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-02-06 09:17:04 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I am not sure how this should affect frames going to fullscreen (http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html)

Is fullscreen API covered by the current layout tests (I saw some fullscreen tests)? If yes, I have verified that my patch won&apos;t affect any existing layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550133</commentid>
    <comment_count>8</comment_count>
      <attachid>125366</attachid>
    <who name="alan">zalan</who>
    <bug_when>2012-02-06 11:31:47 -0800</bug_when>
    <thetext>Comment on attachment 125366
patch v2 (moved updateViewportArguments from Page to Document)

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

&gt; Source/WebCore/dom/Document.cpp:2807
&gt; +        page()-&gt;chrome()-&gt;dispatchViewportPropertiesDidChange(m_viewportArguments);

Not super important, but i&apos;d check if the frame() is NULL. If both mainframe and frame are NULL, the viewport prop. change is dispatched. Though I&apos;m not sure if it can ever happen.

&gt; Source/WebCore/html/HTMLBodyElement.cpp:186
&gt; +    document()-&gt;updateViewportArguments();

missing if (document())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550145</commentid>
    <comment_count>9</comment_count>
      <attachid>125366</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-02-06 11:43:19 -0800</bug_when>
    <thetext>Comment on attachment 125366
patch v2 (moved updateViewportArguments from Page to Document)

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

&gt;&gt; Source/WebCore/dom/Document.cpp:2807
&gt;&gt; +        page()-&gt;chrome()-&gt;dispatchViewportPropertiesDidChange(m_viewportArguments);
&gt; 
&gt; Not super important, but i&apos;d check if the frame() is NULL. If both mainframe and frame are NULL, the viewport prop. change is dispatched. Though I&apos;m not sure if it can ever happen.

As page() is &apos;{ m_frame ? m_frame-&gt;page() : 0; }, frame() won&apos;t be NULL if page() is not NULL.

&gt;&gt; Source/WebCore/html/HTMLBodyElement.cpp:186
&gt;&gt; +    document()-&gt;updateViewportArguments();
&gt; 
&gt; missing if (document())

document() won&apos;t be NULL, because here is insertedIntoDocument(). Also there are at least 2 &quot;document()-&gt;&quot; in the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550152</commentid>
    <comment_count>10</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-02-06 11:47:42 -0800</bug_when>
    <thetext>&gt; 
&gt; &gt;&gt; Source/WebCore/html/HTMLBodyElement.cpp:186
&gt; &gt;&gt; +    document()-&gt;updateViewportArguments();
&gt; &gt; 
&gt; &gt; missing if (document())
&gt; 
&gt; document() won&apos;t be NULL, because here is insertedIntoDocument(). Also there are at least 2 &quot;document()-&gt;&quot; in the function.
good, i was just looking at the diff, where the old code had the document() check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550168</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-06 11:55:26 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; I am not sure how this should affect frames going to fullscreen (http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html)
&gt; 
&gt; Is fullscreen API covered by the current layout tests (I saw some fullscreen tests)? If yes, I have verified that my patch won&apos;t affect any existing layout tests.

I don&apos;t believe there are any tests where for instance and iframe becomes fullscreen and that has a viewport meta tag, but it should be a valid use-case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550257</commentid>
    <comment_count>12</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-02-06 13:56:04 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I don&apos;t believe there are any tests where for instance and iframe becomes fullscreen and that has a viewport meta tag, but it should be a valid use-case.

Without the patch, updateViewportArguments() is called more frequently when the viewports of sub-frames change, but only the viewport of the main frame/document is used. I wonder if a sub-frame will become the main frame when it goes full-screen. If not, this should be another bug independent with this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550346</commentid>
    <comment_count>13</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-06 15:23:37 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; I don&apos;t believe there are any tests where for instance and iframe becomes fullscreen and that has a viewport meta tag, but it should be a valid use-case.
&gt; 
&gt; Without the patch, updateViewportArguments() is called more frequently when the viewports of sub-frames change, but only the viewport of the main frame/document is used. I wonder if a sub-frame will become the main frame when it goes full-screen. If not, this should be another bug independent with this one.

I do not believe that they become the main frame, but I might be wrong. I also do not think that anyone considered this use case when combining the Fullscreen spec with CSS Device Adaption.

The question is does the CSS Device Adaption spec apply to fullscreen iframe and even fullscreen elements as it now supports setting a viewport using CSS (which we do not support yet).

Could you look into this or open a bug (cc me please).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550348</commentid>
    <comment_count>14</comment_count>
      <attachid>125366</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-06 15:24:34 -0800</bug_when>
    <thetext>Comment on attachment 125366
patch v2 (moved updateViewportArguments from Page to Document)

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

&gt;&gt;&gt; Source/WebCore/html/HTMLBodyElement.cpp:186
&gt;&gt;&gt; +    document()-&gt;updateViewportArguments();
&gt;&gt; 
&gt;&gt; missing if (document())
&gt; 
&gt; document() won&apos;t be NULL, because here is insertedIntoDocument(). Also there are at least 2 &quot;document()-&gt;&quot; in the function.

You could add an ASSERT just in case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550475</commentid>
    <comment_count>15</comment_count>
      <attachid>125366</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-02-06 17:44:03 -0800</bug_when>
    <thetext>Comment on attachment 125366
patch v2 (moved updateViewportArguments from Page to Document)

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

&gt;&gt;&gt;&gt; Source/WebCore/html/HTMLBodyElement.cpp:186
&gt;&gt;&gt;&gt; +    document()-&gt;updateViewportArguments();
&gt;&gt;&gt; 
&gt;&gt;&gt; missing if (document())
&gt;&gt; 
&gt;&gt; document() won&apos;t be NULL, because here is insertedIntoDocument(). Also there are at least 2 &quot;document()-&gt;&quot; in the function.
&gt; 
&gt; You could add an ASSERT just in case

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550477</commentid>
    <comment_count>16</comment_count>
      <attachid>125741</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-02-06 17:46:26 -0800</bug_when>
    <thetext>Created attachment 125741
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550570</commentid>
    <comment_count>17</comment_count>
      <attachid>125741</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 20:17:10 -0800</bug_when>
    <thetext>Comment on attachment 125741
patch for landing

Clearing flags on attachment: 125741

Committed r106899: &lt;http://trac.webkit.org/changeset/106899&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550571</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 20:17:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550702</commentid>
    <comment_count>19</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-07 01:11:59 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 125741 [details])
&gt; Clearing flags on attachment: 125741
&gt; 
&gt; Committed r106899: &lt;http://trac.webkit.org/changeset/106899&gt;

FTR this broke on GTK :( See bug 77943</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124794</attachid>
            <date>2012-01-31 12:17:17 -0800</date>
            <delta_ts>2012-02-03 10:53:25 -0800</delta_ts>
            <desc>patch (for preview, no test)</desc>
            <filename>77387-1</filename>
            <type>text/plain</type>
            <size>3028</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjM3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAxLTMxICBYaWFuemh1
IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQXZvaWQgUGFnZTo6
dXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKSBpZiB0aGUgY2F1c2luZyBmcmFtZSBpcyBub3QgdGhl
IG1haW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc3Mzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nl
c3NWaWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SW5QYWdlQ2FjaGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxCb2R5RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldERvY3VtZW50KToKKwogMjAx
Mi0wMS0zMSAgUmFmYWVsIEJyYW5kYW8gIDxyYWZhZWwubG9ib0BvcGVuYm9zc2Eub3JnPgogCiAg
ICAgICAgIEhUTUxJc0luZGV4RWxlbWVudCBzaG91bGQgbm90IGV4cG9zZSBIVE1MSW5wdXRFbGVt
ZW50IHByb3BlcnRpZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTA2
MzA5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjc4MCw3ICsyNzgwLDcgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KGNvbnN0
IFN0cgogICAgIHByb2Nlc3NBcmd1bWVudHMoZmVhdHVyZXMsICh2b2lkKikmbV92aWV3cG9ydEFy
Z3VtZW50cywgJnNldFZpZXdwb3J0RmVhdHVyZSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSB0aGlz
LT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5wYWdlKCkpCisgICAgaWYgKCFm
cmFtZSB8fCAhZnJhbWUtPnBhZ2UoKSB8fCBmcmFtZSAhPSBmcmFtZS0+cGFnZSgpLT5tYWluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZnJhbWUtPnBhZ2UoKS0+dXBkYXRlVmlld3Bv
cnRBcmd1bWVudHMoKTsKQEAgLTQwNTYsNyArNDA1Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldElu
UGFnZUNhY2hlKGJvb2wgZmxhZykKICAgICAgICAgc2V0UmVuZGVyZXIobV9zYXZlZFJlbmRlcmVy
KTsKICAgICAgICAgbV9zYXZlZFJlbmRlcmVyID0gMDsKIAotICAgICAgICBpZiAoZnJhbWUoKSAm
JiBmcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2Uo
KSAmJiBmcmFtZSgpID09IGZyYW1lKCktPnBhZ2UoKS0+bWFpbkZyYW1lKCkpCiAgICAgICAgICAg
ICBmcmFtZSgpLT5wYWdlKCktPnVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCk7CiAKICAgICAgICAg
aWYgKGNoaWxkTmVlZHNTdHlsZVJlY2FsYygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQm9keUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJvZHlFbGVtZW50LmNwcAkocmV2aXNpb24gMTA2MzA5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQm9keUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgzLDcgQEAg
dm9pZCBIVE1MQm9keUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZQogICAgIGlmIChGcmFtZVZp
ZXcqIHZpZXcgPSBkb2N1bWVudCgpLT52aWV3KCkpCiAgICAgICAgIHZpZXctPnNjaGVkdWxlUmVs
YXlvdXQoKTsKIAotICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkKKyAg
ICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCkgPT0gZG9jdW1l
bnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT51
cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAko
cmV2aXNpb24gMTA2MzA5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5MCwxMCArMjkwLDkgQEAgdm9pZCBGcmFtZTo6c2V0RG9jdW1lbnQoUGFz
c1JlZlB0cjxEb2N1bQogICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGVkICdkb2N1bWVudCcgcHJvcGVy
dHksIHdoaWNoIGlzIG5vdyBzdGFsZS4KICAgICBtX3NjcmlwdC51cGRhdGVEb2N1bWVudCgpOwog
Ci0gICAgaWYgKG1fcGFnZSkgeworICAgIGlmIChtX3BhZ2UgJiYgbV9wYWdlLT5tYWluRnJhbWUo
KSA9PSB0aGlzKSB7CiAgICAgICAgIG1fcGFnZS0+dXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKTsK
LSAgICAgICAgaWYgKG1fcGFnZS0+bWFpbkZyYW1lKCkgPT0gdGhpcykKLSAgICAgICAgICAgIG5v
dGlmeUNocm9tZUNsaWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCk7CisgICAgICAg
IG5vdGlmeUNocm9tZUNsaWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCk7CiAgICAg
fQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125366</attachid>
            <date>2012-02-03 10:53:25 -0800</date>
            <delta_ts>2012-02-06 17:46:26 -0800</delta_ts>
            <desc>patch v2 (moved updateViewportArguments from Page to Document)</desc>
            <filename>77387b</filename>
            <type>text/plain</type>
            <size>5968</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTAzICBYaWFuemh1
IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQXZvaWQgUGFnZTo6
dXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKSBpZiB0aGUgY2F1c2luZyBmcmFtZSBpcyBub3QgdGhl
IG1haW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc3Mzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nl
c3NWaWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlVmlld3BvcnRB
cmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEluUGFnZUNhY2hlKToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxCb2R5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVs
ZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXREb2N1bWVudCk6CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnZpZXdwb3J0QXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoUGFnZSk6
CisKIDIwMTItMDItMDMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTAzNTIwNzM+IEZsb2F0aW5nIGltYWdlIGxlYXZlcyBob2xlIGlu
IHByZXZpb3VzIGNvbHVtbiB3aGVuIHdyYXBwZWQgdG8gbmV4dCBjb2x1bW4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTA2NjcwKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc5OCwxMSArMjc5OCwxMyBAQCB2b2lk
IERvY3VtZW50Ojpwcm9jZXNzVmlld3BvcnQoY29uc3QgU3RyCiAgICAgbV92aWV3cG9ydEFyZ3Vt
ZW50cyA9IFZpZXdwb3J0QXJndW1lbnRzKFZpZXdwb3J0QXJndW1lbnRzOjpWaWV3cG9ydE1ldGEp
OwogICAgIHByb2Nlc3NBcmd1bWVudHMoZmVhdHVyZXMsICh2b2lkKikmbV92aWV3cG9ydEFyZ3Vt
ZW50cywgJnNldFZpZXdwb3J0RmVhdHVyZSk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5m
cmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHJldHVy
bjsKKyAgICB1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpOworfQogCi0gICAgZnJhbWUtPnBhZ2Uo
KS0+dXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKTsKK3ZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVZpZXdw
b3J0QXJndW1lbnRzKCkKK3sKKyAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+bWFpbkZyYW1lKCkg
PT0gZnJhbWUoKSkKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS0+ZGlzcGF0Y2hWaWV3cG9ydFBy
b3BlcnRpZXNEaWRDaGFuZ2UobV92aWV3cG9ydEFyZ3VtZW50cyk7CiB9CiAKIHZvaWQgRG9jdW1l
bnQ6OnByb2Nlc3NSZWZlcnJlclBvbGljeShjb25zdCBTdHJpbmcmIHBvbGljeSkKQEAgLTQwODAs
OCArNDA4Miw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEluUGFnZUNhY2hlKGJvb2wgZmxhZykKICAg
ICAgICAgc2V0UmVuZGVyZXIobV9zYXZlZFJlbmRlcmVyKTsKICAgICAgICAgbV9zYXZlZFJlbmRl
cmVyID0gMDsKIAotICAgICAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkpCi0gICAg
ICAgICAgICBmcmFtZSgpLT5wYWdlKCktPnVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCk7CisgICAg
ICAgIHVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCk7CiAKICAgICAgICAgaWYgKGNoaWxkTmVlZHNT
dHlsZVJlY2FsYygpKQogICAgICAgICAgICAgc2NoZWR1bGVTdHlsZVJlY2FsYygpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDEwNjY3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MDMsNiArODAzLDcgQEAgcHVibGljOgog
ICAgICAqLwogICAgIHZvaWQgcHJvY2Vzc0h0dHBFcXVpdihjb25zdCBTdHJpbmcmIGVxdWl2LCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQpOwogICAgIHZvaWQgcHJvY2Vzc1ZpZXdwb3J0KGNvbnN0IFN0
cmluZyYgZmVhdHVyZXMpOworICAgIHZvaWQgdXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKTsKICAg
ICB2b2lkIHByb2Nlc3NSZWZlcnJlclBvbGljeShjb25zdCBTdHJpbmcmIHBvbGljeSk7CiAKICAg
ICAvLyBSZXR1cm5zIHRoZSBvd25pbmcgZWxlbWVudCBpbiB0aGUgcGFyZW50IGRvY3VtZW50LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAkocmV2aXNpb24gMTA2
NjcwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODMsOCArMTgzLDcgQEAgdm9pZCBIVE1MQm9keUVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZQogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudCgpLT52aWV3KCkp
CiAgICAgICAgIHZpZXctPnNjaGVkdWxlUmVsYXlvdXQoKTsKIAotICAgIGlmIChkb2N1bWVudCgp
ICYmIGRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT51cGRh
dGVWaWV3cG9ydEFyZ3VtZW50cygpOworICAgIGRvY3VtZW50KCktPnVwZGF0ZVZpZXdwb3J0QXJn
dW1lbnRzKCk7CiB9CiAKIGJvb2wgSFRNTEJvZHlFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRy
aWJ1dGUgKmF0dHIpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMTA2
NjcwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5MCwxMSArMjkwLDExIEBAIHZvaWQgRnJhbWU6OnNldERvY3VtZW50KFBhc3NSZWZQdHI8RG9j
dW0KICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCAnZG9jdW1lbnQnIHByb3BlcnR5LCB3aGljaCBp
cyBub3cgc3RhbGUuCiAgICAgbV9zY3JpcHQudXBkYXRlRG9jdW1lbnQoKTsKIAotICAgIGlmICht
X3BhZ2UpIHsKLSAgICAgICAgbV9wYWdlLT51cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpOwotICAg
ICAgICBpZiAobV9wYWdlLT5tYWluRnJhbWUoKSA9PSB0aGlzKQotICAgICAgICAgICAgbm90aWZ5
Q2hyb21lQ2xpZW50V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKTsKLSAgICB9CisgICAg
aWYgKG1fZG9jKQorICAgICAgICBtX2RvYy0+dXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKTsKKwor
ICAgIGlmIChtX3BhZ2UgJiYgbV9wYWdlLT5tYWluRnJhbWUoKSA9PSB0aGlzKQorICAgICAgICBu
b3RpZnlDaHJvbWVDbGllbnRXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCgpOwogfQogCiAj
aWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2
aXNpb24gMTA2NjcwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQwLDYgKzI0MCwxMSBAQCBQYWdlOjp+UGFnZSgpCiAjZW5kaWYKIH0KIAorVmll
d3BvcnRBcmd1bWVudHMgUGFnZTo6dmlld3BvcnRBcmd1bWVudHMoKSBjb25zdAoreworICAgIHJl
dHVybiBtYWluRnJhbWUoKSAmJiBtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSA/IG1haW5GcmFtZSgp
LT5kb2N1bWVudCgpLT52aWV3cG9ydEFyZ3VtZW50cygpIDogVmlld3BvcnRBcmd1bWVudHMoKTsK
K30KKwogI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCiBTY3JvbGxpbmdDb29yZGluYXRv
ciogUGFnZTo6c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKQogewpAQCAtNDMwLDE1ICs0MzUsNiBAQCB2
b2lkIFBhZ2U6OnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lCiAgICAgICAgIGZyYW1lLT5k
b2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KIAot
dm9pZCBQYWdlOjp1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpCi17Ci0gICAgaWYgKCFtYWluRnJh
bWUoKSB8fCAhbWFpbkZyYW1lKCktPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fdmlld3BvcnRBcmd1bWVudHMgPSBtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dmlld3BvcnRB
cmd1bWVudHMoKTsKLSAgICBjaHJvbWUoKS0+ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRD
aGFuZ2UobV92aWV3cG9ydEFyZ3VtZW50cyk7Ci19Ci0KIHZvaWQgUGFnZTo6cmVmcmVzaFBsdWdp
bnMoYm9vbCByZWxvYWQpCiB7CiAgICAgaWYgKCFhbGxQYWdlcykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CShyZXZpc2lvbiAxMDY2NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMzLDggKzEzMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICBSZW5kZXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJldHVybiBtX3RoZW1lLmdldCgpOyB9Owog
Ci0gICAgICAgIFZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV92aWV3cG9ydEFyZ3VtZW50czsgfQotICAgICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0
QXJndW1lbnRzKCk7CisgICAgICAgIFZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRz
KCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIHZvaWQgcmVmcmVzaFBsdWdpbnMoYm9vbCByZWxv
YWQpOwogICAgICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhKCkgY29uc3Q7CkBAIC00NjQsOCAr
NDYzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFZpZXdNb2RlIG1fdmlld01v
ZGU7CiAKLSAgICAgICAgVmlld3BvcnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKLQog
ICAgICAgICBkb3VibGUgbV9taW5pbXVtVGltZXJJbnRlcnZhbDsKIAogICAgICAgICBPd25QdHI8
U2Nyb2xsYWJsZUFyZWFTZXQ+IG1fc2Nyb2xsYWJsZUFyZWFTZXQ7Cg==
</data>
<flag name="review"
          id="126861"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125741</attachid>
            <date>2012-02-06 17:46:26 -0800</date>
            <delta_ts>2012-02-06 20:17:09 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>77387c</filename>
            <type>text/plain</type>
            <size>6295</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTA2ICBYaWFuemh1
IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQXZvaWQgUGFnZTo6
dXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKSBpZiB0aGUgY2F1c2luZyBmcmFtZSBpcyBub3QgdGhl
IG1haW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc3Mzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnByb2Nlc3NWaWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBk
YXRlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldElu
UGFnZUNhY2hlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQm9keUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXREb2N1bWVudCk6CisgICAg
ICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnZpZXdwb3J0QXJn
dW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAg
ICAgICAoUGFnZSk6CisKIDIwMTItMDItMDYgIEdyZWdnIFRhdmFyZXMgIDxnbWFuQGdvb2dsZS5j
b20+CiAKICAgICAgICAgQWRkIHdlYkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZCBTZXR0aW5ncyBm
bGFnCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OTQsMTEg
KzI3OTQsMTMgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KGNvbnN0IFN0cgogICAg
IG1fdmlld3BvcnRBcmd1bWVudHMgPSBWaWV3cG9ydEFyZ3VtZW50cyhWaWV3cG9ydEFyZ3VtZW50
czo6Vmlld3BvcnRNZXRhKTsKICAgICBwcm9jZXNzQXJndW1lbnRzKGZlYXR1cmVzLCAodm9pZCop
Jm1fdmlld3BvcnRBcmd1bWVudHMsICZzZXRWaWV3cG9ydEZlYXR1cmUpOwogCi0gICAgRnJhbWUq
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+cGFnZSgp
KQotICAgICAgICByZXR1cm47CisgICAgdXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKTsKK30KIAot
ICAgIGZyYW1lLT5wYWdlKCktPnVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCk7Cit2b2lkIERvY3Vt
ZW50Ojp1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpCit7CisgICAgaWYgKHBhZ2UoKSAmJiBwYWdl
KCktPm1haW5GcmFtZSgpID09IGZyYW1lKCkpCisgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCktPmRp
c3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKG1fdmlld3BvcnRBcmd1bWVudHMpOwog
fQogCiB2b2lkIERvY3VtZW50Ojpwcm9jZXNzUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiBw
b2xpY3kpCkBAIC00MDc2LDggKzQwNzgsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRJblBhZ2VDYWNo
ZShib29sIGZsYWcpCiAgICAgICAgIHNldFJlbmRlcmVyKG1fc2F2ZWRSZW5kZXJlcik7CiAgICAg
ICAgIG1fc2F2ZWRSZW5kZXJlciA9IDA7CiAKLSAgICAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUo
KS0+cGFnZSgpKQotICAgICAgICAgICAgZnJhbWUoKS0+cGFnZSgpLT51cGRhdGVWaWV3cG9ydEFy
Z3VtZW50cygpOworICAgICAgICB1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpOwogCiAgICAgICAg
IGlmIChjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSkKICAgICAgICAgICAgIHNjaGVkdWxlU3R5bGVS
ZWNhbGMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxMDY4ODEpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODAzLDYgKzgw
Myw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICB2b2lkIHByb2Nlc3NIdHRwRXF1aXYoY29uc3Qg
U3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKICAgICB2b2lkIHByb2Nlc3NW
aWV3cG9ydChjb25zdCBTdHJpbmcmIGZlYXR1cmVzKTsKKyAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0
QXJndW1lbnRzKCk7CiAgICAgdm9pZCBwcm9jZXNzUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5n
JiBwb2xpY3kpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgb3duaW5nIGVsZW1lbnQgaW4gdGhlIHBh
cmVudCBkb2N1bWVudC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5j
cHAJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2Myw4IEBAIHZvaWQgSFRNTEJvZHlF
bGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWUKIHsKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQoKTsKIAorICAgIEFTU0VSVChkb2N1bWVudCgpKTsKKwogICAgIC8vIEZJWE1F
OiBQZXJoYXBzIHRoaXMgY29kZSBzaG91bGQgYmUgaW4gYXR0YWNoKCkgaW5zdGVhZCBvZiBoZXJl
LgogICAgIEVsZW1lbnQqIG93bmVyRWxlbWVudCA9IGRvY3VtZW50KCktPm93bmVyRWxlbWVudCgp
OwogICAgIGlmIChvd25lckVsZW1lbnQgJiYgKG93bmVyRWxlbWVudC0+aGFzVGFnTmFtZShmcmFt
ZVRhZykgfHwgb3duZXJFbGVtZW50LT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpKSB7CkBAIC0xODAs
OCArMTgyLDcgQEAgdm9pZCBIVE1MQm9keUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZQogICAg
IGlmIChGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudCgpLT52aWV3KCkpCiAgICAgICAgIHZpZXct
PnNjaGVkdWxlUmVsYXlvdXQoKTsKIAotICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCkt
PnBhZ2UoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT51cGRhdGVWaWV3cG9ydEFyZ3Vt
ZW50cygpOworICAgIGRvY3VtZW50KCktPnVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCk7CiB9CiAK
IGJvb2wgSFRNTEJvZHlFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUgKmF0dHIpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMTA2ODgxKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCwxMSArMjkwLDEx
IEBAIHZvaWQgRnJhbWU6OnNldERvY3VtZW50KFBhc3NSZWZQdHI8RG9jdW0KICAgICAvLyBVcGRh
dGUgdGhlIGNhY2hlZCAnZG9jdW1lbnQnIHByb3BlcnR5LCB3aGljaCBpcyBub3cgc3RhbGUuCiAg
ICAgbV9zY3JpcHQudXBkYXRlRG9jdW1lbnQoKTsKIAotICAgIGlmIChtX3BhZ2UpIHsKLSAgICAg
ICAgbV9wYWdlLT51cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpOwotICAgICAgICBpZiAobV9wYWdl
LT5tYWluRnJhbWUoKSA9PSB0aGlzKQotICAgICAgICAgICAgbm90aWZ5Q2hyb21lQ2xpZW50V2hl
ZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKTsKLSAgICB9CisgICAgaWYgKG1fZG9jKQorICAg
ICAgICBtX2RvYy0+dXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKTsKKworICAgIGlmIChtX3BhZ2Ug
JiYgbV9wYWdlLT5tYWluRnJhbWUoKSA9PSB0aGlzKQorICAgICAgICBub3RpZnlDaHJvbWVDbGll
bnRXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCgpOwogfQogCiAjaWYgRU5BQkxFKE9SSUVO
VEFUSU9OX0VWRU5UUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTA2ODgxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDYg
KzI0MCwxMSBAQCBQYWdlOjp+UGFnZSgpCiAjZW5kaWYKIH0KIAorVmlld3BvcnRBcmd1bWVudHMg
UGFnZTo6dmlld3BvcnRBcmd1bWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBtYWluRnJhbWUo
KSAmJiBtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSA/IG1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT52
aWV3cG9ydEFyZ3VtZW50cygpIDogVmlld3BvcnRBcmd1bWVudHMoKTsKK30KKwogI2lmIEVOQUJM
RShUSFJFQURFRF9TQ1JPTExJTkcpCiBTY3JvbGxpbmdDb29yZGluYXRvciogUGFnZTo6c2Nyb2xs
aW5nQ29vcmRpbmF0b3IoKQogewpAQCAtNDMwLDE1ICs0MzUsNiBAQCB2b2lkIFBhZ2U6OnNldE5l
ZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lCiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdHls
ZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KIAotdm9pZCBQYWdlOjp1cGRh
dGVWaWV3cG9ydEFyZ3VtZW50cygpCi17Ci0gICAgaWYgKCFtYWluRnJhbWUoKSB8fCAhbWFpbkZy
YW1lKCktPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdmlld3BvcnRBcmd1
bWVudHMgPSBtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dmlld3BvcnRBcmd1bWVudHMoKTsKLSAg
ICBjaHJvbWUoKS0+ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UobV92aWV3cG9y
dEFyZ3VtZW50cyk7Ci19Ci0KIHZvaWQgUGFnZTo6cmVmcmVzaFBsdWdpbnMoYm9vbCByZWxvYWQp
CiB7CiAgICAgaWYgKCFhbGxQYWdlcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAxMDY4
ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMz
LDggKzEzMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBSZW5kZXJUaGVtZSog
dGhlbWUoKSBjb25zdCB7IHJldHVybiBtX3RoZW1lLmdldCgpOyB9OwogCi0gICAgICAgIFZpZXdw
b3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9y
dEFyZ3VtZW50czsgfQotICAgICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCk7Cisg
ICAgICAgIFZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3Q7CiAKICAg
ICAgICAgc3RhdGljIHZvaWQgcmVmcmVzaFBsdWdpbnMoYm9vbCByZWxvYWQpOwogICAgICAgICBQ
bHVnaW5EYXRhKiBwbHVnaW5EYXRhKCkgY29uc3Q7CkBAIC00NjQsOCArNDYzLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIFZpZXdNb2RlIG1fdmlld01vZGU7CiAKLSAgICAgICAg
Vmlld3BvcnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKLQogICAgICAgICBkb3VibGUg
bV9taW5pbXVtVGltZXJJbnRlcnZhbDsKIAogICAgICAgICBPd25QdHI8U2Nyb2xsYWJsZUFyZWFT
ZXQ+IG1fc2Nyb2xsYWJsZUFyZWFTZXQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>