0
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2024-12-22 16:31:53 +00:00

Partial border-radius support.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
This commit is contained in:
Edward Z. Yang 2016-06-30 22:22:13 -04:00
parent 1675fc7caf
commit 44baee6a82
4 changed files with 20 additions and 2 deletions

3
NEWS
View File

@ -18,6 +18,9 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier
! Full PHP 7 compatibility, the test suite is ALL GO. ! Full PHP 7 compatibility, the test suite is ALL GO.
! %CSS.AllowDuplicates permits duplicate CSS properties. ! %CSS.AllowDuplicates permits duplicate CSS properties.
! Support for 'tel' URIs. ! Support for 'tel' URIs.
! Partial support for 'border-radius' properties when %CSS.AllowProprietary is true.
The slash syntax, i.e., 'border-radius: 2em 1em 4em / 0.5em 3em' is not
yet supported.
- alt truncation could result in malformed UTF-8 sequence. Don't - alt truncation could result in malformed UTF-8 sequence. Don't
truncate. Thanks Brandon Farber for reporting. truncate. Thanks Brandon Farber for reporting.
- Linkify regex is smarter, based off of Gruber's regex. - Linkify regex is smarter, based off of Gruber's regex.

View File

@ -44,12 +44,12 @@
</directive> </directive>
<directive id="CSS.AllowedProperties"> <directive id="CSS.AllowedProperties">
<file name="HTMLPurifier/CSSDefinition.php"> <file name="HTMLPurifier/CSSDefinition.php">
<line>447</line> <line>460</line>
</file> </file>
</directive> </directive>
<directive id="CSS.ForbiddenProperties"> <directive id="CSS.ForbiddenProperties">
<file name="HTMLPurifier/CSSDefinition.php"> <file name="HTMLPurifier/CSSDefinition.php">
<line>463</line> <line>476</line>
</file> </file>
</directive> </directive>
<directive id="Cache.DefinitionImpl"> <directive id="Cache.DefinitionImpl">

View File

@ -370,6 +370,19 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
); );
$this->info['page-break-inside'] = new HTMLPurifier_AttrDef_Enum(array('auto', 'avoid')); $this->info['page-break-inside'] = new HTMLPurifier_AttrDef_Enum(array('auto', 'avoid'));
$border_radius = new HTMLPurifier_AttrDef_CSS_Composite(
array(
new HTMLPurifier_AttrDef_CSS_Percentage(true), // disallow negative
new HTMLPurifier_AttrDef_CSS_Length('0') // disallow negative
));
$this->info['border-top-left-radius'] =
$this->info['border-top-right-radius'] =
$this->info['border-bottom-right-radius'] =
$this->info['border-bottom-left-radius'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_radius, 2);
// TODO: support SLASH syntax
$this->info['border-radius'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_radius, 4);
} }
/** /**

View File

@ -133,6 +133,8 @@ class HTMLPurifier_AttrDef_CSSTest extends HTMLPurifier_AttrDefHarness
$this->assertDef('-khtml-opacity:.2;'); $this->assertDef('-khtml-opacity:.2;');
$this->assertDef('filter:alpha(opacity=20);'); $this->assertDef('filter:alpha(opacity=20);');
$this->assertDef('border-top-left-radius:55pt 25pt;');
} }
public function testImportant() public function testImportant()