<?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>43498</bug_id>
          
          <creation_ts>2010-08-04 11:43:20 -0700</creation_ts>
          <short_desc>[Qt] add an API for QWebPage to get current focused element</short_desc>
          <delta_ts>2010-08-26 06:21:36 -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>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yi Shen">max.hong.shen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ariya.hidayat</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>260126</commentid>
    <comment_count>0</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-08-04 11:43:20 -0700</bug_when>
    <thetext>The QWebPage has no API to retrieve current focused element, although you can use QWebFrame::findAllElement(&quot;:focus&quot;) to search for the focused element, which is not convenient enough and efficient to use (you have to find the focused frame first). So I am thinking about to add this API, which might be very useful in implementing tab navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260127</commentid>
    <comment_count>1</comment_count>
      <attachid>63473</attachid>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-08-04 11:44:29 -0700</bug_when>
    <thetext>Created attachment 63473
first try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263068</commentid>
    <comment_count>2</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-08-10 23:32:04 -0700</bug_when>
    <thetext>API addition needs to be discussed, might be too late for 4.7?

In all cases, a new function will need \since tag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263257</commentid>
    <comment_count>3</comment_count>
      <attachid>64115</attachid>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-08-11 08:01:07 -0700</bug_when>
    <thetext>Created attachment 64115
add since tag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263259</commentid>
    <comment_count>4</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-08-11 08:11:39 -0700</bug_when>
    <thetext>Thanks for your comments. I have added a \since tag for it. which can be changed if too late for 4.7.

I would like to have this new Api for qwebpage because I think I am not the only people who has the problem to get the focused element. I have talked to several people to find out a way to get focused element, but had no luck. 

In stead of using CSS selector, why not just provides a straightforward and efficient way to help its developers like me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263786</commentid>
    <comment_count>5</comment_count>
      <attachid>64115</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 07:16:14 -0700</bug_when>
    <thetext>Comment on attachment 64115
add since tag

There is already DOM API for this.  Why would you want to expose new separate Qt API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263787</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 07:17:41 -0700</bug_when>
    <thetext>https://developer.mozilla.org/en/DOM/selection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263792</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-08-12 07:21:56 -0700</bug_when>
    <thetext>I cc-ed Simon and Kenneth, they are the competent persons for API changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263837</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-08-12 08:59:29 -0700</bug_when>
    <thetext>If at all then this method belongs into QWebFrame.

Doesn&apos;t the following code work alternatively?

QWebElement focusedElement = frame-&gt;findFirstElement(&quot;*:focus&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263872</commentid>
    <comment_count>9</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-08-12 10:47:31 -0700</bug_when>
    <thetext>Yes, I am sure that frame-&gt;findFirstElement(&quot;*:focus&quot;) can work. But to use this, we have to find the focused frame first, then call the findFisrtElement function to search the DOM tree, right? (Please correct me if I am wrong)

So, the only reason I propose this API is to introduce a straightforward and efficient (no need to search DOM tree) way for qtwebkit developer to get the focused element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263961</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-08-12 14:05:26 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Yes, I am sure that frame-&gt;findFirstElement(&quot;*:focus&quot;) can work. But to use this, we have to find the focused frame first, then call the findFisrtElement function to search the DOM tree, right? (Please correct me if I am wrong)
&gt; 
&gt; So, the only reason I propose this API is to introduce a straightforward and efficient (no need to search DOM tree) way for qtwebkit developer to get the focused element.

Is it that inconvenient? :)

QWebFrame* frame = page-&gt;currentFrame();
QWebElement focusedElement = frame-&gt;...


I agree about the efficiency though, that may be a good point for adding a method to QWebFrame.

What are you doing with the focused element once you have retrieved it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263988</commentid>
    <comment_count>11</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-08-12 14:36:24 -0700</bug_when>
    <thetext>&gt; QWebFrame* frame = page-&gt;currentFrame();

Is this the same as &apos;focusedFrame&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264097</commentid>
    <comment_count>12</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-12 17:26:16 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; QWebFrame* frame = page-&gt;currentFrame();
&gt; 
&gt; Is this the same as &apos;focusedFrame&apos;?

QWebFrame *QWebPage::currentFrame() const
{
    d-&gt;createMainFrame();
    return static_cast&lt;WebCore::FrameLoaderClientQt *&gt;(d-&gt;page-&gt;focusController()-&gt;focusedOrMainFrame()-&gt;loader()-&gt;client())-&gt;webFrame();
}

looks like it&apos;d work, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264133</commentid>
    <comment_count>13</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-08-12 20:14:49 -0700</bug_when>
    <thetext>&gt; QWebFrame *QWebPage::currentFrame() const
&gt; {
&gt;     d-&gt;createMainFrame();
&gt;     return static_cast&lt;WebCore::FrameLoaderClientQt *&gt;(d-&gt;page-&gt;focusController()-&gt;focusedOrMainFrame()-&gt;loader()-&gt;client())-&gt;webFrame();
&gt; }
&gt; 
&gt; looks like it&apos;d work, yes.

Then this patch can&apos;t really be justified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264151</commentid>
    <comment_count>14</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-12 21:06:20 -0700</bug_when>
    <thetext> 
&gt; Then this patch can&apos;t really be justified.

I tend to agree here too. I&apos;d suggest:

1) If we decide to *not* go for it:
1.1) it could be a patch to the documentation in the sense of providing a snippet code for this possibly common task.
1.2) Maybe making it a helper method of your class, for convenience, would be enough.

2) To prove itself as needed:
2.1) Help us to understand your test case, in a broader context. For example, you might be needing to call this method so often that the performance of making it through a CSS selector really matter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264304</commentid>
    <comment_count>15</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-08-13 05:33:04 -0700</bug_when>
    <thetext>If this is about performance, a use case where focused element needs to be fetched or detected so many times is probably a corner case. It&apos;s hard to imagine a type of application which does that :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264385</commentid>
    <comment_count>16</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-08-13 08:43:09 -0700</bug_when>
    <thetext>OK, one user case I can find is the Next button on VKB. Like android&apos;s browser does, when user clicks the next button, it scrolls user to the next input field (e.g. form field). In this case, we need to know the focused element to get its info. It would be better to get the focused element as fast as possible, then the app can start scrolling quickly (the user don&apos;t want to wait after click the next button).

Also, I noticed that Mac&apos;s WebHTMLView.mm has a function to get accessibilityFocusedUIElement. Don&apos;t really know what it is but I think it would be friendly to developer to have this kind of Api, or just like Antonio Gomes says, added a snippet code example to the dev documentation.

Thanks for all the comments and your time :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264390</commentid>
    <comment_count>17</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-08-13 08:48:45 -0700</bug_when>
    <thetext>Android WebKit does this by caching navigation-able elements in a special tree, so as to avoid looking it up on the fly.

In all cases, such a use case should be implemented using Antonio’s spatial navigation support, which has been there for a while (https://bugs.webkit.org/show_bug.cgi?id=18662).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269710</commentid>
    <comment_count>18</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-25 21:21:55 -0700</bug_when>
    <thetext>WONTFIX&apos;ing this one. Please re-open if there is still stuff to be discussed here.

(In reply to comment #16)
&gt; OK, one user case I can find is the Next button on VKB. Like android&apos;s browser does, when user clicks the next button, it scrolls user to the next input field (e.g. form field). In this case, we need to know the focused element to get its info. It would be better to get the focused element as fast as possible, then the app can start scrolling quickly (the user don&apos;t want to wait after click the next button).

The snippet code Simon provide should run *really* fast, even on mobo devices, since it relies on a simple and well known/supported pseudo-selector (:focus). If it is not working as fast as you need, please file a bug about that. Providing profile data is even more helpful.

As far as I know, there is no API for such scrolling-an-element-into-view action, but it&apos;d be another bug. 

An important detail is that depending on how the window system handles the pop up and hiding of the virtual keyboard, scrolling an element into view might be simple or less-simple. Cases:

1) If when the vkb pops up, the windowing system resizes the application window, it is all fine.

2) Otherwise, the vkb needs to provide a way to get its bounding area, and it has to be considered when scrolling an element into view.


&gt; Also, I noticed that Mac&apos;s WebHTMLView.mm has a function to get accessibilityFocusedUIElement. Don&apos;t really know what it is but I think it would be friendly to developer to have this kind of Api, or just like Antonio Gomes says, added a snippet code example to the dev documentation.

I vote for the later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269848</commentid>
    <comment_count>19</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-08-26 06:21:36 -0700</bug_when>
    <thetext>Thanks a lot for all your comments. I really appreciate it!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63473</attachid>
            <date>2010-08-04 11:44:29 -0700</date>
            <delta_ts>2010-08-11 08:01:07 -0700</delta_ts>
            <desc>first try</desc>
            <filename>43498.patch</filename>
            <type>text/plain</type>
            <size>4038</size>
            <attacher name="Yi Shen">max.hong.shen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNjQ2NTgpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDgtMDQgIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhbiBBcGkgdG8gZ2V0IGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50CisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmZvY3VzZWRXZWJFbGVtZW50KToK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3Rf
cXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjp0ZXN0Rm9jdXNlZFdlYkVsZW1l
bnQpOgorCiAyMDEwLTA4LTAzICBOb2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
SW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9x
dC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiA2NDY1NSkKKysrIFdlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzExLDYgKzM3MTEsMjAgQEAgcXVpbnQ2NCBR
V2ViUGFnZTo6Ynl0ZXNSZWNlaXZlZCgpIGNvbnN0CiB9CiAKIC8qIQorICAgIFJldHVybnMgZm9j
dXNlZCB3ZWIgZWxlbWVudAorKi8KK1FXZWJFbGVtZW50IFFXZWJQYWdlOjpmb2N1c2VkV2ViRWxl
bWVudCgpCit7CisgICAgRnJhbWUgKmZyYW1lID0gZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRGcmFtZSgpOworICAgIGlmIChmcmFtZSkgeworICAgICAgICBEb2N1bWVudCAqZG9j
dW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgaWYgKGRvY3VtZW50KQorICAgICAg
ICAgICAgcmV0dXJuIFFXZWJFbGVtZW50KGRvY3VtZW50LT5mb2N1c2VkTm9kZSgpKTsKKyAgICB9
CisgICAgcmV0dXJuIFFXZWJFbGVtZW50KCk7Cit9CisKKy8qIQogICAgIFxzaW5jZSA0LjcKICAg
ICBcZm4gdm9pZCBRV2ViUGFnZTo6dmlld3BvcnRDaGFuZ2VSZXF1ZXN0ZWQoY29uc3QgUVdlYlBh
Z2U6OlZpZXdwb3J0SGludHMmIGhpbnRzKQogCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCShyZXZpc2lvbiA2NDY1
NSkKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYg
KzI3Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBldmVudChRRXZlbnQqKTsKICAg
ICBib29sIGZvY3VzTmV4dFByZXZDaGlsZChib29sIG5leHQpOworICAgIFFXZWJFbGVtZW50IGZv
Y3VzZWRXZWJFbGVtZW50KCk7CiAKICAgICBRVmFyaWFudCBpbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJ
bnB1dE1ldGhvZFF1ZXJ5IHByb3BlcnR5KSBjb25zdDsKIApJbmRleDogV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDY0NjU1KQorKysgV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2
ICsxMjUsNyBAQCBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgc2hvd01vZGFsRGlhbG9nKCk7CiAg
ICAgdm9pZCB0ZXN0U3RvcFNjaGVkdWxlZFBhZ2VSZWZyZXNoKCk7CiAgICAgdm9pZCBmaW5kVGV4
dCgpOworICAgIHZvaWQgdGVzdEZvY3VzZWRXZWJFbGVtZW50KCk7CiAgICAgCiBwcml2YXRlOgog
ICAgIFFXZWJWaWV3KiBtX3ZpZXc7CkBAIC0yMTczLDUgKzIxNzQsNDQgQEAgdm9pZCB0c3RfUVdl
YlBhZ2U6OmZpbmRUZXh0KCkKICAgICB9CiB9CiAKK3ZvaWQgdHN0X1FXZWJQYWdlOjp0ZXN0Rm9j
dXNlZFdlYkVsZW1lbnQoKQoreworICAgIFFTaWduYWxTcHkgc3B5TG9hZEZpbmlzaGVkKG1fdmll
dywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOworICAgIG1fdmlldy0+c2V0SHRtbChRU3Ry
aW5nKCI8aHRtbD48Ym9keT4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGZvcm0+
IlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9J3RleHQnIGlkPSdp
bnB1dDEnLz4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9J3Bh
c3N3b3JkJyBpZD0naW5wdXQyJy8+IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxp
bnB1dCB0eXBlPSdzdWJtaXQnIGlkPSdpbnB1dDMnIHZhbHVlPSdzdWJtaXQnLz4iIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiPC9mb3JtPiJcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIjxidXR0b24gdHlwZT0nYnV0dG9uJyBpZD0naW5wdXQ0JyA+Q2xpY2sgTWUhPC9idXR0
b24+IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvYm9keT48L2h0bWw+IikpOwor
ICAgIFFUUllfQ09NUEFSRShzcHlMb2FkRmluaXNoZWQuY291bnQoKSwgMSk7CisgICAgbV9wYWdl
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaW5wdXQxJykuZm9jdXMoKSIpOworCisgICAgUVZFUklGWShtX3BhZ2UtPmZvY3VzTmV4dFBy
ZXZDaGlsZCh0cnVlKSk7CisgICAgUVdlYkVsZW1lbnQgZm9jdXNlZEVsZW1lbnQgPSBtX3BhZ2Ut
PmZvY3VzZWRXZWJFbGVtZW50KCk7CisgICAgUVZFUklGWShmb2N1c2VkRWxlbWVudC5hdHRyaWJ1
dGUoImlkIikgPT0gImlucHV0MiIpOworICAgIFFWRVJJRlkoZm9jdXNlZEVsZW1lbnQuYXR0cmli
dXRlKCJ0eXBlIikgPT0gInBhc3N3b3JkIik7CisKKyAgICBRVkVSSUZZKG1fcGFnZS0+Zm9jdXNO
ZXh0UHJldkNoaWxkKHRydWUpKTsKKyAgICBmb2N1c2VkRWxlbWVudCA9IG1fcGFnZS0+Zm9jdXNl
ZFdlYkVsZW1lbnQoKTsKKyAgICBRVkVSSUZZKGZvY3VzZWRFbGVtZW50LmF0dHJpYnV0ZSgiaWQi
KSA9PSAiaW5wdXQzIik7CisgICAgUVZFUklGWShmb2N1c2VkRWxlbWVudC5hdHRyaWJ1dGUoInR5
cGUiKSA9PSAic3VibWl0Iik7CisKKyAgICBRVkVSSUZZKG1fcGFnZS0+Zm9jdXNOZXh0UHJldkNo
aWxkKHRydWUpKTsKKyAgICBmb2N1c2VkRWxlbWVudCA9IG1fcGFnZS0+Zm9jdXNlZFdlYkVsZW1l
bnQoKTsKKyAgICBRVkVSSUZZKGZvY3VzZWRFbGVtZW50LmF0dHJpYnV0ZSgiaWQiKSA9PSAiaW5w
dXQ0Iik7CisgICAgUVZFUklGWShmb2N1c2VkRWxlbWVudC5hdHRyaWJ1dGUoInR5cGUiKSA9PSAi
YnV0dG9uIik7CisKKyAgICBRVkVSSUZZKG1fcGFnZS0+Zm9jdXNOZXh0UHJldkNoaWxkKGZhbHNl
KSk7CisgICAgUVZFUklGWShtX3BhZ2UtPmZvY3VzTmV4dFByZXZDaGlsZChmYWxzZSkpOworICAg
IFFWRVJJRlkobV9wYWdlLT5mb2N1c05leHRQcmV2Q2hpbGQoZmFsc2UpKTsKKyAgICBmb2N1c2Vk
RWxlbWVudCA9IG1fcGFnZS0+Zm9jdXNlZFdlYkVsZW1lbnQoKTsKKyAgICBRVkVSSUZZKGZvY3Vz
ZWRFbGVtZW50LmF0dHJpYnV0ZSgiaWQiKSA9PSAiaW5wdXQxIik7CisgICAgUVZFUklGWShmb2N1
c2VkRWxlbWVudC5hdHRyaWJ1dGUoInR5cGUiKSA9PSAidGV4dCIpOworfQorCisKKwogUVRFU1Rf
TUFJTih0c3RfUVdlYlBhZ2UpCiAjaW5jbHVkZSAidHN0X3F3ZWJwYWdlLm1vYyIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64115</attachid>
            <date>2010-08-11 08:01:07 -0700</date>
            <delta_ts>2010-08-12 07:16:13 -0700</delta_ts>
            <desc>add since tag</desc>
            <filename>43498.patch</filename>
            <type>text/plain</type>
            <size>4146</size>
            <attacher name="Yi Shen">max.hong.shen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNjUxNTMpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDgtMTEgIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhbiBBcGkgdG8gZ2V0IGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50CisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmZvY3VzZWRXZWJFbGVtZW50KToK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3Rf
cXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjp0ZXN0Rm9jdXNlZFdlYkVsZW1l
bnQpOgorCiAyMDEwLTA4LTEwICBBbmRlcnMgQmFra2VuICA8YWdiYWtrZW5AZ21haWwuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDog
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAJKHJldmlzaW9uIDY1MTUzKQorKysgV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3MTIsNiArMzcxMiwyMiBAQCBxdWludDY0IFFXZWJQYWdl
OjpieXRlc1JlY2VpdmVkKCkgY29uc3QKIAogLyohCiAgICAgXHNpbmNlIDQuNworCisgICAgUmV0
dXJucyBmb2N1c2VkIHdlYiBlbGVtZW50CisqLworUVdlYkVsZW1lbnQgUVdlYlBhZ2U6OmZvY3Vz
ZWRXZWJFbGVtZW50KCkKK3sKKyAgICBGcmFtZSAqZnJhbWUgPSBkLT5wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZEZyYW1lKCk7CisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIERvY3Vt
ZW50ICpkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgICAgICBpZiAoZG9jdW1lbnQp
CisgICAgICAgICAgICByZXR1cm4gUVdlYkVsZW1lbnQoZG9jdW1lbnQtPmZvY3VzZWROb2RlKCkp
OworICAgIH0KKyAgICByZXR1cm4gUVdlYkVsZW1lbnQoKTsKK30KKworLyohCisgICAgXHNpbmNl
IDQuNwogICAgIFxmbiB2b2lkIFFXZWJQYWdlOjp2aWV3cG9ydENoYW5nZVJlcXVlc3RlZChjb25z
dCBRV2ViUGFnZTo6Vmlld3BvcnRIaW50cyYgaGludHMpCiAKICAgICBUaGlzIHNpZ25hbCBpcyBl
bWl0dGVkIGJlZm9yZSBhbnkgbGF5b3V0IG9mIHRoZSBjb250ZW50cywgZ2l2aW5nIHlvdSB0aGUg
dmlld3BvcnQgXGEgYXJndW1lbnRzCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCShyZXZpc2lvbiA2NTE1MykKKysr
IFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDYgKzI3OCw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBldmVudChRRXZlbnQqKTsKICAgICBib29s
IGZvY3VzTmV4dFByZXZDaGlsZChib29sIG5leHQpOworICAgIFFXZWJFbGVtZW50IGZvY3VzZWRX
ZWJFbGVtZW50KCk7CiAKICAgICBRVmFyaWFudCBpbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbnB1dE1l
dGhvZFF1ZXJ5IHByb3BlcnR5KSBjb25zdDsKIApJbmRleDogV2ViS2l0L3F0L3Rlc3RzL3F3ZWJw
YWdlL3RzdF9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJw
YWdlL3RzdF9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDY1MTUzKQorKysgV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUs
NyBAQCBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgc2hvd01vZGFsRGlhbG9nKCk7CiAgICAgdm9p
ZCB0ZXN0U3RvcFNjaGVkdWxlZFBhZ2VSZWZyZXNoKCk7CiAgICAgdm9pZCBmaW5kVGV4dCgpOwor
ICAgIHZvaWQgdGVzdEZvY3VzZWRXZWJFbGVtZW50KCk7CiAgICAgCiBwcml2YXRlOgogICAgIFFX
ZWJWaWV3KiBtX3ZpZXc7CkBAIC0yMTczLDUgKzIxNzQsNDQgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6
OmZpbmRUZXh0KCkKICAgICB9CiB9CiAKK3ZvaWQgdHN0X1FXZWJQYWdlOjp0ZXN0Rm9jdXNlZFdl
YkVsZW1lbnQoKQoreworICAgIFFTaWduYWxTcHkgc3B5TG9hZEZpbmlzaGVkKG1fdmlldywgU0lH
TkFMKGxvYWRGaW5pc2hlZChib29sKSkpOworICAgIG1fdmlldy0+c2V0SHRtbChRU3RyaW5nKCI8
aHRtbD48Ym9keT4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGZvcm0+IlwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9J3RleHQnIGlkPSdpbnB1dDEn
Lz4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9J3Bhc3N3b3Jk
JyBpZD0naW5wdXQyJy8+IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxpbnB1dCB0
eXBlPSdzdWJtaXQnIGlkPSdpbnB1dDMnIHZhbHVlPSdzdWJtaXQnLz4iIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiPC9mb3JtPiJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IjxidXR0b24gdHlwZT0nYnV0dG9uJyBpZD0naW5wdXQ0JyA+Q2xpY2sgTWUhPC9idXR0b24+IiBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvYm9keT48L2h0bWw+IikpOworICAgIFFU
UllfQ09NUEFSRShzcHlMb2FkRmluaXNoZWQuY291bnQoKSwgMSk7CisgICAgbV9wYWdlLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5w
dXQxJykuZm9jdXMoKSIpOworCisgICAgUVZFUklGWShtX3BhZ2UtPmZvY3VzTmV4dFByZXZDaGls
ZCh0cnVlKSk7CisgICAgUVdlYkVsZW1lbnQgZm9jdXNlZEVsZW1lbnQgPSBtX3BhZ2UtPmZvY3Vz
ZWRXZWJFbGVtZW50KCk7CisgICAgUVZFUklGWShmb2N1c2VkRWxlbWVudC5hdHRyaWJ1dGUoImlk
IikgPT0gImlucHV0MiIpOworICAgIFFWRVJJRlkoZm9jdXNlZEVsZW1lbnQuYXR0cmlidXRlKCJ0
eXBlIikgPT0gInBhc3N3b3JkIik7CisKKyAgICBRVkVSSUZZKG1fcGFnZS0+Zm9jdXNOZXh0UHJl
dkNoaWxkKHRydWUpKTsKKyAgICBmb2N1c2VkRWxlbWVudCA9IG1fcGFnZS0+Zm9jdXNlZFdlYkVs
ZW1lbnQoKTsKKyAgICBRVkVSSUZZKGZvY3VzZWRFbGVtZW50LmF0dHJpYnV0ZSgiaWQiKSA9PSAi
aW5wdXQzIik7CisgICAgUVZFUklGWShmb2N1c2VkRWxlbWVudC5hdHRyaWJ1dGUoInR5cGUiKSA9
PSAic3VibWl0Iik7CisKKyAgICBRVkVSSUZZKG1fcGFnZS0+Zm9jdXNOZXh0UHJldkNoaWxkKHRy
dWUpKTsKKyAgICBmb2N1c2VkRWxlbWVudCA9IG1fcGFnZS0+Zm9jdXNlZFdlYkVsZW1lbnQoKTsK
KyAgICBRVkVSSUZZKGZvY3VzZWRFbGVtZW50LmF0dHJpYnV0ZSgiaWQiKSA9PSAiaW5wdXQ0Iik7
CisgICAgUVZFUklGWShmb2N1c2VkRWxlbWVudC5hdHRyaWJ1dGUoInR5cGUiKSA9PSAiYnV0dG9u
Iik7CisKKyAgICBRVkVSSUZZKG1fcGFnZS0+Zm9jdXNOZXh0UHJldkNoaWxkKGZhbHNlKSk7Cisg
ICAgUVZFUklGWShtX3BhZ2UtPmZvY3VzTmV4dFByZXZDaGlsZChmYWxzZSkpOworICAgIFFWRVJJ
RlkobV9wYWdlLT5mb2N1c05leHRQcmV2Q2hpbGQoZmFsc2UpKTsKKyAgICBmb2N1c2VkRWxlbWVu
dCA9IG1fcGFnZS0+Zm9jdXNlZFdlYkVsZW1lbnQoKTsKKyAgICBRVkVSSUZZKGZvY3VzZWRFbGVt
ZW50LmF0dHJpYnV0ZSgiaWQiKSA9PSAiaW5wdXQxIik7CisgICAgUVZFUklGWShmb2N1c2VkRWxl
bWVudC5hdHRyaWJ1dGUoInR5cGUiKSA9PSAidGV4dCIpOworfQorCisKKwogUVRFU1RfTUFJTih0
c3RfUVdlYlBhZ2UpCiAjaW5jbHVkZSAidHN0X3F3ZWJwYWdlLm1vYyIK
</data>
<flag name="review"
          id="52606"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>