Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(560)

Side by Side Diff: content/public/test/test_navigation_observer.h

Issue 12832004: content: Move all listeners of NOTIFICATION_RENDER_VIEW_HOST_CREATED out of content. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/test/base/web_ui_browsertest.cc ('k') | content/public/test/test_navigation_observer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_PUBLIC_TEST_TEST_NAVIGATION_OBSERVER_H_ 5 #ifndef CONTENT_PUBLIC_TEST_TEST_NAVIGATION_OBSERVER_H_
6 #define CONTENT_PUBLIC_TEST_TEST_NAVIGATION_OBSERVER_H_ 6 #define CONTENT_PUBLIC_TEST_TEST_NAVIGATION_OBSERVER_H_
7 7
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "content/public/browser/notification_observer.h" 11 #include "content/public/browser/notification_observer.h"
12 #include "content/public/browser/notification_registrar.h" 12 #include "content/public/browser/notification_registrar.h"
13 13
14 namespace content { 14 namespace content {
15 15
16 class JsInjectionReadyObserver;
17
18 // For browser_tests, which run on the UI thread, run a second 16 // For browser_tests, which run on the UI thread, run a second
19 // MessageLoop and quit when the navigation completes loading. For 17 // MessageLoop and quit when the navigation completes loading.
20 // WebUI tests that need to inject javascript, construct with a
21 // JsInjectionReadyObserver and this class will call its
22 // OnJsInjectionReady() at the appropriate time.
23 class TestNavigationObserver : public NotificationObserver { 18 class TestNavigationObserver : public NotificationObserver {
24 public: 19 public:
25 class RVHOSendJS; 20 // Create and register a new TestNavigationObserver against the |source|.
26
27 // Create and register a new TestNavigationObserver against the
28 // |controller|. When |js_injection_ready_observer| is non-null, notify with
29 // OnEntryCommitted() after |number_of_navigations| navigations.
30 // Note: |js_injection_ready_observer| is owned by the caller and should be
31 // valid until this class is destroyed.
32 TestNavigationObserver(const NotificationSource& source, 21 TestNavigationObserver(const NotificationSource& source,
33 JsInjectionReadyObserver* js_injection_ready_observer,
34 int number_of_navigations); 22 int number_of_navigations);
35 // Like above but waits for one navigation. 23 // Like above but waits for one navigation.
36 explicit TestNavigationObserver(const NotificationSource& source); 24 explicit TestNavigationObserver(const NotificationSource& source);
37 25
38 virtual ~TestNavigationObserver(); 26 virtual ~TestNavigationObserver();
39 27
40 // Run |wait_loop_callback| until complete, then run |done_callback|. 28 // Run |wait_loop_callback| until complete, then run |done_callback|.
41 void WaitForObservation(const base::Closure& wait_loop_callback, 29 void WaitForObservation(const base::Closure& wait_loop_callback,
42 const base::Closure& done_callback); 30 const base::Closure& done_callback);
43 // Convenient version of the above that runs a nested message loop and waits. 31 // Convenient version of the above that runs a nested message loop and waits.
44 void Wait(); 32 void Wait();
45 33
46 protected: 34 protected:
47 // Note: |js_injection_ready_observer| is owned by the caller and should be 35 explicit TestNavigationObserver(int number_of_navigations);
48 // valid until this class is destroyed. Subclasses using this constructor MUST
49 // call RegisterAsObserver when a NavigationController becomes available.
50 explicit TestNavigationObserver(
51 JsInjectionReadyObserver* js_injection_ready_observer,
52 int number_of_navigations);
53 36
54 // Register this TestNavigationObserver as an observer of the |source|. 37 // Register this TestNavigationObserver as an observer of the |source|.
55 void RegisterAsObserver(const NotificationSource& source); 38 void RegisterAsObserver(const NotificationSource& source);
56 39
57 private:
58 // NotificationObserver: 40 // NotificationObserver:
59 virtual void Observe(int type, const NotificationSource& source, 41 virtual void Observe(int type, const NotificationSource& source,
60 const NotificationDetails& details) OVERRIDE; 42 const NotificationDetails& details) OVERRIDE;
61 43
44 private:
62 NotificationRegistrar registrar_; 45 NotificationRegistrar registrar_;
63 46
64 // If true the navigation has started. 47 // If true the navigation has started.
65 bool navigation_started_; 48 bool navigation_started_;
66 49
67 // The number of navigations that have been completed. 50 // The number of navigations that have been completed.
68 int navigations_completed_; 51 int navigations_completed_;
69 52
70 // The number of navigations to wait for. 53 // The number of navigations to wait for.
71 int number_of_navigations_; 54 int number_of_navigations_;
72 55
73 // Observer to take some action when the page is ready for JavaScript
74 // injection.
75 JsInjectionReadyObserver* js_injection_ready_observer_;
76
77 // |done_| will get set when this object observes a TabStripModel event. 56 // |done_| will get set when this object observes a TabStripModel event.
78 bool done_; 57 bool done_;
79 58
80 // |done_callback_| will be set while |running_| is true and will be called 59 // |done_callback_| will be set while |running_| is true and will be called
81 // when navigation completes. 60 // when navigation completes.
82 base::Closure done_callback_; 61 base::Closure done_callback_;
83 62
84 // |running_| will be true during WaitForObservation until |done_| is true. 63 // |running_| will be true during WaitForObservation until |done_| is true.
85 bool running_; 64 bool running_;
86 65
87 // |rvho_send_js_| will hold a RenderViewHostObserver subclass to allow
88 // JavaScript injection at the appropriate time.
89 scoped_ptr<RVHOSendJS> rvho_send_js_;
90
91 DISALLOW_COPY_AND_ASSIGN(TestNavigationObserver); 66 DISALLOW_COPY_AND_ASSIGN(TestNavigationObserver);
92 }; 67 };
93 68
94 } // namespace content 69 } // namespace content
95 70
96 #endif // CONTENT_PUBLIC_TEST_TEST_NAVIGATION_OBSERVER_H_ 71 #endif // CONTENT_PUBLIC_TEST_TEST_NAVIGATION_OBSERVER_H_
OLDNEW
« no previous file with comments | « chrome/test/base/web_ui_browsertest.cc ('k') | content/public/test/test_navigation_observer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698