<?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>65306</bug_id>
          
          <creation_ts>2011-07-28 00:34:05 -0700</creation_ts>
          <short_desc>WebKitInitializeStorageIfNecessary() can take awhile performing i/o, isn&apos;t necessary for every WebView</short_desc>
          <delta_ts>2011-07-28 11:29: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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>65308</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>443381</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-07-28 00:34:05 -0700</bug_when>
    <thetext>WebKitInitializeStorageIfNecessary() can take awhile performing i/o, isn&apos;t necessary for every WebView

Right now we blindly call WebKitInitializeStorageIfNecessary the moment the first WebView is created.  Since it can do some (sync) i/o, this can be a waste of time if storage tracking will never be needed (APIs aren&apos;t called, or LocalStorage is never used).

There&apos;s room to make it better by making it asynchronously initialize on a background thread, but in the meantime let&apos;s defer it until it&apos;s actually needed.

In radar as &lt;rdar://problem/9714337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443385</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-07-28 00:38:47 -0700</bug_when>
    <thetext>By moving the &quot;one time initialization&quot; code into StorageTracker::tracker(), this ensures that the initialization will take place:
1 - Before anyone in WebCore needs to use the shared StorageTracker object
2 - Before any API in WebKit/WebKit2 needs to use the shared StorageTracker object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443394</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-07-28 00:46:38 -0700</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=65308 since I noticed that StorageTracker::setClient() and the associated client guard mutex are pretty much irrelevant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443396</commentid>
    <comment_count>3</comment_count>
      <attachid>102240</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-07-28 00:59:17 -0700</bug_when>
    <thetext>Created attachment 102240
Patch v1 - Move the hefty work from StorageTracker::initializeTracker() until the first time the global tracker is actually accessed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443406</commentid>
    <comment_count>4</comment_count>
      <attachid>102240</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-07-28 01:44:06 -0700</bug_when>
    <thetext>Comment on attachment 102240
Patch v1 - Move the hefty work from StorageTracker::initializeTracker() until the first time the global tracker is actually accessed.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443506</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-07-28 08:33:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/91931</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443568</commentid>
    <comment_count>6</comment_count>
      <attachid>102240</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-07-28 11:21:08 -0700</bug_when>
    <thetext>Comment on attachment 102240
Patch v1 - Move the hefty work from StorageTracker::initializeTracker() until the first time the global tracker is actually accessed.

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

&gt; Source/WebCore/storage/StorageTracker.h:115
&gt; +    bool m_isInitialized;

What value does this boolean add, or is there more planned for it in the future?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443576</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-07-28 11:29:36 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 102240 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102240&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/storage/StorageTracker.h:115
&gt; &gt; +    bool m_isInitialized;
&gt; 
&gt; What value does this boolean add, or is there more planned for it in the future?

Initialization has to be separate from construction - that&apos;s the purpose of the patch.

There is one case where we construct a &quot;dummy&quot; tracker and immediately initialize it, but in the StorageTracker::initializeTracker(const String&amp;, StorageTrackerClient*) case, we construct with the intent to initialize later.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102240</attachid>
            <date>2011-07-28 00:59:17 -0700</date>
            <delta_ts>2011-07-28 11:21:07 -0700</delta_ts>
            <desc>Patch v1 - Move the hefty work from StorageTracker::initializeTracker() until the first time the global tracker is actually accessed.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>9518</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxOTEzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDctMjggIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85NzE0
MzM3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MzA2Cisg
ICAgICAgIFdlYktpdEluaXRpYWxpemVTdG9yYWdlSWZOZWNlc3NhcnkoKSBjYW4gdGFrZSBhd2hp
bGUgcGVyZm9ybWluZyBpL28sIGlzbid0IG5lY2Vzc2FyeSBmb3IgZXZlcnkgV2ViVmlldworCisg
ICAgICAgIE1vdmUgdGhlIGhlYXZ5IGxpZnRpbmcgZG9uZSBpbiBTdG9yYWdlVHJhY2tlcjo6aW5p
dGlhbGl6ZVRyYWNrZXIoKSB1bnRpbCB3aGVuIHRoZSBnbG9iYWwgdHJhY2tlciBpcyBhY3R1YWxs
eQorICAgICAgICBhY2Nlc3NlZCwgdGhlcmVmb3JlIGRlZmVycmluZyBpdCB1bnRpbCBhIHdlYiBw
YWdlIGFjdHVhbGx5IHVzZXMgTG9jYWxTdG9yYWdlIG9yIHRoZSBhcHAgdXNlcyB0aGUgQVBJLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gKE5vdCBwb3NzaWJsZSB0byB0ZXN0IHRoaXMgQVBJIGltcGxlbWVudGF0aW9uIGRldGFp
bCkKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorCisgICAgICAgICogc3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFJbXBsOjpTdG9y
YWdlQXJlYUltcGwpOiBBY2Nlc3MgdGhlIGdsb2JhbCBTdG9yYWdlVHJhY2tlciB0byBpbmRpY2F0
ZSB0aGF0IGEgd2ViIHBhZ2UKKyAgICAgICAgICBpcyBhY3R1YWxseSB1c2luZyB0aGUgc3RvcmFn
ZSBBUElzLgorCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIpOiBNb3ZlZCB0aGUg
cG90ZW50aWFsbHkgaGVmdHkgd29yayBmcm9tIGhlcmUuLi4KKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2VUcmFja2VyOjppbnRlcm5hbEluaXRpYWxpemUpOiAuLi50byBoZXJlLgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIpOiBJZiB0aGUgZ2xvYmFsIHRyYWNrZXIg
aGFzbid0IGhhZCBpbnRlcm5hbEluaXRpYWxpemUoKSBjYWxsZWQsIGRvIHNvLgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKToKKyAgICAgICAgKiBzdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmg6CisKIDIwMTEtMDctMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlv
dW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBBZGQgZHVtbXkgTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24g
OTE5MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpA
QCAtMTQzNiw3ICsxNDM2LDcgQEAgX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjlzZXRDbGll
bnRFUAogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjEyZGVsZXRlT3JpZ2luRVBOU18xNFNl
Y3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE2ZGVsZXRlQWxsT3Jp
Z2luc0V2CiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTZzeW5jTG9jYWxTdG9yYWdlRXYK
LV9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIxN2luaXRpYWxpemVUcmFja2VyRVJLTjNXVEY2
U3RyaW5nRQorX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE3aW5pdGlhbGl6ZVRyYWNrZXJF
UktOM1dURjZTdHJpbmdFUE5TXzIwU3RvcmFnZVRyYWNrZXJDbGllbnRFCiBfX1pON1dlYkNvcmUx
NFN0b3JhZ2VUcmFja2VyMThkaXNrVXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5F
CiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMzJzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJE
YXRhYmFzZUV2CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5jcHAJKHJldmlzaW9uIDkxOTEzKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VNYXAuaCIK
ICNpbmNsdWRlICJTdG9yYWdlU3luY01hbmFnZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlVHJhY2tl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU3LDYgKzU4LDEwIEBAIGlubGluZSBT
dG9yYWdlQXJlYUltcGw6OlN0b3JhZ2VBcmVhSW1wbCgKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIEFTU0VSVChtX3NlY3VyaXR5T3JpZ2luKTsKICAgICBBU1NFUlQobV9zdG9yYWdl
TWFwKTsKKyAgICAKKyAgICAvLyBBY2Nlc3NpbmcgdGhlIHNoYXJlZCBnbG9iYWwgU3RvcmFnZVRy
YWNrZXIgd2hlbiBhIFN0b3JhZ2VBcmVhIGlzIGNyZWF0ZWQgCisgICAgLy8gZW5zdXJlcyB0aGF0
IHRoZSB0cmFja2VyIGlzIHByb3Blcmx5IGluaXRpYWxpemVkIGJlZm9yZSBhbnlvbmUgYWN0dWFs
bHkgbmVlZHMgdG8gdXNlIGl0LgorICAgIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCk7CiB9CiAK
IFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPiBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShTdG9y
YWdlVHlwZSBzdG9yYWdlVHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luLCBQ
YXNzUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4gc3luY01hbmFnZXIsIHVuc2lnbmVkIHF1b3Rh
KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAJKHJldmlz
aW9uIDkxOTEzKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgU3RvcmFnZVRyYWNrZXIqIHN0b3JhZ2VUcmFja2VyID0gMDsKIAotdm9pZCBTdG9yYWdl
VHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCkKK3Zv
aWQgU3RvcmFnZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGNvbnN0IFN0cmluZyYgc3RvcmFn
ZVBhdGgsIFN0b3JhZ2VUcmFja2VyQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBBU1NFUlQoIXN0b3JhZ2VUcmFja2VyKTsKQEAgLTU2LDYgKzU2LDEz
IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGMKICAgICBpZiAoIXN0
b3JhZ2VUcmFja2VyKQogICAgICAgICBzdG9yYWdlVHJhY2tlciA9IG5ldyBTdG9yYWdlVHJhY2tl
cihzdG9yYWdlUGF0aCk7CiAgICAgCisgICAgc3RvcmFnZVRyYWNrZXItPm1fY2xpZW50ID0gY2xp
ZW50OworfQorCit2b2lkIFN0b3JhZ2VUcmFja2VyOjppbnRlcm5hbEluaXRpYWxpemUoKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICAvLyBNYWtlIHN1cmUgdGV4dCBlbmNv
ZGluZyBtYXBzIGhhdmUgYmVlbiBidWlsdCBvbiB0aGUgbWFpbiB0aHJlYWQsIGFzIHRoZSBTdG9y
YWdlVHJhY2tlciB0aHJlYWQgbWlnaHQgdHJ5IHRvIGRvIGl0IHRoZXJlIGluc3RlYWQuCiAgICAg
Ly8gRklYTUUgKDxyZGFyOi8vcHJvYmxlbS85MTI3ODE5Pik6IElzIHRoZXJlIGEgbW9yZSBleHBs
aWNpdCB3YXkgb2YgZG9pbmcgdGhpcyBiZXNpZGVzIGFjY2Vzc2luZyB0aGUgVVRGOEVuY29kaW5n
PwogICAgIFVURjhFbmNvZGluZygpOwpAQCAtNjQsMzAgKzcxLDI3IEBAIHZvaWQgU3RvcmFnZVRy
YWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGMKICAgICBzdG9yYWdlVHJhY2tlci0+c2V0SXNBY3Rp
dmUodHJ1ZSk7CiAgICAgc3RvcmFnZVRyYWNrZXItPm1fdGhyZWFkLT5zdGFydCgpOyAgCiAgICAg
c3RvcmFnZVRyYWNrZXItPmltcG9ydE9yaWdpbklkZW50aWZpZXJzKCk7CisgICAgCisgICAgbV9p
c0luaXRpYWxpemVkID0gdHJ1ZTsKIH0KIAogU3RvcmFnZVRyYWNrZXImIFN0b3JhZ2VUcmFja2Vy
Ojp0cmFja2VyKCkKIHsKICAgICBpZiAoIXN0b3JhZ2VUcmFja2VyKQogICAgICAgICBzdG9yYWdl
VHJhY2tlciA9IG5ldyBTdG9yYWdlVHJhY2tlcigiIik7CisgICAgaWYgKCFzdG9yYWdlVHJhY2tl
ci0+bV9pc0luaXRpYWxpemVkKQorICAgICAgICBzdG9yYWdlVHJhY2tlci0+aW50ZXJuYWxJbml0
aWFsaXplKCk7CiAgICAgCiAgICAgcmV0dXJuICpzdG9yYWdlVHJhY2tlcjsKIH0KIAogU3RvcmFn
ZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgpCi0gICAg
OiBtX2NsaWVudCgwKQorICAgIDogbV9zdG9yYWdlRGlyZWN0b3J5UGF0aChzdG9yYWdlUGF0aC50
aHJlYWRzYWZlQ29weSgpKQorICAgICwgbV9jbGllbnQoMCkKICAgICAsIG1fdGhyZWFkKExvY2Fs
U3RvcmFnZVRocmVhZDo6Y3JlYXRlKCkpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQorICAgICwg
bV9pc0luaXRpYWxpemVkKGZhbHNlKQogewotICAgIHNldFN0b3JhZ2VEaXJlY3RvcnlQYXRoKHN0
b3JhZ2VQYXRoKTsKLX0KLQotdm9pZCBTdG9yYWdlVHJhY2tlcjo6c2V0U3RvcmFnZURpcmVjdG9y
eVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFz
ZShtX2RhdGFiYXNlR3VhcmQpOwotICAgIEFTU0VSVCghbV9kYXRhYmFzZS5pc09wZW4oKSk7Ci0g
ICAgCi0gICAgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aCA9IHBhdGgudGhyZWFkc2FmZUNvcHkoKTsK
IH0KIAogU3RyaW5nIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyRGF0YWJhc2VQYXRoKCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmgJKHJldmlzaW9uIDkxOTEzKQor
KysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NiwxMSArNDYsOSBAQCBjbGFzcyBTdG9yYWdlVHJhY2tlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU3RvcmFnZVRyYWNrZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUcmFja2VyKGNvbnN0IFN0cmlu
ZyYgc3RvcmFnZVBhdGgpOworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUcmFja2VyKGNvbnN0
IFN0cmluZyYgc3RvcmFnZVBhdGgsIFN0b3JhZ2VUcmFja2VyQ2xpZW50Kik7CiAgICAgc3RhdGlj
IFN0b3JhZ2VUcmFja2VyJiB0cmFja2VyKCk7Ci0gICAgc3RhdGljIHZvaWQgc2NoZWR1bGVUYXNr
KHZvaWQqKTsKIAotICAgIHZvaWQgaW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKTsKICAgICB2b2lk
IHNldE9yaWdpbkRldGFpbHMoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlRmlsZSk7CiAgICAgCiAgICAgdm9pZCBkZWxldGVBbGxPcmlnaW5zKCk7
CkBAIC03NiwxMiArNzQsMTUgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0b3JhZ2VUcmFj
a2VyKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgpOworICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxl
VGFzayh2b2lkKik7CisKKyAgICB2b2lkIGludGVybmFsSW5pdGlhbGl6ZSgpOwogCiAgICAgU3Ry
aW5nIHRyYWNrZXJEYXRhYmFzZVBhdGgoKTsKICAgICB2b2lkIG9wZW5UcmFja2VyRGF0YWJhc2Uo
Ym9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAKLSAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rv
cnlQYXRoKGNvbnN0IFN0cmluZyYpOwotCisgICAgdm9pZCBpbXBvcnRPcmlnaW5JZGVudGlmaWVy
cygpOworICAgIAogICAgIHZvaWQgZGVsZXRlVHJhY2tlckZpbGVzKCk7CiAgICAgU3RyaW5nIGRh
dGFiYXNlUGF0aEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpOwogCkBA
IC0xMTEsNiArMTEyLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8TG9jYWxTdG9yYWdlVGhyZWFk
PiBtX3RocmVhZDsKICAgICAKICAgICBib29sIG1faXNBY3RpdmU7CisgICAgYm9vbCBtX2lzSW5p
dGlhbGl6ZWQ7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwkocmV2aXNpb24gOTE5MTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNy0yOCAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk3MTQzMzc+IGFuZCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMDYKKyAgICAgICAgV2ViS2l0
SW5pdGlhbGl6ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgpIGNhbiB0YWtlIGF3aGlsZSBwZXJmb3JtaW5n
IGkvbywgaXNuJ3QgbmVjZXNzYXJ5IGZvciBldmVyeSBXZWJWaWV3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6
IFBhc3MgYSBudWxsIGNsaWVudCBwb2ludGVyIGluIHRoZSBuZXcgZm9ybSBvZiBpbml0aWFsaXpl
VHJhY2tlcigpCisKIDIwMTEtMDctMjcgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb3BlcmF0b3IgbmV3IGZyb20gSlNDZWxsCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDkxOTEz
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlBy
b2Nlc3MoY28KICNlbmRpZgogCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQotICAgIFN0b3JhZ2VU
cmFja2VyOjppbml0aWFsaXplVHJhY2tlcihwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9y
eSk7CisgICAgU3RvcmFnZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKHBhcmFtZXRlcnMubG9j
YWxTdG9yYWdlRGlyZWN0b3J5LCAwKTsKICAgICBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHBh
cmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogI2VuZGlmCiAgICAgCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA5MTkxMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTA3LTI4ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTcxNDMz
Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTMwNgorICAg
ICAgICBXZWJLaXRJbml0aWFsaXplU3RvcmFnZUlmTmVjZXNzYXJ5KCkgY2FuIHRha2UgYXdoaWxl
IHBlcmZvcm1pbmcgaS9vLCBpc24ndCBuZWNlc3NhcnkgZm9yIGV2ZXJ5IFdlYlZpZXcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvV2Vi
U3RvcmFnZU1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXRJbml0aWFsaXplU3RvcmFnZUlmTmVj
ZXNzYXJ5KTogUGFzcyB0aGUgY2xpZW50IGFsb25nIGluIGluaXRpYWxpemVUcmFja2VyKCkuCisK
IDIwMTEtMDctMjcgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgb3BlcmF0b3IgbmV3IGZyb20gSlNDZWxsCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0JKHJldmlzaW9uIDkxOTEz
KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTA2LDEwICsxMDYsOCBAQCB2b2lkIFdlYktpdEluaXRpYWxpemVTdG9y
YWdlSWZOZWNlc3NhcnkoCiAgICAgaWYgKGluaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgU3RvcmFnZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKHN0b3JhZ2VEaXJlY3Rv
cnlQYXRoKCkpOwotICAgIAotICAgIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50
KFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50OjpzaGFyZWRXZWJTdG9yYWdlVHJhY2tlckNsaWVudCgp
KTsKLSAgICAKKyAgICBTdG9yYWdlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoc3RvcmFnZURp
cmVjdG9yeVBhdGgoKSwgV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYlN0b3JhZ2VU
cmFja2VyQ2xpZW50KCkpOworICAgICAgICAKICAgICBpbml0aWFsaXplZCA9IFlFUzsKIH0KIAo=
</data>
<flag name="review"
          id="97430"
          type_id="1"
          status="+"
          setter="mjs"
    />
    <flag name="commit-queue"
          id="97431"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>