Index: content/public/test/browser_test_utils.cc |
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc |
index c7223936ce9481609d2a46a75f5d359812cbbbd1..4193bfba9bc54fbc601a32e68f4a880f968197c1 100644 |
--- a/content/public/test/browser_test_utils.cc |
+++ b/content/public/test/browser_test_utils.cc |
@@ -959,4 +959,75 @@ bool WebContentsAddedObserver::RenderViewCreatedCalled() { |
return false; |
} |
+RenderViewHostDeletedObserver::RenderViewHostDeletedObserver( |
+ RenderViewHost* rvh) |
+ : WebContentsObserver(WebContents::FromRenderViewHost(rvh)), |
+ process_id_(rvh->GetProcess()->GetID()), |
+ routing_id_(rvh->GetRoutingID()), |
+ deleted_(false) { |
+} |
+ |
+RenderViewHostDeletedObserver::~RenderViewHostDeletedObserver() { |
+} |
+ |
+void RenderViewHostDeletedObserver::RenderViewDeleted( |
+ RenderViewHost* render_view_host) { |
+ if (render_view_host->GetProcess()->GetID() == process_id_ && |
+ render_view_host->GetRoutingID() == routing_id_) { |
+ deleted_ = true; |
+ |
+ if (runner_.get()) { |
+ runner_->Quit(); |
+ runner_.reset(nullptr); |
+ } |
+ } |
+} |
+ |
+bool RenderViewHostDeletedObserver::deleted() { |
+ return deleted_; |
+} |
+ |
+void RenderViewHostDeletedObserver::WaitUntilDeleted() { |
+ if (deleted_) |
+ return; |
+ |
+ runner_.reset(new base::RunLoop()); |
+ runner_->Run(); |
+} |
+ |
+RenderFrameHostDeletedObserver::RenderFrameHostDeletedObserver( |
+ RenderFrameHost* rfh) |
+ : WebContentsObserver(WebContents::FromRenderFrameHost(rfh)), |
+ process_id_(rfh->GetProcess()->GetID()), |
+ routing_id_(rfh->GetRoutingID()), |
+ deleted_(false) { |
+} |
+ |
+RenderFrameHostDeletedObserver::~RenderFrameHostDeletedObserver() { |
+} |
+ |
+void RenderFrameHostDeletedObserver::RenderFrameDeleted( |
+ RenderFrameHost* render_frame_host) { |
+ if (render_frame_host->GetProcess()->GetID() == process_id_ && |
+ render_frame_host->GetRoutingID() == routing_id_) { |
+ deleted_ = true; |
+ |
+ if (runner_.get()) |
+ runner_->Quit(); |
+ } |
+} |
+ |
+bool RenderFrameHostDeletedObserver::deleted() { |
+ return deleted_; |
+} |
+ |
+void RenderFrameHostDeletedObserver::WaitUntilDeleted() { |
+ if (deleted_) |
+ return; |
+ |
+ runner_.reset(new base::RunLoop()); |
+ runner_->Run(); |
+ runner_.reset(nullptr); |
+} |
+ |
} // namespace content |