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
3 // found in the LICENSE file.
5 #include "base/files/file_path.h"
6 #include "base/files/scoped_temp_dir.h"
7 #include "content/test/content_browser_test.h"
12 class LayoutTestHttpServer
;
13 class WebKitTestController
;
15 class InProcessBrowserLayoutTest
: public ContentBrowserTest
{
17 explicit InProcessBrowserLayoutTest(const base::FilePath
& test_parent_dir
,
18 const base::FilePath
& test_case_dir
);
19 // Used when running HTTP layout tests. Starts the server in the constructor
20 // and keeps it running through the lifetime of this test. This is done to
21 // avoid flakiness in restarting the server while the port is still in use.
22 // If -1 is passed for |port|, a random number will be used. This is
23 // recommended when possible, in case multiple tests are running at the same
24 // time. For some tests this isn't possible though, because they use resources
25 // that hardcode a specific port.
26 InProcessBrowserLayoutTest(const base::FilePath
& test_parent_dir
,
27 const base::FilePath
& test_case_dir
,
29 virtual ~InProcessBrowserLayoutTest();
31 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE
;
32 virtual void SetUpOnMainThread() OVERRIDE
;
33 virtual void SetUpCommandLine(CommandLine
* command_line
) OVERRIDE
;
34 // Runs a layout test given its filename relative to the path given to the
36 void RunLayoutTest(const std::string
& test_case_file_name
);
37 // Runs a layout test using the HTTP test server. The second constructor must
39 void RunHttpLayoutTest(const std::string
& test_case_file_name
);
42 void RunLayoutTestInternal(const std::string
& test_case_file_name
,
44 std::string
SaveResults(const std::string
& expected
,
45 const std::string
& actual
);
47 base::FilePath layout_test_dir_
;
48 base::FilePath test_parent_dir_
;
49 base::FilePath test_case_dir_
;
50 base::FilePath rebase_result_dir_
;
51 base::FilePath rebase_result_chromium_dir_
;
52 base::FilePath rebase_result_win_dir_
;
53 int port_
; // -2 means no port. -1 means random.
54 scoped_ptr
<LayoutTestHttpServer
> test_http_server_
;
56 scoped_ptr
<WebKitTestController
> test_controller_
;
58 DISALLOW_COPY_AND_ASSIGN(InProcessBrowserLayoutTest
);
61 } // namespace content