OLD | NEW |
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_BROWSER_TEST_BASE_H_ | 5 #ifndef CONTENT_PUBLIC_TEST_BROWSER_TEST_BASE_H_ |
6 #define CONTENT_PUBLIC_TEST_BROWSER_TEST_BASE_H_ | 6 #define CONTENT_PUBLIC_TEST_BROWSER_TEST_BASE_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_vector.h" |
10 #include "base/threading/thread.h" | 11 #include "base/threading/thread.h" |
11 #include "net/test/spawned_test_server/spawned_test_server.h" | 12 #include "net/test/spawned_test_server/spawned_test_server.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
13 | 14 |
14 namespace base { | 15 namespace base { |
15 class CommandLine; | 16 class CommandLine; |
16 class FilePath; | 17 class FilePath; |
17 } | 18 } |
18 | 19 |
19 namespace net { | 20 namespace net { |
20 namespace test_server { | 21 namespace test_server { |
21 class EmbeddedTestServer; | 22 class EmbeddedTestServer; |
22 } | 23 } |
23 | 24 |
24 class RuleBasedHostResolverProc; | 25 class RuleBasedHostResolverProc; |
25 } // namespace net | 26 } // namespace net |
26 | 27 |
27 namespace content { | 28 namespace content { |
28 | 29 |
29 class BrowserTestBase : public testing::Test { | 30 class BrowserTestBase : public testing::Test { |
30 public: | 31 public: |
| 32 // Class that can be used to add some features not related directly |
| 33 // to the testing process and do set ups needed for them in proper time. |
| 34 // To do this you need to derive Admixture, implement |
| 35 // all the methods you need there and (if needed) reload set ups and tear |
| 36 // downs |
| 37 // for things that you would usually do in those of the test, but which are |
| 38 // connected |
| 39 // to the admixture, not to the test itself. |
| 40 // Finally, AddAdmixture() should be called in the test's constructor for each |
| 41 // Admixture. |
| 42 class Admixture { |
| 43 public: |
| 44 Admixture() {} |
| 45 virtual ~Admixture() {} |
| 46 virtual void SetUpCommandLine(base::CommandLine* command_line) {} |
| 47 virtual void SetUpOnMainThread() {} |
| 48 virtual void SetUpInProcessBrowserTestFixture() {} |
| 49 virtual void TearDownOnMainThread() {} |
| 50 virtual void TearDownInProcessBrowserTestFixture() {} |
| 51 }; |
| 52 |
31 BrowserTestBase(); | 53 BrowserTestBase(); |
32 virtual ~BrowserTestBase(); | 54 virtual ~BrowserTestBase(); |
33 | 55 |
34 // We do this so we can be used in a Task. | 56 // We do this so we can be used in a Task. |
35 void AddRef() {} | 57 void AddRef() {} |
36 void Release() {} | 58 void Release() {} |
37 | 59 |
38 // Configures everything for an in process browser test, then invokes | 60 // Configures everything for an in process browser test, then invokes |
39 // BrowserMain. BrowserMain ends up invoking RunTestOnMainThreadLoop. | 61 // BrowserMain. BrowserMain ends up invoking RunTestOnMainThreadLoop. |
40 virtual void SetUp() OVERRIDE; | 62 virtual void SetUp() OVERRIDE; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 // Call this before SetUp() to cause the test to generate pixel output. | 145 // Call this before SetUp() to cause the test to generate pixel output. |
124 void EnablePixelOutput(); | 146 void EnablePixelOutput(); |
125 | 147 |
126 // Call this before SetUp() to not use GL, but use software compositing | 148 // Call this before SetUp() to not use GL, but use software compositing |
127 // instead. | 149 // instead. |
128 void UseSoftwareCompositing(); | 150 void UseSoftwareCompositing(); |
129 | 151 |
130 // Returns true if the test will be using GL acceleration via OSMesa. | 152 // Returns true if the test will be using GL acceleration via OSMesa. |
131 bool UsingOSMesa() const; | 153 bool UsingOSMesa() const; |
132 | 154 |
| 155 // Adds |admixture| as an admixture for this test, passing ownership |
| 156 // for it to BrowserTestBase. |
| 157 // Should be called in constructor of the test (should be already completed |
| 158 // before running set ups). |
| 159 void AddAdmixture(Admixture* admixture); |
| 160 |
| 161 // Returns admixtures for this test. |
| 162 std::vector<BrowserTestBase::Admixture*> GetAdmixtures(); |
| 163 |
133 private: | 164 private: |
134 void ProxyRunTestOnMainThreadLoop(); | 165 void ProxyRunTestOnMainThreadLoop(); |
135 | 166 |
136 // Testing server, started on demand. | 167 // Testing server, started on demand. |
137 scoped_ptr<net::SpawnedTestServer> test_server_; | 168 scoped_ptr<net::SpawnedTestServer> test_server_; |
138 | 169 |
139 // Embedded test server, cheap to create, started on demand. | 170 // Embedded test server, cheap to create, started on demand. |
140 scoped_ptr<net::test_server::EmbeddedTestServer> embedded_test_server_; | 171 scoped_ptr<net::test_server::EmbeddedTestServer> embedded_test_server_; |
141 | 172 |
142 // Host resolver used during tests. | 173 // Host resolver used during tests. |
143 scoped_refptr<net::RuleBasedHostResolverProc> rule_based_resolver_; | 174 scoped_refptr<net::RuleBasedHostResolverProc> rule_based_resolver_; |
144 | 175 |
| 176 // Holds admixtures for this test. |
| 177 ScopedVector<Admixture> admixtures_; |
| 178 |
145 // Expected exit code (default is 0). | 179 // Expected exit code (default is 0). |
146 int expected_exit_code_; | 180 int expected_exit_code_; |
147 | 181 |
148 // When true, the compositor will produce pixel output that can be read back | 182 // When true, the compositor will produce pixel output that can be read back |
149 // for pixel tests. | 183 // for pixel tests. |
150 bool enable_pixel_output_; | 184 bool enable_pixel_output_; |
151 | 185 |
152 // When true, do compositing with the software backend instead of using GL. | 186 // When true, do compositing with the software backend instead of using GL. |
153 bool use_software_compositing_; | 187 bool use_software_compositing_; |
154 | 188 |
155 #if defined(OS_POSIX) | 189 #if defined(OS_POSIX) |
156 bool handle_sigterm_; | 190 bool handle_sigterm_; |
157 #endif | 191 #endif |
158 }; | 192 }; |
159 | 193 |
160 } // namespace content | 194 } // namespace content |
161 | 195 |
162 #endif // CONTENT_PUBLIC_TEST_BROWSER_TEST_BASE_H_ | 196 #endif // CONTENT_PUBLIC_TEST_BROWSER_TEST_BASE_H_ |
OLD | NEW |