From decf906a90c3e7b1cca2f226500c3ddc8fefd85e Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 21 Oct 2021 10:40:12 +0200 Subject: [PATCH] Remove bug76738.phpt The test contains PII in the base64-encoded part and is way too complicated to be useful. I'd try to reduce it, but I can't tell what it's actually supposed to test. --- ext/dom/tests/bug76738.phpt | 238 ------------------------------------ 1 file changed, 238 deletions(-) delete mode 100644 ext/dom/tests/bug76738.phpt diff --git a/ext/dom/tests/bug76738.phpt b/ext/dom/tests/bug76738.phpt deleted file mode 100644 index 2eb91ee2305..00000000000 --- a/ext/dom/tests/bug76738.phpt +++ /dev/null @@ -1,238 +0,0 @@ ---TEST-- -Bug #76738 Wrong handling of output buffer ---SKIPIF-- - ---FILE-- -on_load($test_string); - -var_dump($after_load === $test_string); - -final class rh_rte_helper_debug -{ - public $errors = []; - - public function on_load(string $content): string - { - $content = utf8_encode($content); - $content = $this->add_outer_html($content); - $content = $this->remove_garbage($content); - $has_root_block = $this->has_root_block($content); - if(!$has_root_block) - { - $content = $this->add_root_block($content); - } - $content = $this->remove_outer_html($content); - $content = mb_convert_encoding($content, 'html-entities', 'UTF-8'); - $content = utf8_decode($content); - return $content; - } - - private function has_root_block(string $content): bool - { - $return = $content; - $doc = $this->get_dom($content); - if($doc != FALSE) - { - $xpath = ($doc != FALSE) ? new DomXpath($doc) : FALSE; - if($xpath != FALSE) - { - $path = '//*[contains(concat(" ", normalize-space(@class), " "), "tinymce-generated-root-block")]'; - $nodes = $xpath->query($path); - $nodes_idx = ($nodes != FALSE) ? $nodes->length : 0; - if($nodes_idx > 0) - { - return TRUE; - } - else - { - return FALSE; - } - } - else - { - return FALSE; - } - } - else - { - return FALSE; - } - } - - private function add_root_block(string $content): string - { - $return = $content; - $doc = $this->get_dom($content); - if($doc != FALSE) - { - $xpath = ($doc != FALSE) ? new DomXpath($doc) : FALSE; - if($xpath != FALSE) - { - $path = '//*[contains(concat(" ", normalize-space(@class), " "), "tinymce-generated-root-block")]'; - $nodes = $xpath->query($path); - $nodes_idx = ($nodes != FALSE) ? $nodes->length : 0; - if($nodes_idx == 0) - { - $root_div = $doc->createElement('div'); - $root_div->setAttribute('class', 'tinymce-generated-root-block'); - $root_div->setAttribute('style', 'margin: 0px; padding: 0px;'); - $body = $doc->getElementsByTagName('body')->item(0); - if($body !== NULL) - { - while($body->childNodes->length > 0) - { - $root_div->appendChild($body->childNodes->item(0)); - } - $body->appendChild($root_div); - $return = $doc->saveHTML(); - } - } - } - } - return $return; - } - - private function add_outer_html(string $content): string - { - return 'Tidy' . $content . ''; - } - - private function remove_root_block(string $content): string - { - return $this->remove_block($content, 'tinymce-generated-root-block'); - } - - private function remove_garbage(string $content): string - { - return $this->remove_block($content, 'tinymce-garbage-root-block'); - } - - private function get_dom(string $html, bool $add_outer_html=TRUE): DOMDocument - { - $use_internal_errors = libxml_use_internal_errors(TRUE); - $dom = new DOMDocument; - $dom->resolveExternals = FALSE; - $dom->preserveWhiteSpace = TRUE; - $dom->strictErrorChecking = FALSE; - $dom->formatOutput = TRUE; - $dom->recover = TRUE; - $dom->validateOnParse = TRUE; - $dom->substituteEntities = FALSE; - $html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'); - $options = 0; - if(!$add_outer_html) - { - $options = LIBXML_HTML_NOIMPLIED; - } - $options = $options | LIBXML_HTML_NODEFDTD; - $loaded = @$dom->loadHTML('' . $html, $options); - if(!$loaded) - { - $dom = FALSE; - $this->errors = libxml_get_errors(); - } - else - { - foreach($dom->childNodes as $item) - { - if($item->nodeType == XML_PI_NODE) - { - $dom->removeChild($item); - } - } - $dom->encoding = 'UTF-8'; - } - libxml_clear_errors(); - libxml_use_internal_errors($use_internal_errors); - return $dom; - } - - private function remove_outer_html(string $content): string - { - $return = $content; - $doc = $this->get_dom($content); - if($doc !== FALSE) - { - if($doc->doctype !== NULL) - { - $doc->doctype->parentNode->removeChild($doc->doctype); - } - $html = $doc->getElementsByTagName('html')->item(0); - if($html !== NULL) - { - $fragment = $doc->createDocumentFragment(); - while($html->childNodes->length > 0) - { - $childNode = $html->childNodes->item(0); - $fragment->appendChild($childNode); - } - $html->parentNode->replaceChild($fragment, $html); - } - $body = $doc->getElementsByTagName('body')->item(0); - if($body !== NULL) - { - $return = ''; - $fragment = $doc->createDocumentFragment(); - while($body->childNodes->length > 0) - { - $childNode = $body->childNodes->item(0); - $fragment->appendChild($childNode); - $return .= $doc->saveHTML($childNode); - } - $body->parentNode->replaceChild($fragment, $body); - } - else - { - $return = $doc->saveHTML(); - } - } - return $return; - } - - private function remove_block(string $content, string $class='tinymce-generated-root-block'): string - { - $return = $content; - $doc = $this->get_dom($content); - if($doc != FALSE) - { - $xpath = ($doc != FALSE) ? new DomXpath($doc) : FALSE; - if($xpath != FALSE) - { - $path = '//*[contains(concat(" ", normalize-space(@class), " "), "'.$class.'")]'; - $nodes = $xpath->query($path); - $nodes_idx = ($nodes != FALSE) ? $nodes->length : 0; - if($nodes_idx > 0) - { - foreach($nodes as $node) - { - $fragment = $doc->createDocumentFragment(); - while($node->childNodes->length > 0) - { - $childNode = $node->childNodes->item(0); - if($childNode->nodeType == XML_TEXT_NODE) - { - $fragment->appendChild($doc->createTextNode($childNode->nodeValue)); - $childNode->parentNode->removeChild($childNode); - } - else - { - $fragment->appendChild($childNode); - } - } - $node->parentNode->replaceChild($fragment, $node); - } - $return = $doc->saveHTML(); - } - } - } - return $return; - } -} -?> ---EXPECT-- -bool(true)