Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/html-api/class-wp-html-processor.php
r59392 r59399 1179 1179 1180 1180 switch ( $token_type ) { 1181 case '#doctype': 1182 $doctype = $this->get_doctype_info(); 1183 if ( null === $doctype ) { 1184 break; 1185 } 1186 1187 $html .= '<!DOCTYPE'; 1188 1189 if ( $doctype->name ) { 1190 $html .= " {$doctype->name}"; 1191 } 1192 1193 if ( null !== $doctype->public_identifier ) { 1194 $html .= " PUBLIC \"{$doctype->public_identifier}\""; 1195 } 1196 if ( null !== $doctype->system_identifier ) { 1197 if ( null === $doctype->public_identifier ) { 1198 $html .= ' SYSTEM'; 1199 } 1200 $html .= " \"{$doctype->system_identifier}\""; 1201 } 1202 $html .= '>'; 1203 break; 1204 1181 1205 case '#text': 1182 1206 $html .= htmlspecialchars( $this->get_modifiable_text(), ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5, 'UTF-8' ); … … 1194 1218 case '#cdata-section': 1195 1219 $html .= "<![CDATA[{$this->get_modifiable_text()}]]>"; 1196 break;1197 1198 case 'html':1199 $html .= '<!DOCTYPE html>';1200 1220 break; 1201 1221 } -
trunk/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php
r59076 r59399 285 285 ); 286 286 } 287 288 /** 289 * @ticket 62396 290 * 291 * @dataProvider data_provider_serialize_doctype 292 */ 293 public function test_full_document_serialize_includes_doctype( string $doctype_input, string $doctype_output ) { 294 $processor = WP_HTML_Processor::create_full_parser( 295 "{$doctype_input}👌" 296 ); 297 $this->assertSame( 298 "{$doctype_output}<html><head></head><body>👌</body></html>", 299 $processor->serialize() 300 ); 301 } 302 303 /** 304 * Data provider. 305 * 306 * @return array[] 307 */ 308 public static function data_provider_serialize_doctype() { 309 return array( 310 'None' => array( '', '' ), 311 'Empty' => array( '<!DOCTYPE>', '<!DOCTYPE>' ), 312 'HTML5' => array( '<!DOCTYPE html>', '<!DOCTYPE html>' ), 313 'Strange name' => array( '<!DOCTYPE WordPress>', '<!DOCTYPE wordpress>' ), 314 'With public' => array( '<!DOCTYPE html PUBLIC "x">', '<!DOCTYPE html PUBLIC "x">' ), 315 'With system' => array( '<!DOCTYPE html SYSTEM "y">', '<!DOCTYPE html SYSTEM "y">' ), 316 'With public and system' => array( '<!DOCTYPE html PUBLIC "x" "y">', '<!DOCTYPE html PUBLIC "x" "y">' ), 317 'Weird casing' => array( '<!docType HtmL pubLIc\'xxx\'"yyy" all this is ignored>', '<!DOCTYPE html PUBLIC "xxx" "yyy">' ), 318 ); 319 } 287 320 }
Note: See TracChangeset
for help on using the changeset viewer.