| 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 001ceeaab81a8e46bfd863aba448a2d735da27fb..55fa908ad9b0eba9b2d02ed0366cce04c0a301aa 100644
|
| --- a/content/public/test/browser_test_utils.cc
|
| +++ b/content/public/test/browser_test_utils.cc
|
| @@ -1013,4 +1013,39 @@ void FrameWatcher::WaitFrames(int frames_to_wait) {
|
| run_loop.Run();
|
| }
|
|
|
| +RenderFrameDeletedObserver::RenderFrameDeletedObserver(
|
| + RenderFrameHost* rfh)
|
| + : WebContentsObserver(WebContents::FromRenderFrameHost(rfh)),
|
| + process_id_(rfh->GetProcess()->GetID()),
|
| + routing_id_(rfh->GetRoutingID()),
|
| + deleted_(false) {
|
| +}
|
| +
|
| +RenderFrameDeletedObserver::~RenderFrameDeletedObserver() {
|
| +}
|
| +
|
| +void RenderFrameDeletedObserver::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 RenderFrameDeletedObserver::deleted() {
|
| + return deleted_;
|
| +}
|
| +
|
| +void RenderFrameDeletedObserver::WaitUntilDeleted() {
|
| + if (deleted_)
|
| + return;
|
| +
|
| + runner_.reset(new base::RunLoop());
|
| + runner_->Run();
|
| + runner_.reset(nullptr);
|
| +}
|
| +
|
| } // namespace content
|
|
|