summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/common.inc10
-rw-r--r--modules/simpletest/tests/common.test2
2 files changed, 11 insertions, 1 deletions
diff --git a/includes/common.inc b/includes/common.inc
index acc65af5f..f1b153781 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -3152,6 +3152,12 @@ function drupal_pre_render_styles($elements) {
// URL changed.
$query_string = variable_get('css_js_query_string', '0');
+ // For inline CSS to validate as XHTML, all CSS containing XHTML needs to be
+ // wrapped in CDATA. To make that backwards compatible with HTML 4, we need to
+ // comment out the CDATA-tag.
+ $embed_prefix = "\n<!--/*--><![CDATA[/*><!--*/\n";
+ $embed_suffix = "\n/*]]>*/-->\n";
+
// Defaults for LINK and STYLE elements.
$link_element_defaults = array(
'#type' => 'html_tag',
@@ -3259,6 +3265,8 @@ function drupal_pre_render_styles($elements) {
if (isset($group['data'])) {
$element = $style_element_defaults;
$element['#value'] = $group['data'];
+ $element['#value_prefix'] = $embed_prefix;
+ $element['#value_suffix'] = $embed_suffix;
$element['#attributes']['media'] = $group['media'];
$element['#browsers'] = $group['browsers'];
$elements[] = $element;
@@ -3267,6 +3275,8 @@ function drupal_pre_render_styles($elements) {
foreach ($group['items'] as $item) {
$element = $style_element_defaults;
$element['#value'] = $item['data'];
+ $element['#value_prefix'] = $embed_prefix;
+ $element['#value_suffix'] = $embed_suffix;
$element['#attributes']['media'] = $item['media'];
$element['#browsers'] = $group['browsers'];
$elements[] = $element;
diff --git a/modules/simpletest/tests/common.test b/modules/simpletest/tests/common.test
index 9dc2532ab..6c1492e75 100644
--- a/modules/simpletest/tests/common.test
+++ b/modules/simpletest/tests/common.test
@@ -654,7 +654,7 @@ class CascadingStylesheetsTestCase extends DrupalWebTestCase {
*/
function testRenderInlinePreprocess() {
$css = 'body { padding: 0px; }';
- $css_preprocessed = '<style type="text/css" media="all">' . drupal_load_stylesheet_content($css, TRUE) . '</style>';
+ $css_preprocessed = '<style type="text/css" media="all">' . "\n<!--/*--><![CDATA[/*><!--*/\n" . drupal_load_stylesheet_content($css, TRUE) . "\n/*]]>*/-->\n" . '</style>';
drupal_add_css($css, array('type' => 'inline'));
$styles = drupal_get_css();
$this->assertEqual(trim($styles), $css_preprocessed, t('Rendering preprocessed inline CSS adds it to the page.'));