+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>Plugin: htmldataprocessor</title>\r
- <link rel="stylesheet" type="text/css" href="../../test.css" />\r
- <script type="text/javascript" src="../../../ckeditor.js"></script>\r
- <script type="text/javascript" src="../../test.js"></script>\r
- <script type="text/javascript">\r
- //<![CDATA[\r
-\r
-// Load the required plugins and launch the runner.\r
-CKEDITOR.test.deferRunner = true;\r
-CKEDITOR.plugins.load( 'htmldataprocessor' , function()\r
-{\r
- CKEDITOR.test.runner.run();\r
-} );\r
-\r
-var testCase;\r
-\r
-CKEDITOR.test.addTestCase( testCase = (function()\r
-{\r
- // Local references.\r
- var assert = CKEDITOR.test.assert;\r
- var doc = new CKEDITOR.dom.document( document );\r
-\r
- // In these tests, we may "reset" the writer rules to avoid it formatting\r
- // the output, making the assertion easier to the done. We don't need to\r
- // test formatting features here, so this is ok.\r
- var getDataProcessor = function()\r
- {\r
- var dataProcessor = new CKEDITOR.htmlDataProcessor();\r
- dataProcessor.writer._.rules = [];\r
- return dataProcessor;\r
- };\r
-\r
- /**\r
- * IE always returning CRLF for linefeed, so remove it when retrieve pre-formated text from text area.\r
- * @param {Object} id\r
- */\r
- function getTextAreaValue( id )\r
- {\r
- return CKEDITOR.document.getById( id ).getValue().replace(/\r/gi,'');\r
- }\r
-\r
- // These tests go far beyond the strict htmlDataProcessor code testing. We\r
- // are actually testing the entire parsing system here. The combination of\r
- // htmlParser and htmlWriter inside htmlDataProcessor is useful in this\r
- // sense.\r
-\r
- return {\r
- test_toDataFormat_1a : function()\r
- {\r
- var element = new CKEDITOR.dom.element.createFromHtml( '<div><p>Test</p></div>' );\r
-\r
- assert.areSame( '<p>Test</p>', getDataProcessor().toDataFormat( element.getHtml() ) );\r
- },\r
-\r
- test_toDataFormat_1b : function()\r
- {\r
- var element = new CKEDITOR.dom.element.createFromHtml( '<div><x:x>Test</x:x></div>' );\r
-\r
- // IE adds the XML namespace tag.\r
- if ( CKEDITOR.env.ie )\r
- assert.areSame( '<?xml:namespace prefix="x" /><x:x>Test</x:x>', getDataProcessor().toDataFormat( element.getHtml() ) );\r
- else\r
- assert.areSame( '<x:x>Test</x:x>', getDataProcessor().toDataFormat( element.getHtml() ) );\r
- },\r
-\r
- test_toDataFormat_2a : function()\r
- {\r
- var element = new CKEDITOR.dom.element.createFromHtml( '<div><br /><p>Test</p></div>' );\r
-\r
- assert.areSame( '<br /><p>Test</p>', getDataProcessor().toDataFormat( element.getHtml() ) );\r
- },\r
-\r
- test_toDataFormat_2b : function()\r
- {\r
- var element = new CKEDITOR.dom.element.createFromHtml( '<div><x:x></x:x><p>Test</p></div>' );\r
-\r
- // IE adds the XML namespace tag.\r
- if ( CKEDITOR.env.ie )\r
- assert.areSame( '<?xml:namespace prefix="x" /><x:x></x:x><p>Test</p>', getDataProcessor().toDataFormat( element.getHtml() ) );\r
- else\r
- assert.areSame( '<x:x></x:x><p>Test</p>', getDataProcessor().toDataFormat( element.getHtml() ) );\r
- },\r
-\r
- test_toDataFormat_3 : function()\r
- {\r
- assert.areSame( '<div><x:x><p>Test</p></x:x></div>', getDataProcessor().toDataFormat( '<div><x:x><p>Test</p></div>' ) );\r
- },\r
-\r
- test_toDataFormat_ticket_2774 : function()\r
- {\r
- var element = new CKEDITOR.dom.element.createFromHtml( '<div><P class=MsoNormal><B><I><SPAN lang=EN-US><o:p>Test</o:p></SPAN></I></B></P></div>' );\r
-\r
- // IE adds the XML namespace tag.\r
- if ( CKEDITOR.env.ie )\r
- assert.areSame( '<p class="MsoNormal"><b><i><span lang="EN-US"><?xml:namespace prefix="o" /><o:p>Test</o:p></span></i></b></p>', getDataProcessor().toDataFormat( element.getHtml() ) );\r
- else\r
- assert.areSame( '<p class="MsoNormal"><b><i><span lang="EN-US"><o:p>Test</o:p></span></i></b></p>', getDataProcessor().toDataFormat( element.getHtml() ) );\r
- },\r
-\r
- test_toDataFormat_ticket_3036_1 : function()\r
- {\r
- assert.areSame( '<input autocomplete="off" checked="checked" type="checkbox" />',\r
- getDataProcessor().toDataFormat( '<INPUT type="checkbox" CHECKED autocomplete=off>' ) );\r
- },\r
-\r
- test_toDataFormat_ticket_3036_2 : function()\r
- {\r
- assert.areSame( '<input autocomplete="off" type="checkbox" unknown="" />',\r
- getDataProcessor().toDataFormat( '<INPUT type="checkbox" UNKNOWN autocomplete=off>' ) );\r
- },\r
-\r
- test_toDataFormat_ticket_2886_1 : function()\r
- {\r
- var editor = CKEDITOR.instances.editor1;\r
- var test = this;\r
- var isReady = !!editor.dataProcessor;\r
-\r
- if ( !isReady )\r
- {\r
- editor.on( 'instanceReady', function()\r
- {\r
- isReady = true;\r
- } );\r
- }\r
-\r
- this.wait( function()\r
- {\r
- if ( !isReady )\r
- {\r
- test.wait( arguments.callee, 100 );\r
- return;\r
- }\r
-\r
- assert.areSame( '<p>\n\t </p>\n',\r
- editor.dataProcessor.toDataFormat( '<p></p>' ) );\r
- }, 100 );\r
- },\r
-\r
- test_toDataFormat_ticket_2886_2 : function()\r
- {\r
- var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;\r
-\r
- var source = '<p>Some text<br><br><br></p>';\r
- if ( CKEDITOR.env.ie )\r
- source = '<p>Some text<br><br></p>';\r
- assert.areSame( '<p>\n\tSome text<br />\n\t<br />\n\t </p>\n',\r
- dataProcessor.toDataFormat( source ) );\r
- },\r
-\r
- test_toDataFormat_ticket_2886_3 : function()\r
- {\r
- var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;\r
-\r
- assert.areSame( '<p>\n\tSome text<br />\n\t<br />\n\t<br />\n\tSome more text</p>\n',\r
- dataProcessor.toDataFormat( '<p>Some text<br><br><br>Some more text</p>' ) );\r
- },\r
-\r
- test_toDataFormat_ticket_2886_4 : function()\r
- {\r
- var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;\r
-\r
- assert.areSame( '<p>\n\tSome text<br />\n\t<br />\n\t </p>\n',\r
- dataProcessor.toDataFormat( '<p>Some text<br><br> </p>' ) );\r
- },\r
-\r
- test_toDataFormat_ticket_2886_5 : function()\r
- {\r
- if ( CKEDITOR.env.ie )\r
- return;\r
-\r
- var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;\r
-\r
- assert.areSame( '<p>\n\t </p>\n',\r
- dataProcessor.toDataFormat( '<p><br></p>' ) );\r
- },\r
-\r
- test_toDataFormat_ticket_2886_6 : function()\r
- {\r
- var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;\r
-\r
- var source = '<p><br><br></p>';\r
- if ( CKEDITOR.env.ie )\r
- source = '<p><br></p>';\r
-\r
- assert.areSame( '<p>\n\t<br />\n\t </p>\n',\r
- dataProcessor.toDataFormat( source ) );\r
- },\r
-\r
- test_toHtml_ticket_2886_1 : function()\r
- {\r
- var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;\r
-\r
- var expected = '<p><br /></p>';\r
- if ( CKEDITOR.env.ie )\r
- expected = '<p>\xa0</p>';\r
- assert.areSame( expected, dataProcessor.toHtml( '<p></p>' ) );\r
- },\r
-\r
- test_toHtml_ticket_2886_2 : function()\r
- {\r
- var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;\r
-\r
- var expected = '<p>Some text<br />Some other text</p>';\r
- assert.areSame( expected, dataProcessor.toHtml( '<p>Some text<br>Some other text</p>' ) );\r
- },\r
-\r
- test_toHtml_ticket_2886_3 : function()\r
- {\r
- var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;\r
-\r
- var expected = '<p>Some text<br /><br /></p>';\r
- if ( CKEDITOR.env.ie )\r
- expected = '<p>Some text<br />\xa0</p>';\r
- assert.areSame( expected, dataProcessor.toHtml( '<p>Some text<br> </p>' ) );\r
- },\r
-\r
- test_toHtml_ticket_2886_4 : function()\r
- {\r
- var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;\r
-\r
- var expected = '<p>Some text</p>';\r
- assert.areSame( expected, dataProcessor.toHtml( '<p>Some text<br></p>' ));\r
- },\r
-\r
- test_ticket_3407 : function()\r
- {\r
- var editor = CKEDITOR.instances.editor1,\r
- dataProcessor = editor.dataProcessor,\r
- config = editor.config;\r
-\r
- config.protectedSource.push( /<\?[\s\S]*?\?>/g ); // PHP Code\r
- config.protectedSource.push( /<%[\s\S]*?%>/g ); // ASP Code\r
- config.protectedSource.push( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ); // ASP.Net Code\r
- dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();\r
- var html = getTextAreaValue( '_TEXTAREA1' );\r
- var protectedHtml = dataProcessor.toHtml( html );\r
- assert.areSame( html , dataProcessor.toDataFormat( protectedHtml ) );\r
- },\r
-\r
- test_ticket_3591 : function()\r
- {\r
- var editor = CKEDITOR.instances.editor1,\r
- dataProcessor = editor.dataProcessor;\r
-\r
- dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();\r
- var html = getTextAreaValue( '_TEXTAREA_3591' );\r
- var protectedHtml = dataProcessor.toHtml( html );\r
-\r
- assert.areSame( getTextAreaValue( CKEDITOR.env.ie ? '_TEXTAREA_3591_protected_ie' : '_TEXTAREA_3591_protected' ),\r
- protectedHtml );\r
- assert.areSame( getTextAreaValue( '_TEXTAREA_3591' ),\r
- dataProcessor.toDataFormat( protectedHtml ) );\r
- },\r
-\r
- test_ticket_3591_2 : function()\r
- {\r
- var editor = CKEDITOR.instances.editor1,\r
- dataProcessor = editor.dataProcessor;\r
-\r
- dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();\r
- dataProcessor.writer.sortAttributes = true;\r
-\r
- var html = getTextAreaValue( '_TEXTAREA_3591_2' );\r
- var protectedHtml = dataProcessor.toHtml( html );\r
-\r
- assert.areSame( getTextAreaValue( '_TEXTAREA_3591_2' ),\r
- dataProcessor.toDataFormat( protectedHtml ) );\r
- },\r
-\r
- test_ticket_3869_1 : function()\r
- {\r
- var editor = CKEDITOR.instances.editor1,\r
- dataProcessor = editor.dataProcessor;\r
-\r
- dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();\r
- var html = getTextAreaValue( '_TEXTAREA_3869_1' );\r
- var protectedHtml = dataProcessor.toHtml( html );\r
-\r
- assert.areSame( html , dataProcessor.toDataFormat( protectedHtml ) );\r
- },\r
-\r
- test_ticket_3869_2 : function()\r
- {\r
- var editor = CKEDITOR.instances.editor1,\r
- dataProcessor = editor.dataProcessor,\r
- config = editor.config;\r
-\r
- config.protectedSource.push( /<\?[\s\S]*?\?>/g ); // PHP Code\r
- config.protectedSource.push( /<%[\s\S]*?%>/g ); // ASP Code\r
- config.protectedSource.push( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ); // ASP.Net Code\r
- config.protectedSource.push(/<gallery[\s\S]*?<\/gallery>/gi ); // custom protected source\r
- config.protectedSource.push(/<options[\s\S]*?<\/options>/gi );\r
- dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();\r
- var html = getTextAreaValue( '_TEXTAREA_3869_2' );\r
- var protectedHtml = dataProcessor.toHtml( html );\r
-\r
- assert.areSame( html , dataProcessor.toDataFormat( protectedHtml ) );\r
- },\r
-\r
- /**\r
- * Test empty value attributes.\r
- */\r
- test_ticket_3884 : function()\r
- {\r
- var editor = CKEDITOR.instances.editor1,\r
- dataProcessor = editor.dataProcessor;\r
- dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();\r
- dataProcessor.writer.sortAttributes = true;\r
-\r
- assert.areSame( '<p><a href="" name="">emptylink</a></p>',\r
- dataProcessor.toDataFormat( dataProcessor.toHtml( '<p><a href="" name="">emptylink</a></p>' ) ) );\r
- },\r
-\r
- test_innerHtmlComments_ticket_3801 : function()\r
- {\r
- var editor = CKEDITOR.instances.editor1,\r
- dataProcessor = editor.dataProcessor;\r
-\r
- dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();\r
-\r
- for ( var i = 1; i <= 7; i++ )\r
- {\r
- var html = getTextAreaValue( '_TEXTAREA_3801_' + i );\r
- var protectedHtml = dataProcessor.toHtml( html );\r
-\r
- assert.areSame( getTextAreaValue( '_TEXTAREA_3801_' + i ),\r
- dataProcessor.toDataFormat( protectedHtml ) );\r
- }\r
- },\r
-\r
- name : document.title\r
- };\r
-})() );\r
-\r
-//window.onload = testCase.test_ticket_3884;\r
- //]]>\r
- </script>\r
-</head>\r
-<body>\r
- <textarea id="editor1" class="ckeditor" cols="80" rows="10"></textarea>\r
- <textarea id="_TEXTAREA1"><script type="text/javascript">alert('>');</script><table><tbody><tr><!--- IE doesn't handle this comment ---><!--[if gte IE 6 ]>\r
- <![if lt IE 8 ]>\r
- gIE conditional comments\r
-<![endif]>\r
-<![endif]--><td><%Response.Write(now())%></td><td><asp:control_name id="some_id" runat="server"/></td><td><?php\r
-include ("head.html"); ?></td></tr></tbody></table><noscript>Your browser doesn't support JavaScript</noscript></textarea>\r
- <textarea id="_TEXTAREA_3591"><object><param /><param /><embed></embed></object></textarea>\r
- <textarea id="_TEXTAREA_3591_protected"><cke:object><cke:param></cke:param><cke:param></cke:param><cke:embed></cke:embed></cke:object></textarea>\r
- <textarea id="_TEXTAREA_3591_protected_ie"><?xml:namespace prefix="cke" /><cke:object><cke:param></cke:param><cke:param></cke:param><cke:embed></cke:embed></cke:object></textarea>\r
- <textarea id="_TEXTAREA_3801_1"><!-- foo --><p>bar</p></textarea>\r
- <textarea id="_TEXTAREA_3801_2"><p><!-- foo -->bar</p></textarea>\r
- <textarea id="_TEXTAREA_3801_3"><!-- foo --><p><!-- foo -->bar</p></textarea>\r
- <textarea id="_TEXTAREA_3801_4"><p>bar</p><!-- foo --></textarea>\r
- <textarea id="_TEXTAREA_3801_5">bar<!-- foo --></textarea>\r
- <textarea id="_TEXTAREA_3801_6"><!-- foo -->bar</textarea>\r
- <textarea id="_TEXTAREA_3801_7"><p><!-- foo -->bar</p><p><!-- foo -->bar</p></textarea>\r
- <textarea id="_TEXTAREA_3869_1">#3869<script language="Javascript" type="text/javascript">\r
- <!--\r
- alert('-->');\r
- //-->\r
- </script></textarea>\r
- <textarea id="_TEXTAREA_3869_2">#3869<gallery>\r
- file.jpg\r
- <options name="test1" value="value1"></options>\r
- <options name="test2" value="value2"></options>\r
- </gallery><?\r
- echo '<script type="text/javascript">';\r
- echo '<!--alert("-->");//-->';\r
- echo '</script>';\r
- ?><!--<%Response.Write(now())%>//-->invalid<?\r
- echo 'bbb<script>\r
- <!--\r
- ccc();<!-- </script><!-- </script>\r
- //--></script>\r
- <script><!--\r
- <!--\r
- ffff();\r
- //--></script>\r
- ddd';\r
- ?>html</textarea>\r
- <textarea id="_TEXTAREA_3591_2"><object classid="clsid"><param name="movie" value="movie.swf" /><embed src="movie.swf" type="application/x-shockwave-flash"></embed></object></textarea>\r
-</body>\r
-</html>\r