#include <memory>
#include <optional>
#include <string>
#include <vector>
#include "base/base64.h"
#include "base/command_line.h"
#include "base/functional/bind.h"
#include "base/json/json_writer.h"
#include "base/numerics/safe_conversions.h"
#include "base/strings/string_number_conversions.h"
#include "base/test/values_test_util.h"
#include "base/values.h"
#include "components/headless/command_handler/headless_command_switches.h"
#include "components/headless/test/pdf_utils.h"
#include "content/public/test/browser_test.h"
#include "headless/public/switches.h"
#include "headless/test/headless_browser_test.h"
#include "headless/test/headless_browser_test_utils.h"
#include "headless/test/headless_devtooled_browsertest.h"
#include "pdf/pdf.h"
#include "printing/buildflags/buildflags.h"
#include "printing/pdf_render_settings.h"
#include "printing/units.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/inspector_protocol/crdtp/dispatch.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size_conversions.h"
#include "ui/gfx/geometry/size_f.h"
namespace headless {
class HeadlessPDFPagesBrowserTest : public HeadlessDevTooledBrowserTest { … };
HEADLESS_DEVTOOLED_TEST_F(HeadlessPDFPagesBrowserTest);
class HeadlessPDFStreamBrowserTest : public HeadlessDevTooledBrowserTest { … };
HEADLESS_DEVTOOLED_TEST_F(HeadlessPDFStreamBrowserTest);
class HeadlessPDFBrowserTestBase : public HeadlessDevTooledBrowserTest { … };
class HeadlessPDFPageSizeRoundingBrowserTest
: public HeadlessPDFBrowserTestBase { … };
HEADLESS_DEVTOOLED_TEST_F(HeadlessPDFPageSizeRoundingBrowserTest);
class HeadlessPDFPageOrientationBrowserTest
: public HeadlessPDFBrowserTestBase { … };
HEADLESS_DEVTOOLED_TEST_F(HeadlessPDFPageOrientationBrowserTest);
class HeadlessPDFPageRangesBrowserTest
: public HeadlessPDFBrowserTestBase,
public testing::WithParamInterface<
std::tuple<const char*, int, const char*>> { … };
INSTANTIATE_TEST_SUITE_P(…);
HEADLESS_DEVTOOLED_TEST_P(HeadlessPDFPageRangesBrowserTest);
class HeadlessPDFOOPIFBrowserTest : public HeadlessPDFBrowserTestBase { … };
HEADLESS_DEVTOOLED_TEST_F(HeadlessPDFOOPIFBrowserTest);
class HeadlessPDFTinyPageBrowserTest
: public HeadlessPDFBrowserTestBase,
public testing::WithParamInterface<gfx::SizeF> { … };
INSTANTIATE_TEST_SUITE_P(…);
HEADLESS_DEVTOOLED_TEST_P(HeadlessPDFTinyPageBrowserTest);
class HeadlessPDFOversizeMarginsBrowserTest
: public HeadlessPDFBrowserTestBase { … };
HEADLESS_DEVTOOLED_TEST_F(HeadlessPDFOversizeMarginsBrowserTest);
class HeadlessPDFDisableLazyLoading : public HeadlessPDFBrowserTestBase { … };
HEADLESS_DEVTOOLED_TEST_F(HeadlessPDFDisableLazyLoading);
const char kExpectedStructTreeJSON[] = …;
const char kExpectedFigureOnlyStructTreeJSON[] = …;
const char kExpectedFigureRoleOnlyStructTreeJSON[] = …;
const char kExpectedImageOnlyStructTreeJSON[] = …;
const char kExpectedImageRoleOnlyStructTreeJSON[] = …;
struct TaggedPDFTestData { … };
constexpr TaggedPDFTestData kTaggedPDFTestData[] = …;
class HeadlessTaggedPDFBrowserTest
: public HeadlessPDFBrowserTestBase,
public ::testing::WithParamInterface<TaggedPDFTestData> { … };
HEADLESS_DEVTOOLED_TEST_P(HeadlessTaggedPDFBrowserTest);
INSTANTIATE_TEST_SUITE_P(…);
class HeadlessTaggedPDFDisabledBrowserTest
: public HeadlessPDFBrowserTestBase,
public ::testing::WithParamInterface<TaggedPDFTestData> { … };
HEADLESS_DEVTOOLED_TEST_P(HeadlessTaggedPDFDisabledBrowserTest);
INSTANTIATE_TEST_SUITE_P(…);
class HeadlessGenerateTaggedPDFBrowserTest
: public HeadlessPDFBrowserTestBase,
public ::testing::WithParamInterface<bool> { … };
HEADLESS_DEVTOOLED_TEST_P(HeadlessGenerateTaggedPDFBrowserTest);
INSTANTIATE_TEST_SUITE_P(…);
class HeadlessGenerateDocumentOutlinePDFBrowserTest
: public HeadlessPDFBrowserTestBase,
public ::testing::WithParamInterface<bool> { … };
HEADLESS_DEVTOOLED_TEST_P(HeadlessGenerateDocumentOutlinePDFBrowserTest);
INSTANTIATE_TEST_SUITE_P(…);
}