mediaQueryListMatcher = $mediaQueryListMatcher; } /** * Access the list of rule sanitizers * @return RuleSanitizer[] */ public function getRuleSanitizers() { return $this->ruleSanitizers; } /** * Set the list of rule sanitizers * @param RuleSanitizer[] $ruleSanitizers */ public function setRuleSanitizers( array $ruleSanitizers ) { Util::assertAllInstanceOf( $ruleSanitizers, RuleSanitizer::class, '$ruleSanitizers' ); $this->ruleSanitizers = $ruleSanitizers; } public function handlesRule( Rule $rule ) { return $rule instanceof AtRule && !strcasecmp( $rule->getName(), 'media' ); } protected function doSanitize( CSSObject $object ) { if ( !$object instanceof Rule || !$this->handlesRule( $object ) ) { $this->sanitizationError( 'expected-at-rule', $object, [ 'media' ] ); return null; } if ( $object->getBlock() === null ) { $this->sanitizationError( 'at-rule-block-required', $object, [ 'media' ] ); return null; } // Test the media query $match = $this->mediaQueryListMatcher->match( $object->getPrelude(), [ 'mark-significance' => true ] ); if ( !$match ) { $cv = Util::findFirstNonWhitespace( $object->getPrelude() ) ?: $object->getPrelude(); $this->sanitizationError( 'invalid-media-query', $cv ); return null; } $ret = clone( $object ); $this->fixPreludeWhitespace( $ret, false ); $this->sanitizeRuleBlock( $ret->getBlock(), $this->ruleSanitizers ); return $ret; } }