--- a/wp/wp-includes/html-api/class-wp-html-unsupported-exception.php Fri Sep 05 18:40:08 2025 +0200
+++ b/wp/wp-includes/html-api/class-wp-html-unsupported-exception.php Fri Sep 05 18:52:52 2025 +0200
@@ -21,11 +21,95 @@
* operation and signify that the given HTML cannot be processed.
*
* @since 6.4.0
+ * @since 6.7.0 Gained contextual information for use in debugging parse failures.
*
* @access private
*
* @see WP_HTML_Processor
*/
class WP_HTML_Unsupported_Exception extends Exception {
+ /**
+ * Name of the matched token when the exception was raised,
+ * if matched on a token.
+ *
+ * This does not imply that the token itself was unsupported, but it
+ * may have been the case that the token triggered part of the HTML
+ * parsing that isn't supported, such as the adoption agency algorithm.
+ *
+ * @since 6.7.0
+ *
+ * @var string
+ */
+ public $token_name;
+ /**
+ * Number of bytes into the input HTML document where the parser was
+ * parsing when the exception was raised.
+ *
+ * Use this to reconstruct context for the failure.
+ *
+ * @since 6.7.0
+ *
+ * @var int
+ */
+ public $token_at;
+
+ /**
+ * Full raw text of the matched token when the exception was raised,
+ * if matched on a token.
+ *
+ * Whereas the `$token_name` will be normalized, this contains the full
+ * raw text of the token, including original casing, duplicated attributes,
+ * and other syntactic variations that are normally abstracted in the HTML API.
+ *
+ * @since 6.7.0
+ *
+ * @var string
+ */
+ public $token;
+
+ /**
+ * Stack of open elements when the exception was raised.
+ *
+ * Use this to trace the parsing circumstances which led to the exception.
+ *
+ * @since 6.7.0
+ *
+ * @var string[]
+ */
+ public $stack_of_open_elements = array();
+
+ /**
+ * List of active formatting elements when the exception was raised.
+ *
+ * Use this to trace the parsing circumstances which led to the exception.
+ *
+ * @since 6.7.0
+ *
+ * @var string[]
+ */
+ public $active_formatting_elements = array();
+
+ /**
+ * Constructor function.
+ *
+ * @since 6.7.0
+ *
+ * @param string $message Brief message explaining what is unsupported, the reason this exception was raised.
+ * @param string $token_name Normalized name of matched token when this exception was raised.
+ * @param int $token_at Number of bytes into source HTML document where matched token starts.
+ * @param string $token Full raw text of matched token when this exception was raised.
+ * @param string[] $stack_of_open_elements Stack of open elements when this exception was raised.
+ * @param string[] $active_formatting_elements List of active formatting elements when this exception was raised.
+ */
+ public function __construct( string $message, string $token_name, int $token_at, string $token, array $stack_of_open_elements, array $active_formatting_elements ) {
+ parent::__construct( $message );
+
+ $this->token_name = $token_name;
+ $this->token_at = $token_at;
+ $this->token = $token;
+
+ $this->stack_of_open_elements = $stack_of_open_elements;
+ $this->active_formatting_elements = $active_formatting_elements;
+ }
}