/* * Copyright (c) 2022, Florent Castelli * Copyright (c) 2022, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Web::WebDriver { // https://w3c.github.io/webdriver/#dfn-error-code enum class ErrorCode { ElementClickIntercepted, ElementNotInteractable, InsecureCertificate, InvalidArgument, InvalidCookieDomain, InvalidElementState, InvalidSelector, InvalidSessionId, JavascriptError, MoveTargetOutOfBounds, NoSuchAlert, NoSuchCookie, NoSuchElement, NoSuchFrame, NoSuchWindow, NoSuchShadowRoot, ScriptTimeoutError, SessionNotCreated, StaleElementReference, DetachedShadowRoot, Timeout, UnableToSetCookie, UnableToCaptureScreen, UnexpectedAlertOpen, UnknownCommand, UnknownError, UnknownMethod, UnsupportedOperation, // Non-standard error codes: OutOfMemory, }; // https://w3c.github.io/webdriver/#errors struct Error { unsigned http_status; DeprecatedString error; DeprecatedString message; Optional data; static Error from_code(ErrorCode, DeprecatedString message, Optional data = {}); Error(unsigned http_status, DeprecatedString error, DeprecatedString message, Optional data); Error(AK::Error const&); }; } template<> struct AK::Formatter : Formatter { ErrorOr format(FormatBuilder& builder, Web::WebDriver::Error const& error) { return Formatter::format(builder, DeprecatedString::formatted("Error {}, {}: {}", error.http_status, error.error, error.message)); } };