<?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>185239</bug_id>
          
          <creation_ts>2018-05-02 22:51:45 -0700</creation_ts>
          <short_desc>Widgets should hold a WeakPtr to their parents</short_desc>
          <delta_ts>2018-05-03 16:53:52 -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>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>rniwa</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1420024</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-02 22:51:45 -0700</bug_when>
    <thetext>We don&apos;t have a parent/child destruction notification mechanism for Widgets and their enclosing ScrollViews. We should allow the Widget to hold a WeakPtr to the parent ScrollView so we can gracefully handle cases where the ScrollView has been removed from the current document by the Widget is still pending a final move operation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420025</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-02 22:53:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/39741250&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420028</commentid>
    <comment_count>2</comment_count>
      <attachid>339390</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-02 23:26:27 -0700</bug_when>
    <thetext>Created attachment 339390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420105</commentid>
    <comment_count>3</comment_count>
      <attachid>339390</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-05-03 06:45:03 -0700</bug_when>
    <thetext>Comment on attachment 339390
Patch

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

&gt; Source/WebCore/platform/Widget.cpp:37
&gt; +    m_parent = nullptr;

No need to null the weak ptr; unless we call init() outside of the object construction.

&gt; Source/WebCore/platform/Widget.cpp:50
&gt; +    m_parent = view ? view-&gt;createWeakPtr() : nullptr;

I&apos;d rather use makeWeakPtr() helper here (with auto&amp; weakPtrFactory() const { return m_weakFactory; } on the ScrollView.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420432</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-03 16:51:16 -0700</bug_when>
    <thetext>Committed r231335: &lt;https://trac.webkit.org/changeset/231335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420436</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-05-03 16:53:52 -0700</bug_when>
    <thetext>&gt;m_parent = view ? makeWeakPtr(*view) : nullptr;
You could just do 
m_parent = makeWeakPtr(view);
instead. makeWeakPtr handles nullptr.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339390</attachid>
            <date>2018-05-02 23:26:27 -0700</date>
            <delta_ts>2018-05-03 06:45:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185239-20180502232626.patch</filename>
            <type>text/plain</type>
            <size>4239</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTNiOGY4OTcyNjdhNTMx
NmI2YTk1ZTAxOWU1OWI1MTMxOGM4MGViMi4uMjBmMTVlOGU0MmQ2MzE1Y2Q3MTA4ZGU1ZTJiYzY1
ZmJmNGNhNGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTA1LTAyICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFdpZGdldHMgc2hvdWxk
IGhvbGQgYSBXZWFrUHRyIHRvIHRoZWlyIHBhcmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTIzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Mzk3NDEyNTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
OjpjcmVhdGVXZWFrUHRyKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vV2lkZ2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6aW5pdCk6IFVzZSBudWxscHRyIHJhdGhlciB0aGFu
IDAuCisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldFBhcmVudCk6IEdyYWIgYSBXZWFrUHRy
IHRvIHRoZSBwYXJlbnQgU2Nyb2xsVmlldy4KKyAgICAgICAgKiBwbGF0Zm9ybS9XaWRnZXQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFyZW50IGNvbnN0KTogQ2hhbmdlIHR5cGUgdG8g
YSBXZWFrUHRyLgorCiAyMDE4LTA1LTAyICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG9wdCBvdXQgb2YgcHJvY2VzcyBzd2FwIG9uIG5hdmln
YXRpb24gaWYgYSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kIGlzIGNvbm5lY3RlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IDZkMWRhNWJlNTNhMWUxM2NiMzFjMjkwMDhjNGZk
OTE5ZDY0MjhkZTIuLjI5ZWVjYWQzMDYzODkyNjdjYTY3M2I4Y2Q0Nzc3N2JhM2VjM2IyOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIK
ICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAKQEAgLTM3MSw2ICszNzIsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbGxvd3NVbmNsYW1wZWRTY3JvbGxQb3NpdGlvbkZvclRl
c3RpbmcoYm9vbCBhbGxvd3NVbmNsYW1wZWRTY3JvbGxQb3NpdGlvbikgeyBtX2FsbG93c1VuY2xh
bXBlZFNjcm9sbFBvc2l0aW9uID0gYWxsb3dzVW5jbGFtcGVkU2Nyb2xsUG9zaXRpb247IH0KICAg
ICBib29sIGFsbG93c1VuY2xhbXBlZFNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9h
bGxvd3NVbmNsYW1wZWRTY3JvbGxQb3NpdGlvbjsgfQogCisgICAgV2Vha1B0cjxTY3JvbGxWaWV3
PiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRy
KCp0aGlzKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsVmlldygpOwogCkBAIC00NTcsNiAr
NDYwLDggQEAgcHJpdmF0ZToKIAogICAgIEludFBvaW50IG1fcGFuU2Nyb2xsSWNvblBvaW50Owog
CisgICAgV2Vha1B0ckZhY3Rvcnk8U2Nyb2xsVmlldz4gbV93ZWFrUHRyRmFjdG9yeTsKKwogICAg
IGJvb2wgbV9ob3Jpem9udGFsU2Nyb2xsYmFyTG9jayB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Zl
cnRpY2FsU2Nyb2xsYmFyTG9jayB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1dpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQu
Y3BwCmluZGV4IDlmMWQwMTQ4MjViNTMwY2EyZWFjMjQ0MzhmNGE3ZTAxN2I4NzcwYmEuLmViYzA4
ZGM1MTUxNjEzNjg5ZDg2ZmNkMTA1MGExYzBlNDBkYzNmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
V2lkZ2V0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdm9pZCBXaWRnZXQ6OmluaXQoUGxhdGZvcm1XaWRnZXQgd2lkZ2V0KQogewotICAg
IG1fcGFyZW50ID0gMDsKKyAgICBtX3BhcmVudCA9IG51bGxwdHI7CiAgICAgbV9zZWxmVmlzaWJs
ZSA9IGZhbHNlOwogICAgIG1fcGFyZW50VmlzaWJsZSA9IGZhbHNlOwogICAgIG1fd2lkZ2V0ID0g
d2lkZ2V0OwpAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFdpZGdldDo6c2V0UGFyZW50KFNjcm9sbFZp
ZXcqIHZpZXcpCiAgICAgQVNTRVJUKCF2aWV3IHx8ICFtX3BhcmVudCk7CiAgICAgaWYgKCF2aWV3
IHx8ICF2aWV3LT5pc1Zpc2libGUoKSkKICAgICAgICAgc2V0UGFyZW50VmlzaWJsZShmYWxzZSk7
Ci0gICAgbV9wYXJlbnQgPSB2aWV3OworICAgIG1fcGFyZW50ID0gdmlldyA/IHZpZXctPmNyZWF0
ZVdlYWtQdHIoKSA6IG51bGxwdHI7CiAgICAgaWYgKHZpZXcgJiYgdmlldy0+aXNWaXNpYmxlKCkp
CiAgICAgICAgIHNldFBhcmVudFZpc2libGUodHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdl
dC5oCmluZGV4IDM4MTA5MTljMDE3YmRmMTZmY2I5NGRmZTgwMjk4NzQyNDdjNWE0MDMuLjJiMmYx
ZTRlNmQ3ZjlmNzc2YmE0YWFhYzMxNzFiNjRmNmEyZjJmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dp
ZGdldC5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHNldFBhcmVudChTY3JvbGxWaWV3KiB2aWV3KTsKLSAgICBTY3JvbGxWaWV3KiBwYXJlbnQoKSBj
b25zdCB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFNjcm9sbFZpZXcqIHBhcmVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyZW50LmdldCgpOyB9CiAgICAgRnJhbWVWaWV3KiByb290KCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQmKSB7IH0KQEAgLTIwNCw3ICsy
MDQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5p
bmdXaW5kb3dUb1Jvb3QoY29uc3QgV2lkZ2V0KiByb290V2lkZ2V0LCBjb25zdCBJbnRQb2ludCYp
OwogCiBwcml2YXRlOgotICAgIFNjcm9sbFZpZXcqIG1fcGFyZW50OworICAgIFdlYWtQdHI8U2Ny
b2xsVmlldz4gbV9wYXJlbnQ7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtV2lk
Z2V0IG1fd2lkZ2V0OwogI2Vsc2UK
</data>
<flag name="review"
          id="357638"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>