diff options
-rw-r--r-- | includes/common.inc | 10 | ||||
-rw-r--r-- | modules/simpletest/tests/common.test | 2 |
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.')); |