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 -~----------~----~----~----~------~----~------~--~---
