
https://crrev.com/c/4031666 added code to run headless protocol browser with OOPIF enabled by default using --site-per-process switch. This CL moves relevant code to the base class so that _all_ headless browser tests will now run with OOPIF enabled unless specifically disabled. As a result, BlockDevToolsEmbedding test seg faults, so OOPIF is explicitly disabled for it. Bug: 382703193 Change-Id: I2d8885ba2f58693e55bace3a7873b2076c647b7d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6078346 Commit-Queue: Peter Kvitek <kvitekp@chromium.org> Auto-Submit: Peter Kvitek <kvitekp@chromium.org> Reviewed-by: Andrey Kosyakov <caseq@chromium.org> Cr-Commit-Position: refs/heads/main@{#1393285}
70 lines
2.1 KiB
C++
70 lines
2.1 KiB
C++
// Copyright 2016 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef HEADLESS_TEST_HEADLESS_BROWSER_TEST_H_
|
|
#define HEADLESS_TEST_HEADLESS_BROWSER_TEST_H_
|
|
|
|
#include <memory>
|
|
|
|
#include "build/build_config.h"
|
|
#include "content/public/test/browser_test_base.h"
|
|
#include "headless/public/headless_browser.h"
|
|
|
|
namespace base {
|
|
class RunLoop;
|
|
}
|
|
|
|
namespace headless {
|
|
|
|
// Base class for tests which require a full instance of the headless browser.
|
|
class HeadlessBrowserTest : public content::BrowserTestBase {
|
|
public:
|
|
HeadlessBrowserTest(const HeadlessBrowserTest&) = delete;
|
|
HeadlessBrowserTest& operator=(const HeadlessBrowserTest&) = delete;
|
|
|
|
// Notify that an asynchronous test is now complete and the test runner should
|
|
// exit.
|
|
void FinishAsynchronousTest();
|
|
|
|
protected:
|
|
HeadlessBrowserTest();
|
|
~HeadlessBrowserTest() override;
|
|
|
|
// content::BrowserTestBase:
|
|
void SetUp() override;
|
|
void SetUpCommandLine(base::CommandLine* command_line) override;
|
|
void PreRunTestOnMainThread() override;
|
|
void PostRunTestOnMainThread() override;
|
|
#if BUILDFLAG(IS_MAC)
|
|
void CreatedBrowserMainParts(content::BrowserMainParts* parts) override;
|
|
#endif
|
|
|
|
// Run an asynchronous test in a nested run loop. The caller should call
|
|
// FinishAsynchronousTest() to notify that the test should finish.
|
|
void RunAsynchronousTest();
|
|
|
|
protected:
|
|
// Call this instead of SetUp() to run tests without GPU rendering (i.e.,
|
|
// without using SwiftShader or a hardware GPU).
|
|
void SetUpWithoutGPU();
|
|
|
|
// Returns the browser for the test.
|
|
HeadlessBrowser* browser() const;
|
|
|
|
// Returns the options used by the browser. Modify with caution, since some
|
|
// options only take effect if they were set before browser creation.
|
|
HeadlessBrowser::Options* options() const;
|
|
|
|
// Override to disable OOPIF in tests. Default implementation returns
|
|
// positive.
|
|
virtual bool ShouldEnableSitePerProcess();
|
|
|
|
private:
|
|
std::unique_ptr<base::RunLoop> run_loop_;
|
|
};
|
|
|
|
} // namespace headless
|
|
|
|
#endif // HEADLESS_TEST_HEADLESS_BROWSER_TEST_H_
|