In re to http://codereview.chromium.org/48103/show:

I like where you went, but this leaves me in a tough spot. I was
implementing them in http://codereview.chromium.org/45040/show and now I'm a
bit stuck.

RWHV lives inside a view, and self-destructs when it's removed from the
view. Its lifetime is entirely due to the view and while it knows about its
host, it's not actually owned by it (see ShutdownHost()).

In your new revision, CreateNewWidgetInternal creates a new widget, which is
only parented in a view during the call to InitAsPopup in
ShowCreatedWidgetInternal. Between those two calls the widget lives in some
kind of cache, outside a view.

During construction of RenderWidgetHostViewMac, I had to split it into two,
the C++ side and the ObjC side. Given the lifetime semantics, I chose to
have the ObjC class have strict ownership of the C++ class. Then the ObjC
class would have view lifetime. WebContentsViewMac honors that; it creates
the RWHVM and immediately embeds it.

With your new scheme, I'm stuck. Whoever calls CreateNewWidgetInternal will
try to keep the RWHV around, but it can't. Since it wasn't hosted in the
view system, it'll immediately self-destruct.

I'm not sure of a great way around this. CreateNewWidgetInternal might have
to tell the RWHV that it's going to be embedded (and tell it where) rather
than leaving that to ShowCreatedWidgetInternal...

Avi

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: [email protected] 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to