Index: components/guest_view/renderer/guest_view_container.h |
diff --git a/components/guest_view/renderer/guest_view_container.h b/components/guest_view/renderer/guest_view_container.h |
index 50b05cb886ab97832a4ed308c1c27c2ffff01c50..03d860f3443eaa45fa893aac0ab7ca3db5b85363 100644 |
--- a/components/guest_view/renderer/guest_view_container.h |
+++ b/components/guest_view/renderer/guest_view_container.h |
@@ -17,7 +17,6 @@ class GuestViewRequest; |
class GuestViewContainer : public content::BrowserPluginDelegate { |
public: |
explicit GuestViewContainer(content::RenderFrame* render_frame); |
- ~GuestViewContainer() override; |
static GuestViewContainer* FromID(int element_instance_id); |
@@ -33,6 +32,9 @@ class GuestViewContainer : public content::BrowserPluginDelegate { |
// container. |
bool OnMessageReceived(const IPC::Message& message); |
+ // Destroys this GuestViewContainer after performing necessary cleanup. |
+ void Destroy(); |
+ |
// Called when the embedding RenderFrame is destroyed. |
virtual void OnRenderFrameDestroyed() {} |
@@ -43,6 +45,14 @@ class GuestViewContainer : public content::BrowserPluginDelegate { |
// Called to perform actions when a GuestViewContainer gets a geometry. |
virtual void OnReady() {} |
+ // Called to perform actions when a GuestViewContainer is about to be |
+ // destroyed. |
+ // Note that this should be called exactly once. |
+ virtual void OnDestroy() {} |
+ |
+ protected: |
+ ~GuestViewContainer() override; |
+ |
private: |
class RenderFrameLifetimeObserver; |
friend class RenderFrameLifetimeObserver; |
@@ -58,12 +68,14 @@ class GuestViewContainer : public content::BrowserPluginDelegate { |
// BrowserPluginDelegate implementation. |
void Ready() final; |
void SetElementInstanceID(int element_instance_id) final; |
+ void DidDestroyElement() final; |
int element_instance_id_; |
content::RenderFrame* render_frame_; |
scoped_ptr<RenderFrameLifetimeObserver> render_frame_lifetime_observer_; |
bool ready_; |
+ bool in_destruction_; |
std::deque<linked_ptr<GuestViewRequest> > pending_requests_; |
linked_ptr<GuestViewRequest> pending_response_; |