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

Side by Side Diff: chrome/test/base/in_process_browser_test.h

Issue 8036044: Add (not yet working) content_browsertests target. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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/chrome_test_launcher.cc ('k') | chrome/test/base/in_process_browser_test.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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 CHROME_TEST_BASE_IN_PROCESS_BROWSER_TEST_H_ 5 #ifndef CHROME_TEST_BASE_IN_PROCESS_BROWSER_TEST_H_
6 #define CHROME_TEST_BASE_IN_PROCESS_BROWSER_TEST_H_ 6 #define CHROME_TEST_BASE_IN_PROCESS_BROWSER_TEST_H_
7 #pragma once 7 #pragma once
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/scoped_temp_dir.h" 12 #include "base/scoped_temp_dir.h"
13 #include "content/common/page_transition_types.h" 13 #include "content/common/page_transition_types.h"
14 #include "content/test/browser_test.h"
15 #include "content/test/browser_test_base.h"
14 #include "net/test/test_server.h" 16 #include "net/test/test_server.h"
15 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
16 18
17 #if defined(OS_CHROMEOS) 19 #if defined(OS_CHROMEOS)
18 #include "chrome/browser/chromeos/cros/cros_library.h" 20 #include "chrome/browser/chromeos/cros/cros_library.h"
19 #endif // defined(OS_CHROMEOS) 21 #endif // defined(OS_CHROMEOS)
20 22
21 class Browser; 23 class Browser;
22 class CommandLine; 24 class CommandLine;
23 class Profile; 25 class Profile;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 // 65 //
64 // TearDownInProcessBrowserTestFixture() is called after BrowserMain() exits to 66 // TearDownInProcessBrowserTestFixture() is called after BrowserMain() exits to
65 // cleanup things setup for running the browser. 67 // cleanup things setup for running the browser.
66 // 68 //
67 // By default InProcessBrowserTest creates a single Browser (as returned from 69 // By default InProcessBrowserTest creates a single Browser (as returned from
68 // the CreateBrowser method). You can obviously create more as needed. 70 // the CreateBrowser method). You can obviously create more as needed.
69 71
70 // InProcessBrowserTest disables the sandbox when running. 72 // InProcessBrowserTest disables the sandbox when running.
71 // 73 //
72 // See ui_test_utils for a handful of methods designed for use with this class. 74 // See ui_test_utils for a handful of methods designed for use with this class.
73 class InProcessBrowserTest : public testing::Test { 75 class InProcessBrowserTest : public BrowserTestBase {
74 public: 76 public:
75 InProcessBrowserTest(); 77 InProcessBrowserTest();
76 virtual ~InProcessBrowserTest(); 78 virtual ~InProcessBrowserTest();
77 79
78 // We do this so we can be used in a Task.
79 void AddRef() {}
80 void Release() {}
81 static bool ImplementsThreadSafeReferenceCounting() { return false; }
82
83 // Configures everything for an in process browser test, then invokes 80 // Configures everything for an in process browser test, then invokes
84 // BrowserMain. BrowserMain ends up invoking RunTestOnMainThreadLoop. 81 // BrowserMain. BrowserMain ends up invoking RunTestOnMainThreadLoop.
85 virtual void SetUp(); 82 virtual void SetUp() OVERRIDE;
86 83
87 // Restores state configured in SetUp. 84 // Restores state configured in SetUp.
88 virtual void TearDown(); 85 virtual void TearDown() OVERRIDE;
89 86
90 protected: 87 protected:
91 // Returns the browser created by CreateBrowser. 88 // Returns the browser created by CreateBrowser.
92 Browser* browser() const { return browser_; } 89 Browser* browser() const { return browser_; }
93 90
94 // Convenience methods for adding tabs to a Browser. 91 // Convenience methods for adding tabs to a Browser.
95 void AddTabAtIndexToBrowser(Browser* browser, 92 void AddTabAtIndexToBrowser(Browser* browser,
96 int index, 93 int index,
97 const GURL& url, 94 const GURL& url,
98 PageTransition::Type transition); 95 PageTransition::Type transition);
99 void AddTabAtIndex(int index, const GURL& url, 96 void AddTabAtIndex(int index, const GURL& url,
100 PageTransition::Type transition); 97 PageTransition::Type transition);
101 98
102 // Adds a selected tab at |index| to |url| with the specified |transition|. 99 // Adds a selected tab at |index| to |url| with the specified |transition|.
103 void AddTabAt(int index, const GURL& url, PageTransition::Type transition); 100 void AddTabAt(int index, const GURL& url, PageTransition::Type transition);
104 101
105 // Override this to add any custom setup code that needs to be done on the 102 // Override this to add any custom setup code that needs to be done on the
106 // main thread after the browser is created and just before calling 103 // main thread after the browser is created and just before calling
107 // RunTestOnMainThread(). 104 // RunTestOnMainThread().
108 virtual void SetUpOnMainThread() {} 105 virtual void SetUpOnMainThread() {}
109 106
110 // Override this rather than TestBody.
111 virtual void RunTestOnMainThread() = 0;
112
113 // Initializes the contents of the user data directory. Called by SetUp() 107 // Initializes the contents of the user data directory. Called by SetUp()
114 // after creating the user data directory, but before any browser is launched. 108 // after creating the user data directory, but before any browser is launched.
115 // If a test wishes to set up some initial non-empty state in the user data 109 // If a test wishes to set up some initial non-empty state in the user data
116 // directory before the browser starts up, it can do so here. Returns true if 110 // directory before the browser starts up, it can do so here. Returns true if
117 // successful. 111 // successful.
118 virtual bool SetUpUserDataDirectory() WARN_UNUSED_RESULT; 112 virtual bool SetUpUserDataDirectory() WARN_UNUSED_RESULT;
119 113
120 // We need these special methods because InProcessBrowserTest::SetUp is the
121 // bottom of the stack that winds up calling your test method, so it is not
122 // always an option to do what you want by overriding it and calling the
123 // superclass version.
124 //
125 // Override this for things you would normally override SetUp for. It will be
126 // called before your individual test fixture method is run, but after most
127 // of the overhead initialization has occured.
128 virtual void SetUpInProcessBrowserTestFixture() {}
129
130 // Override this for things you would normally override TearDown for.
131 virtual void TearDownInProcessBrowserTestFixture() {}
132
133 // Override this to add command line flags specific to your test. 114 // Override this to add command line flags specific to your test.
134 virtual void SetUpCommandLine(CommandLine* command_line) {} 115 virtual void SetUpCommandLine(CommandLine* command_line) {}
135 116
136 // Override this to add any custom cleanup code that needs to be done on the 117 // Override this to add any custom cleanup code that needs to be done on the
137 // main thread before the browser is torn down. 118 // main thread before the browser is torn down.
138 virtual void CleanUpOnMainThread() {} 119 virtual void CleanUpOnMainThread() {}
139 120
121 // BrowserTestBase:
122 virtual void RunTestOnMainThreadLoop() OVERRIDE;
123
140 // Returns the testing server. Guaranteed to be non-NULL. 124 // Returns the testing server. Guaranteed to be non-NULL.
141 net::TestServer* test_server() { return test_server_.get(); } 125 net::TestServer* test_server() { return test_server_.get(); }
142 126
143 // Creates a browser with a single tab (about:blank), waits for the tab to 127 // Creates a browser with a single tab (about:blank), waits for the tab to
144 // finish loading and shows the browser. 128 // finish loading and shows the browser.
145 // 129 //
146 // This is invoked from Setup. 130 // This is invoked from Setup.
147 virtual Browser* CreateBrowser(Profile* profile); 131 virtual Browser* CreateBrowser(Profile* profile);
148 132
149 // Similar to |CreateBrowser|, but creates an incognito browser. 133 // Similar to |CreateBrowser|, but creates an incognito browser.
(...skipping 19 matching lines...) Expand all
169 void EnableDOMAutomation() { dom_automation_enabled_ = true; } 153 void EnableDOMAutomation() { dom_automation_enabled_ = true; }
170 void EnableTabCloseableStateWatcher() { 154 void EnableTabCloseableStateWatcher() {
171 tab_closeable_state_watcher_enabled_ = true; 155 tab_closeable_state_watcher_enabled_ = true;
172 } 156 }
173 157
174 private: 158 private:
175 // Creates a user data directory for the test if one is needed. Returns true 159 // Creates a user data directory for the test if one is needed. Returns true
176 // if successful. 160 // if successful.
177 virtual bool CreateUserDataDirectory() WARN_UNUSED_RESULT; 161 virtual bool CreateUserDataDirectory() WARN_UNUSED_RESULT;
178 162
179 // This is invoked from main after browser_init/browser_main have completed.
180 // This prepares for the test by creating a new browser, runs the test
181 // (RunTestOnMainThread), quits the browsers and returns.
182 void RunTestOnMainThreadLoop();
183
184 // Quits all open browsers and waits until there are no more browsers. 163 // Quits all open browsers and waits until there are no more browsers.
185 void QuitBrowsers(); 164 void QuitBrowsers();
186 165
187 // Prepare command line that will be used to launch the child browser process 166 // Prepare command line that will be used to launch the child browser process
188 // with an in-process test. 167 // with an in-process test.
189 void PrepareTestCommandLine(CommandLine* command_line); 168 void PrepareTestCommandLine(CommandLine* command_line);
190 169
191 // Browser created from CreateBrowser. 170 // Browser created from CreateBrowser.
192 Browser* browser_; 171 Browser* browser_;
193 172
(...skipping 17 matching lines...) Expand all
211 // Host resolver to use during the test. 190 // Host resolver to use during the test.
212 scoped_refptr<net::RuleBasedHostResolverProc> host_resolver_; 191 scoped_refptr<net::RuleBasedHostResolverProc> host_resolver_;
213 192
214 // Temporary user data directory. Used only when a user data directory is not 193 // Temporary user data directory. Used only when a user data directory is not
215 // specified in the command line. 194 // specified in the command line.
216 ScopedTempDir temp_user_data_dir_; 195 ScopedTempDir temp_user_data_dir_;
217 196
218 #if defined(OS_CHROMEOS) 197 #if defined(OS_CHROMEOS)
219 chromeos::ScopedStubCrosEnabler stub_cros_enabler_; 198 chromeos::ScopedStubCrosEnabler stub_cros_enabler_;
220 #endif // defined(OS_CHROMEOS) 199 #endif // defined(OS_CHROMEOS)
221
222 DISALLOW_COPY_AND_ASSIGN(InProcessBrowserTest);
223 }; 200 };
224 201
225 // We only want to use InProcessBrowserTest in test targets which properly
226 // isolate each test case by running each test in a separate process.
227 // This way if a test hangs the test launcher can reliably terminate it.
228 //
229 // InProcessBrowserTest cannot be run more than once in the same address space
230 // anyway - otherwise the second test crashes.
231 #if defined(HAS_OUT_OF_PROC_TEST_RUNNER)
232
233 #define IN_PROC_BROWSER_TEST_(test_case_name, test_name, parent_class,\
234 parent_id)\
235 class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\
236 public:\
237 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\
238 protected:\
239 virtual void RunTestOnMainThread();\
240 private:\
241 virtual void TestBody() {}\
242 static ::testing::TestInfo* const test_info_;\
243 GTEST_DISALLOW_COPY_AND_ASSIGN_(\
244 GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\
245 };\
246 \
247 ::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\
248 ::test_info_ =\
249 ::testing::internal::MakeAndRegisterTestInfo(\
250 #test_case_name, #test_name, "", "", \
251 (parent_id), \
252 parent_class::SetUpTestCase, \
253 parent_class::TearDownTestCase, \
254 new ::testing::internal::TestFactoryImpl<\
255 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\
256 void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::RunTestOnMainThread()
257
258 #define IN_PROC_BROWSER_TEST_F(test_fixture, test_name)\
259 IN_PROC_BROWSER_TEST_(test_fixture, test_name, test_fixture,\
260 ::testing::internal::GetTypeId<test_fixture>())
261
262 #define IN_PROC_BROWSER_TEST_P(test_case_name, test_name) \
263 class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
264 : public test_case_name { \
265 public: \
266 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
267 protected: \
268 virtual void RunTestOnMainThread(); \
269 private: \
270 virtual void TestBody() {} \
271 static int AddToRegistry() { \
272 ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
273 GetTestCasePatternHolder<test_case_name>(\
274 #test_case_name, __FILE__, __LINE__)->AddTestPattern(\
275 #test_case_name, \
276 #test_name, \
277 new ::testing::internal::TestMetaFactory< \
278 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \
279 return 0; \
280 } \
281 static int gtest_registering_dummy_; \
282 GTEST_DISALLOW_COPY_AND_ASSIGN_(\
283 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
284 }; \
285 int GTEST_TEST_CLASS_NAME_(test_case_name, \
286 test_name)::gtest_registering_dummy_ = \
287 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
288 void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::RunTestOnMainThread()
289
290 #endif // defined(HAS_OUT_OF_PROC_TEST_RUNNER)
291
292 #endif // CHROME_TEST_BASE_IN_PROCESS_BROWSER_TEST_H_ 202 #endif // CHROME_TEST_BASE_IN_PROCESS_BROWSER_TEST_H_
OLDNEW
« no previous file with comments | « chrome/test/base/chrome_test_launcher.cc ('k') | chrome/test/base/in_process_browser_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698