Index: content/test/test_frame_navigation_observer.h |
diff --git a/content/test/test_frame_navigation_observer.h b/content/test/test_frame_navigation_observer.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0c50bc169b0e4874bc4e98ba405d976e58a9225e |
--- /dev/null |
+++ b/content/test/test_frame_navigation_observer.h |
@@ -0,0 +1,76 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CONTENT_TEST_TEST_FRAME_NAVIGATION_OBSERVER_H_ |
+#define CONTENT_TEST_TEST_FRAME_NAVIGATION_OBSERVER_H_ |
+ |
+#include <set> |
+ |
+#include "base/callback.h" |
+#include "base/compiler_specific.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "content/public/browser/web_contents_observer.h" |
+#include "content/public/test/test_utils.h" |
+ |
+class GURL; |
+ |
+namespace content { |
+class RenderFrameHostImpl; |
+class WebContents; |
+struct LoadCommittedDetails; |
+ |
+// For content_browsertests, which run on the UI thread, run a second |
+// MessageLoop and quit when the navigation in a specific frame completes |
+// loading. |
+class TestFrameNavigationObserver : public WebContentsObserver { |
+ public: |
+ // Create and register a new TestFrameNavigationObserver against the |
+ // |web_contents|. |
Charlie Reis
2014/04/24 20:37:50
nit: There's no |web_contents| parameter.
nasko
2014/04/24 22:31:12
Done.
|
+ TestFrameNavigationObserver(RenderFrameHostImpl* render_frame_host, |
+ int number_of_navigations); |
+ // Like above but waits for one navigation. |
Charlie Reis
2014/04/24 20:37:50
nit: Like -> As
nasko
2014/04/24 22:31:12
Done.
|
+ explicit TestFrameNavigationObserver(RenderFrameHostImpl* render_frame_host); |
+ |
+ virtual ~TestFrameNavigationObserver(); |
+ |
+ // Runs a nested message loop and blocks until the expected number of |
+ // navigations are complete. |
+ void Wait(); |
+ |
+ private: |
+ // WebContentsObserver |
+ virtual void DidStartProvisionalLoadForFrame( |
+ int64 frame_id, |
+ int64 parent_frame_id, |
+ bool is_main_frame, |
+ const GURL& validated_url, |
+ bool is_error_page, |
+ bool is_iframe_srcdoc, |
+ RenderViewHost* render_view_host) OVERRIDE; |
+ |
Charlie Reis
2014/04/24 20:37:50
nit: No blank line, since this is the block of Web
nasko
2014/04/24 22:31:12
Done.
|
+ virtual void DidNavigateAnyFrame( |
+ const LoadCommittedDetails& details, |
+ const FrameNavigateParams& params) OVERRIDE; |
+ |
+ // The RenderFrameHost to navigate. |
+ RenderFrameHostImpl* render_frame_host_; |
+ |
+ // If true the navigation has started. |
+ bool navigation_started_; |
+ |
+ // The number of navigations that have been completed. |
+ int navigations_completed_; |
+ |
+ // The number of navigations to wait for. |
+ int number_of_navigations_; |
+ |
+ // The MessageLoopRunner used to spin the message loop. |
+ scoped_refptr<MessageLoopRunner> message_loop_runner_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TestFrameNavigationObserver); |
+}; |
+ |
+} // namespace content |
+ |
+#endif // CONTENT_TEST_TEST_FRAME_NAVIGATION_OBSERVER_H_ |