<?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>212581</bug_id>
          
          <creation_ts>2020-05-31 07:32:32 -0700</creation_ts>
          <short_desc>[GTK4] Monitor root window to update activity state</short_desc>
          <delta_ts>2020-06-01 05:38:23 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>210100</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1657778</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-31 07:32:32 -0700</bug_when>
    <thetext>To update ActivityState::IsInWindow and ActivityState::WindowIsActive</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657781</commentid>
    <comment_count>1</comment_count>
      <attachid>400703</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-31 07:34:31 -0700</bug_when>
    <thetext>Created attachment 400703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657782</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-05-31 07:35:22 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657857</commentid>
    <comment_count>3</comment_count>
      <attachid>400703</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-06-01 02:22:49 -0700</bug_when>
    <thetext>Comment on attachment 400703
Patch

Patch looks good, there&apos;s just one small wrinkle (please read below)
and a nit, otherwise I would have approved it already :]

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

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:1715
&gt; +    if (isActive &amp;&amp; !gtk_widget_get_visible(GTK_WIDGET(window)))

This will return early if the window is not visible, regardless of
its activity status. I think the code would be clearer if it checked
the window visibility first and returned early in that case. Something
like this:

  if (!gtk_widget_get_visible(GTK_WIDGET(window))
      return;

  const bool isActive = gtk_window_is_active(window);
  // ...

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:1735
&gt; +    bool visible = !(state &amp; GDK_SURFACE_STATE_MINIMIZED);

This should check also for GDK_SURFACE_STATE_WITHDRAWN,
which indicates that the surface is not being shown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657861</commentid>
    <comment_count>4</comment_count>
      <attachid>400703</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-06-01 02:45:36 -0700</bug_when>
    <thetext>Comment on attachment 400703
Patch

Carlos and me looked into GDK_SURFACE_STATE_WITHDRAWN and it&apos;s
basically equivalent to “the surface/window is not mapped”, which
is handled elsewhere by the widget implementation — we do not need
to add handling for it also in this patch.

Therefore, changed to r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657878</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-01 05:36:45 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #3)
&gt; Comment on attachment 400703 [details]
&gt; Patch
&gt; 
&gt; Patch looks good, there&apos;s just one small wrinkle (please read below)
&gt; and a nit, otherwise I would have approved it already :]
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=400703&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:1715
&gt; &gt; +    if (isActive &amp;&amp; !gtk_widget_get_visible(GTK_WIDGET(window)))
&gt; 
&gt; This will return early if the window is not visible, regardless of
&gt; its activity status. I think the code would be clearer if it checked
&gt; the window visibility first and returned early in that case. Something
&gt; like this:
&gt; 
&gt;   if (!gtk_widget_get_visible(GTK_WIDGET(window))
&gt;       return;
&gt; 
&gt;   const bool isActive = gtk_window_is_active(window);
&gt;   // ...

This comes from GTK3 code, where this early return only happens in the focus-in, and includes this comment:

// Spurious focus in events can occur when the window is hidden.

I don&apos;t even know if that&apos;s the case with GTK4, so I think I&apos;m going to assume a hidden toplevel can&apos;t get the focus.

&gt; &gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:1735
&gt; &gt; +    bool visible = !(state &amp; GDK_SURFACE_STATE_MINIMIZED);
&gt; 
&gt; This should check also for GDK_SURFACE_STATE_WITHDRAWN,
&gt; which indicates that the surface is not being shown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657879</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-01 05:38:23 -0700</bug_when>
    <thetext>Committed r262373: &lt;https://trac.webkit.org/changeset/262373&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400703</attachid>
            <date>2020-05-31 07:34:31 -0700</date>
            <delta_ts>2020-06-01 02:45:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk4-window-state.diff</filename>
            <type>text/plain</type>
            <size>11159</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYzkzYmVmNDZlMGUwLi40YzRhMzcyNWNlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMjAtMDUtMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEs0XSBNb25pdG9yIHJvb3Qgd2luZG93IHRvIHVwZGF0ZSBh
Y3Rpdml0eSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEyNTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVG8gdXBkYXRlIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgYW5kIEFjdGl2aXR5U3Rh
dGU6OldpbmRvd0lzQWN0aXZlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAodG9wbGV2ZWxXaW5kb3dTdGF0ZUV2ZW50KToKKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyk6CisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZURpc3Bvc2UpOgorICAgICAgICAodG9wbGV2ZWxXaW5kb3dJ
c0FjdGl2ZUNoYW5nZWQpOgorICAgICAgICAodG9wbGV2ZWxXaW5kb3dTdGF0ZUNoYW5nZWQpOgor
ICAgICAgICAodG9wbGV2ZWxXaW5kb3dSZWFsaXplZCk6CisgICAgICAgICh0b3BsZXZlbFdpbmRv
d1VucmVhbGl6ZWQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VSb290KToKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlVW5yb290KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19iYXNl
X2NsYXNzX2luaXQpOgorCiAyMDIwLTA1LTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLNF0gTWFrZSBpbnNwZWN0b3Igd29yawpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcAppbmRleCAyZDE1ZjQzM2QxZmEuLjNlYTZlZWZhNmVkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTI3
Niw5ICsyNzYsMTUgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIE9w
dGlvbmFsPE1vdGlvbkV2ZW50PiBsYXN0TW90aW9uRXZlbnQ7CiAKICAgICBHdGtXaW5kb3cqIHRv
cGxldmVsT25TY3JlZW5XaW5kb3cgeyBudWxscHRyIH07CisjaWYgVVNFKEdUSzQpCisgICAgdW5z
aWduZWQgbG9uZyB0b3BsZXZlbElzQWN0aXZlSUQgeyAwIH07CisgICAgdW5zaWduZWQgbG9uZyB0
b3BsZXZlbFdpbmRvd1N0YXRlQ2hhbmdlZElEIHsgMCB9OworICAgIHVuc2lnbmVkIGxvbmcgdG9w
bGV2ZWxXaW5kb3dVbnJlYWxpemVkSUQgeyAwIH07CisjZWxzZQogICAgIHVuc2lnbmVkIGxvbmcg
dG9wbGV2ZWxGb2N1c0luRXZlbnRJRCB7IDAgfTsKICAgICB1bnNpZ25lZCBsb25nIHRvcGxldmVs
Rm9jdXNPdXRFdmVudElEIHsgMCB9OwogICAgIHVuc2lnbmVkIGxvbmcgdG9wbGV2ZWxXaW5kb3dT
dGF0ZUV2ZW50SUQgeyAwIH07CisjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIHRvcGxldmVsV2lu
ZG93UmVhbGl6ZWRJRCB7IDAgfTsKICAgICB1bnNpZ25lZCBsb25nIHRoZW1lQ2hhbmdlZElEIHsg
MCB9OwogICAgIHVuc2lnbmVkIGxvbmcgYXBwbGljYXRpb25QcmVmZXJEYXJrVGhlbWVJRCB7IDAg
fTsKQEAgLTMzMSw2ICszMzcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNjaGVk
dWxlVXBkYXRlQWN0aXZpdHlTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVgogICAgIHByaXYt
PnVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIAorI2lmICFV
U0UoR1RLNCkKIHN0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3VzSW5FdmVudChHdGtX
aWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyosIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3
QmFzZSkKIHsKICAgICAvLyBTcHVyaW91cyBmb2N1cyBpbiBldmVudHMgY2FuIG9jY3VyIHdoZW4g
dGhlIHdpbmRvdyBpcyBoaWRkZW4uCkBAIC0zNTksNyArMzY2LDYgQEAgc3RhdGljIGdib29sZWFu
IHRvcGxldmVsV2luZG93Rm9jdXNPdXRFdmVudChHdGtXaWRnZXQqLCBHZGtFdmVudEZvY3VzKiwg
V2ViS2l0V2UKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLSNpZiAhVVNFKEdUSzQpCiBzdGF0aWMg
Z2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dTdGF0ZUV2ZW50KEd0a1dpZGdldCosIEdka0V2ZW50V2lu
ZG93U3RhdGUqIGV2ZW50LCBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7CiAgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CkBAIC0z
NzgsNyArMzg0LDYgQEAgc3RhdGljIGdib29sZWFuIHRvcGxldmVsV2luZG93U3RhdGVFdmVudChH
dGtXaWRnZXQqLCBHZGtFdmVudFdpbmRvd1N0YXRlKiBldmVudCwKIAogICAgIHJldHVybiBGQUxT
RTsKIH0KLSNlbmRpZgogCiBzdGF0aWMgdm9pZCB0aGVtZUNoYW5nZWQoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYlZpZXdCYXNlKQogewpAQCAtNDU5LDEwICs0NjQsOCBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3coV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYlZpZQogICAgIHByaXYtPnRvcGxldmVsRm9jdXNPdXRFdmVudElEID0KICAgICAgICAgZ19z
aWduYWxfY29ubmVjdChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93LCAiZm9jdXMtb3V0LWV2
ZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKHRvcGxldmVsV2luZG93
Rm9jdXNPdXRFdmVudCksIHdlYlZpZXdCYXNlKTsKLSNpZiAhVVNFKEdUSzQpCiAgICAgcHJpdi0+
dG9wbGV2ZWxXaW5kb3dTdGF0ZUV2ZW50SUQgPQogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHBy
aXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3csICJ3aW5kb3ctc3RhdGUtZXZlbnQiLCBHX0NBTExC
QUNLKHRvcGxldmVsV2luZG93U3RhdGVFdmVudCksIHdlYlZpZXdCYXNlKTsKLSNlbmRpZgogCiAg
ICAgYXV0byogc2V0dGluZ3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VUKHBy
aXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpKTsKICAgICBwcml2LT50aGVtZUNoYW5nZWRJRCA9
CkBAIC00NzUsNiArNDc4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3Bs
ZXZlbE9uU2NyZWVuV2luZG93KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWUKICAgICBlbHNlCiAg
ICAgICAgIHByaXYtPnRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCA9IGdfc2lnbmFsX2Nvbm5lY3Rf
c3dhcHBlZCh3aW5kb3csICJyZWFsaXplIiwgR19DQUxMQkFDSyh0b3BsZXZlbFdpbmRvd1JlYWxp
emVkKSwgd2ViVmlld0Jhc2UpOwogfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlUmVhbGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKIHsKQEAgLTY5OCw4ICs3MDIsOCBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpc3Bvc2UoR09iamVjdCogZ29iamVjdCkKICAg
ICAgICAgZ3RrX3dpZGdldF91bnBhcmVudCh3aWRnZXQpOwogI2Vsc2UKICAgICBnX2NsZWFyX3Bv
aW50ZXIoJndlYlZpZXctPnByaXYtPmRpYWxvZywgZ3RrX3dpZGdldF9kZXN0cm95KTsKLSNlbmRp
ZgogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyh3ZWJWaWV3
LCBudWxscHRyKTsKKyNlbmRpZgogICAgIGlmICh3ZWJWaWV3LT5wcml2LT5hY2Nlc3NpYmxlKQog
ICAgICAgICB3ZWJraXRXZWJWaWV3QWNjZXNzaWJsZVNldFdlYlZpZXcoV0VCS0lUX1dFQl9WSUVX
X0FDQ0VTU0lCTEUod2ViVmlldy0+cHJpdi0+YWNjZXNzaWJsZS5nZXQoKSksIG51bGxwdHIpOwog
I2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDI0LCAwKSAmJiAhVVNFKEdUSzQpCkBAIC0xNzA0LDcg
KzE3MDgsMTMxIEBAIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdFdlYlZpZXdCYXNlR2V0QWNjZXNz
aWJsZShHdGtXaWRnZXQqIHdpZGdldCkKICAgICByZXR1cm4gcHJpdi0+YWNjZXNzaWJsZS5nZXQo
KTsKIH0KIAotI2lmICFVU0UoR1RLNCkKKyNpZiBVU0UoR1RLNCkKK3N0YXRpYyB2b2lkIHRvcGxl
dmVsV2luZG93SXNBY3RpdmVDaGFuZ2VkKEd0a1dpbmRvdyogd2luZG93LCBHUGFyYW1TcGVjKiwg
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQoreworICAgIGJvb2wgaXNBY3RpdmUgPSBn
dGtfd2luZG93X2lzX2FjdGl2ZSh3aW5kb3cpOworICAgIGlmIChpc0FjdGl2ZSAmJiAhZ3RrX3dp
ZGdldF9nZXRfdmlzaWJsZShHVEtfV0lER0VUKHdpbmRvdykpKQorICAgICAgICByZXR1cm47CisK
KyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsK
KyAgICBpZiAoaXNBY3RpdmUpIHsKKyAgICAgICAgaWYgKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBB
Y3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgcHJpdi0+YWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rp
dml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHByaXYtPmFjdGl2aXR5U3RhdGUucmVtb3ZlKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZl
KTsKKyAgICB9CisKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlT
dGF0ZSh3ZWJWaWV3QmFzZSwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworfQorCitz
dGF0aWMgdm9pZCB0b3BsZXZlbFdpbmRvd1N0YXRlQ2hhbmdlZChHZGtTdXJmYWNlKiBzdXJmYWNl
LCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQoreworICAgIGF1
dG8gc3RhdGUgPSBnZGtfdG9wbGV2ZWxfZ2V0X3N0YXRlKEdES19UT1BMRVZFTChzdXJmYWNlKSk7
CisgICAgYm9vbCB2aXNpYmxlID0gIShzdGF0ZSAmIEdES19TVVJGQUNFX1NUQVRFX01JTklNSVpF
RCk7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnBy
aXY7CisgICAgaWYgKHZpc2libGUpIHsKKyAgICAgICAgaWYgKHByaXYtPmFjdGl2aXR5U3RhdGUg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHByaXYtPmFjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKCEocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHByaXYtPmFjdGl2
aXR5U3RhdGUucmVtb3ZlKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CisgICAgfQorICAgIHdl
YmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOworfQorCitzdGF0aWMgdm9pZCB0b3BsZXZlbFdpbmRv
d1JlYWxpemVkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKK3sKKyAgICBXZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBnX2NsZWFy
X3NpZ25hbF9oYW5kbGVyKCZwcml2LT50b3BsZXZlbFdpbmRvd1JlYWxpemVkSUQsIHByaXYtPnRv
cGxldmVsT25TY3JlZW5XaW5kb3cpOworICAgIHByaXYtPnRvcGxldmVsV2luZG93U3RhdGVDaGFu
Z2VkSUQgPQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGd0a19uYXRpdmVfZ2V0X3N1cmZhY2Uo
R1RLX05BVElWRShwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSksICJub3RpZnk6OnN0YXRl
IiwgR19DQUxMQkFDSyh0b3BsZXZlbFdpbmRvd1N0YXRlQ2hhbmdlZCksIHdlYlZpZXdCYXNlKTsK
K30KKworc3RhdGljIHZvaWQgdG9wbGV2ZWxXaW5kb3dVbnJlYWxpemVkKFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJWaWV3QmFzZSkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYg
PSB3ZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBnX2NsZWFyX3NpZ25hbF9oYW5kbGVyKCZwcml2LT50
b3BsZXZlbFdpbmRvd1VucmVhbGl6ZWRJRCwgcHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdyk7
CisgICAgZ19jbGVhcl9zaWduYWxfaGFuZGxlcigmcHJpdi0+dG9wbGV2ZWxXaW5kb3dTdGF0ZUNo
YW5nZWRJRCwgZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShHVEtfTkFUSVZFKHByaXYtPnRvcGxldmVs
T25TY3JlZW5XaW5kb3cpKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUm9v
dChHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJf
dmlld19iYXNlX3BhcmVudF9jbGFzcyktPnJvb3Qod2lkZ2V0KTsKKworICAgIFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CisgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CisgICAg
cHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdyA9IEdUS19XSU5ET1coZ3RrX3dpZGdldF9nZXRf
cm9vdCh3aWRnZXQpKTsKKworICAgIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFn
c1RvVXBkYXRlOworICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRl
OjpJc0luV2luZG93KSkgeworICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93KTsKKyAgICAgICAgZmxhZ3NUb1VwZGF0ZS5hZGQoQWN0aXZpdHlT
dGF0ZTo6SXNJbldpbmRvdyk7CisgICAgfQorICAgIGlmIChndGtfd2lkZ2V0X2dldF92aXNpYmxl
KEdUS19XSURHRVQocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdykpICYmIGd0a193aW5kb3df
aXNfYWN0aXZlKHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpKSB7CisgICAgICAgIHByaXYt
PmFjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICAg
ICAgZmxhZ3NUb1VwZGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CisgICAgfQor
ICAgIGlmIChmbGFnc1RvVXBkYXRlKQorICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxl
VXBkYXRlQWN0aXZpdHlTdGF0ZSh3ZWJWaWV3QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7CisKKyAgICBw
cml2LT50b3BsZXZlbElzQWN0aXZlSUQgPQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYt
PnRvcGxldmVsT25TY3JlZW5XaW5kb3csICJub3RpZnk6OmlzLWFjdGl2ZSIsIEdfQ0FMTEJBQ0so
dG9wbGV2ZWxXaW5kb3dJc0FjdGl2ZUNoYW5nZWQpLCB3aWRnZXQpOworICAgIGlmIChndGtfd2lk
Z2V0X2dldF9yZWFsaXplZChHVEtfV0lER0VUKHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cp
KSkgeworICAgICAgICBwcml2LT50b3BsZXZlbFdpbmRvd1N0YXRlQ2hhbmdlZElEID0KKyAgICAg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShHVEtfTkFUSVZF
KHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpKSwgIm5vdGlmeTo6c3RhdGUiLCBHX0NBTExC
QUNLKHRvcGxldmVsV2luZG93U3RhdGVDaGFuZ2VkKSwgd2lkZ2V0KTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBwcml2LT50b3BsZXZlbFdpbmRvd1JlYWxpemVkSUQgPQorICAgICAgICAgICAgZ19z
aWduYWxfY29ubmVjdF9zd2FwcGVkKHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3csICJyZWFs
aXplIiwgR19DQUxMQkFDSyh0b3BsZXZlbFdpbmRvd1JlYWxpemVkKSwgd2lkZ2V0KTsKKyAgICB9
CisgICAgcHJpdi0+dG9wbGV2ZWxXaW5kb3dVbnJlYWxpemVkSUQgPQorICAgICAgICBnX3NpZ25h
bF9jb25uZWN0X3N3YXBwZWQocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdywgInVucmVhbGl6
ZSIsIEdfQ0FMTEJBQ0sodG9wbGV2ZWxXaW5kb3dVbnJlYWxpemVkKSwgd2lkZ2V0KTsKKworICAg
IGF1dG8qIHNldHRpbmdzID0gZ3RrX3dpZGdldF9nZXRfc2V0dGluZ3MoR1RLX1dJREdFVChwcml2
LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSk7CisgICAgcHJpdi0+dGhlbWVDaGFuZ2VkSUQgPQor
ICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2V0dGluZ3MsICJub3RpZnk6Omd0ay10
aGVtZS1uYW1lIiwgR19DQUxMQkFDSygrW10oV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNl
KSB7CisgICAgICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT50aGVtZURpZENo
YW5nZSgpOworICAgICAgICB9KSwgd2lkZ2V0KTsKKyAgICBwcml2LT5hcHBsaWNhdGlvblByZWZl
ckRhcmtUaGVtZUlEID0KKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNldHRpbmdz
LCAibm90aWZ5OjpndGstYXBwbGljYXRpb24tcHJlZmVyLWRhcmstdGhlbWUiLCBHX0NBTExCQUNL
KCtbXShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpIHsKKyAgICAgICAgICAgIHdlYlZp
ZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UoKTsK
KyAgICAgICAgfSksIHdpZGdldCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
VW5yb290KEd0a1dpZGdldCogd2lkZ2V0KQoreworICAgIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0
X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+dW5yb290KHdpZGdldCk7CisKKyAgICBXZWJL
aXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQp
OworICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2
OworICAgIGdfY2xlYXJfc2lnbmFsX2hhbmRsZXIoJnByaXYtPnRvcGxldmVsSXNBY3RpdmVJRCwg
cHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdyk7CisgICAgZ19jbGVhcl9zaWduYWxfaGFuZGxl
cigmcHJpdi0+dG9wbGV2ZWxXaW5kb3dSZWFsaXplZElELCBwcml2LT50b3BsZXZlbE9uU2NyZWVu
V2luZG93KTsKKyAgICBnX2NsZWFyX3NpZ25hbF9oYW5kbGVyKCZwcml2LT50b3BsZXZlbFdpbmRv
d1VucmVhbGl6ZWRJRCwgcHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdyk7CisgICAgaWYgKGd0
a193aWRnZXRfZ2V0X3JlYWxpemVkKEdUS19XSURHRVQocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldp
bmRvdykpKQorICAgICAgICBnX2NsZWFyX3NpZ25hbF9oYW5kbGVyKCZwcml2LT50b3BsZXZlbFdp
bmRvd1N0YXRlQ2hhbmdlZElELCBndGtfbmF0aXZlX2dldF9zdXJmYWNlKEdUS19OQVRJVkUocHJp
di0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdykpKTsKKyAgICBhdXRvKiBzZXR0aW5ncyA9IGd0a193
aWRnZXRfZ2V0X3NldHRpbmdzKEdUS19XSURHRVQocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRv
dykpOworICAgIGdfY2xlYXJfc2lnbmFsX2hhbmRsZXIoJnByaXYtPnRoZW1lQ2hhbmdlZElELCBz
ZXR0aW5ncyk7CisgICAgZ19jbGVhcl9zaWduYWxfaGFuZGxlcigmcHJpdi0+YXBwbGljYXRpb25Q
cmVmZXJEYXJrVGhlbWVJRCwgc2V0dGluZ3MpOworICAgIHByaXYtPnRvcGxldmVsT25TY3JlZW5X
aW5kb3cgPSBudWxscHRyOworCisgICAgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGZs
YWdzVG9VcGRhdGU7CisgICAgaWYgKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRl
OjpJc0luV2luZG93KSB7CisgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUucmVtb3ZlKEFjdGl2
aXR5U3RhdGU6OklzSW5XaW5kb3cpOworICAgICAgICBmbGFnc1RvVXBkYXRlLmFkZChBY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93KTsKKyAgICB9CisgICAgaWYgKHByaXYtPmFjdGl2aXR5U3RhdGUg
JiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkgeworICAgICAgICBwcml2LT5hY3Rpdml0
eVN0YXRlLnJlbW92ZShBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgICAgIGZs
YWdzVG9VcGRhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpOworICAgIH0KKyAgICBp
ZiAoZmxhZ3NUb1VwZGF0ZSkKKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0
ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIGZsYWdzVG9VcGRhdGUpOworfQorI2Vsc2UKIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlSGllcmFyY2h5Q2hhbmdlZChHdGtXaWRnZXQqIHdp
ZGdldCwgR3RrV2lkZ2V0KiBvbGRUb3BsZXZlbCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVBy
aXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2OwpAQCAtMTgz
MCw3ICsxOTU4LDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2lu
aXQoV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyogd2Via2l0V2ViVmllCiAgICAgd2lkZ2V0Q2xhc3Mt
PmV2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VFdmVudDsKICNlbmRpZgogICAgIHdpZGdldENsYXNz
LT5nZXRfYWNjZXNzaWJsZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0QWNjZXNzaWJsZTsKLSNpZiAh
VVNFKEdUSzQpCisjaWYgVVNFKEdUSzQpCisgICAgd2lkZ2V0Q2xhc3MtPnJvb3QgPSB3ZWJraXRX
ZWJWaWV3QmFzZVJvb3Q7CisgICAgd2lkZ2V0Q2xhc3MtPnVucm9vdCA9IHdlYmtpdFdlYlZpZXdC
YXNlVW5yb290OworI2Vsc2UKICAgICB3aWRnZXRDbGFzcy0+aGllcmFyY2h5X2NoYW5nZWQgPSB3
ZWJraXRXZWJWaWV3QmFzZUhpZXJhcmNoeUNoYW5nZWQ7CiAjZW5kaWYKIAo=
</data>
<flag name="review"
          id="416098"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>