<?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>20303</bug_id>
          
          <creation_ts>2008-08-06 07:52:14 -0700</creation_ts>
          <short_desc>[Qt] Key events are not working in frames.</short_desc>
          <delta_ts>2010-06-10 12:34:57 -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 Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.koffice.org/developer/apidocs/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>26070</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tor Arne Vestbø">vestbo</reporter>
          <assigned_to name="Yongjun Zhang">yongjun.zhang</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kenneth</cc>
    
    <cc>robert</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>87962</commentid>
    <comment_count>0</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2008-08-06 07:52:14 -0700</bug_when>
    <thetext>Example: 

http://www.koffice.org/developer/apidocs/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87963</commentid>
    <comment_count>1</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2008-08-06 07:54:11 -0700</bug_when>
    <thetext>Works using the 4.4.0 demobrowser, but no with arora against 4.0.0. or main</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101807</commentid>
    <comment_count>2</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2008-12-08 02:33:22 -0800</bug_when>
    <thetext>Using the arrow keys to navigate the individual frames of the test case site (KOffice API docs) does not work. This works fine when there&apos;s only one main frame. Tab key works though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122429</commentid>
    <comment_count>3</comment_count>
      <attachid>30558</attachid>
    <who name="Yongjun Zhang">yongjun.zhang</who>
    <bug_when>2009-05-21 14:50:07 -0700</bug_when>
    <thetext>Created attachment 30558
sending scroll key events to subframe.

For scrolling keys (Key_Up, Key_Down, Key_Left, Key_Right), send the key event to currently focused subframe, instead of the main frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122431</commentid>
    <comment_count>4</comment_count>
      <attachid>30560</attachid>
    <who name="Yongjun Zhang">yongjun.zhang</who>
    <bug_when>2009-05-21 14:53:39 -0700</bug_when>
    <thetext>Created attachment 30560
Oops! The previous patch was wrong.

Send scrolling key events to subframe, instead of the main frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122790</commentid>
    <comment_count>5</comment_count>
      <attachid>30560</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-22 21:44:10 -0700</bug_when>
    <thetext>Comment on attachment 30560
Oops! The previous patch was wrong.


&gt; -    if (!mainFrame-&gt;d-&gt;frame-&gt;eventHandler()-&gt;scrollOverflow(direction, granularity))
&gt; -        mainFrame-&gt;d-&gt;frame-&gt;view()-&gt;scroll(direction, granularity);
&gt; +    bool handled = true;
&gt; +    if (!frame-&gt;eventHandler()-&gt;scrollOverflow(direction, granularity)) {
&gt; +        handled = frame-&gt;view()-&gt;scroll(direction, granularity);
&gt; +        Frame* parent = frame-&gt;tree()-&gt;parent();
&gt; +        while(!handled &amp;&amp; parent) {
&gt; +            handled = parent-&gt;view()-&gt;scroll(direction, granularity);
&gt; +            parent = parent-&gt;tree()-&gt;parent();
&gt; +        }
&gt; +    }

Are you sure you want to descent here? We are using focusedOrMainFrame() in the qwebpage.cpp. I don&apos;t think it is appropriate to descent here...

I think you want the following code..

    if (!frame-&gt;eventHandler()-&gt;scrollOverflow(direction, granularity))
        return frame-&gt;view()-&gt;scroll(direction, granularity);
    return false;

you return true... could you elaborate?

and it would be great if you could create a LayoutTest for this bug. We have an EventSender in Qt which allows you to send key events from HTML and then you can check if the keys arrive at the right frame. Could you attempt doing that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123659</commentid>
    <comment_count>6</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-29 18:15:35 -0700</bug_when>
    <thetext>As of the comment in Bug #26070 we will need this eventSender patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123990</commentid>
    <comment_count>7</comment_count>
      <attachid>30870</attachid>
    <who name="Yongjun Zhang">yongjun.zhang</who>
    <bug_when>2009-06-02 09:14:19 -0700</bug_when>
    <thetext>Created attachment 30870
add a layout test to test the fix.

thanks for the comments.

The idea is to scroll the currently focused subframe first, if it can&apos;t scroll to the desired direction, we scroll the parent frame. 

I added a layout test to make sure the key event goes to the right sub-frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124680</commentid>
    <comment_count>8</comment_count>
      <attachid>30870</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-06-07 06:11:28 -0700</bug_when>
    <thetext>Comment on attachment 30870
add a layout test to test the fix.

Great. You could make this with one or two lines less of code with a do {} while construct. Would you be interested in moving this function into the EventHandler class and make the windows version call that &quot;shared&quot; implementation. It would be greatly appreciated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126111</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-15 18:50:21 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 30870 [review])
&gt; Great. You could make this with one or two lines less of code with a do {}
&gt; while construct. Would you be interested in moving this function into the
&gt; EventHandler class and make the windows version call that &quot;shared&quot;
&gt; implementation. It would be greatly appreciated?

It sounds like this still needs work?  It&apos;s r+&apos;d but it sounds like I can&apos;t land it as is.  Please advise.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126295</commentid>
    <comment_count>10</comment_count>
      <attachid>31374</attachid>
    <who name="Yongjun Zhang">yongjun.zhang</who>
    <bug_when>2009-06-16 14:36:16 -0700</bug_when>
    <thetext>Created attachment 31374
changes according to the comments.

Changes as per zecke&apos;s comment:

1. move scroll handling code to EventHandler so that other ports can share the same functionality.
2. use do..while to shorten the code a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126310</commentid>
    <comment_count>11</comment_count>
      <attachid>31378</attachid>
    <who name="Yongjun Zhang">yongjun.zhang</who>
    <bug_when>2009-06-16 14:51:40 -0700</bug_when>
    <thetext>Created attachment 31378
new patch to include recommended changed in the comments.

Change maded as per zecke&apos;s suggestions:

1. move scrolling handling code to EventHandler so that other ports can use it.
2. use do...while to shorten the code a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126709</commentid>
    <comment_count>12</comment_count>
      <attachid>31378</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-06-18 09:44:25 -0700</bug_when>
    <thetext>Comment on attachment 31378
new patch to include recommended changed in the comments.

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 44737)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,18 @@
&gt; +2009-06-16  Yongjun Zhang  &lt;yongjun.zhang@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Test: platform/qt/fast/events/event-sender-keydown-frame.html
&gt; +
&gt; +        Bug 20303: [Qt] Key events are not working in frames.
&gt; +
&gt; +        Merge scrolling handling code in qt and win port, move it to
&gt; +        EventHandler.
&gt; +
&gt; +        * page/EventHandler.cpp:
&gt; +        (WebCore::EventHandler::scrollRecursively):
&gt; +        * page/EventHandler.h:
&gt; +
&gt;  2009-06-16  Jian Li  &lt;jianli@chromium.org&gt;
&gt;  
&gt;          Reviewed by David Levin.
&gt; Index: WebCore/page/EventHandler.cpp
&gt; ===================================================================
&gt; --- WebCore/page/EventHandler.cpp	(revision 44736)
&gt; +++ WebCore/page/EventHandler.cpp	(working copy)
&gt; @@ -856,6 +856,21 @@ bool EventHandler::scrollOverflow(Scroll
&gt;      return false;
&gt;  }
&gt;  
&gt; +bool EventHandler::scrollRecursively(ScrollDirection direction, ScrollGranularity granularity)
&gt; +{
&gt; +    bool handled = scrollOverflow(direction, granularity);
&gt; +    if (!handled) {
&gt; +        Frame* f = m_frame;
&gt; +        do {
&gt; +            FrameView* view = f-&gt;view();
&gt; +            handled = view ? view-&gt;scroll(direction, granularity) : false;
&gt; +            f = f-&gt;tree()-&gt;parent();
&gt; +        } while (!handled &amp;&amp; f);
&gt; +     }
&gt; +
&gt; +    return handled;
&gt; +}
&gt; +
&gt;  IntPoint EventHandler::currentMousePosition() const
&gt;  {
&gt;      return m_currentMousePosition;
&gt; Index: WebCore/page/EventHandler.h
&gt; ===================================================================
&gt; --- WebCore/page/EventHandler.h	(revision 44736)
&gt; +++ WebCore/page/EventHandler.h	(working copy)
&gt; @@ -109,6 +109,8 @@ public:
&gt;  
&gt;      bool scrollOverflow(ScrollDirection, ScrollGranularity);
&gt;  
&gt; +    bool scrollRecursively(ScrollDirection, ScrollGranularity);
&gt; +
&gt;      bool shouldDragAutoNode(Node*, const IntPoint&amp;) const; // -webkit-user-drag == auto
&gt;  
&gt;      bool tabsToLinks(KeyboardEvent*) const;
&gt; Index: WebKit/qt/ChangeLog
&gt; ===================================================================
&gt; --- WebKit/qt/ChangeLog	(revision 44737)
&gt; +++ WebKit/qt/ChangeLog	(working copy)
&gt; @@ -1,3 +1,18 @@
&gt; +2009-06-16  Yongjun Zhang  &lt;yongjun.zhang@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Bug 20303: [Qt] Key events are not working in frames.
&gt; +        
&gt; +        Send scrolling events to current focused frame, bubble the event
&gt; +        up to parent frame if it is not handled.  Use EventHandler&apos;s new
&gt; +        shared scrolling code.
&gt; +
&gt; +        * Api/qwebpage.cpp:
&gt; +        (QWebPagePrivate::keyPressEvent):
&gt; +        (QWebPagePrivate::handleScrolling):
&gt; +        * Api/qwebpage_p.h:
&gt; +
&gt;  2009-06-16  David Boddie  &lt;dboddie@trolltech.com&gt;
&gt;  
&gt;          Reviewed by Simon Hausmann.
&gt; Index: WebKit/qt/Api/qwebpage.cpp
&gt; ===================================================================
&gt; --- WebKit/qt/Api/qwebpage.cpp	(revision 44736)
&gt; +++ WebKit/qt/Api/qwebpage.cpp	(working copy)
&gt; @@ -796,7 +796,7 @@ void QWebPagePrivate::keyPressEvent(QKey
&gt;              defaultFont = view-&gt;font();
&gt;          QFontMetrics fm(defaultFont);
&gt;          int fontHeight = fm.height();
&gt; -        if (!handleScrolling(ev)) {
&gt; +        if (!handleScrolling(ev, frame)) {
&gt;              switch (ev-&gt;key()) {
&gt;              case Qt::Key_Back:
&gt;                  q-&gt;triggerAction(QWebPage::Back);
&gt; @@ -999,7 +999,7 @@ void QWebPagePrivate::shortcutOverrideEv
&gt;      }
&gt;  }
&gt;  
&gt; -bool QWebPagePrivate::handleScrolling(QKeyEvent *ev)
&gt; +bool QWebPagePrivate::handleScrolling(QKeyEvent *ev, Frame* frame)

Inconsistent * decoration here.  Choose one or the other and it looks like it should be Qt coding style judging from the surrounding code.

&gt;  {
&gt;      ScrollDirection direction;
&gt;      ScrollGranularity granularity;
&gt; @@ -1046,10 +1046,7 @@ bool QWebPagePrivate::handleScrolling(QK
&gt;          }
&gt;      }
&gt;  
&gt; -    if (!mainFrame-&gt;d-&gt;frame-&gt;eventHandler()-&gt;scrollOverflow(direction, granularity))
&gt; -        mainFrame-&gt;d-&gt;frame-&gt;view()-&gt;scroll(direction, granularity);
&gt; -
&gt; -    return true;
&gt; +    return frame-&gt;eventHandler()-&gt;scrollRecursively(direction, granularity);
&gt;  }
&gt;  
&gt;  /*!
&gt; Index: WebKit/qt/Api/qwebpage_p.h
&gt; ===================================================================
&gt; --- WebKit/qt/Api/qwebpage_p.h	(revision 44736)
&gt; +++ WebKit/qt/Api/qwebpage_p.h	(working copy)
&gt; @@ -45,6 +45,7 @@ namespace WebCore
&gt;      class Element;
&gt;      class Node;
&gt;      class Page;
&gt; +    class Frame;
&gt;  
&gt;  #ifndef QT_NO_CURSOR
&gt;      class SetCursorEvent : public QEvent {
&gt; @@ -113,7 +114,7 @@ public:
&gt;  
&gt;      void shortcutOverrideEvent(QKeyEvent*);
&gt;      void leaveEvent(QEvent *);
&gt; -    bool handleScrolling(QKeyEvent*);
&gt; +    bool handleScrolling(QKeyEvent*, WebCore::Frame*);
&gt;  
&gt;  #ifndef QT_NO_SHORTCUT
&gt;      static QWebPage::WebAction editorActionForKeyEvent(QKeyEvent* event);
&gt; Index: WebKit/win/ChangeLog
&gt; ===================================================================
&gt; --- WebKit/win/ChangeLog	(revision 44737)
&gt; +++ WebKit/win/ChangeLog	(working copy)
&gt; @@ -1,3 +1,16 @@
&gt; +2009-06-16  Yongjun Zhang  &lt;yongjun.zhang@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +	
&gt; +	Bug 20303: [Qt] Key events are not working in frames.
&gt; +        
&gt; +        Move the scroll handling code to EventHandler so that other
&gt; +        ports can share the functionality.
&gt; +
&gt; +	* WebView.cpp:
&gt; +        (WebView::keyDown):
&gt; +        (EnumTextMatches::QueryInterface):
&gt; +
&gt;  2009-06-16  Brent Fulgham  &lt;bfulgham@gmail.com&gt;
&gt;  
&gt;          Reviewed by Darin Adler.
&gt; Index: WebKit/win/WebView.cpp
&gt; ===================================================================
&gt; --- WebKit/win/WebView.cpp	(revision 44736)
&gt; +++ WebKit/win/WebView.cpp	(working copy)
&gt; @@ -1600,15 +1600,7 @@ bool WebView::keyDown(WPARAM virtualKeyC
&gt;              return false;
&gt;      }
&gt;  
&gt; -    if (!frame-&gt;eventHandler()-&gt;scrollOverflow(direction, granularity)) {
&gt; -        handled = frame-&gt;view()-&gt;scroll(direction, granularity);
&gt; -        Frame* parent = frame-&gt;tree()-&gt;parent();
&gt; -        while(!handled &amp;&amp; parent) {
&gt; -            handled = parent-&gt;view()-&gt;scroll(direction, granularity);
&gt; -            parent = parent-&gt;tree()-&gt;parent();
&gt; -        }
&gt; -    }
&gt; -    return handled;
&gt; +    return frame-&gt;eventHandler()-&gt;scrollRecursively(direction, granularity);
&gt;  }
&gt;  
&gt;  bool WebView::keyPress(WPARAM charCode, LPARAM keyData, bool systemKeyDown)
&gt; Index: LayoutTests/ChangeLog
&gt; ===================================================================
&gt; --- LayoutTests/ChangeLog	(revision 44737)
&gt; +++ LayoutTests/ChangeLog	(working copy)
&gt; @@ -1,3 +1,14 @@
&gt; +2009-06-16  Yongjun Zhang  &lt;yongjun.zhang@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Bug 20303: [Qt] Key events are not working in frames.
&gt; +
&gt; +        Add a layout test to test the event is sent to the right sub-frame.
&gt; +
&gt; +        * platform/qt/fast/events/event-sender-keydown-frame-expected.txt: Added.
&gt; +        * platform/qt/fast/events/event-sender-keydown-frame.html: Added.
&gt; +
&gt;  2009-06-16  Xan Lopez  &lt;xlopez@igalia.com&gt;
&gt;  
&gt;          Disable another new test.
&gt; Index: LayoutTests/platform/qt/fast/events/event-sender-keydown-frame-expected.txt
&gt; ===================================================================
&gt; --- LayoutTests/platform/qt/fast/events/event-sender-keydown-frame-expected.txt	(revision 0)
&gt; +++ LayoutTests/platform/qt/fast/events/event-sender-keydown-frame-expected.txt	(revision 0)
&gt; @@ -0,0 +1,4 @@
&gt; +Test for bug 20303: [Qt] key events are not working in frames.
&gt; +
&gt; +
&gt; +SUCCESS
&gt; Index: LayoutTests/platform/qt/fast/events/event-sender-keydown-frame.html
&gt; ===================================================================
&gt; --- LayoutTests/platform/qt/fast/events/event-sender-keydown-frame.html	(revision 0)
&gt; +++ LayoutTests/platform/qt/fast/events/event-sender-keydown-frame.html	(revision 0)
&gt; @@ -0,0 +1,53 @@
&gt; +&lt;head&gt;
&gt; +&lt;/head&gt;
&gt; +&lt;body&gt;
&gt; +    &lt;p&gt;Test for &lt;a href=&quot;http://bugs.webkit.org/show_bug.cgi?id=20303&quot;&gt;bug 20303&lt;/a&gt;:
&gt; +    [Qt] key events are not working in frames.&lt;/p&gt;
&gt; +&lt;script&gt;
&gt; +    function reportIFramePos()
&gt; +    {
&gt; +        var x = document.getElementById(&quot;anIFrame&quot;).contentDocument.body.scrollLeft;
&gt; +        var y = document.getElementById(&quot;anIFrame&quot;).contentDocument.body.scrollTop;
&gt; +
&gt; +        // result, the iframe should be scrolled down
&gt; +        if (y &gt; 0)
&gt; +            document.getElementById(&quot;console&quot;).innerHTML = &quot;SUCCESS&quot;;
&gt; +        else
&gt; +            document.getElementById(&quot;console&quot;).innerHTML = &quot;FAILURE&quot;;
&gt; +    }
&gt; +
&gt; +    function testAndReport() {
&gt; +         if (window.layoutTestController)
&gt; +            layoutTestController.dumpAsText();
&gt; +
&gt; +        if (window.eventSender) {
&gt; +            var frame = document.getElementById(&quot;anIFrame&quot;);
&gt; +
&gt; +            // center the mouse cursor
&gt; +            var x = frame.offsetLeft + frame.offsetWidth/2;
&gt; +            var y = frame.offsetTop + frame.offsetHeight/2;
&gt; +
&gt; +            // send mouse event to focus the iframe
&gt; +            eventSender.mouseMoveTo(x, y);
&gt; +            eventSender.mouseDown();
&gt; +            eventSender.mouseUp();
&gt; +
&gt; +            // send key down event
&gt; +            eventSender.keyDown(&apos;\uf701&apos;);
&gt; +
&gt; +            // report
&gt; +            reportIFramePos();
&gt; +            layoutTestController.notifyDone();
&gt; +        }
&gt; +    }
&gt; +&lt;/script&gt;
&gt; +
&gt; +&lt;iframe style=&quot;width:350px;border:dotted green 1px&quot; width=&quot;200&quot; height=&quot;200&quot;
&gt; + id=&quot;anIFrame&quot; src=&quot;resources/divs.html&quot; onload=&quot;javascript:testAndReport()&quot;&gt;&lt;/iframe&gt;
&gt; +&lt;/iframe&gt;
&gt; +&lt;div id=&quot;result&quot;&gt;
&gt; +&lt;/div&gt;
&gt; +&lt;div id=&quot;console&quot;&gt;
&gt; +&lt;/div&gt;
&gt; +&lt;/body&gt;
&gt; +&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126710</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-06-18 09:45:52 -0700</bug_when>
    <thetext>Oops, to much context...

To be clear the patch looks good, but you need to change the coding style of the line:

&gt; +bool QWebPagePrivate::handleScrolling(QKeyEvent *ev, Frame* frame)

So that the * decoration is at least consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127350</commentid>
    <comment_count>14</comment_count>
      <attachid>31647</attachid>
    <who name="Yongjun Zhang">yongjun.zhang</who>
    <bug_when>2009-06-22 07:49:38 -0700</bug_when>
    <thetext>Created attachment 31647
Correct the coding style pointed out by Adam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127746</commentid>
    <comment_count>15</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-06-23 17:13:32 -0700</bug_when>
    <thetext>Great! thank you very much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127755</commentid>
    <comment_count>16</comment_count>
      <attachid>31647</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-23 17:33:35 -0700</bug_when>
    <thetext>Comment on attachment 31647
Correct the coding style pointed out by Adam.

f should be &quot;frame&quot; in:
Frame* f = m_frame;

OTherwise this looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128463</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-26 03:06:38 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/platform/qt/fast/events/event-sender-keydown-frame-expected.txt
	A	LayoutTests/platform/qt/fast/events/event-sender-keydown-frame.html
	M	WebCore/ChangeLog
	M	WebCore/page/EventHandler.cpp
	M	WebCore/page/EventHandler.h
	M	WebKit/qt/Api/qwebpage.cpp
	M	WebKit/qt/Api/qwebpage_p.h
	M	WebKit/qt/ChangeLog
	M	WebKit/win/ChangeLog
	M	WebKit/win/WebView.cpp
Committed r45257
http://trac.webkit.org/changeset/45257</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235977</commentid>
    <comment_count>18</comment_count>
      <attachid>58290</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-06-09 13:45:46 -0700</bug_when>
    <thetext>Created attachment 58290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235979</commentid>
    <comment_count>19</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-06-09 13:46:34 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Created an attachment (id=58290) [details]
&gt; Patch

It looks like this test was added without elements required for it work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235980</commentid>
    <comment_count>20</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-06-09 13:47:20 -0700</bug_when>
    <thetext>Reopening so that fix to test can be reviewed and landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236091</commentid>
    <comment_count>21</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-09 17:18:18 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Oops, to much context...
&gt; 
&gt; To be clear the patch looks good, but you need to change the coding style of the line:
&gt; 
&gt; &gt; +bool QWebPagePrivate::handleScrolling(QKeyEvent *ev, Frame* frame)
&gt; 
&gt; So that the * decoration is at least consistent.

Adam, we do no longer use Qt coding style in WebKit. WebKit style wins if there is any conflict between the two style guides.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236229</commentid>
    <comment_count>22</comment_count>
      <attachid>30870</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-10 01:26:26 -0700</bug_when>
    <thetext>Comment on attachment 30870
add a layout test to test the fix.

Cleared Holger Freyther&apos;s review+ from obsolete attachment 30870 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236230</commentid>
    <comment_count>23</comment_count>
      <attachid>31378</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-10 01:26:31 -0700</bug_when>
    <thetext>Comment on attachment 31378
new patch to include recommended changed in the comments.

Cleared Adam Treat&apos;s review+ from obsolete attachment 31378 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236486</commentid>
    <comment_count>24</comment_count>
      <attachid>58290</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-10 12:34:50 -0700</bug_when>
    <thetext>Comment on attachment 58290
Patch

Clearing flags on attachment: 58290

Committed r60970: &lt;http://trac.webkit.org/changeset/60970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236487</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-10 12:34:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30558</attachid>
            <date>2009-05-21 14:50:07 -0700</date>
            <delta_ts>2009-05-21 14:53:39 -0700</delta_ts>
            <desc>sending scroll key events to subframe.</desc>
            <filename>subframe_scroll.patch</filename>
            <type>text/plain</type>
            <size>3041</size>
            <attacher name="Yongjun Zhang">yongjun.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNDM5ODQpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDUtMjEgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVu
LnpoYW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMDMK
KworICAgICAgICBbUXRdIEtleSBldmVudHMgYXJlIG5vdCB3b3JraW5nIGluIGZyYW1lcy4KKyAg
ICAgICAgCisgICAgICAgIEZvciBzY3JvbGxpbmcga2V5cyAoS2V5X1VwLCBLZXlfRG93biwgS2V5
X0xlZnQsIEtleV9SaWdodCksIHNlbmQgdGhlIGtleSBldmVudAorICAgICAgICB0byBjdXJyZW50
bHkgZm9jdXNlZCBzdWJmcmFtZSwgaW5zdGVhZCBvZiB0aGUgbWFpbiBmcmFtZS4KKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmtleVByZXNz
RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTY3JvbGxpbmcpOgorICAg
ICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKIDIwMDktMDUtMjAgIEFyaXlhIEhpZGF5YXQgIDxh
cml5YS5oaWRheWF0QG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubiBhbmQgSG9sZ2VyIEZyZXl0aGVyLgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDQz
OTczKQorKysgV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5
NSw3ICs3OTUsNyBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6a2V5UHJlc3NFdmVudChRS2V5CiAg
ICAgICAgICAgICBkZWZhdWx0Rm9udCA9IHZpZXctPmZvbnQoKTsKICAgICAgICAgUUZvbnRNZXRy
aWNzIGZtKGRlZmF1bHRGb250KTsKICAgICAgICAgaW50IGZvbnRIZWlnaHQgPSBmbS5oZWlnaHQo
KTsKLSAgICAgICAgaWYgKCFoYW5kbGVTY3JvbGxpbmcoZXYpKSB7CisgICAgICAgIGlmICghaGFu
ZGxlU2Nyb2xsaW5nKGV2LCBmcmFtZSkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoZXYtPmtleSgp
KSB7CiAgICAgICAgICAgICBjYXNlIFF0OjpLZXlfQmFja3NwYWNlOgogICAgICAgICAgICAgICAg
IGlmIChldi0+bW9kaWZpZXJzKCkgPT0gUXQ6OlNoaWZ0TW9kaWZpZXIpCkBAIC05ODUsNyArOTg1
LDcgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OnNob3J0Y3V0T3ZlcnJpZGVFdgogICAgIH0KIH0K
IAotYm9vbCBRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQgKmV2KQor
Ym9vbCBRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQgKmV2LCBGcmFt
ZSogZnJhbWUpCiB7CiAgICAgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBTY3JvbGxH
cmFudWxhcml0eSBncmFudWxhcml0eTsKQEAgLTEwMzIsMTAgKzEwMzIsMTcgQEAgYm9vbCBRV2Vi
UGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRSwogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKCFtYWluRnJhbWUtPmQtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2Nyb2xsT3ZlcmZsb3co
ZGlyZWN0aW9uLCBncmFudWxhcml0eSkpCi0gICAgICAgIG1haW5GcmFtZS0+ZC0+ZnJhbWUtPnZp
ZXcoKS0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworICAgIGJvb2wgaGFuZGxlZCA9
IHRydWU7CisgICAgaWYgKCFmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNjcm9sbE92ZXJmbG93KGRp
cmVjdGlvbiwgZ3JhbnVsYXJpdHkpKSB7CisgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZyYW1lLT52
aWV3KCktPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICAgICAgRnJhbWUqIHBh
cmVudCA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpOworICAgICAgICB3aGlsZSghaGFuZGxlZCAm
JiBwYXJlbnQpIHsKKyAgICAgICAgICAgIGhhbmRsZWQgPSBwYXJlbnQtPnZpZXcoKS0+c2Nyb2xs
KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT50
cmVlKCktPnBhcmVudCgpOworICAgICAgICB9CisgICAgfQogCi0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKIC8qIQpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZV9wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgJKHJldmlzaW9u
IDQzOTczKQorKysgV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICBjbGFzcyBFbGVtZW50OwogICAg
IGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUGFnZTsKKyAgICBjbGFzcyBGcmFtZTsKIAogI2lmbmRl
ZiBRVF9OT19DVVJTT1IKICAgICBjbGFzcyBTZXRDdXJzb3JFdmVudCA6IHB1YmxpYyBRRXZlbnQg
ewpAQCAtMTEzLDcgKzExNCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2hvcnRjdXRPdmVycmlk
ZUV2ZW50KFFLZXlFdmVudCopOwogICAgIHZvaWQgbGVhdmVFdmVudChRRXZlbnQgKik7Ci0gICAg
Ym9vbCBoYW5kbGVTY3JvbGxpbmcoUUtleUV2ZW50Kik7CisgICAgYm9vbCBoYW5kbGVTY3JvbGxp
bmcoUUtleUV2ZW50KiwgV2ViQ29yZTo6RnJhbWUqKTsKIAogI2lmbmRlZiBRVF9OT19TSE9SVENV
VAogICAgIHN0YXRpYyBRV2ViUGFnZTo6V2ViQWN0aW9uIGVkaXRvckFjdGlvbkZvcktleUV2ZW50
KFFLZXlFdmVudCogZXZlbnQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30560</attachid>
            <date>2009-05-21 14:53:39 -0700</date>
            <delta_ts>2009-06-02 09:14:19 -0700</delta_ts>
            <desc>Oops! The previous patch was wrong.</desc>
            <filename>subframe_scroll_1.patch</filename>
            <type>text/plain</type>
            <size>3036</size>
            <attacher name="Yongjun Zhang">yongjun.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNDM5ODQpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDUtMjEgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVu
LnpoYW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMDMK
KworICAgICAgICBbUXRdIEtleSBldmVudHMgYXJlIG5vdCB3b3JraW5nIGluIGZyYW1lcy4KKyAg
ICAgICAgCisgICAgICAgIEZvciBzY3JvbGxpbmcga2V5cyAoS2V5X1VwLCBLZXlfRG93biwgS2V5
X0xlZnQsIEtleV9SaWdodCksIHNlbmQgdGhlIGtleSBldmVudAorICAgICAgICB0byBjdXJyZW50
bHkgZm9jdXNlZCBzdWJmcmFtZSwgaW5zdGVhZCBvZiB0aGUgbWFpbiBmcmFtZS4KKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmtleVByZXNz
RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTY3JvbGxpbmcpOgorICAg
ICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKIDIwMDktMDUtMjAgIEFyaXlhIEhpZGF5YXQgIDxh
cml5YS5oaWRheWF0QG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubiBhbmQgSG9sZ2VyIEZyZXl0aGVyLgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDQz
OTczKQorKysgV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5
NSw3ICs3OTUsNyBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6a2V5UHJlc3NFdmVudChRS2V5CiAg
ICAgICAgICAgICBkZWZhdWx0Rm9udCA9IHZpZXctPmZvbnQoKTsKICAgICAgICAgUUZvbnRNZXRy
aWNzIGZtKGRlZmF1bHRGb250KTsKICAgICAgICAgaW50IGZvbnRIZWlnaHQgPSBmbS5oZWlnaHQo
KTsKLSAgICAgICAgaWYgKCFoYW5kbGVTY3JvbGxpbmcoZXYpKSB7CisgICAgICAgIGlmICghaGFu
ZGxlU2Nyb2xsaW5nKGV2LCBmcmFtZSkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoZXYtPmtleSgp
KSB7CiAgICAgICAgICAgICBjYXNlIFF0OjpLZXlfQmFja3NwYWNlOgogICAgICAgICAgICAgICAg
IGlmIChldi0+bW9kaWZpZXJzKCkgPT0gUXQ6OlNoaWZ0TW9kaWZpZXIpCkBAIC05ODUsNyArOTg1
LDcgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OnNob3J0Y3V0T3ZlcnJpZGVFdgogICAgIH0KIH0K
IAotYm9vbCBRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQgKmV2KQor
Ym9vbCBRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQgKmV2LCBGcmFt
ZSogZnJhbWUpCiB7CiAgICAgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBTY3JvbGxH
cmFudWxhcml0eSBncmFudWxhcml0eTsKQEAgLTEwMzIsMTAgKzEwMzIsMTcgQEAgYm9vbCBRV2Vi
UGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRSwogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKCFtYWluRnJhbWUtPmQtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2Nyb2xsT3ZlcmZsb3co
ZGlyZWN0aW9uLCBncmFudWxhcml0eSkpCi0gICAgICAgIG1haW5GcmFtZS0+ZC0+ZnJhbWUtPnZp
ZXcoKS0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworICAgIGJvb2wgaGFuZGxlZCA9
IHRydWU7CisgICAgaWYgKCFmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNjcm9sbE92ZXJmbG93KGRp
cmVjdGlvbiwgZ3JhbnVsYXJpdHkpKSB7CisgICAgICAgIGhhbmRsZWQgPSBmcmFtZS0+dmlldygp
LT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgICAgIEZyYW1lKiBwYXJlbnQg
PSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKKyAgICAgICAgd2hpbGUoIWhhbmRsZWQgJiYgcGFy
ZW50KSB7CisgICAgICAgICAgICBoYW5kbGVkID0gcGFyZW50LT52aWV3KCktPnNjcm9sbChkaXJl
Y3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+dHJlZSgp
LT5wYXJlbnQoKTsKKyAgICAgICAgfQorICAgIH0KIAotICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBoYW5kbGVkOwogfQogCiAvKiEKSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCShyZXZpc2lvbiA0Mzk3
MykKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2
ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFz
cyBOb2RlOwogICAgIGNsYXNzIFBhZ2U7CisgICAgY2xhc3MgRnJhbWU7CiAKICNpZm5kZWYgUVRf
Tk9fQ1VSU09SCiAgICAgY2xhc3MgU2V0Q3Vyc29yRXZlbnQgOiBwdWJsaWMgUUV2ZW50IHsKQEAg
LTExMyw3ICsxMTQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNob3J0Y3V0T3ZlcnJpZGVFdmVu
dChRS2V5RXZlbnQqKTsKICAgICB2b2lkIGxlYXZlRXZlbnQoUUV2ZW50ICopOwotICAgIGJvb2wg
aGFuZGxlU2Nyb2xsaW5nKFFLZXlFdmVudCopOworICAgIGJvb2wgaGFuZGxlU2Nyb2xsaW5nKFFL
ZXlFdmVudCosIFdlYkNvcmU6OkZyYW1lKik7CiAKICNpZm5kZWYgUVRfTk9fU0hPUlRDVVQKICAg
ICBzdGF0aWMgUVdlYlBhZ2U6OldlYkFjdGlvbiBlZGl0b3JBY3Rpb25Gb3JLZXlFdmVudChRS2V5
RXZlbnQqIGV2ZW50KTsK
</data>
<flag name="review"
          id="15447"
          type_id="1"
          status="-"
          setter="zecke"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30870</attachid>
            <date>2009-06-02 09:14:19 -0700</date>
            <delta_ts>2010-06-10 01:26:26 -0700</delta_ts>
            <desc>add a layout test to test the fix.</desc>
            <filename>subframe_scroll.patch</filename>
            <type>text/plain</type>
            <size>6737</size>
            <attacher name="Yongjun Zhang">yongjun.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNDQzNTgpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDYtMDIgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVu
LnpoYW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMDMK
KworICAgICAgICBbUXRdIEtleSBldmVudHMgYXJlIG5vdCB3b3JraW5nIGluIGZyYW1lcy4KKwor
ICAgICAgICBTZW5kIHRoZSBzY3JvbGxpbmcga2V5IGV2ZW50cyAoS2V5X1VwLCBLZXlfRG93biwg
S2V5X0xlZnQsIEtleV9SaWdodCkgdG8gY3VycmVudCBmb2N1c2VkIHN1YmZyYW1lLAorICAgICAg
ICBub3QgdGhlIG1haW4gZnJhbWUuICBUaGVuIGJ1YmJsZSB0aGUgZXZlbnQgdXAgdG8gcGFyZW50
IGZyYW1lIGlmIHRoZSBldmVudCBpcyBub3QgaGFuZGxlZC4KKworICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmtleVByZXNzRXZlbnQpOgorICAg
ICAgICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTY3JvbGxpbmcpOgorICAgICAgICAqIEFwaS9x
d2VicGFnZV9wLmg6CisKIDIwMDktMDYtMDEgIEJlbmphbWluIEMgTWV5ZXIgIDxiZW5qYW1pbi5t
ZXllckB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgR3VzdGF2
byBOb3JvbmhhLgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDQ0MzU4KQorKysgV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5NSw3ICs3OTUsNyBAQCB2
b2lkIFFXZWJQYWdlUHJpdmF0ZTo6a2V5UHJlc3NFdmVudChRS2V5CiAgICAgICAgICAgICBkZWZh
dWx0Rm9udCA9IHZpZXctPmZvbnQoKTsKICAgICAgICAgUUZvbnRNZXRyaWNzIGZtKGRlZmF1bHRG
b250KTsKICAgICAgICAgaW50IGZvbnRIZWlnaHQgPSBmbS5oZWlnaHQoKTsKLSAgICAgICAgaWYg
KCFoYW5kbGVTY3JvbGxpbmcoZXYpKSB7CisgICAgICAgIGlmICghaGFuZGxlU2Nyb2xsaW5nKGV2
LCBmcmFtZSkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoZXYtPmtleSgpKSB7CiAgICAgICAgICAg
ICBjYXNlIFF0OjpLZXlfQmFja3NwYWNlOgogICAgICAgICAgICAgICAgIGlmIChldi0+bW9kaWZp
ZXJzKCkgPT0gUXQ6OlNoaWZ0TW9kaWZpZXIpCkBAIC05ODUsNyArOTg1LDcgQEAgdm9pZCBRV2Vi
UGFnZVByaXZhdGU6OnNob3J0Y3V0T3ZlcnJpZGVFdgogICAgIH0KIH0KIAotYm9vbCBRV2ViUGFn
ZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQgKmV2KQorYm9vbCBRV2ViUGFnZVBy
aXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQgKmV2LCBGcmFtZSogZnJhbWUpCiB7CiAg
ICAgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBTY3JvbGxHcmFudWxhcml0eSBncmFu
dWxhcml0eTsKQEAgLTEwMzIsMTAgKzEwMzIsMTcgQEAgYm9vbCBRV2ViUGFnZVByaXZhdGU6Omhh
bmRsZVNjcm9sbGluZyhRSwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFtYWluRnJhbWUt
PmQtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2Nyb2xsT3ZlcmZsb3coZGlyZWN0aW9uLCBncmFu
dWxhcml0eSkpCi0gICAgICAgIG1haW5GcmFtZS0+ZC0+ZnJhbWUtPnZpZXcoKS0+c2Nyb2xsKGRp
cmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworICAgIGJvb2wgaGFuZGxlZCA9IGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+c2Nyb2xsT3ZlcmZsb3coZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgaWYg
KCFoYW5kbGVkKSB7CisgICAgICAgIGhhbmRsZWQgPSBmcmFtZS0+dmlldygpLT5zY3JvbGwoZGly
ZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgICAgIEZyYW1lKiBwYXJlbnQgPSBmcmFtZS0+dHJl
ZSgpLT5wYXJlbnQoKTsKKyAgICAgICAgd2hpbGUgKCFoYW5kbGVkICYmIHBhcmVudCkgeworICAg
ICAgICAgICAgaGFuZGxlZCA9IHBhcmVudC0+dmlldygpLT5zY3JvbGwoZGlyZWN0aW9uLCBncmFu
dWxhcml0eSk7CisgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnRyZWUoKS0+cGFyZW50KCk7
CisgICAgICAgIH0KKyAgICB9CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gaGFuZGxl
ZDsKIH0KIAogLyohCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkocmV2aXNpb24gNDQzNTgpCisrKyBXZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZQogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgTm9kZTsKICAg
ICBjbGFzcyBQYWdlOworICAgIGNsYXNzIEZyYW1lOwogCiAjaWZuZGVmIFFUX05PX0NVUlNPUgog
ICAgIGNsYXNzIFNldEN1cnNvckV2ZW50IDogcHVibGljIFFFdmVudCB7CkBAIC0xMTMsNyArMTE0
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaG9ydGN1dE92ZXJyaWRlRXZlbnQoUUtleUV2ZW50
Kik7CiAgICAgdm9pZCBsZWF2ZUV2ZW50KFFFdmVudCAqKTsKLSAgICBib29sIGhhbmRsZVNjcm9s
bGluZyhRS2V5RXZlbnQqKTsKKyAgICBib29sIGhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQqLCBX
ZWJDb3JlOjpGcmFtZSopOwogCiAjaWZuZGVmIFFUX05PX1NIT1JUQ1VUCiAgICAgc3RhdGljIFFX
ZWJQYWdlOjpXZWJBY3Rpb24gZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoUUtleUV2ZW50KiBldmVu
dCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NDM1OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA5LTA2LTAyICBZb25nanVuIFpoYW5n
ICA8eW9uZ2p1bi56aGFuZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMzAzCisKKyAgICAgICAgQWRkIGEgdGVzdCBjYXNlIGZvciB0ZXN0aW5nIGtleWV2ZW50
cyBpbiBzdWJmcmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL2V2ZW50
LXNlbmRlci1rZXlkb3duLWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vcXQvZmFzdC9ldmVudHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9ldmVudHMvcmVzb3VyY2VzOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvZGl2cy5odG1sOiBB
ZGRlZC4KKwogMjAwOS0wNi0wMiAgSm9obm55IERpbmcgIDxqb2hubnlkaW5nLndlYmtpdEBnbWFp
bC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4gIExhbmRl
ZCBieSBBZGFtIEJhcnRoLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9ldmVu
dHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL2V2ZW50LXNlbmRlci1rZXlkb3du
LWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L2Zhc3QvZXZlbnRzL2V2ZW50LXNlbmRlci1rZXlkb3duLWZyYW1lLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUZXN0IGZvciBidWcgMjAzMDM6IFtRdF0ga2V5
IGV2ZW50cyBhcmUgbm90IHdvcmtpbmcgaW4gZnJhbWVzLgorCisKK1NVQ0NFU1MKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL2V2ZW50LXNlbmRlci1rZXlkb3duLWZy
YW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9ldmVu
dHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL2V2ZW50LXNlbmRlci1rZXlkb3duLWZyYW1l
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKzxoZWFkPgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAzMDMiPmJ1ZyAyMDMwMzwvYT46CisgICAgW1F0XSBrZXkgZXZlbnRzIGFy
ZSBub3Qgd29ya2luZyBpbiBmcmFtZXMuPC9wPgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiByZXBv
cnRJRnJhbWVQb3MoKQorICAgIHsKKyAgICAgICAgdmFyIHggPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiYW5JRnJhbWUiKS5jb250ZW50RG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICB2YXIgeSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbklGcmFtZSIpLmNvbnRlbnREb2N1
bWVudC5ib2R5LnNjcm9sbFRvcDsKKworICAgICAgICAvLyByZXN1bHQsIHRoZSBpZnJhbWUgc2hv
dWxkIGJlIHNjcm9sbGVkIGRvd24KKyAgICAgICAgaWYgKHkgPiAwKQorICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgPSAiU1VDQ0VTUyI7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xl
IikuaW5uZXJIVE1MID0gIkZBSUxVUkUiOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RBbmRS
ZXBvcnQoKSB7CisgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgIHZhciBmcmFtZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJhbklGcmFtZSIpOworCisgICAgICAgICAgICAvLyBjZW50ZXIgdGhl
IG1vdXNlIGN1cnNvcgorICAgICAgICAgICAgdmFyIHggPSBmcmFtZS5vZmZzZXRMZWZ0ICsgZnJh
bWUub2Zmc2V0V2lkdGgvMjsKKyAgICAgICAgICAgIHZhciB5ID0gZnJhbWUub2Zmc2V0VG9wICsg
ZnJhbWUub2Zmc2V0SGVpZ2h0LzI7CisKKyAgICAgICAgICAgIC8vIHNlbmQgbW91c2UgZXZlbnQg
dG8gZm9jdXMgdGhlIGlmcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
eCwgeSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgICAgICAgICAgLy8gc2VuZCBrZXkgZG93biBl
dmVudAorICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bignXHVmNzAxJyk7CisKKyAgICAg
ICAgICAgIC8vIHJlcG9ydAorICAgICAgICAgICAgcmVwb3J0SUZyYW1lUG9zKCk7CisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9
Cis8L3NjcmlwdD4KKworPGlmcmFtZSBzdHlsZT0id2lkdGg6MzUwcHg7Ym9yZGVyOmRvdHRlZCBn
cmVlbiAxcHgiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIgorIGlkPSJhbklGcmFtZSIgc3JjPSJy
ZXNvdXJjZXMvZGl2cy5odG1sIiBvbmxvYWQ9ImphdmFzY3JpcHQ6dGVzdEFuZFJlcG9ydCgpIj48
L2lmcmFtZT4KKzwvaWZyYW1lPgorPGRpdiBpZD0icmVzdWx0Ij4KKzwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9kaXZzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9ldmVudHMvcmVzb3VyY2VzL2RpdnMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL3Jlc291
cmNlcy9kaXZzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8Ym9k
eT4KKyAgICA8c2NyaXB0PgorICAgIHZhciBrOworICAgIGZvciAoaz0wOyBrPDEwOyArK2spCisg
ICAgICAgIGRvY3VtZW50LndyaXRlKCI8cD5hPC9wPiIpOworICAgIDwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31374</attachid>
            <date>2009-06-16 14:36:16 -0700</date>
            <delta_ts>2009-06-16 14:51:40 -0700</delta_ts>
            <desc>changes according to the comments.</desc>
            <filename>scroll_in_subframe.patch</filename>
            <type>text/plain</type>
            <size>9610</size>
            <attacher name="Yongjun Zhang">yongjun.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDczNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDYtMTYgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuLnpoYW5n
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBwbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXIta2V5ZG93bi1m
cmFtZS5odG1sCisKKyAgICAgICAgQnVnIDIwMzAzOiBbUXRdIEtleSBldmVudHMgYXJlIG5vdCB3
b3JraW5nIGluIGZyYW1lcy4KKworICAgICAgICBNZXJnZSBzY3JvbGxpbmcgaGFuZGxpbmcgY29k
ZSBpbiBxdCBhbmQgd2luIHBvcnQsIG1vdmUgaXQgdG8KKyAgICAgICAgRXZlbnRIYW5kbGVyLgor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpzY3JvbGxSZWN1cnNpdmVseSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuaDoKKwogMjAwOS0wNi0xNiAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAko
cmV2aXNpb24gNDQ3MzYpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODU2LDYgKzg1NiwyMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2Nyb2xsT3Zl
cmZsb3coU2Nyb2xsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEV2ZW50SGFuZGxlcjo6
c2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgYm9vbCBoYW5kbGVkID0gc2Nyb2xsT3ZlcmZsb3co
ZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgaWYgKCFoYW5kbGVkKSB7CisgICAgICAgIEZy
YW1lKiBmID0gbV9mcmFtZTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgRnJhbWVWaWV3KiB2
aWV3ID0gZi0+dmlldygpOworICAgICAgICAgICAgaGFuZGxlZCA9IHZpZXcgPyB2aWV3LT5zY3Jv
bGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSkgOiBmYWxzZTsKKyAgICAgICAgICAgIGYgPSBmLT50
cmVlKCktPnBhcmVudCgpOworICAgICAgICB9IHdoaWxlICghaGFuZGxlZCAmJiBmKTsKKyAgICAg
fQorCisgICAgcmV0dXJuIGhhbmRsZWQ7Cit9CisKIEludFBvaW50IEV2ZW50SGFuZGxlcjo6Y3Vy
cmVudE1vdXNlUG9zaXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX2N1cnJlbnRNb3VzZVBv
c2l0aW9uOwpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gNDQ3MzYpCisrKyBXZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksOCBAQCBw
dWJsaWM6CiAKICAgICBib29sIHNjcm9sbE92ZXJmbG93KFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHkpOwogCisgICAgYm9vbCBzY3JvbGxSZWN1cnNpdmVseShTY3JvbGxEaXJlY3Rp
b24sIFNjcm9sbEdyYW51bGFyaXR5KTsKKwogICAgIGJvb2wgc2hvdWxkRHJhZ0F1dG9Ob2RlKE5v
ZGUqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OyAvLyAtd2Via2l0LXVzZXItZHJhZyA9PSBhdXRv
CiAKICAgICBib29sIHRhYnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKSW5kZXg6IFdl
YktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2
aXNpb24gNDQ3MzcpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTggQEAKKzIwMDktMDYtMTYgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuLnpoYW5nQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjAzMDM6IFtRdF0gS2V5IGV2ZW50cyBhcmUgbm90IHdvcmtpbmcgaW4gZnJhbWVzLgor
ICAgICAgICAKKyAgICAgICAgU2VuZCBzY3JvbGxpbmcgZXZlbnRzIHRvIGN1cnJlbnQgZm9jdXNl
ZCBmcmFtZSwgYnViYmxlIHRoZSBldmVudAorICAgICAgICB1cCB0byBwYXJlbnQgZnJhbWUgaWYg
aXQgaXMgbm90IGhhbmRsZWQuICBVc2UgRXZlbnRIYW5kbGVyJ3MgbmV3CisgICAgICAgIHNoYXJl
ZCBzY3JvbGxpbmcgY29kZS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2
YXRlOjpoYW5kbGVTY3JvbGxpbmcpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKIDIw
MDktMDYtMTYgIERhdmlkIEJvZGRpZSAgPGRib2RkaWVAdHJvbGx0ZWNoLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lv
biA0NDczNikKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OTYsNyArNzk2LDcgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmtleVByZXNzRXZlbnQoUUtl
eQogICAgICAgICAgICAgZGVmYXVsdEZvbnQgPSB2aWV3LT5mb250KCk7CiAgICAgICAgIFFGb250
TWV0cmljcyBmbShkZWZhdWx0Rm9udCk7CiAgICAgICAgIGludCBmb250SGVpZ2h0ID0gZm0uaGVp
Z2h0KCk7Ci0gICAgICAgIGlmICghaGFuZGxlU2Nyb2xsaW5nKGV2KSkgeworICAgICAgICBpZiAo
IWhhbmRsZVNjcm9sbGluZyhldiwgZnJhbWUpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGV2LT5r
ZXkoKSkgewogICAgICAgICAgICAgY2FzZSBRdDo6S2V5X0JhY2s6CiAgICAgICAgICAgICAgICAg
cS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6QmFjayk7CkBAIC05OTksNyArOTk5LDcgQEAgdm9p
ZCBRV2ViUGFnZVByaXZhdGU6OnNob3J0Y3V0T3ZlcnJpZGVFdgogICAgIH0KIH0KIAotYm9vbCBR
V2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQgKmV2KQorYm9vbCBRV2Vi
UGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQgKmV2LCBGcmFtZSogZnJhbWUp
CiB7CiAgICAgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBTY3JvbGxHcmFudWxhcml0
eSBncmFudWxhcml0eTsKQEAgLTEwNDYsMTAgKzEwNDYsNyBAQCBib29sIFFXZWJQYWdlUHJpdmF0
ZTo6aGFuZGxlU2Nyb2xsaW5nKFFLCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1haW5G
cmFtZS0+ZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zY3JvbGxPdmVyZmxvdyhkaXJlY3Rpb24s
IGdyYW51bGFyaXR5KSkKLSAgICAgICAgbWFpbkZyYW1lLT5kLT5mcmFtZS0+dmlldygpLT5zY3Jv
bGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdy
YW51bGFyaXR5KTsKIH0KIAogLyohCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkocmV2aXNpb24gNDQ3MzYp
CisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3Mg
Tm9kZTsKICAgICBjbGFzcyBQYWdlOworICAgIGNsYXNzIEZyYW1lOwogCiAjaWZuZGVmIFFUX05P
X0NVUlNPUgogICAgIGNsYXNzIFNldEN1cnNvckV2ZW50IDogcHVibGljIFFFdmVudCB7CkBAIC0x
MTMsNyArMTE0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaG9ydGN1dE92ZXJyaWRlRXZlbnQo
UUtleUV2ZW50Kik7CiAgICAgdm9pZCBsZWF2ZUV2ZW50KFFFdmVudCAqKTsKLSAgICBib29sIGhh
bmRsZVNjcm9sbGluZyhRS2V5RXZlbnQqKTsKKyAgICBib29sIGhhbmRsZVNjcm9sbGluZyhRS2V5
RXZlbnQqLCBXZWJDb3JlOjpGcmFtZSopOwogCiAjaWZuZGVmIFFUX05PX1NIT1JUQ1VUCiAgICAg
c3RhdGljIFFXZWJQYWdlOjpXZWJBY3Rpb24gZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoUUtleUV2
ZW50KiBldmVudCk7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNDQ3MzcpCisrKyBXZWJLaXQvd2luL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA5LTA2LTE2ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bi56aGFuZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisJCisJQnVnIDIwMzAzOiBbUXRdIEtleSBldmVudHMgYXJlIG5vdCB3
b3JraW5nIGluIGZyYW1lcy4KKyAgICAgICAgCisgICAgICAgIE1vdmUgdGhlIHNjcm9sbCBoYW5k
bGluZyBjb2RlIHRvIEV2ZW50SGFuZGxlciBzbyB0aGF0IG90aGVyCisgICAgICAgIHBvcnRzIGNh
biBzaGFyZSB0aGUgZnVuY3Rpb25hbGl0eS4KKworCSogV2ViVmlldy5jcHA6CisgICAgICAgIChX
ZWJWaWV3OjprZXlEb3duKToKKyAgICAgICAgKEVudW1UZXh0TWF0Y2hlczo6UXVlcnlJbnRlcmZh
Y2UpOgorCiAyMDA5LTA2LTE2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AZ21haWwuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA0
NDczNikKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MDAs
MTUgKzE2MDAsNyBAQCBib29sIFdlYlZpZXc6OmtleURvd24oV1BBUkFNIHZpcnR1YWxLZXlDCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPnNjcm9sbE92ZXJmbG93KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpKSB7Ci0gICAg
ICAgIGhhbmRsZWQgPSBmcmFtZS0+dmlldygpLT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0
eSk7Ci0gICAgICAgIEZyYW1lKiBwYXJlbnQgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKLSAg
ICAgICAgd2hpbGUoIWhhbmRsZWQgJiYgcGFyZW50KSB7Ci0gICAgICAgICAgICBoYW5kbGVkID0g
cGFyZW50LT52aWV3KCktPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKLSAgICAgICAg
ICAgIHBhcmVudCA9IHBhcmVudC0+dHJlZSgpLT5wYXJlbnQoKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICByZXR1cm4gaGFuZGxlZDsKKyAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5z
Y3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKIH0KIAogYm9vbCBXZWJW
aWV3OjprZXlQcmVzcyhXUEFSQU0gY2hhckNvZGUsIExQQVJBTSBrZXlEYXRhLCBib29sIHN5c3Rl
bUtleURvd24pCkBAIC01MjEzLDcgKzUyMDUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQq
KiBwcHYpCiAgICAgewotICAgICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3du
KSB8fCBJc0VxdWFsR1VJRChyaWlkLCBJSURfSUVudW1UZXh0TWF0Y2hlcykpIHsKKyAgICAgICAg
aWYgKHJpaWQgPT0gSUlEX0lVbmtub3duIHx8IHJpaWQgPT0gSUlEX0lFbnVtVGV4dE1hdGNoZXMp
IHsKICAgICAgICAgICAgICpwcHYgPSB0aGlzOwogICAgICAgICAgICAgQWRkUmVmKCk7CiAgICAg
ICAgIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ0NzM3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDYtMTYgIFlvbmdqdW4gWmhh
bmcgIDxzZXQgRU1BSUxfQUREUkVTUyBlbnZpcm9ubWVudCB2YXJpYWJsZT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjAzMDM6IFtRdF0gS2V5
IGV2ZW50cyBhcmUgbm90IHdvcmtpbmcgaW4gZnJhbWVzLgorCisgICAgICAgIEFkZCBhIGxheW91
dCB0ZXN0IHRvIHRlc3QgdGhlIGV2ZW50IGlzIHNlbnQgdG8gdGhlIHJpZ2h0IHN1Yi1mcmFtZS4K
KworICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL2V2ZW50LXNlbmRlci1rZXlkb3du
LWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9l
dmVudHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMDktMDYt
MTYgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIERpc2FibGUgYW5v
dGhlciBuZXcgdGVzdC4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRz
L2V2ZW50LXNlbmRlci1rZXlkb3duLWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXIta2V5ZG93bi1m
cmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXIta2V5ZG93bi1mcmFtZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGVzdCBmb3IgYnVnIDIwMzAzOiBbUXRdIGtleSBl
dmVudHMgYXJlIG5vdCB3b3JraW5nIGluIGZyYW1lcy4KKworCitTVUNDRVNTCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXIta2V5ZG93bi1mcmFt
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRz
L2V2ZW50LXNlbmRlci1rZXlkb3duLWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXIta2V5ZG93bi1mcmFtZS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACis8aGVhZD4KKzwvaGVhZD4KKzxib2R5
PgorICAgIDxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMzAzIj5idWcgMjAzMDM8L2E+OgorICAgIFtRdF0ga2V5IGV2ZW50cyBhcmUg
bm90IHdvcmtpbmcgaW4gZnJhbWVzLjwvcD4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gcmVwb3J0
SUZyYW1lUG9zKCkKKyAgICB7CisgICAgICAgIHZhciB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImFuSUZyYW1lIikuY29udGVudERvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
dmFyIHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYW5JRnJhbWUiKS5jb250ZW50RG9jdW1l
bnQuYm9keS5zY3JvbGxUb3A7CisKKyAgICAgICAgLy8gcmVzdWx0LCB0aGUgaWZyYW1lIHNob3Vs
ZCBiZSBzY3JvbGxlZCBkb3duCisgICAgICAgIGlmICh5ID4gMCkKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0gIlNVQ0NFU1MiOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
LmlubmVySFRNTCA9ICJGQUlMVVJFIjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0QW5kUmVw
b3J0KCkgeworICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYW5JRnJhbWUiKTsKKworICAgICAgICAgICAgLy8gY2VudGVyIHRoZSBt
b3VzZSBjdXJzb3IKKyAgICAgICAgICAgIHZhciB4ID0gZnJhbWUub2Zmc2V0TGVmdCArIGZyYW1l
Lm9mZnNldFdpZHRoLzI7CisgICAgICAgICAgICB2YXIgeSA9IGZyYW1lLm9mZnNldFRvcCArIGZy
YW1lLm9mZnNldEhlaWdodC8yOworCisgICAgICAgICAgICAvLyBzZW5kIG1vdXNlIGV2ZW50IHRv
IGZvY3VzIHRoZSBpZnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgs
IHkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICAgICAgICAgIC8vIHNlbmQga2V5IGRvd24gZXZl
bnQKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ1x1ZjcwMScpOworCisgICAgICAg
ICAgICAvLyByZXBvcnQKKyAgICAgICAgICAgIHJlcG9ydElGcmFtZVBvcygpOworICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgfQor
PC9zY3JpcHQ+CisKKzxpZnJhbWUgc3R5bGU9IndpZHRoOjM1MHB4O2JvcmRlcjpkb3R0ZWQgZ3Jl
ZW4gMXB4IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIKKyBpZD0iYW5JRnJhbWUiIHNyYz0icmVz
b3VyY2VzL2RpdnMuaHRtbCIgb25sb2FkPSJqYXZhc2NyaXB0OnRlc3RBbmRSZXBvcnQoKSI+PC9p
ZnJhbWU+Cis8L2lmcmFtZT4KKzxkaXYgaWQ9InJlc3VsdCI+Cis8L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31378</attachid>
            <date>2009-06-16 14:51:40 -0700</date>
            <delta_ts>2010-06-10 01:26:31 -0700</delta_ts>
            <desc>new patch to include recommended changed in the comments.</desc>
            <filename>scroll_in_subframe.patch</filename>
            <type>text/plain</type>
            <size>9257</size>
            <attacher name="Yongjun Zhang">yongjun.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDczNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDYtMTYgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuLnpoYW5n
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBwbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXIta2V5ZG93bi1m
cmFtZS5odG1sCisKKyAgICAgICAgQnVnIDIwMzAzOiBbUXRdIEtleSBldmVudHMgYXJlIG5vdCB3
b3JraW5nIGluIGZyYW1lcy4KKworICAgICAgICBNZXJnZSBzY3JvbGxpbmcgaGFuZGxpbmcgY29k
ZSBpbiBxdCBhbmQgd2luIHBvcnQsIG1vdmUgaXQgdG8KKyAgICAgICAgRXZlbnRIYW5kbGVyLgor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpzY3JvbGxSZWN1cnNpdmVseSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuaDoKKwogMjAwOS0wNi0xNiAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAko
cmV2aXNpb24gNDQ3MzYpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODU2LDYgKzg1NiwyMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2Nyb2xsT3Zl
cmZsb3coU2Nyb2xsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEV2ZW50SGFuZGxlcjo6
c2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgYm9vbCBoYW5kbGVkID0gc2Nyb2xsT3ZlcmZsb3co
ZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgaWYgKCFoYW5kbGVkKSB7CisgICAgICAgIEZy
YW1lKiBmID0gbV9mcmFtZTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgRnJhbWVWaWV3KiB2
aWV3ID0gZi0+dmlldygpOworICAgICAgICAgICAgaGFuZGxlZCA9IHZpZXcgPyB2aWV3LT5zY3Jv
bGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSkgOiBmYWxzZTsKKyAgICAgICAgICAgIGYgPSBmLT50
cmVlKCktPnBhcmVudCgpOworICAgICAgICB9IHdoaWxlICghaGFuZGxlZCAmJiBmKTsKKyAgICAg
fQorCisgICAgcmV0dXJuIGhhbmRsZWQ7Cit9CisKIEludFBvaW50IEV2ZW50SGFuZGxlcjo6Y3Vy
cmVudE1vdXNlUG9zaXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX2N1cnJlbnRNb3VzZVBv
c2l0aW9uOwpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gNDQ3MzYpCisrKyBXZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksOCBAQCBw
dWJsaWM6CiAKICAgICBib29sIHNjcm9sbE92ZXJmbG93KFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHkpOwogCisgICAgYm9vbCBzY3JvbGxSZWN1cnNpdmVseShTY3JvbGxEaXJlY3Rp
b24sIFNjcm9sbEdyYW51bGFyaXR5KTsKKwogICAgIGJvb2wgc2hvdWxkRHJhZ0F1dG9Ob2RlKE5v
ZGUqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OyAvLyAtd2Via2l0LXVzZXItZHJhZyA9PSBhdXRv
CiAKICAgICBib29sIHRhYnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKSW5kZXg6IFdl
YktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2
aXNpb24gNDQ3MzcpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTggQEAKKzIwMDktMDYtMTYgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuLnpoYW5nQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjAzMDM6IFtRdF0gS2V5IGV2ZW50cyBhcmUgbm90IHdvcmtpbmcgaW4gZnJhbWVzLgor
ICAgICAgICAKKyAgICAgICAgU2VuZCBzY3JvbGxpbmcgZXZlbnRzIHRvIGN1cnJlbnQgZm9jdXNl
ZCBmcmFtZSwgYnViYmxlIHRoZSBldmVudAorICAgICAgICB1cCB0byBwYXJlbnQgZnJhbWUgaWYg
aXQgaXMgbm90IGhhbmRsZWQuICBVc2UgRXZlbnRIYW5kbGVyJ3MgbmV3CisgICAgICAgIHNoYXJl
ZCBzY3JvbGxpbmcgY29kZS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2
YXRlOjpoYW5kbGVTY3JvbGxpbmcpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKIDIw
MDktMDYtMTYgIERhdmlkIEJvZGRpZSAgPGRib2RkaWVAdHJvbGx0ZWNoLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lv
biA0NDczNikKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OTYsNyArNzk2LDcgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmtleVByZXNzRXZlbnQoUUtl
eQogICAgICAgICAgICAgZGVmYXVsdEZvbnQgPSB2aWV3LT5mb250KCk7CiAgICAgICAgIFFGb250
TWV0cmljcyBmbShkZWZhdWx0Rm9udCk7CiAgICAgICAgIGludCBmb250SGVpZ2h0ID0gZm0uaGVp
Z2h0KCk7Ci0gICAgICAgIGlmICghaGFuZGxlU2Nyb2xsaW5nKGV2KSkgeworICAgICAgICBpZiAo
IWhhbmRsZVNjcm9sbGluZyhldiwgZnJhbWUpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGV2LT5r
ZXkoKSkgewogICAgICAgICAgICAgY2FzZSBRdDo6S2V5X0JhY2s6CiAgICAgICAgICAgICAgICAg
cS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6QmFjayk7CkBAIC05OTksNyArOTk5LDcgQEAgdm9p
ZCBRV2ViUGFnZVByaXZhdGU6OnNob3J0Y3V0T3ZlcnJpZGVFdgogICAgIH0KIH0KIAotYm9vbCBR
V2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQgKmV2KQorYm9vbCBRV2Vi
UGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQgKmV2LCBGcmFtZSogZnJhbWUp
CiB7CiAgICAgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBTY3JvbGxHcmFudWxhcml0
eSBncmFudWxhcml0eTsKQEAgLTEwNDYsMTAgKzEwNDYsNyBAQCBib29sIFFXZWJQYWdlUHJpdmF0
ZTo6aGFuZGxlU2Nyb2xsaW5nKFFLCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1haW5G
cmFtZS0+ZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zY3JvbGxPdmVyZmxvdyhkaXJlY3Rpb24s
IGdyYW51bGFyaXR5KSkKLSAgICAgICAgbWFpbkZyYW1lLT5kLT5mcmFtZS0+dmlldygpLT5zY3Jv
bGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdy
YW51bGFyaXR5KTsKIH0KIAogLyohCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkocmV2aXNpb24gNDQ3MzYp
CisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3Mg
Tm9kZTsKICAgICBjbGFzcyBQYWdlOworICAgIGNsYXNzIEZyYW1lOwogCiAjaWZuZGVmIFFUX05P
X0NVUlNPUgogICAgIGNsYXNzIFNldEN1cnNvckV2ZW50IDogcHVibGljIFFFdmVudCB7CkBAIC0x
MTMsNyArMTE0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaG9ydGN1dE92ZXJyaWRlRXZlbnQo
UUtleUV2ZW50Kik7CiAgICAgdm9pZCBsZWF2ZUV2ZW50KFFFdmVudCAqKTsKLSAgICBib29sIGhh
bmRsZVNjcm9sbGluZyhRS2V5RXZlbnQqKTsKKyAgICBib29sIGhhbmRsZVNjcm9sbGluZyhRS2V5
RXZlbnQqLCBXZWJDb3JlOjpGcmFtZSopOwogCiAjaWZuZGVmIFFUX05PX1NIT1JUQ1VUCiAgICAg
c3RhdGljIFFXZWJQYWdlOjpXZWJBY3Rpb24gZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoUUtleUV2
ZW50KiBldmVudCk7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNDQ3MzcpCisrKyBXZWJLaXQvd2luL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA5LTA2LTE2ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bi56aGFuZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisJCisJQnVnIDIwMzAzOiBbUXRdIEtleSBldmVudHMgYXJlIG5vdCB3
b3JraW5nIGluIGZyYW1lcy4KKyAgICAgICAgCisgICAgICAgIE1vdmUgdGhlIHNjcm9sbCBoYW5k
bGluZyBjb2RlIHRvIEV2ZW50SGFuZGxlciBzbyB0aGF0IG90aGVyCisgICAgICAgIHBvcnRzIGNh
biBzaGFyZSB0aGUgZnVuY3Rpb25hbGl0eS4KKworCSogV2ViVmlldy5jcHA6CisgICAgICAgIChX
ZWJWaWV3OjprZXlEb3duKToKKyAgICAgICAgKEVudW1UZXh0TWF0Y2hlczo6UXVlcnlJbnRlcmZh
Y2UpOgorCiAyMDA5LTA2LTE2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AZ21haWwuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA0
NDczNikKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MDAs
MTUgKzE2MDAsNyBAQCBib29sIFdlYlZpZXc6OmtleURvd24oV1BBUkFNIHZpcnR1YWxLZXlDCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPnNjcm9sbE92ZXJmbG93KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpKSB7Ci0gICAg
ICAgIGhhbmRsZWQgPSBmcmFtZS0+dmlldygpLT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0
eSk7Ci0gICAgICAgIEZyYW1lKiBwYXJlbnQgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKLSAg
ICAgICAgd2hpbGUoIWhhbmRsZWQgJiYgcGFyZW50KSB7Ci0gICAgICAgICAgICBoYW5kbGVkID0g
cGFyZW50LT52aWV3KCktPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKLSAgICAgICAg
ICAgIHBhcmVudCA9IHBhcmVudC0+dHJlZSgpLT5wYXJlbnQoKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICByZXR1cm4gaGFuZGxlZDsKKyAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5z
Y3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKIH0KIAogYm9vbCBXZWJW
aWV3OjprZXlQcmVzcyhXUEFSQU0gY2hhckNvZGUsIExQQVJBTSBrZXlEYXRhLCBib29sIHN5c3Rl
bUtleURvd24pCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NDczNykKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA2LTE2ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bi56aGFuZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIwMzAzOiBbUXRdIEtleSBldmVudHMgYXJl
IG5vdCB3b3JraW5nIGluIGZyYW1lcy4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byB0
ZXN0IHRoZSBldmVudCBpcyBzZW50IHRvIHRoZSByaWdodCBzdWItZnJhbWUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXIta2V5ZG93bi1mcmFtZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL2V2ZW50
LXNlbmRlci1rZXlkb3duLWZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDA5LTA2LTE2ICBYYW4gTG9w
ZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBEaXNhYmxlIGFub3RoZXIgbmV3IHRl
c3QuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5k
ZXIta2V5ZG93bi1mcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvZmFzdC9ldmVudHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9ldmVu
dHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQgQEAKK1Rlc3QgZm9yIGJ1ZyAyMDMwMzogW1F0XSBrZXkgZXZlbnRzIGFyZSBu
b3Qgd29ya2luZyBpbiBmcmFtZXMuCisKKworU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvZmFzdC9ldmVudHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5k
ZXIta2V5ZG93bi1mcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvZmFzdC9ldmVudHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1MyBAQAorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD5U
ZXN0IGZvciA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDMwMyI+YnVnIDIwMzAzPC9hPjoKKyAgICBbUXRdIGtleSBldmVudHMgYXJlIG5vdCB3b3JraW5n
IGluIGZyYW1lcy48L3A+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIHJlcG9ydElGcmFtZVBvcygp
CisgICAgeworICAgICAgICB2YXIgeCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbklGcmFt
ZSIpLmNvbnRlbnREb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ7CisgICAgICAgIHZhciB5ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFuSUZyYW1lIikuY29udGVudERvY3VtZW50LmJvZHkuc2Ny
b2xsVG9wOworCisgICAgICAgIC8vIHJlc3VsdCwgdGhlIGlmcmFtZSBzaG91bGQgYmUgc2Nyb2xs
ZWQgZG93bgorICAgICAgICBpZiAoeSA+IDApCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCA9ICJTVUNDRVNTIjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwg
PSAiRkFJTFVSRSI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdEFuZFJlcG9ydCgpIHsKKyAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImFuSUZyYW1lIik7CisKKyAgICAgICAgICAgIC8vIGNlbnRlciB0aGUgbW91c2UgY3Vyc29y
CisgICAgICAgICAgICB2YXIgeCA9IGZyYW1lLm9mZnNldExlZnQgKyBmcmFtZS5vZmZzZXRXaWR0
aC8yOworICAgICAgICAgICAgdmFyIHkgPSBmcmFtZS5vZmZzZXRUb3AgKyBmcmFtZS5vZmZzZXRI
ZWlnaHQvMjsKKworICAgICAgICAgICAgLy8gc2VuZCBtb3VzZSBldmVudCB0byBmb2N1cyB0aGUg
aWZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworCisgICAgICAgICAgICAvLyBzZW5kIGtleSBkb3duIGV2ZW50CisgICAgICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCdcdWY3MDEnKTsKKworICAgICAgICAgICAgLy8gcmVw
b3J0CisgICAgICAgICAgICByZXBvcnRJRnJhbWVQb3MoKTsKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0Pgor
Cis8aWZyYW1lIHN0eWxlPSJ3aWR0aDozNTBweDtib3JkZXI6ZG90dGVkIGdyZWVuIDFweCIgd2lk
dGg9IjIwMCIgaGVpZ2h0PSIyMDAiCisgaWQ9ImFuSUZyYW1lIiBzcmM9InJlc291cmNlcy9kaXZz
Lmh0bWwiIG9ubG9hZD0iamF2YXNjcmlwdDp0ZXN0QW5kUmVwb3J0KCkiPjwvaWZyYW1lPgorPC9p
ZnJhbWU+Cis8ZGl2IGlkPSJyZXN1bHQiPgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj4KKzwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31647</attachid>
            <date>2009-06-22 07:49:38 -0700</date>
            <delta_ts>2010-06-09 13:45:38 -0700</delta_ts>
            <desc>Correct the coding style pointed out by Adam.</desc>
            <filename>scrollInFrame_qt.patch</filename>
            <type>text/plain</type>
            <size>9257</size>
            <attacher name="Yongjun Zhang">yongjun.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDczNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDYtMTYgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuLnpoYW5n
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBwbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXIta2V5ZG93bi1m
cmFtZS5odG1sCisKKyAgICAgICAgQnVnIDIwMzAzOiBbUXRdIEtleSBldmVudHMgYXJlIG5vdCB3
b3JraW5nIGluIGZyYW1lcy4KKworICAgICAgICBNZXJnZSBzY3JvbGxpbmcgaGFuZGxpbmcgY29k
ZSBpbiBxdCBhbmQgd2luIHBvcnQsIG1vdmUgaXQgdG8KKyAgICAgICAgRXZlbnRIYW5kbGVyLgor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpzY3JvbGxSZWN1cnNpdmVseSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuaDoKKwogMjAwOS0wNi0xNiAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAko
cmV2aXNpb24gNDQ3MzYpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODU2LDYgKzg1NiwyMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2Nyb2xsT3Zl
cmZsb3coU2Nyb2xsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEV2ZW50SGFuZGxlcjo6
c2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgYm9vbCBoYW5kbGVkID0gc2Nyb2xsT3ZlcmZsb3co
ZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgaWYgKCFoYW5kbGVkKSB7CisgICAgICAgIEZy
YW1lKiBmID0gbV9mcmFtZTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgRnJhbWVWaWV3KiB2
aWV3ID0gZi0+dmlldygpOworICAgICAgICAgICAgaGFuZGxlZCA9IHZpZXcgPyB2aWV3LT5zY3Jv
bGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSkgOiBmYWxzZTsKKyAgICAgICAgICAgIGYgPSBmLT50
cmVlKCktPnBhcmVudCgpOworICAgICAgICB9IHdoaWxlICghaGFuZGxlZCAmJiBmKTsKKyAgICAg
fQorCisgICAgcmV0dXJuIGhhbmRsZWQ7Cit9CisKIEludFBvaW50IEV2ZW50SGFuZGxlcjo6Y3Vy
cmVudE1vdXNlUG9zaXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX2N1cnJlbnRNb3VzZVBv
c2l0aW9uOwpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gNDQ3MzYpCisrKyBXZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksOCBAQCBw
dWJsaWM6CiAKICAgICBib29sIHNjcm9sbE92ZXJmbG93KFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHkpOwogCisgICAgYm9vbCBzY3JvbGxSZWN1cnNpdmVseShTY3JvbGxEaXJlY3Rp
b24sIFNjcm9sbEdyYW51bGFyaXR5KTsKKwogICAgIGJvb2wgc2hvdWxkRHJhZ0F1dG9Ob2RlKE5v
ZGUqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OyAvLyAtd2Via2l0LXVzZXItZHJhZyA9PSBhdXRv
CiAKICAgICBib29sIHRhYnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKSW5kZXg6IFdl
YktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2
aXNpb24gNDQ3MzcpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTggQEAKKzIwMDktMDYtMTYgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuLnpoYW5nQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjAzMDM6IFtRdF0gS2V5IGV2ZW50cyBhcmUgbm90IHdvcmtpbmcgaW4gZnJhbWVzLgor
ICAgICAgICAKKyAgICAgICAgU2VuZCBzY3JvbGxpbmcgZXZlbnRzIHRvIGN1cnJlbnQgZm9jdXNl
ZCBmcmFtZSwgYnViYmxlIHRoZSBldmVudAorICAgICAgICB1cCB0byBwYXJlbnQgZnJhbWUgaWYg
aXQgaXMgbm90IGhhbmRsZWQuICBVc2UgRXZlbnRIYW5kbGVyJ3MgbmV3CisgICAgICAgIHNoYXJl
ZCBzY3JvbGxpbmcgY29kZS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2
YXRlOjpoYW5kbGVTY3JvbGxpbmcpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKIDIw
MDktMDYtMTYgIERhdmlkIEJvZGRpZSAgPGRib2RkaWVAdHJvbGx0ZWNoLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lv
biA0NDczNikKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OTYsNyArNzk2LDcgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmtleVByZXNzRXZlbnQoUUtl
eQogICAgICAgICAgICAgZGVmYXVsdEZvbnQgPSB2aWV3LT5mb250KCk7CiAgICAgICAgIFFGb250
TWV0cmljcyBmbShkZWZhdWx0Rm9udCk7CiAgICAgICAgIGludCBmb250SGVpZ2h0ID0gZm0uaGVp
Z2h0KCk7Ci0gICAgICAgIGlmICghaGFuZGxlU2Nyb2xsaW5nKGV2KSkgeworICAgICAgICBpZiAo
IWhhbmRsZVNjcm9sbGluZyhldiwgZnJhbWUpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGV2LT5r
ZXkoKSkgewogICAgICAgICAgICAgY2FzZSBRdDo6S2V5X0JhY2s6CiAgICAgICAgICAgICAgICAg
cS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6QmFjayk7CkBAIC05OTksNyArOTk5LDcgQEAgdm9p
ZCBRV2ViUGFnZVByaXZhdGU6OnNob3J0Y3V0T3ZlcnJpZGVFdgogICAgIH0KIH0KIAotYm9vbCBR
V2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQgKmV2KQorYm9vbCBRV2Vi
UGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZlbnQgKmV2LCBGcmFtZSAqZnJhbWUp
CiB7CiAgICAgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBTY3JvbGxHcmFudWxhcml0
eSBncmFudWxhcml0eTsKQEAgLTEwNDYsMTAgKzEwNDYsNyBAQCBib29sIFFXZWJQYWdlUHJpdmF0
ZTo6aGFuZGxlU2Nyb2xsaW5nKFFLCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1haW5G
cmFtZS0+ZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zY3JvbGxPdmVyZmxvdyhkaXJlY3Rpb24s
IGdyYW51bGFyaXR5KSkKLSAgICAgICAgbWFpbkZyYW1lLT5kLT5mcmFtZS0+dmlldygpLT5zY3Jv
bGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdy
YW51bGFyaXR5KTsKIH0KIAogLyohCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkocmV2aXNpb24gNDQ3MzYp
CisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3Mg
Tm9kZTsKICAgICBjbGFzcyBQYWdlOworICAgIGNsYXNzIEZyYW1lOwogCiAjaWZuZGVmIFFUX05P
X0NVUlNPUgogICAgIGNsYXNzIFNldEN1cnNvckV2ZW50IDogcHVibGljIFFFdmVudCB7CkBAIC0x
MTMsNyArMTE0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaG9ydGN1dE92ZXJyaWRlRXZlbnQo
UUtleUV2ZW50Kik7CiAgICAgdm9pZCBsZWF2ZUV2ZW50KFFFdmVudCAqKTsKLSAgICBib29sIGhh
bmRsZVNjcm9sbGluZyhRS2V5RXZlbnQqKTsKKyAgICBib29sIGhhbmRsZVNjcm9sbGluZyhRS2V5
RXZlbnQqLCBXZWJDb3JlOjpGcmFtZSopOwogCiAjaWZuZGVmIFFUX05PX1NIT1JUQ1VUCiAgICAg
c3RhdGljIFFXZWJQYWdlOjpXZWJBY3Rpb24gZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoUUtleUV2
ZW50KiBldmVudCk7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNDQ3MzcpCisrKyBXZWJLaXQvd2luL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA5LTA2LTE2ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bi56aGFuZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisJCisJQnVnIDIwMzAzOiBbUXRdIEtleSBldmVudHMgYXJlIG5vdCB3
b3JraW5nIGluIGZyYW1lcy4KKyAgICAgICAgCisgICAgICAgIE1vdmUgdGhlIHNjcm9sbCBoYW5k
bGluZyBjb2RlIHRvIEV2ZW50SGFuZGxlciBzbyB0aGF0IG90aGVyCisgICAgICAgIHBvcnRzIGNh
biBzaGFyZSB0aGUgZnVuY3Rpb25hbGl0eS4KKworCSogV2ViVmlldy5jcHA6CisgICAgICAgIChX
ZWJWaWV3OjprZXlEb3duKToKKyAgICAgICAgKEVudW1UZXh0TWF0Y2hlczo6UXVlcnlJbnRlcmZh
Y2UpOgorCiAyMDA5LTA2LTE2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AZ21haWwuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA0
NDczNikKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MDAs
MTUgKzE2MDAsNyBAQCBib29sIFdlYlZpZXc6OmtleURvd24oV1BBUkFNIHZpcnR1YWxLZXlDCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPnNjcm9sbE92ZXJmbG93KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpKSB7Ci0gICAg
ICAgIGhhbmRsZWQgPSBmcmFtZS0+dmlldygpLT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0
eSk7Ci0gICAgICAgIEZyYW1lKiBwYXJlbnQgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKLSAg
ICAgICAgd2hpbGUoIWhhbmRsZWQgJiYgcGFyZW50KSB7Ci0gICAgICAgICAgICBoYW5kbGVkID0g
cGFyZW50LT52aWV3KCktPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKLSAgICAgICAg
ICAgIHBhcmVudCA9IHBhcmVudC0+dHJlZSgpLT5wYXJlbnQoKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICByZXR1cm4gaGFuZGxlZDsKKyAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5z
Y3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKIH0KIAogYm9vbCBXZWJW
aWV3OjprZXlQcmVzcyhXUEFSQU0gY2hhckNvZGUsIExQQVJBTSBrZXlEYXRhLCBib29sIHN5c3Rl
bUtleURvd24pCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NDczNykKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA2LTE2ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bi56aGFuZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIwMzAzOiBbUXRdIEtleSBldmVudHMgYXJl
IG5vdCB3b3JraW5nIGluIGZyYW1lcy4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byB0
ZXN0IHRoZSBldmVudCBpcyBzZW50IHRvIHRoZSByaWdodCBzdWItZnJhbWUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXIta2V5ZG93bi1mcmFtZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL2V2ZW50
LXNlbmRlci1rZXlkb3duLWZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDA5LTA2LTE2ICBYYW4gTG9w
ZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBEaXNhYmxlIGFub3RoZXIgbmV3IHRl
c3QuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5k
ZXIta2V5ZG93bi1mcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvZmFzdC9ldmVudHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9ldmVu
dHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQgQEAKK1Rlc3QgZm9yIGJ1ZyAyMDMwMzogW1F0XSBrZXkgZXZlbnRzIGFyZSBu
b3Qgd29ya2luZyBpbiBmcmFtZXMuCisKKworU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvZmFzdC9ldmVudHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5k
ZXIta2V5ZG93bi1mcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvZmFzdC9ldmVudHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1MyBAQAorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD5U
ZXN0IGZvciA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDMwMyI+YnVnIDIwMzAzPC9hPjoKKyAgICBbUXRdIGtleSBldmVudHMgYXJlIG5vdCB3b3JraW5n
IGluIGZyYW1lcy48L3A+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIHJlcG9ydElGcmFtZVBvcygp
CisgICAgeworICAgICAgICB2YXIgeCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbklGcmFt
ZSIpLmNvbnRlbnREb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ7CisgICAgICAgIHZhciB5ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFuSUZyYW1lIikuY29udGVudERvY3VtZW50LmJvZHkuc2Ny
b2xsVG9wOworCisgICAgICAgIC8vIHJlc3VsdCwgdGhlIGlmcmFtZSBzaG91bGQgYmUgc2Nyb2xs
ZWQgZG93bgorICAgICAgICBpZiAoeSA+IDApCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCA9ICJTVUNDRVNTIjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwg
PSAiRkFJTFVSRSI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdEFuZFJlcG9ydCgpIHsKKyAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImFuSUZyYW1lIik7CisKKyAgICAgICAgICAgIC8vIGNlbnRlciB0aGUgbW91c2UgY3Vyc29y
CisgICAgICAgICAgICB2YXIgeCA9IGZyYW1lLm9mZnNldExlZnQgKyBmcmFtZS5vZmZzZXRXaWR0
aC8yOworICAgICAgICAgICAgdmFyIHkgPSBmcmFtZS5vZmZzZXRUb3AgKyBmcmFtZS5vZmZzZXRI
ZWlnaHQvMjsKKworICAgICAgICAgICAgLy8gc2VuZCBtb3VzZSBldmVudCB0byBmb2N1cyB0aGUg
aWZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworCisgICAgICAgICAgICAvLyBzZW5kIGtleSBkb3duIGV2ZW50CisgICAgICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCdcdWY3MDEnKTsKKworICAgICAgICAgICAgLy8gcmVw
b3J0CisgICAgICAgICAgICByZXBvcnRJRnJhbWVQb3MoKTsKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0Pgor
Cis8aWZyYW1lIHN0eWxlPSJ3aWR0aDozNTBweDtib3JkZXI6ZG90dGVkIGdyZWVuIDFweCIgd2lk
dGg9IjIwMCIgaGVpZ2h0PSIyMDAiCisgaWQ9ImFuSUZyYW1lIiBzcmM9InJlc291cmNlcy9kaXZz
Lmh0bWwiIG9ubG9hZD0iamF2YXNjcmlwdDp0ZXN0QW5kUmVwb3J0KCkiPjwvaWZyYW1lPgorPC9p
ZnJhbWU+Cis8ZGl2IGlkPSJyZXN1bHQiPgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj4KKzwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58290</attachid>
            <date>2010-06-09 13:45:46 -0700</date>
            <delta_ts>2010-06-10 12:34:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-20303-20100609214543.patch</filename>
            <type>text/plain</type>
            <size>3514</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNjRkNjBkNDg1NjJmMWJmNDdiZDc0ZmEwNmE2MDVlNTFhNGI1ZTVhLi44MDg0OTQ2
MTFiMGVlYzAzMTUwMWVjNDQ0ODZiOTdlZjUwZmRhZWRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDYtMDkgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gRml4IFF0LXNwZWNp
ZmljIGV2ZW50LXNlbmRlci1rZXlkb3duLWZyYW1lLmh0bWwgdGVzdAorCisgICAgICAgIEl0IGxv
b2tzIGxpa2UgdGhpcyB0ZXN0IHdhcyBhZGRlZCB3aXRob3V0IGVsZW1lbnRzIHJlcXVpcmVkIGZv
ciBpdCB3b3JrLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMzAzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBs
YXRmb3JtL3F0L2Zhc3QvZXZlbnRzL2V2ZW50LXNlbmRlci1rZXlkb3duLWZyYW1lLmh0bWw6Cisg
ICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9ldmVudHMvcmVzb3VyY2VzL2RpdnMuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDYtMDkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CmluZGV4IGZiYzdmYTg4YTBkMmIxZWVkYmMxN2MxM2E1YzA0OTVkZWY0MWE5Y2UuLmYzZDAzMjZk
NGQxMDFjYjA0YjNjYmUyZmQ5NTQwNDU1OTllMmE0YjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZApAQCAtNTQ0Nyw4ICs1NDQ3LDQgQEAgc3ZnL1czQy1TVkctMS4xL2ZpbHRlcnMtbGlnaHQtMDQt
Zi5zdmcKICMgbmV3IHNraXBwZWQgdGVzdHMgeWV0IHRvIGJlIHNvcnRlZAogIyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSAjCiAKLSMgbmV3IHNraXBwZWQgdGVzdHMgdGhhdCBuZWVkIHRvIGJlIGZpeGVk
L2ludmVzdGlnYXRlZAotCi0jIGV4cGVjdHMgYSBwbGFpbnRleHQgcmVzdWx0IGJ1dCBwcm9kdWNl
cyBhIHJlbmRlcnRyZWUKLXBsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL2V2ZW50LXNlbmRlci1rZXlk
b3duLWZyYW1lLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFz
dC9ldmVudHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2Zhc3QvZXZlbnRzL2V2ZW50LXNlbmRlci1rZXlkb3duLWZyYW1lLmh0bWwKaW5k
ZXggOTJhMDkwYTA2MWJmYzY2OTk2OTZmZjJlZDMxYjA2MzU2OGRmNzE0YS4uNmRkM2NhOGRiZDA0
NmZkM2VhMzJkNjRmYTRiMTkzYjA2YmEzNDdmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvZmFzdC9ldmVudHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXIta2V5ZG93
bi1mcmFtZS5odG1sCkBAIC00LDYgKzQsMTAgQEAKICAgICA8cD5UZXN0IGZvciA8YSBocmVmPSJo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMwMyI+YnVnIDIwMzAzPC9h
PjoKICAgICBbUXRdIGtleSBldmVudHMgYXJlIG5vdCB3b3JraW5nIGluIGZyYW1lcy48L3A+CiA8
c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQogICAgIGZ1bmN0aW9uIHJlcG9ydElGcmFt
ZVBvcygpCiAgICAgewogICAgICAgICB2YXIgeCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJh
bklGcmFtZSIpLmNvbnRlbnREb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ7CkBAIC0xNCwxMiArMTgs
MTAgQEAKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5u
ZXJIVE1MID0gIlNVQ0NFU1MiOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCA9ICJGQUlMVVJFIjsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9u
IHRlc3RBbmRSZXBvcnQoKSB7Ci0gICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCiAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgIHZhciBmcmFtZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbklGcmFtZSIpOwogCkBAIC0zNywxNCArMzksMTIg
QEAKIAogICAgICAgICAgICAgLy8gcmVwb3J0CiAgICAgICAgICAgICByZXBvcnRJRnJhbWVQb3Mo
KTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICAg
ICAgfQogICAgIH0KIDwvc2NyaXB0PgogCiA8aWZyYW1lIHN0eWxlPSJ3aWR0aDozNTBweDtib3Jk
ZXI6ZG90dGVkIGdyZWVuIDFweCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiCi0gaWQ9ImFuSUZy
YW1lIiBzcmM9InJlc291cmNlcy9kaXZzLmh0bWwiIG9ubG9hZD0iamF2YXNjcmlwdDp0ZXN0QW5k
UmVwb3J0KCkiPjwvaWZyYW1lPgotPC9pZnJhbWU+CisgaWQ9ImFuSUZyYW1lIiBzcmM9InJlc291
cmNlcy9kaXZzLmh0bWwiIG9ubG9hZD0idGVzdEFuZFJlcG9ydCgpOyI+PC9pZnJhbWU+CiA8ZGl2
IGlkPSJyZXN1bHQiPgogPC9kaXY+CiA8ZGl2IGlkPSJjb25zb2xlIj4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9kaXZzLmh0bWwgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvZGl2cy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjUzMjc0MGVkNzBjYWQyZjY4MWIyOTI4NGRhMWNlMDA2YTYxMzBiZGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9yZXNvdXJj
ZXMvZGl2cy5odG1sCkBAIC0wLDAgKzEsMiBAQAorPGRpdiBpZD0iY29udGFpbmVyIiBzdHlsZT0i
d2lkdGg6MTAwcHg7IGhlaWdodDozMDBweDsiPgorPC9kaXY+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>