/** * @dataProvider get_data */ public function test_converter($source, $expected) { $dom = AMP_DOM_Utils::get_dom_from_content($source); $sanitizer = new AMP_Video_Sanitizer($dom); $sanitizer->sanitize(); $content = AMP_DOM_Utils::get_content_from_dom($dom); $this->assertEquals($expected, $content); }
public function test__get_content_from_dom__br_no_closing_tag() { $source = '<br/>'; $expected = '<br/>'; $dom = AMP_DOM_Utils::get_dom_from_content($source); $actual = AMP_DOM_Utils::get_content_from_dom($dom); $this->assertEquals($expected, $actual); }
public function test_utf8_content() { $source = '<p>Iñtërnâtiônàlizætiøn</p>'; $expected = '<p>Iñtërnâtiônàlizætiøn</p>'; $dom = AMP_DOM_Utils::get_dom_from_content($source); $content = AMP_DOM_Utils::get_content_from_dom($dom); $this->assertEquals($expected, $content); }
public function test__args__placeholder() { $source = '<iframe src="https://example.com/video/132886713" width="500" height="281"></iframe>'; $expected = '<amp-iframe src="https://example.com/video/132886713" width="500" height="281" sandbox="allow-scripts allow-same-origin" sizes="(min-width: 500px) 500px, 100vw" class="amp-wp-enforced-sizes"><div placeholder="" class="amp-wp-iframe-placeholder"></div></amp-iframe>'; $dom = AMP_DOM_Utils::get_dom_from_content($source); $sanitizer = new AMP_Iframe_Sanitizer($dom, array('add_placeholder' => true)); $sanitizer->sanitize(); $content = AMP_DOM_Utils::get_content_from_dom($dom); $this->assertEquals($expected, $content); }
public function test__https_required() { $source = '<audio width="400" height="300" src="http://example.com/audio/file.ogg"></audio>'; $expected = ''; $dom = AMP_DOM_Utils::get_dom_from_content($source); $sanitizer = new AMP_Audio_Sanitizer($dom, array('require_https_src' => true)); $sanitizer->sanitize(); $content = AMP_DOM_Utils::get_content_from_dom($dom); $this->assertEquals($expected, $content); }
/** * @dataProvider get_data */ public function test_sanitizer($source, $expected_content, $expected_stylesheet) { $dom = AMP_DOM_Utils::get_dom_from_content($source); $sanitizer = new AMP_Style_Sanitizer($dom); $sanitizer->sanitize(); // Test content $content = AMP_DOM_Utils::get_content_from_dom($dom); $this->assertEquals($expected_content, $content); // Test stylesheet $stylesheet = $sanitizer->get_styles(); $this->assertEquals($expected_stylesheet, $stylesheet); }
private function sanitize($content) { $dom = AMP_DOM_Utils::get_dom_from_content($content); foreach ($this->sanitizer_classes as $sanitizer_class => $args) { $sanitizer = new $sanitizer_class($dom, array_merge($this->args, $args)); if (!is_subclass_of($sanitizer, 'AMP_Base_Sanitizer')) { _doing_it_wrong(__METHOD__, sprintf(__('Sanitizer (%s) must extend `AMP_Base_Sanitizer`', 'amp'), esc_html($sanitizer_class)), '0.1'); continue; } $sanitizer->sanitize(); $this->add_scripts($sanitizer->get_scripts()); } return AMP_DOM_Utils::get_content_from_dom($dom); }
public function transform() { $content = $this->original_content; $twitter_embed = new AMP_Twitter_Embed_Handler(); $youtube_embed = new AMP_YouTube_Embed_Handler(); $gallery_embed = new AMP_Gallery_Embed_Handler(); $instagram_embed = new AMP_Instagram_Embed_Handler(); $content = apply_filters('the_content', $content); $this->add_scripts($twitter_embed->get_scripts()); $this->add_scripts($youtube_embed->get_scripts()); $this->add_scripts($gallery_embed->get_scripts()); $this->add_scripts($instagram_embed->get_scripts()); $dom = AMP_DOM_Utils::get_dom_from_content($content); $this->sanitize(new AMP_Blacklist_Sanitizer($dom, $this->args)); $this->sanitize(new AMP_Img_Sanitizer($dom, $this->args)); $this->sanitize(new AMP_Video_Sanitizer($dom, $this->args)); $this->sanitize(new AMP_Iframe_Sanitizer($dom, $this->args)); $this->sanitize(new AMP_Audio_Sanitizer($dom, $this->args)); $content = AMP_DOM_Utils::get_content_from_dom($dom); return $content; }
public static function sanitize($content, $sanitizer_classes, $args = array()) { $scripts = array(); $styles = array(); $dom = AMP_DOM_Utils::get_dom_from_content($content); foreach ($sanitizer_classes as $sanitizer_class => $args) { if (!class_exists($sanitizer_class)) { _doing_it_wrong(__METHOD__, sprintf(__('Sanitizer (%s) class does not exist', 'amp'), esc_html($sanitizer_class)), '0.4.1'); continue; } $sanitizer = new $sanitizer_class($dom, array_merge($args, $args)); if (!is_subclass_of($sanitizer, 'AMP_Base_Sanitizer')) { _doing_it_wrong(__METHOD__, sprintf(__('Sanitizer (%s) must extend `AMP_Base_Sanitizer`', 'amp'), esc_html($sanitizer_class)), '0.1'); continue; } $sanitizer->sanitize(); $scripts = array_merge($scripts, $sanitizer->get_scripts()); $styles = array_merge($styles, $sanitizer->get_styles()); } $sanitized_content = AMP_DOM_Utils::get_content_from_dom($dom); return array($sanitized_content, $scripts, $styles); }