<?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>23665</bug_id>
          
          <creation_ts>2009-01-31 16:45:15 -0800</creation_ts>
          <short_desc>WebHTMLView.mm removes NSNotification observation inefficiently</short_desc>
          <delta_ts>2009-01-31 17:00:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Sullivan">sullivan</reporter>
          <assigned_to name="John Sullivan">sullivan</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>107866</commentid>
    <comment_count>0</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2009-01-31 16:45:15 -0800</bug_when>
    <thetext>-[WebHTMLView close] calls [NSNotificationCenter removeObserver:self], which is measurably slower than calling the flavor of removeObserver: that takes a specific notification.

Also, removeObserver: is called when the view is removed from the window as well as when the view is closed, resulting in NSNotificationCenter looking through its tables of observer/notification pairs twice for the same pair.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107867</commentid>
    <comment_count>1</comment_count>
      <attachid>27225</attachid>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2009-01-31 16:47:31 -0800</bug_when>
    <thetext>Created attachment 27225
Patch to use removeObserver efficiently</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107868</commentid>
    <comment_count>2</comment_count>
      <attachid>27225</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-31 16:49:56 -0800</bug_when>
    <thetext>Comment on attachment 27225
Patch to use removeObserver efficiently

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107871</commentid>
    <comment_count>3</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2009-01-31 17:00:34 -0800</bug_when>
    <thetext>Committed revision 40468</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27225</attachid>
            <date>2009-01-31 16:47:31 -0800</date>
            <delta_ts>2009-01-31 16:49:56 -0800</delta_ts>
            <desc>Patch to use removeObserver efficiently</desc>
            <filename>WebHTMLVIew_removeObserver_patch.txt</filename>
            <type>text/plain</type>
            <size>12819</size>
            <attacher name="John Sullivan">sullivan</attacher>
            
              <data encoding="base64">SW5kZXg6IG1hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gNDA0NjUpCisrKyBtYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMDktMDEtMzEgIEpvaG4gU3VsbGl2YW4gIDxzdWxsaXZhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY1CisKKyAg
ICAgICAgQ2xlYW5lZCB1cCBjb2RlIHRvIGFkZC9yZW1vdmUgTlNOb3RpZmljYXRpb24gb2JzZXJ2
ZXJzLCB0byBhdm9pZCBwZXJmb3JtYW5jZSBoaXQKKyAgICAgICAgb2YgY2FsbGluZyByZW1vdmVP
YnNlcnZlciB3aXRoIHVuc3BlY2lmaWVkIG5vdGlmaWNhdGlvbnMsIG9yIGNhbGxpbmcgcmVtb3Zl
T2JzZXJ2ZXIKKyAgICAgICAgbXVsdGlwbGUgdGltZXMgZm9yIHRoZSBzYW1lIG5vdGlmaWNhdGlv
bi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIGFkZGVkIG9ic2VydmluZ01vdXNlTW92ZWRO
b3RpZmljYXRpb25zLCBvYnNlcnZpbmdTdXBlcnZpZXdOb3RpZmljYXRpb25zLCBhbmQgCisgICAg
ICAgIG9ic2VydmluZ1dpbmRvd05vdGlmaWNhdGlvbnMgYXMgQk9PTCBpdmFycyBvZiBfcHJpdmF0
ZSBvYmplY3QKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3JlbW92ZU1vdXNlTW92ZWRPYnNlcnZl
clVuY29uZGl0aW9uYWxseV0pOgorICAgICAgICBtb3ZlZCB0byBmaWxlLWludGVybmFsIHNlY3Rp
b24gb2YgZmlsZSwgYWRkZWQgbGVhZGluZyB1bmRlcnNjb3JlLCBub3cgYmFpbHMgb3V0CisgICAg
ICAgIGlmIHdlIGFyZW4ndCBvYnNlcnZpbmcgdGhlIHJlbGV2YW50IG5vdGlmaWNhdGlvbnMsIG5v
dyByZWNvcmRzIHRoYXQgd2UgYXJlIG5vIGxvbmdlcgorICAgICAgICBvYnNlcnZpbmcgdGhlIHJl
bGV2YW50IG5vdGlmaWNhdGlvbnMKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3JlbW92ZVN1cGVy
dmlld09ic2VydmVyc10pOgorICAgICAgICBkaXR0bywgYWxzbyBzdG9yZXMgW05TTm90aWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSBpbiBsb2NhbCB2YXIgdG8gYXZvaWQgb2JqYyBkaXNwYXRj
aAorICAgICAgICAoLVtXZWJIVE1MVmlldyBfcmVtb3ZlV2luZG93T2JzZXJ2ZXJzXSk6CisgICAg
ICAgIGRpdHRvCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGNsb3NlXSk6CisgICAgICAgIHJlcGxh
Y2UgZ2VuZXJhbCByZW1vdmVPYnNlcnZlcjogY2FsbCB3aXRoIHRocmVlIHNwZWNpZmljIGNhbGxz
IGZvciBhbGwgdGhlIG5vdGlmaWNhdGlvbnMKKyAgICAgICAgdGhhdCB0aGlzIGNsYXNzIGFjdHVh
bGx5IG9ic2VydmVzCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGFkZE1vdXNlTW92ZWRPYnNlcnZl
cl0pOgorICAgICAgICBiYWlsIG91dCBpZiBhbHJlYWR5IG9ic2VydmluZyByZWxldmFudCBub3Rp
ZmljYXRpb25zLCBub3cgcmVjb3JkcyB0aGF0IHdlIGFyZSBvYnNlcnZpbmcKKyAgICAgICAgdGhl
IHJlbGV2YW50IG5vdGlmaWNhdGlvbnMKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgcmVtb3ZlTW91
c2VNb3ZlZE9ic2VydmVyXSk6CisgICAgICAgIHVwZGF0ZWQgZm9yIG5hbWUgY2hhbmdlCisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IGFkZFN1cGVydmlld09ic2VydmVyc10pOgorICAgICAgICBiYWls
IG91dCBpZiBhbHJlYWR5IG9ic2VydmluZyByZWxldmFudCBub3RpZmljYXRpb25zLCBub3cgcmVj
b3JkcyB0aGF0IHdlIGFyZSBvYnNlcnZpbmcKKyAgICAgICAgdGhlIHJlbGV2YW50IG5vdGlmaWNh
dGlvbnM7IGFsc28gc3RvcmVzIFtOU05vdGljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gaW4g
bG9jYWwgdmFyIAorICAgICAgICB0byBhdm9pZCBvYmpjIGRpc3BhdGNoCisgICAgICAgICgtW1dl
YkhUTUxWaWV3IGFkZFdpbmRvd09ic2VydmVyc10pOgorICAgICAgICBkaXR0bworICAgICAgICAo
LVtXZWJIVE1MVmlldyB2aWV3V2lsbE1vdmVUb1N1cGVydmlldzpdKToKKyAgICAgICAgdXBkYXRl
ZCBmb3IgbmFtZSBjaGFuZ2UKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgdmlld1dpbGxNb3ZlVG9X
aW5kb3c6XSk6CisgICAgICAgIHVwZGF0ZWQgZm9yIG5hbWUgY2hhbmdlcworCiAyMDA5LTAxLTMx
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBN
YXJrIFJvd2UuCkluZGV4OiBtYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBtYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gNDA0NTApCisrKyBtYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjg5LDYgKzI4OSw5IEBACiAt
IChOU1N0cmluZyAqKV9wbGFpblRleHRGcm9tUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFz
dGVib2FyZDsKIC0gKHZvaWQpX3Bhc3RlV2l0aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBh
c3RlYm9hcmQgYWxsb3dQbGFpblRleHQ6KEJPT0wpYWxsb3dQbGFpblRleHQ7CiAtICh2b2lkKV9w
YXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQ7
CistICh2b2lkKV9yZW1vdmVNb3VzZU1vdmVkT2JzZXJ2ZXJVbmNvbmRpdGlvbmFsbHk7CistICh2
b2lkKV9yZW1vdmVTdXBlcnZpZXdPYnNlcnZlcnM7CistICh2b2lkKV9yZW1vdmVXaW5kb3dPYnNl
cnZlcnM7CiAtIChCT09MKV9zaG91bGRJbnNlcnRGcmFnbWVudDooRE9NRG9jdW1lbnRGcmFnbWVu
dCAqKWZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOihET01SYW5nZSAqKXJhbmdlIGdpdmVuQWN0
aW9uOihXZWJWaWV3SW5zZXJ0QWN0aW9uKWFjdGlvbjsKIC0gKEJPT0wpX3Nob3VsZEluc2VydFRl
eHQ6KE5TU3RyaW5nICopdGV4dCByZXBsYWNpbmdET01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZSBn
aXZlbkFjdGlvbjooV2ViVmlld0luc2VydEFjdGlvbilhY3Rpb247CiAtIChCT09MKV9zaG91bGRS
ZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dCBnaXZlbkFjdGlvbjooV2Vi
Vmlld0luc2VydEFjdGlvbilhY3Rpb247CkBAIC0zNzIsNiArMzc1LDkgQEAKICAgICBCT09MIGln
bm9yaW5nTW91c2VEcmFnZ2VkRXZlbnRzOwogICAgIEJPT0wgcHJpbnRpbmc7CiAgICAgQk9PTCBh
dm9pZGluZ1ByaW50T3JwaGFuOworICAgIEJPT0wgb2JzZXJ2aW5nTW91c2VNb3ZlZE5vdGlmaWNh
dGlvbnM7CisgICAgQk9PTCBvYnNlcnZpbmdTdXBlcnZpZXdOb3RpZmljYXRpb25zOworICAgIEJP
T0wgb2JzZXJ2aW5nV2luZG93Tm90aWZpY2F0aW9uczsKICAgICAKICAgICBpZCBzYXZlZFN1YnZp
ZXdzOwogICAgIEJPT0wgc3Vidmlld3NTZXRBc2lkZTsKQEAgLTc1NSw2ICs3NjEsNDkgQEAKICAg
ICAgICAgW1tzZWxmIF9mcmFtZV0gX3JlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dDp0ZXh0IHNlbGVj
dFJlcGxhY2VtZW50Ok5PIHNtYXJ0UmVwbGFjZTpbc2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBh
c3RlYm9hcmQ6cGFzdGVib2FyZF1dOwogfQogCistICh2b2lkKV9yZW1vdmVNb3VzZU1vdmVkT2Jz
ZXJ2ZXJVbmNvbmRpdGlvbmFsbHkKK3sKKyAgICBpZiAoIV9wcml2YXRlLT5vYnNlcnZpbmdNb3Vz
ZU1vdmVkTm90aWZpY2F0aW9ucykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOldL
TW91c2VNb3ZlZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOworICAgIF9wcml2YXRlLT5vYnNl
cnZpbmdNb3VzZU1vdmVkTm90aWZpY2F0aW9ucyA9IGZhbHNlOworfQorCistICh2b2lkKV9yZW1v
dmVTdXBlcnZpZXdPYnNlcnZlcnMKK3sKKyAgICBpZiAoIV9wcml2YXRlLT5vYnNlcnZpbmdTdXBl
cnZpZXdOb3RpZmljYXRpb25zKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgTlNWaWV3ICpz
dXBlcnZpZXcgPSBbc2VsZiBzdXBlcnZpZXddOworICAgIGlmICghc3VwZXJ2aWV3IHx8ICFbc2Vs
ZiB3aW5kb3ddKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgTlNOb3RpZmljYXRpb25DZW50
ZXIgKm5vdGlmaWNhdGlvbkNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXTsKKyAgICBbbm90aWZpY2F0aW9uQ2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpO
U1ZpZXdGcmFtZURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6c3VwZXJ2aWV3XTsKKyAgICBb
bm90aWZpY2F0aW9uQ2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpOU1ZpZXdCb3VuZHNE
aWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0OnN1cGVydmlld107CisgICAgCisgICAgX3ByaXZh
dGUtPm9ic2VydmluZ1N1cGVydmlld05vdGlmaWNhdGlvbnMgPSBmYWxzZTsKK30KKworLSAodm9p
ZClfcmVtb3ZlV2luZG93T2JzZXJ2ZXJzCit7CisgICAgaWYgKCFfcHJpdmF0ZS0+b2JzZXJ2aW5n
V2luZG93Tm90aWZpY2F0aW9ucykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIE5TV2luZG93
ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOworICAgIGlmICghd2luZG93KQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKm5vdGlmaWNhdGlvbkNlbnRlciA9
IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKKyAgICBbbm90aWZpY2F0aW9u
Q2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpOU1dpbmRvd0RpZEJlY29tZUtleU5vdGlm
aWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICBbbm90aWZpY2F0aW9uQ2VudGVyIHJlbW92ZU9ic2Vy
dmVyOnNlbGYgbmFtZTpOU1dpbmRvd0RpZFJlc2lnbktleU5vdGlmaWNhdGlvbiBvYmplY3Q6bmls
XTsKKyAgICBbbm90aWZpY2F0aW9uQ2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpOU1dp
bmRvd1dpbGxDbG9zZU5vdGlmaWNhdGlvbiBvYmplY3Q6d2luZG93XTsKKyAgICBbbm90aWZpY2F0
aW9uQ2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpXS1dpbmRvd1dpbGxPcmRlck9uU2Ny
ZWVuTm90aWZpY2F0aW9uKCkgb2JqZWN0OndpbmRvd107CisgICAgCisgICAgX3ByaXZhdGUtPm9i
c2VydmluZ1dpbmRvd05vdGlmaWNhdGlvbnMgPSBmYWxzZTsKK30KKwogLSAoQk9PTClfc2hvdWxk
SW5zZXJ0RnJhZ21lbnQ6KERPTURvY3VtZW50RnJhZ21lbnQgKilmcmFnbWVudCByZXBsYWNpbmdE
T01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZSBnaXZlbkFjdGlvbjooV2ViVmlld0luc2VydEFjdGlv
bilhY3Rpb24KIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3NlbGYgX3dlYlZpZXddOwpAQCAt
MTg0Myw4ICsxODkyLDkgQEAKICAgICBbc2VsZiBfY2FuY2VsVXBkYXRlTW91c2VvdmVyVGltZXJd
OwogICAgIFtzZWxmIF9jYW5jZWxVcGRhdGVGb2N1c2VkQW5kQWN0aXZlU3RhdGVUaW1lcl07CiAg
ICAgW3NlbGYgX2NsZWFyTGFzdEhpdFZpZXdJZlNlbGZdOwotICAgIC8vIEZJWE1FOiBUaGlzIGlz
IHNsb3c7IHNob3VsZCByZW1vdmUgaW5kaXZpZHVhbCBvYnNlcnZlcnMgaW5zdGVhZC4KLSAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZd
OworICAgIFtzZWxmIF9yZW1vdmVNb3VzZU1vdmVkT2JzZXJ2ZXJVbmNvbmRpdGlvbmFsbHldOwor
ICAgIFtzZWxmIF9yZW1vdmVXaW5kb3dPYnNlcnZlcnNdOworICAgIFtzZWxmIF9yZW1vdmVTdXBl
cnZpZXdPYnNlcnZlcnNdOwogICAgIFtfcHJpdmF0ZS0+cGx1Z2luQ29udHJvbGxlciBkZXN0cm95
QWxsUGx1Z2luc107CiAgICAgW19wcml2YXRlLT5wbHVnaW5Db250cm9sbGVyIHNldERhdGFTb3Vy
Y2U6bmlsXTsKICAgICAvLyByZW1vdmUgdG9vbHRpcHMgYmVmb3JlIGNsZWFyaW5nIF9wcml2YXRl
IHNvIHJlbW92ZVRyYWNraW5nUmVjdDogd2lsbCB3b3JrIGNvcnJlY3RseQpAQCAtMjU2Niw3ICsy
NjE2LDcgQEAKIAogLSAodm9pZClhZGRNb3VzZU1vdmVkT2JzZXJ2ZXIKIHsKLSAgICBpZiAoIV9w
cml2YXRlLT5kYXRhU291cmNlIHx8ICFbc2VsZiBfaXNUb3BIVE1MVmlld10pCisgICAgaWYgKCFf
cHJpdmF0ZS0+ZGF0YVNvdXJjZSB8fCAhW3NlbGYgX2lzVG9wSFRNTFZpZXddIHx8IF9wcml2YXRl
LT5vYnNlcnZpbmdNb3VzZU1vdmVkTm90aWZpY2F0aW9ucykKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gVW5sZXNzIHRoZSBEYXNoYm9hcmQgYXNrcyB1cyB0byBkbyB0aGlzIGZvciBhbGwgd2lu
ZG93cywga2VlcCBhbiBvYnNlcnZlciBnb2luZyBvbmx5IGZvciB0aGUga2V5IHdpbmRvdy4KQEAg
LTI1ODAsMTQgKzI2MzAsOSBAQAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IobW91c2VNb3ZlZE5vdGlm
aWNhdGlvbjopCiAgICAgICAgIG5hbWU6V0tNb3VzZU1vdmVkTm90aWZpY2F0aW9uKCkgb2JqZWN0
Om5pbF07CiAgICAgW3NlbGYgX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkXTsKKyAgICBfcHJpdmF0ZS0+
b2JzZXJ2aW5nTW91c2VNb3ZlZE5vdGlmaWNhdGlvbnMgPSB0cnVlOwogfQogCi0tICh2b2lkKXJl
bW92ZU1vdXNlTW92ZWRPYnNlcnZlclVuY29uZGl0aW9uYWxseQotewotICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZgotICAgICAgICBu
YW1lOldLTW91c2VNb3ZlZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotfQotCiAtICh2b2lk
KXJlbW92ZU1vdXNlTW92ZWRPYnNlcnZlcgogewogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkKQEAgLTI1OTcsNyArMjY0Miw3IEBACiAjZW5kaWYKIAogICAgIFtbc2VsZiBfd2ViVmlld10g
X21vdXNlRGlkTW92ZU92ZXJFbGVtZW50Om5pbCBtb2RpZmllckZsYWdzOjBdOwotICAgIFtzZWxm
IHJlbW92ZU1vdXNlTW92ZWRPYnNlcnZlclVuY29uZGl0aW9uYWxseV07CisgICAgW3NlbGYgX3Jl
bW92ZU1vdXNlTW92ZWRPYnNlcnZlclVuY29uZGl0aW9uYWxseV07CiB9CiAKIC0gKHZvaWQpYWRk
U3VwZXJ2aWV3T2JzZXJ2ZXJzCkBAIC0yNjEwLDY2ICsyNjU1LDQ4IEBACiAgICAgLy8gdG8gZXh0
ZW5kIHRoZSBiYWNrZ3JvdW5kIHRoZSBmdWxsIGhlaWdodCBvZiB0aGUgc3BhY2UgYW5kIGJlY2F1
c2Ugc29tZSBlbGVtZW50cyBoYXZlCiAgICAgLy8gc2l6ZXMgdGhhdCBhcmUgYmFzZWQgb24gdGhl
IHRvdGFsIHNpemUgb2YgdGhlIHZpZXcuCiAgICAgCi0gICAgTlNWaWV3ICpzdXBlcnZpZXcgPSBb
c2VsZiBzdXBlcnZpZXddOwotICAgIGlmIChzdXBlcnZpZXcgJiYgW3NlbGYgd2luZG93XSkgewot
ICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVy
OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9mcmFtZU9yQm91bmRzQ2hhbmdlZCkgCi0gICAgICAg
ICAgICBuYW1lOk5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDpzdXBlcnZp
ZXddOwotICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9i
c2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9mcmFtZU9yQm91bmRzQ2hhbmdlZCkgCi0g
ICAgICAgICAgICBuYW1lOk5TVmlld0JvdW5kc0RpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6
c3VwZXJ2aWV3XTsKKyAgICBpZiAoX3ByaXZhdGUtPm9ic2VydmluZ1N1cGVydmlld05vdGlmaWNh
dGlvbnMpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICAvLyBJbiBhZGRpdGlvbiB0byByZWdp
c3RlcmluZyBmb3IgZnJhbWUvYm91bmRzIGNoYW5nZSBub3RpZmljYXRpb25zLCBjYWxsIC1fZnJh
bWVPckJvdW5kc0NoYW5nZWQuCi0gICAgICAgIC8vIEl0IHdpbGwgY2hlY2sgdGhlIGN1cnJlbnQg
c2l6ZS9zY3JvbGwgYWdhaW5zdCB0aGUgcHJldmlvdXMgbGF5b3V0J3Mgc2l6ZS9zY3JvbGwuICBX
ZSBuZWVkIHRvCi0gICAgICAgIC8vIGRvIHRoaXMgaGVyZSB0byBjYXRjaCB0aGUgY2FzZSB3aGVy
ZSB0aGUgV2ViVmlldyBpcyBsYWlkIG91dCBhdCBvbmUgc2l6ZSwgcmVtb3ZlZCBmcm9tIGl0cwot
ICAgICAgICAvLyB3aW5kb3csIHJlc2l6ZWQsIGFuZCBpbnNlcnRlZCBpbnRvIGFub3RoZXIgd2lu
ZG93LiAgT3VyIGZyYW1lL2JvdW5kcyBjaGFuZ2VkIG5vdGlmaWNhdGlvbnMKLSAgICAgICAgLy8g
d2lsbCBub3QgYmUgc2VudCBpbiB0aGF0IHNpdHVhdGlvbiwgc2luY2Ugd2Ugb25seSB3YXRjaCBm
b3IgY2hhbmdlcyB3aGlsZSBpbiB0aGUgdmlldyBoaWVyYXJjaHkuCi0gICAgICAgIFtzZWxmIF9m
cmFtZU9yQm91bmRzQ2hhbmdlZF07Ci0gICAgfQotfQotCi0tICh2b2lkKXJlbW92ZVN1cGVydmll
d09ic2VydmVycwotewogICAgIE5TVmlldyAqc3VwZXJ2aWV3ID0gW3NlbGYgc3VwZXJ2aWV3XTsK
LSAgICBpZiAoc3VwZXJ2aWV3ICYmIFtzZWxmIHdpbmRvd10pIHsKLSAgICAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmCi0gICAgICAg
ICAgICBuYW1lOk5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDpzdXBlcnZp
ZXddOwotICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92
ZU9ic2VydmVyOnNlbGYKLSAgICAgICAgICAgIG5hbWU6TlNWaWV3Qm91bmRzRGlkQ2hhbmdlTm90
aWZpY2F0aW9uIG9iamVjdDpzdXBlcnZpZXddOwotICAgIH0KKyAgICBpZiAoIXN1cGVydmlldyB8
fCAhW3NlbGYgd2luZG93XSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIE5TTm90aWZpY2F0
aW9uQ2VudGVyICpub3RpZmljYXRpb25DZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl07CisgICAgW25vdGlmaWNhdGlvbkNlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihfZnJhbWVPckJvdW5kc0NoYW5nZWQpIG5hbWU6TlNWaWV3RnJhbWVE
aWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0OnN1cGVydmlld107CisgICAgW25vdGlmaWNhdGlv
bkNlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfZnJhbWVPckJvdW5k
c0NoYW5nZWQpIG5hbWU6TlNWaWV3Qm91bmRzRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDpz
dXBlcnZpZXddOworICAgIAorICAgIC8vIEluIGFkZGl0aW9uIHRvIHJlZ2lzdGVyaW5nIGZvciBm
cmFtZS9ib3VuZHMgY2hhbmdlIG5vdGlmaWNhdGlvbnMsIGNhbGwgLV9mcmFtZU9yQm91bmRzQ2hh
bmdlZC4KKyAgICAvLyBJdCB3aWxsIGNoZWNrIHRoZSBjdXJyZW50IHNpemUvc2Nyb2xsIGFnYWlu
c3QgdGhlIHByZXZpb3VzIGxheW91dCdzIHNpemUvc2Nyb2xsLiAgV2UgbmVlZCB0bworICAgIC8v
IGRvIHRoaXMgaGVyZSB0byBjYXRjaCB0aGUgY2FzZSB3aGVyZSB0aGUgV2ViVmlldyBpcyBsYWlk
IG91dCBhdCBvbmUgc2l6ZSwgcmVtb3ZlZCBmcm9tIGl0cworICAgIC8vIHdpbmRvdywgcmVzaXpl
ZCwgYW5kIGluc2VydGVkIGludG8gYW5vdGhlciB3aW5kb3cuICBPdXIgZnJhbWUvYm91bmRzIGNo
YW5nZWQgbm90aWZpY2F0aW9ucworICAgIC8vIHdpbGwgbm90IGJlIHNlbnQgaW4gdGhhdCBzaXR1
YXRpb24sIHNpbmNlIHdlIG9ubHkgd2F0Y2ggZm9yIGNoYW5nZXMgd2hpbGUgaW4gdGhlIHZpZXcg
aGllcmFyY2h5LgorICAgIFtzZWxmIF9mcmFtZU9yQm91bmRzQ2hhbmdlZF07CisgICAgCisgICAg
X3ByaXZhdGUtPm9ic2VydmluZ1N1cGVydmlld05vdGlmaWNhdGlvbnMgPSB0cnVlOwogfQogCiAt
ICh2b2lkKWFkZFdpbmRvd09ic2VydmVycwogeworICAgIGlmIChfcHJpdmF0ZS0+b2JzZXJ2aW5n
V2luZG93Tm90aWZpY2F0aW9ucykKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIE5TV2luZG93
ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOwotICAgIGlmICh3aW5kb3cpIHsKLSAgICAgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVj
dG9yOkBzZWxlY3Rvcih3aW5kb3dEaWRCZWNvbWVLZXk6KQotICAgICAgICAgICAgbmFtZTpOU1dp
bmRvd0RpZEJlY29tZUtleU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICAgICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9y
OkBzZWxlY3Rvcih3aW5kb3dEaWRSZXNpZ25LZXk6KQotICAgICAgICAgICAgbmFtZTpOU1dpbmRv
d0RpZFJlc2lnbktleU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBz
ZWxlY3Rvcih3aW5kb3dXaWxsQ2xvc2U6KQotICAgICAgICAgICAgbmFtZTpOU1dpbmRvd1dpbGxD
bG9zZU5vdGlmaWNhdGlvbiBvYmplY3Q6d2luZG93XTsKLSAgICAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rv
cih3aW5kb3dXaWxsT3JkZXJPblNjcmVlbjopCi0gICAgICAgICAgICBuYW1lOldLV2luZG93V2ls
bE9yZGVyT25TY3JlZW5Ob3RpZmljYXRpb24oKSBvYmplY3Q6d2luZG93XTsKLSAgICB9CisgICAg
aWYgKCF3aW5kb3cpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBOU05vdGlmaWNhdGlvbkNl
bnRlciAqbm90aWZpY2F0aW9uQ2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdOworICAgIFtub3RpZmljYXRpb25DZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3Iod2luZG93RGlkQmVjb21lS2V5OikgbmFtZTpOU1dpbmRvd0RpZEJlY29tZUtl
eU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICBbbm90aWZpY2F0aW9uQ2VudGVyIGFkZE9i
c2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHdpbmRvd0RpZFJlc2lnbktleTopIG5hbWU6
TlNXaW5kb3dEaWRSZXNpZ25LZXlOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW25vdGlm
aWNhdGlvbkNlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih3aW5kb3dX
aWxsQ2xvc2U6KSBuYW1lOk5TV2luZG93V2lsbENsb3NlTm90aWZpY2F0aW9uIG9iamVjdDp3aW5k
b3ddOworICAgIFtub3RpZmljYXRpb25DZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3Iod2luZG93V2lsbE9yZGVyT25TY3JlZW46KSBuYW1lOldLV2luZG93V2lsbE9yZGVy
T25TY3JlZW5Ob3RpZmljYXRpb24oKSBvYmplY3Q6d2luZG93XTsKKyAgICAKKyAgICBfcHJpdmF0
ZS0+b2JzZXJ2aW5nV2luZG93Tm90aWZpY2F0aW9ucyA9IHRydWU7CiB9CiAKLS0gKHZvaWQpcmVt
b3ZlV2luZG93T2JzZXJ2ZXJzCi17Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRv
d107Ci0gICAgaWYgKHdpbmRvdykgewotICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYKLSAgICAgICAgICAgIG5hbWU6TlNXaW5k
b3dEaWRCZWNvbWVLZXlOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0gICAgICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZgotICAgICAg
ICAgICAgbmFtZTpOU1dpbmRvd0RpZFJlc2lnbktleU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsK
LSAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNl
cnZlcjpzZWxmCi0gICAgICAgICAgICBuYW1lOk5TV2luZG93V2lsbENsb3NlTm90aWZpY2F0aW9u
IG9iamVjdDp3aW5kb3ddOwotICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYKLSAgICAgICAgICAgIG5hbWU6V0tXaW5kb3dXaWxs
T3JkZXJPblNjcmVlbk5vdGlmaWNhdGlvbigpIG9iamVjdDp3aW5kb3ddOwotICAgIH0KLX0KLQog
LSAodm9pZCl2aWV3V2lsbE1vdmVUb1N1cGVydmlldzooTlNWaWV3ICopbmV3U3VwZXJ2aWV3CiB7
Ci0gICAgW3NlbGYgcmVtb3ZlU3VwZXJ2aWV3T2JzZXJ2ZXJzXTsKKyAgICBbc2VsZiBfcmVtb3Zl
U3VwZXJ2aWV3T2JzZXJ2ZXJzXTsKIH0KIAogLSAodm9pZCl2aWV3RGlkTW92ZVRvU3VwZXJ2aWV3
CkBAIC0yNjk0LDkgKzI3MjEsOSBAQAogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTog
U29tZSBvZiB0aGVzZSBjYWxscyBtYXkgbm90IHdvcmsgYmVjYXVzZSB0aGlzIHZpZXcgbWF5IGJl
IGFscmVhZHkgcmVtb3ZlZCBmcm9tIGl0J3Mgc3VwZXJ2aWV3LgotICAgIFtzZWxmIHJlbW92ZU1v
dXNlTW92ZWRPYnNlcnZlclVuY29uZGl0aW9uYWxseV07Ci0gICAgW3NlbGYgcmVtb3ZlV2luZG93
T2JzZXJ2ZXJzXTsKLSAgICBbc2VsZiByZW1vdmVTdXBlcnZpZXdPYnNlcnZlcnNdOworICAgIFtz
ZWxmIF9yZW1vdmVNb3VzZU1vdmVkT2JzZXJ2ZXJVbmNvbmRpdGlvbmFsbHldOworICAgIFtzZWxm
IF9yZW1vdmVXaW5kb3dPYnNlcnZlcnNdOworICAgIFtzZWxmIF9yZW1vdmVTdXBlcnZpZXdPYnNl
cnZlcnNdOwogICAgIFtzZWxmIF9jYW5jZWxVcGRhdGVNb3VzZW92ZXJUaW1lcl07CiAgICAgW3Nl
bGYgX2NhbmNlbFVwZGF0ZUZvY3VzZWRBbmRBY3RpdmVTdGF0ZVRpbWVyXTsKICAgICAK
</data>
<flag name="review"
          id="13109"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>