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 60b19c730c72be568e0aeb11a267ce9ec551833f..8bb877acd6e617e1cb209e64b83dce06e2c0bbee 100644 |
--- a/content/public/test/browser_test_utils.h |
+++ b/content/public/test/browser_test_utils.h |
@@ -351,6 +351,35 @@ class DOMMessageQueue : public NotificationObserver { |
DISALLOW_COPY_AND_ASSIGN(DOMMessageQueue); |
}; |
+// Used to wait for a new WebContents to be created. Instantiate this object |
+// before the operation that will create the window. |
+class WebContentsAddedObserver { |
+ public: |
+ WebContentsAddedObserver(); |
+ ~WebContentsAddedObserver(); |
+ |
+ // Will run a message loop to wait for the new window if it hasn't been |
+ // created since the constructor |
+ WebContents* GetWebContents(); |
+ |
+ // Will tell whether RenderViewCreated Callback has invoked |
+ bool RenderViewCreatedCalled(); |
+ |
+ private: |
+ class RenderViewCreatedObserver; |
+ |
+ void WebContentsCreated(WebContents* web_contents); |
+ |
+ // Callback to WebContentCreated(). Cached so that we can unregister it. |
+ base::Callback<void(WebContents*)> web_contents_created_callback_; |
+ |
+ WebContents* web_contents_; |
+ scoped_ptr<RenderViewCreatedObserver> child_observer_; |
+ scoped_refptr<MessageLoopRunner> runner_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(WebContentsAddedObserver); |
+}; |
+ |
} // namespace content |
#endif // CONTENT_PUBLIC_TEST_BROWSER_TEST_UTILS_H_ |