<?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>149567</bug_id>
          
          <creation_ts>2015-09-25 14:01:53 -0700</creation_ts>
          <short_desc>Expose a WKWebView API for allowing programmatic focus to trigger node assistance</short_desc>
          <delta_ts>2015-10-09 11:26:33 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 9.0</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>enrica</cc>
    
    <cc>jberkman</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1128762</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-25 14:01:53 -0700</bug_when>
    <thetext>Add a new API to WKWebView that allows programmatic focus (i.e. focus without user interaction) to bring up the keyboard on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128840</commentid>
    <comment_count>1</comment_count>
      <attachid>261960</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-25 19:20:36 -0700</bug_when>
    <thetext>Created attachment 261960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128916</commentid>
    <comment_count>2</comment_count>
      <attachid>261960</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-26 18:54:54 -0700</bug_when>
    <thetext>Comment on attachment 261960
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:258
&gt; +    NodeAssistanceArguments(const AssistedNodeInformation&amp; nodeInformation, bool userIsInteracting, bool blurPreviousNode, API::Object* userData)
&gt; +        : m_nodeInformation(nodeInformation)
&gt; +        , m_userIsInteracting(userIsInteracting)
&gt; +        , m_blurPreviousNode(blurPreviousNode)
&gt; +        , m_userData(userData)
&gt; +    {
&gt; +    }

A struct does not need a constructor like this in modern C++. We can use aggregate initializer syntax instead.

&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:816
&gt; +        m_deferredNodeAssistanceArguments = std::make_unique&lt;NodeAssistanceArguments&gt;(information, userIsInteracting, blurPreviousNode, userDataObject);

I believe the only change needed when we remove the constructor is to add braces here:

    std::make_unique&lt;NodeAssistanceArguments&gt;({ information, userIsInteracting, blurPreviousNode, userDataObject });</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128927</commentid>
    <comment_count>3</comment_count>
      <attachid>261960</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-26 21:01:33 -0700</bug_when>
    <thetext>Comment on attachment 261960
Patch

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

Thanks for taking a look! I&apos;ll switch to using an aggregate initializer before landing.

&gt;&gt; Source/WebKit2/UIProcess/WebPageProxy.h:258
&gt;&gt; +    }
&gt; 
&gt; A struct does not need a constructor like this in modern C++. We can use aggregate initializer syntax instead.

Got it. I&apos;ll take out the constructor.

&gt;&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:816
&gt;&gt; +        m_deferredNodeAssistanceArguments = std::make_unique&lt;NodeAssistanceArguments&gt;(information, userIsInteracting, blurPreviousNode, userDataObject);
&gt; 
&gt; I believe the only change needed when we remove the constructor is to add braces here:
&gt; 
&gt;     std::make_unique&lt;NodeAssistanceArguments&gt;({ information, userIsInteracting, blurPreviousNode, userDataObject });

Got it. I&apos;ll keep this in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129006</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-28 06:54:02 -0700</bug_when>
    <thetext>Committed r190278: &lt;http://trac.webkit.org/changeset/190278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129009</commentid>
    <comment_count>5</comment_count>
      <attachid>261960</attachid>
    <who name="">mitz</who>
    <bug_when>2015-09-28 07:16:44 -0700</bug_when>
    <thetext>Comment on attachment 261960
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h:248
&gt; +@property (nonatomic) BOOL canAssistOnProgrammaticFocus;

This API declaration is missing availability information.

It’s surprising that this API uses the term “assist”. Is this something that’s used anywhere else in WebKit or UIKit API?

Have you considered other ways to expose this ability to clients? For example, calling the delegate when an element is focused and asking it to make a decision seems like it would afford more flexibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129010</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-28 08:33:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/22878323&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129012</commentid>
    <comment_count>7</comment_count>
      <attachid>261960</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-28 09:08:30 -0700</bug_when>
    <thetext>Comment on attachment 261960
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h:248
&gt;&gt; +@property (nonatomic) BOOL canAssistOnProgrammaticFocus;
&gt; 
&gt; This API declaration is missing availability information.
&gt; 
&gt; It’s surprising that this API uses the term “assist”. Is this something that’s used anywhere else in WebKit or UIKit API?
&gt; 
&gt; Have you considered other ways to expose this ability to clients? For example, calling the delegate when an element is focused and asking it to make a decision seems like it would afford more flexibility.

Just to make sure -- would I add availability information via something like WK_AVAILABLE(10_12, 10_0)?

Good point, it looks like assistance is not really mentioned in the WebKit API and in UIKit it refers to accessibility-related things rather than bringing up the keyboard. Maybe I could rephrase it to be something like &quot;A Boolean value indicating whether programmatic focus on an element is allowed to display the keyboard.&quot; Also, now that I&apos;m aware keyboardDisplayRequiresUserAction exists for UIWebView, I think we should rename this flag to keyboardDisplayRequiresUserAction for better consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131959</commentid>
    <comment_count>8</comment_count>
    <who name="jacob berkman">jberkman</who>
    <bug_when>2015-10-09 11:23:32 -0700</bug_when>
    <thetext>will this fix https://bugs.webkit.org/show_bug.cgi?id=142757 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131962</commentid>
    <comment_count>9</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-09 11:26:33 -0700</bug_when>
    <thetext>Yes -- this is designed to tackle that problem. However, we&apos;re also working on an alternate (more powerful) means of providing ways to customize assistance behavior through https://bugs.webkit.org/show_bug.cgi?id=149646. Please keep in mind nothing is official yet, though.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261960</attachid>
            <date>2015-09-25 19:20:36 -0700</date>
            <delta_ts>2015-09-26 18:54:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149567-20150925192016.patch</filename>
            <type>text/plain</type>
            <size>11448</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjQ1YWE3ZmZlY2I1OGI3
ZjU0MTE3NmM4N2MzMzUyZTE1ZTEyYjk1NS4uNzQyOWE0YmYwZTY4MWM0ODA2M2ZkM2FkY2U0YTBm
ZWFhYTAyZTkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE1LTA5LTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBhIFdL
V2ViVmlldyBBUEkgZm9yIGFsbG93aW5nIHByb2dyYW1tYXRpYyBmb2N1cyB0byB0cmlnZ2VyIG5v
ZGUgYXNzaXN0YW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ5NTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkcyBhbiBBUEkgbWV0aG9kIHRvIFdLV2ViVmlldyB0aGF0IGFsbG93cyBjbGllbnRz
IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGlPUyBiZWhhdmlvciBvZiBub3QKKyAgICAgICAgc3Rh
cnRpbmcgbm9kZSBhc3Npc3RhbmNlIHdoZW4gcHJvZ3JhbW1hdGljYWxseSBmb2N1c2luZy4gQWxz
byBmaXhlcyBhIGJ1ZyBjYXVzZWQgYnkgbmFpdmVseQorICAgICAgICBpbnRyb2R1Y2luZyB0aGUg
ZmxhZyB3aGVyZSB0aGUgYXV0b2ZvY3VzIGF0dHJpYnV0ZSBjb3VsZCB0cmlnZ2VyIG5vZGUgYXNz
aXN0YW5jZSBiZWZvcmUgbGF5b3V0CisgICAgICAgIG9jY3VycywgY2F1c2luZyBhbiBBU1NFUlQg
dG8gZmFpbCBpbiBFZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEuCisKKyAgICAgICAgSSBmaXhl
ZCB0aGlzIGlzc3VlIGJ5IG5vdCBhc3Npc3RpbmcgdGhlIG5vZGUgaWYgdGhlIGVkaXRvciBzdGF0
ZSBpcyBtaXNzaW5nIHBvc3QgbGF5b3V0IGRhdGEsCisgICAgICAgIGluc3RlYWQgZGVmZXJyaW5n
IG5vZGUgYXNzaXN0YW5jZSB1bnRpbCBsYXlvdXQgaGFzIG9jY3VycmVkLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6
Y29uZmlndXJhdGlvbjpdKTogSW5pdGlhbGl6ZXMgdGhlIG5ldyBub2RlIGFzc2lzdGFuY2UgZmxh
ZyB0byBOTywgd2hpY2gKKyAgICAgICAgICAgIGlzIHRoZSBjdXJyZW50IGRlZmF1bHQgYmVoYXZp
b3IuCisgICAgICAgICgtW1dLV2ViVmlldyBjYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRDYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzOl0p
OiBOZXcgQVBJIG1ldGhvZCB0aGF0IGFsbG93cyBjbGllbnRzIHRvIHNldCBub2RlCisgICAgICAg
ICAgICBhc3Npc3RhbmNlIGJlaGF2aW9yIHVwb24gcHJvZ3JhbW1hdGljIGZvY3VzLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBpbml0XSk6IEFkZGVkIG5ldyBub2RlIGFzc2lz
dGFuY2UgZmxhZyB0byBjb25maWd1cmF0aW9uLgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF9jYW5Bc3Npc3RPblByb2dyYW1tYXRpY0ZvY3VzXSk6CisgICAgICAgICgtW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3NldENhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpOb2Rl
QXNzaXN0YW5jZUFyZ3VtZW50czo6Tm9kZUFzc2lzdGFuY2VBcmd1bWVudHMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9zdGFydEFzc2lzdGluZ05vZGU6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1clBy
ZXZpb3VzTm9kZTp1c2VyT2JqZWN0Ol0pOiBEbyBub3QgcmV0dXJuCisgICAgICAgICAgICBlYXJs
eSBpZiB0aGUgbm9kZSBhc3Npc3RhbmNlIGZsYWcgaXMgc2V0IHRvIGFsbG93IHByb2dyYW1tYXRp
YyBmb2N1cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMYXllclRyZWUpOiBBZnRlciBj
b21taXR0aW5nIHRoZSBsYXllciB0cmVlLCBpZiB3ZSBoYXZlIGRlZmVycmVkCisgICAgICAgICAg
ICBzdGFydGluZyBub2RlIGFzc2lzdGFuY2UsIGltbWVkaWF0ZWx5IHRyaWdnZXIgbm9kZSBhc3Np
c3RhbmNlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YXJ0QXNzaXN0aW5nTm9k
ZSk6IERlZmVyIHN0YXJ0aW5nIG5vZGUgYXNzaXN0YW5jZSBpZiB3ZSBoYXZlIG5vdCB5ZXQgcmVw
YWludGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0b3BBc3Npc3RpbmdOb2Rl
KTogQWxzbyBjYW5jZWwgYW55IGRlZmVycmVkIG5vZGUgYXNzaXN0YW5jZS4KKwogMjAxNS0wOS0y
NSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gQVNTRVJUSU9OIEZBSUxFRDogIW1faW5VcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSBpbiBE
cmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoKSBhZnRlciBEcmF3aW5nQXJlYUltcGw6OmZvcmNlUmVw
YWludCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
aAppbmRleCA1NWRlYmVhNzI2MDlmYjM3NTcxMjE3ZmRlZmI1ZDYzNWIxZGJjNzMwLi40YTdkZWM3
Y2Y1ZmM5MTg5YmQwNDU4YTVlODQyOWNlMmFlYzcwN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKQEAgLTI0MSw2ICsyNDEsMTEgQEAgV0tf
Q0xBU1NfQVZBSUxBQkxFKDEwXzEwLCA4XzApCiAvKiEgQGFic3RyYWN0IFRoZSBzY3JvbGwgdmll
dyBhc3NvY2lhdGVkIHdpdGggdGhlIHdlYiB2aWV3LgogICovCiBAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIHN0cm9uZykgVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3OworCisvKiEgQGFi
c3RyYWN0IEEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgcHJvZ3JhbW1hdGljIGZv
Y3VzIG9uCisgYW4gZWxlbWVudCBpcyBhbGxvd2VkIHRvIHRyaWdnZXIgYXNzaXN0YW5jZS4KKyAq
LworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgY2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1
czsKICNlbmRpZgogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYWFjZjVhMGM2NWM2NjBiMTZh
NDQ4NzU0MjI1NTFmOGIwNTU2M2EwYy4uNjk5ZDMyNzEyZDlkZDdlZDAyNTVjMDQ5N2FmM2MyMjlk
MmU0M2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTIxMSw2ICsyMTEsOCBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IHsK
ICAgICBCT09MIF9wYWdlSXNQcmludGluZ1RvUERGOwogICAgIFJldGFpblB0cjxDR1BERkRvY3Vt
ZW50UmVmPiBfcHJpbnRlZERvY3VtZW50OwogICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+PiBfc25hcHNob3RzRGVmZXJyZWREdXJpbmdSZXNpemU7CisKKyAgICBCT09MIF9jYW5Bc3Np
c3RPblByb2dyYW1tYXRpY0ZvY3VzOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJl
dGFpblB0cjxXS1ZpZXc+IF93a1ZpZXc7CkBAIC0zNjYsNiArMzY4LDggQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdD
b25maWd1cmF0aW8KICAgICBfcGFnZS0+Y29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShbc2Vs
ZiBfY29udGVudFNpemVDYXRlZ29yeV0pOwogCiAgICAgW1tfY29uZmlndXJhdGlvbiBfY29udGVu
dFByb3ZpZGVyUmVnaXN0cnldIGFkZFBhZ2U6Kl9wYWdlXTsKKworICAgIFtzZWxmIHNldENhbkFz
c2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM6W19jb25maWd1cmF0aW9uIGNhbkFzc2lzdE9uUHJvZ3Jh
bW1hdGljRm9jdXNdXTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNzE2LDYgKzcy
MCwxNiBAQCAtIChVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CiAgICAgcmV0dXJuIF9zY3JvbGxW
aWV3LmdldCgpOwogfQogCistIChCT09MKWNhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXMKK3sK
KyAgICByZXR1cm4gX2NhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXM7Cit9CisKKy0gKHZvaWQp
c2V0Q2FuQXNzaXN0T25Qcm9ncmFtbWF0aWNGb2N1czooQk9PTCljYW5Bc3Npc3RPblByb2dyYW1t
YXRpY0ZvY3VzCit7CisgICAgX2NhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXMgPSBjYW5Bc3Np
c3RPblByb2dyYW1tYXRpY0ZvY3VzOworfQorCiAtIChXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgKilicm93c2luZ0NvbnRleHRDb250cm9sbGVyCiB7CiAgICAgcmV0dXJuIFtfY29udGVudFZp
ZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oCmluZGV4
IGZlN2FjNzg0M2IzZDA4NmVlZTQ3MzY3N2VmYTBiZDQ2NzAyYWIzY2MuLmRiZGYyZDExNjk0OThi
ZWVhYTNmZjdmYTU0YzUzOTUyYzY4YmNhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oCkBAIC0x
MTksNiArMTE5LDEyIEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogICovCiBAcHJv
cGVydHkgKG5vbmF0b21pYykgQk9PTCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFj
ayBXS19BVkFJTEFCTEUoTkEsIDlfMCk7CiAKKy8qISBAYWJzdHJhY3QgQSBCb29sZWFuIHZhbHVl
IGluZGljYXRpbmcgd2hldGhlciBwcm9ncmFtbWF0aWMgZm9jdXMgb24KKyBhbiBlbGVtZW50IGlz
IGFsbG93ZWQgdG8gdHJpZ2dlciBhc3Npc3RhbmNlLgorIEBkaXNjdXNzaW9uIFRoZSBkZWZhdWx0
IHZhbHVlIGlzIE5PLgorICovCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjYW5Bc3Npc3RP
blByb2dyYW1tYXRpY0ZvY3VzOworCiAjZW5kaWYKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
Lm1tCmluZGV4IGY2NTdlMjQyNzRmNWIwMmQ0NGFjMWI1MmI1YTBlODcxMThmNDM1NmIuLmExYjcy
MDlhYTRlNWM0YmQ1YzE1ODZlZjhlMjE3NGIxMGI1ZDc1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0KQEAgLTExMiw2ICsxMTIsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgIF9hbGxv
d3NJbmxpbmVNZWRpYVBsYXliYWNrID0gV0tHZXREZXZpY2VDbGFzcygpID09IFdLRGV2aWNlQ2xh
c3NpUGFkOwogICAgIF9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJp
YnV0ZSA9ICFfYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazsKICAgICBfbWVkaWFEYXRhTG9hZHNB
dXRvbWF0aWNhbGx5ID0gTk87CisgICAgX2NhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXMgPSBO
TzsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTM2
NCw2ICszNjUsMTYgQEAgLSAodm9pZClfc2V0TWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5OihC
T09MKW1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseQogewogICAgIF9tZWRpYURhdGFMb2Fkc0F1
dG9tYXRpY2FsbHkgPSBtZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHk7CiB9CisKKy0gKEJPT0wp
X2NhbkFzc2lzdE9uUHJvZ3JhbW1hdGljRm9jdXMKK3sKKyAgICByZXR1cm4gX2NhbkFzc2lzdE9u
UHJvZ3JhbW1hdGljRm9jdXM7Cit9CisKKy0gKHZvaWQpX3NldENhbkFzc2lzdE9uUHJvZ3JhbW1h
dGljRm9jdXM6KEJPT0wpY2FuQXNzaXN0Cit7CisgICAgX2NhbkFzc2lzdE9uUHJvZ3JhbW1hdGlj
Rm9jdXMgPSBjYW5Bc3Npc3Q7Cit9CiAjZW5kaWYKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDRlNDgyZDk0NDdmZWJlZDIzZjU3YjIyNjkxYjUyMjVm
YWY4N2Y1YzYuLjI2YzM4NjU0ODk3ZmIyYzg0OTU0OGVmNjA4NTZkNzVjNDNlNDFjNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI0OCw2ICsyNDgsMjAgQEAg
dHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgZG91YmxlLCBib29sPiBGb250
QXRTZWxlY3Rpb25DYWxsYmFjazsKICNpZiBQTEFURk9STShJT1MpCiB0eXBlZGVmIEdlbmVyaWND
YWxsYmFjazxjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWlu
dDMyX3Q+IEdlc3R1cmVDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgdWludDMyX3Q+IFRvdWNoZXNDYWxsYmFjazsKK3N0cnVjdCBOb2Rl
QXNzaXN0YW5jZUFyZ3VtZW50cyB7CisgICAgTm9kZUFzc2lzdGFuY2VBcmd1bWVudHMoY29uc3Qg
QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mIG5vZGVJbmZvcm1hdGlvbiwgYm9vbCB1c2VySXNJbnRl
cmFjdGluZywgYm9vbCBibHVyUHJldmlvdXNOb2RlLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCisg
ICAgICAgIDogbV9ub2RlSW5mb3JtYXRpb24obm9kZUluZm9ybWF0aW9uKQorICAgICAgICAsIG1f
dXNlcklzSW50ZXJhY3RpbmcodXNlcklzSW50ZXJhY3RpbmcpCisgICAgICAgICwgbV9ibHVyUHJl
dmlvdXNOb2RlKGJsdXJQcmV2aW91c05vZGUpCisgICAgICAgICwgbV91c2VyRGF0YSh1c2VyRGF0
YSkKKyAgICB7CisgICAgfQorCisgICAgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gbV9ub2RlSW5m
b3JtYXRpb247CisgICAgYm9vbCBtX3VzZXJJc0ludGVyYWN0aW5nOworICAgIGJvb2wgbV9ibHVy
UHJldmlvdXNOb2RlOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gbV91c2VyRGF0YTsKK307CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTc2Myw2ICsxNzc3LDExIEBAIHByaXZh
dGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkIHsg
dHJ1ZSB9OworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgbV9oYXNEZWZlcnJlZFN0YXJ0
QXNzaXN0aW5nTm9kZSB7IGZhbHNlIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPE5vZGVBc3Npc3Rh
bmNlQXJndW1lbnRzPiBtX2RlZmVycmVkTm9kZUFzc2lzdGFuY2VBcmd1bWVudHM7CisjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxMjMwZjc5
NjRjNDVjZmNmYzkxOTdjNTYxYTFmNmU0YTJjNzBiMDkxLi5lMDc0NzA3OTNkMmI2Mjc2YjNhYThm
YjFiOTFlNzU3NjRkZjczMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzAxNSw3ICszMDE1LDcg
QEAgLSAodm9pZClfc3RhcnRBc3Npc3RpbmdOb2RlOihjb25zdCBBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbiYpaW5mb3JtYXRpb24gdXNlcklzSW4KIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRl
bXBvcmFyeSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vMjIxMjY1MTg+LiBUaGUgcmVh
bCBmaXggd2lsbCBpbnZvbHZlIHJlZmFjdG9yaW5nCiAgICAgLy8gdGhlIHdheSB3ZSBhc3Npc3Qg
cHJvZ3JhbW1hdGljYWxseSBmb2N1c2VkIG5vZGVzLgotICAgIGlmICghdXNlcklzSW50ZXJhY3Rp
bmcgJiYgIV90ZXh0U2VsZWN0aW9uQXNzaXN0YW50KQorICAgIGlmICghdXNlcklzSW50ZXJhY3Rp
bmcgJiYgIV90ZXh0U2VsZWN0aW9uQXNzaXN0YW50ICYmICFfd2ViVmlldy5jYW5Bc3Npc3RPblBy
b2dyYW1tYXRpY0ZvY3VzKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYmx1clByZXZpb3Vz
Tm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KaW5kZXggZWQzZmQ0ODg2MTZiNDQ3OTEzMDljYmUyMjczZTM4NzQ2M2RkMzYxMi4uZWUwMDA0
ZTc5OGRhYjNmMjUwYjJlYzIyZDJjOWU5ZWQzMDA1MGFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTM1OCw2ICszNTgsMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uJgogICAgICAgICBtX2hpdFJlbmRlclRyZWVTaXplVGhyZXNo
b2xkID0gdHJ1ZTsKICAgICAgICAgZGlkTGF5b3V0KFdlYkNvcmU6OlJlYWNoZWRTZXNzaW9uUmVz
dG9yYXRpb25SZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCk7CiAgICAgfQorCisgICAgaWYgKG1faGFz
RGVmZXJyZWRTdGFydEFzc2lzdGluZ05vZGUpIHsKKyAgICAgICAgbV9wYWdlQ2xpZW50LnN0YXJ0
QXNzaXN0aW5nTm9kZShtX2RlZmVycmVkTm9kZUFzc2lzdGFuY2VBcmd1bWVudHMtPm1fbm9kZUlu
Zm9ybWF0aW9uLCBtX2RlZmVycmVkTm9kZUFzc2lzdGFuY2VBcmd1bWVudHMtPm1fdXNlcklzSW50
ZXJhY3RpbmcsIG1fZGVmZXJyZWROb2RlQXNzaXN0YW5jZUFyZ3VtZW50cy0+bV9ibHVyUHJldmlv
dXNOb2RlLCBtX2RlZmVycmVkTm9kZUFzc2lzdGFuY2VBcmd1bWVudHMtPm1fdXNlckRhdGEuZ2V0
KCkpOworICAgICAgICBtX2hhc0RlZmVycmVkU3RhcnRBc3Npc3RpbmdOb2RlID0gZmFsc2U7Cisg
ICAgICAgIG1fZGVmZXJyZWROb2RlQXNzaXN0YW5jZUFyZ3VtZW50cyA9IG51bGxwdHI7CisgICAg
fQogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwg
dWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgc3RkOjpmdW5jdGlv
bjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWlu
dDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtODA1LDEx
ICs4MTEsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJp
ZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3IKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnN0YXJ0QXNzaXN0aW5nTm9kZShjb25zdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYgaW5mb3Jt
YXRpb24sIGJvb2wgdXNlcklzSW50ZXJhY3RpbmcsIGJvb2wgYmx1clByZXZpb3VzTm9kZSwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIG1fcGFnZUNsaWVudC5zdGFydEFzc2lzdGlu
Z05vZGUoaW5mb3JtYXRpb24sIHVzZXJJc0ludGVyYWN0aW5nLCBibHVyUHJldmlvdXNOb2RlLCBw
cm9jZXNzKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOworICAgIEFQSTo6T2JqZWN0KiB1c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MoKS50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKTsKKyAgICBpZiAobV9l
ZGl0b3JTdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkgeworICAgICAgICBtX2RlZmVycmVk
Tm9kZUFzc2lzdGFuY2VBcmd1bWVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVBc3Npc3RhbmNl
QXJndW1lbnRzPihpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05v
ZGUsIHVzZXJEYXRhT2JqZWN0KTsKKyAgICAgICAgbV9oYXNEZWZlcnJlZFN0YXJ0QXNzaXN0aW5n
Tm9kZSA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3BhZ2VDbGllbnQu
c3RhcnRBc3Npc3RpbmdOb2RlKGluZm9ybWF0aW9uLCB1c2VySXNJbnRlcmFjdGluZywgYmx1clBy
ZXZpb3VzTm9kZSwgdXNlckRhdGFPYmplY3QpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3Rv
cEFzc2lzdGluZ05vZGUoKQogeworICAgIGlmIChtX2hhc0RlZmVycmVkU3RhcnRBc3Npc3RpbmdO
b2RlKSB7CisgICAgICAgIG1faGFzRGVmZXJyZWRTdGFydEFzc2lzdGluZ05vZGUgPSBmYWxzZTsK
KyAgICAgICAgbV9kZWZlcnJlZE5vZGVBc3Npc3RhbmNlQXJndW1lbnRzID0gbnVsbHB0cjsKKyAg
ICB9CiAgICAgbV9wYWdlQ2xpZW50LnN0b3BBc3Npc3RpbmdOb2RlKCk7CiB9CiAK
</data>
<flag name="review"
          id="287152"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>