| Index: content/public/test/browser_test_utils.h
|
| diff --git a/content/public/test/browser_test_utils.h b/content/public/test/browser_test_utils.h
|
| index bcc424fe289b905f19049d4e425572d041c48322..957292014871b5a4ea09122745bd4391a2d80346 100644
|
| --- a/content/public/test/browser_test_utils.h
|
| +++ b/content/public/test/browser_test_utils.h
|
| @@ -404,6 +404,45 @@ class WebContentsAddedObserver {
|
| DISALLOW_COPY_AND_ASSIGN(WebContentsAddedObserver);
|
| };
|
|
|
| +// This observer keeps track of the last deleted RenderViewHost to avoid
|
| +// accessing it and causing use-after-free condition.
|
| +class RenderViewHostDeletedObserver : public WebContentsObserver {
|
| + public:
|
| + RenderViewHostDeletedObserver(RenderViewHost* rvh);
|
| + ~RenderViewHostDeletedObserver() override;
|
| + void RenderViewDeleted(RenderViewHost* render_view_host) override;
|
| + bool deleted();
|
| + void WaitUntilDeleted();
|
| +
|
| + private:
|
| + int process_id_;
|
| + int routing_id_;
|
| + bool deleted_;
|
| + scoped_ptr<base::RunLoop> runner_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(RenderViewHostDeletedObserver);
|
| +};
|
| +
|
| +// This observer keeps track of the last deleted RenderFrameHost to avoid
|
| +// accessing it and causing use-after-free condition.
|
| +class RenderFrameHostDeletedObserver : public WebContentsObserver {
|
| + public:
|
| + RenderFrameHostDeletedObserver(RenderFrameHost* rfh);
|
| + ~RenderFrameHostDeletedObserver() override;
|
| + void RenderFrameDeleted(RenderFrameHost* render_frame_host) override;
|
| + bool deleted();
|
| + void WaitUntilDeleted();
|
| +
|
| + private:
|
| + int process_id_;
|
| + int routing_id_;
|
| + bool deleted_;
|
| + scoped_ptr<base::RunLoop> runner_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(RenderFrameHostDeletedObserver);
|
| +};
|
| +
|
| +
|
| } // namespace content
|
|
|
| #endif // CONTENT_PUBLIC_TEST_BROWSER_TEST_UTILS_H_
|
|
|