Imported CKEDITOR 3.0

Monotone-Parent: 5f9c08dd6b5b34d815ddb2108abbf4055e846934
Monotone-Revision: b2cf7eda0ef8f15fb6e78f8c38a7406a47bcdd2f

Monotone-Author: crobert@inverse.ca
Monotone-Date: 2009-08-26T14:03:12
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
C Robert
2009-08-26 14:03:12 +00:00
parent 4d1a003124
commit 0ce87017d6
329 changed files with 5266 additions and 3451 deletions
@@ -7,8 +7,17 @@
<script type="text/javascript" src="../test.js"></script>
<script type="text/javascript">
//<![CDATA[
// Clean up all instances been created on the page.
function removeAllInstances()
{
var allInstances = CKEDITOR.instances;
for( var i in allInstances )
{
CKEDITOR.remove( allInstances[ i ] );
}
}
CKEDITOR.test.addTestCase( (function()
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
@@ -125,6 +134,11 @@ CKEDITOR.test.addTestCase( (function()
assert.areSame( editor, CKEDITOR.instances.test_add );
},
setUp : function()
{
removeAllInstances();
},
name : document.title
};
})() );
@@ -1,54 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR 2</title>
<link rel="stylesheet" type="text/css" href="../test.css" />
<script type="text/javascript" src="../../ckeditor.js"></script>
<script type="text/javascript" src="../test.js"></script>
<script type="text/javascript">
//<![CDATA[
var before_loadFullCore = CKEDITOR.status;
CKEDITOR.loadFullCore();
//]]>
</script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
test_status1 : function()
{
assert.areSame( 'basic_loaded', before_loadFullCore );
},
test_status2 : function()
{
var testCase = this;
CKEDITOR.on( 'loaded', function()
{
testCase.resume( function()
{
assert.areSame( 'loaded', CKEDITOR.status );
});
});
this.wait();
},
name : document.title
};
})() );
//]]>
</script>
</head>
<body>
</body>
</html>
@@ -23,7 +23,8 @@ CKEDITOR.test.addTestCase( (function()
test_appendStyleSheet : function()
{
var cssUrl = CKEDITOR.basePath + '_source/tests/_assets/sample.css';
var cssUrl = CKEDITOR.basePath + '_tests/';
cssUrl += '_assets/sample.css';
var doc = new CKEDITOR.dom.document( document );
doc.appendStyleSheet( cssUrl );
@@ -109,8 +109,9 @@ CKEDITOR.test.addTestCase( tc = ( function()
// next tc for this.
if ( CKEDITOR.env.ie )
return;
var element = CKEDITOR.document.getById(
'trimTarget' ).clone( true );
var element = CKEDITOR.dom.element.createFromHtml(
'<div id="trimTarget">\t\ntext\t\n</div>'
);
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
element.moveChildren( frag );
@@ -143,8 +144,9 @@ CKEDITOR.test.addTestCase( tc = ( function()
{
if ( CKEDITOR.env.ie )
return;
var element = CKEDITOR.document.getById(
'trimTarget' ).clone( true );
var element = CKEDITOR.dom.element.createFromHtml(
'<div id="trimTarget">\t\ntext\t\n</div>'
);
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
element.moveChildren( frag );
@@ -179,8 +181,9 @@ CKEDITOR.test.addTestCase( tc = ( function()
{
if ( !CKEDITOR.env.ie )
return;
var element =
CKEDITOR.document.getById( 'trimTarget' ).clone( true );
var element = CKEDITOR.dom.element.createFromHtml(
'<div id="trimTarget">\t\ntext\t\n</div>'
);
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
element.moveChildren( frag );
@@ -284,9 +287,6 @@ CKEDITOR.test.addTestCase( tc = ( function()
<div id="fragmentContainer1"></div>
<div id="fragmentContainer2"><div id="fragmentSibling1"></div></div>
<div id="fragmentContainer3"></div>
<div id="trimTarget">
text
</div>
<iframe id="innerFrame" name="innerFrame" src="about:blank"></iframe>
</body>
</html>
@@ -81,6 +81,12 @@ CKEDITOR.test.addTestCase( (function()
assert.areEqual( 'My test', element.$.innerHTML, 'the innerHTML doesn\'t match' );
},
test_createFromHtml2 : function()
{
var element = new CKEDITOR.dom.element.createFromHtml( '<div><x:x><p>Test</p></div>' );
assert.areNotEqual( 'Test', element.getChild( 0, 0 ).innerHTML );
},
test_append1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
@@ -170,7 +176,7 @@ CKEDITOR.test.addTestCase( (function()
var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
element.setAttribute( 'style', 'position: absolute;' );
assert.areEqual( 'position: absolute;', element.getAttribute( 'style' ) );
assert.areEqual( 'position: absolute;', CKEDITOR.test.getAttribute( element, 'style' ) );
},
test_setAttribute3 : function()
@@ -199,7 +205,7 @@ CKEDITOR.test.addTestCase( (function()
'rows' : 5 });
assert.areSame( 'Test', document.getElementById( 'test1' ).className, 'class is wrong' );
assert.areEqual( 'position: absolute;', element.getAttribute( 'style'), 'style is wrong' );
assert.areEqual( 'position: absolute;', CKEDITOR.test.getAttribute( element, 'style'), 'style is wrong' );
assert.areEqual( 'TestName', document.getElementById( 'test1' ).name, 'name is wrong' );
assert.areEqual( 5, document.getElementById( 'test1' ).rows, 'rows is wrong' );
},
@@ -372,31 +378,31 @@ CKEDITOR.test.addTestCase( (function()
test_getAttribute_tabindex1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndex10' ) );
assert.areEqual( 10, element.getAttribute( 'tabindex' ) );
assert.areEqual( 10, CKEDITOR.test.getAttribute( element, 'tabindex' ) );
},
test_getAttribute_tabindex2 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexDef' ) );
assert.isNull( element.getAttribute( 'tabindex' ) );
assert.isNull( CKEDITOR.test.getAttribute( element, 'tabindex' ) );
},
test_getAttribute_tabindex3 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexInputDef' ) );
assert.isNull( element.getAttribute( 'tabindex' ) );
assert.isNull( CKEDITOR.test.getAttribute( element, 'tabindex' ) );
},
test_getAttribute_tabindex4 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexInput20' ) );
assert.areEqual( 20, element.getAttribute( 'tabindex' ) );
assert.areEqual( 20, CKEDITOR.test.getAttribute( element, 'tabindex' ) );
},
test_getAttribute_tabindex5 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexScriptDef' ) );
assert.areEqual( null, element.getAttribute( 'tabindex' ) );
assert.areEqual( null, CKEDITOR.test.getAttribute( element, 'tabindex' ) );
},
/**
@@ -406,13 +412,13 @@ CKEDITOR.test.addTestCase( (function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'testExpandoAttributes' ) );
assert.areEqual( 1, element.getAttribute( 'tabindex' ), 'tabindex is wrong' );
assert.areEqual( 1, CKEDITOR.test.getAttribute( element, 'tabindex' ), 'tabindex is wrong' );
element.removeAttribute( 'tabindex' );
assert.areEqual( 'hasExpando', element.getAttribute( 'class' ), 'class is wrong' );
assert.areEqual( 'hasExpando', CKEDITOR.test.getAttribute( element, 'class' ), 'class is wrong' );
element.removeAttribute( 'class' );
assert.areEqual( 'float: right;', element.getAttribute( 'style' ) );
assert.areEqual( 'float: right;', CKEDITOR.test.getAttribute( element, 'style' ) );
element.removeAttribute( 'style' );
element.removeAttribute( 'id' );
@@ -505,12 +511,24 @@ CKEDITOR.test.addTestCase( (function()
assert.isTrue( element.hasAttributes() );
},
/**
* Test detecting of 'class' attribute in IE6/7.
*/
test_hasAttributes_4075 : function()
{
if ( !CKEDITOR.env.ie && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) )
return;
var element = new CKEDITOR.dom.element( 'span' );
element.setAttribute( 'class', 'value' );
assert.isTrue( element.hasAttributes(), 'Failed to detect "class" attribute existence.' );
},
test_getDocumentPosition : function()
{
// Assign the page location of the element.
YAHOO.util.Dom.setXY('DocPositionTarget', [ 350, 450 ] );
var pos = CKEDITOR.document.getById( 'DocPositionTarget' ).getDocumentPosition();
if ( !CKEDITOR.env.ie )
if ( !CKEDITOR.env.ie || CKEDITOR.env.ie8 )
{
assert.areEqual( 350, pos.x, 'Position coordinates:x relative to document doesn\'t match.' );
assert.areEqual( 450, pos.y, 'Position coordinates:y relative to document doesn\'t match.' );
@@ -522,6 +540,19 @@ CKEDITOR.test.addTestCase( (function()
}
},
// Test get last non-spaces child node.
test_getLast : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
var span1 = new CKEDITOR.dom.element( 'span' );
element.append( span1 );
element.append( new CKEDITOR.dom.text( ' ' ) );
element.append( new CKEDITOR.dom.text( ' ' ) );
var last = element.getLast( CKEDITOR.dom.walker.whitespaces( true ) );
assert.areSame( span1.$, last.$ );
},
name : document.title
};
})() );
@@ -112,6 +112,32 @@ CKEDITOR.test.addTestCase( tc = (function()
assert.areSame( CKEDITOR.POSITION_PRECEDING, node1.getPosition( node2 ) );
},
// Test get previous non-spaces node.
test_getPrevious : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
var span1 = new CKEDITOR.dom.element( 'span' );
element.append( span1 );
element.append( new CKEDITOR.dom.text( ' ' ) );
var span2 = new CKEDITOR.dom.element( 'span' );
element.append( span2 );
var previous = span2.getPrevious( CKEDITOR.dom.walker.whitespaces( true ) );
assert.areSame( span1.$, previous.$ );
},
// Test get next non-spaces node.
test_getNext : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
var span1 = new CKEDITOR.dom.element( 'span' );
element.append( span1 );
element.append( new CKEDITOR.dom.text( ' ' ) );
var span2 = new CKEDITOR.dom.element( 'span' );
element.append( span2 );
var next = span1.getNext( CKEDITOR.dom.walker.whitespaces( true ) );
assert.areSame( span2.$, next.$ );
},
name : document.title
};
})() );
@@ -133,5 +159,6 @@ CKEDITOR.test.addTestCase( tc = (function()
<p><b>Sample</b> <i>Text</i></p>
</div>
<span>Another</span>
<p id="append"></p>
</body>
</html>
@@ -1057,6 +1057,20 @@ CKEDITOR.test.addTestCase( (function()
assert.isTrue( range.collapsed, 'range.collapsed' );
},
/**
* Test enlarge list when there's no nodes between
* range start and the block boundary.
*/
test_enlarge_block6 : function()
{
var range = getRange( 'S11', null );
range.enlarge( CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS );
assert.areSame( document.getElementById( '_EnlargeP17' ),
range.startContainer.$, 'range.startContainer' );
assert.areSame( 0, range.startOffset, 'range.startOffset' );
},
test_deleteContents_W3C_1 : function()
{
// W3C DOM Range Specs - Section 2.6 - Example 1
@@ -2382,6 +2396,7 @@ CKEDITOR.test.addTestCase( (function()
<p id="_EnlargeP14"><span id="S8"></span></p>
<p id="_EnlargeP15">Test <span id="S9"></span>List<br/ >Item Enlarge</p>
<p id="_EnlargeP16">Test <strong>Block<span id="S10"></span></strong><br /><br />Enlarge</p>
<p id="_EnlargeP17"><span><span id="S11"></span>Test Block Enlarge<span id="E11"></span></span></p>
<p id="_trim_ct">Test trim</p>
</div>
<script type="text/javascript">
@@ -8,6 +8,9 @@
<script type="text/javascript">
//<![CDATA[
// Disable 'scayt' plugin due to it may alter editor config after initialized.
CKEDITOR.config.removePlugins = 'scayt';
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
@@ -36,20 +39,37 @@ CKEDITOR.test.addTestCase( (function()
test_config_inpage : function()
{
// Pass in-page settings to the instance.
CKEDITOR.replace( 'editor2', { test1 : 'ball', baseHref : 'test' } );
var self = this;
var config = CKEDITOR.instances.editor2.config;
CKEDITOR.replace( 'editor2',
{
// The custom setting to be checked.
test1 : 'ball',
baseHref : 'test',
assert.areSame( 'ball', config.test1, '"test1" doesn\'t match' );
assert.areSame( 'test', config.baseHref, '"baseHref" doesn\'t match' );
on :
{
instanceReady : function()
{
self.resume( function()
{
var config = CKEDITOR.instances.editor2.config;
// All other settings must match CKEDITOR.config.
for ( var prop in CKEDITOR.config )
{
if ( prop != 'test1' && prop != 'baseHref' )
assert.areSame( CKEDITOR.config[ prop ], config[ prop ], '"' + prop + '" doesn\'t match' );
}
assert.areSame( 'ball', config.test1, '"test1" doesn\'t match' );
assert.areSame( 'test', config.baseHref, '"baseHref" doesn\'t match' );
// All other settings must match CKEDITOR.config.
for ( var prop in CKEDITOR.config )
{
if ( prop != 'test1' && prop != 'baseHref' )
assert.areSame( CKEDITOR.config[ prop ], config[ prop ], '"' + prop + '" doesn\'t match' );
}
} );
}
}
});
this.wait();
},
test_config_customConfig : function()
@@ -69,7 +69,7 @@ CKEDITOR.test.addTestCase( tc = ( function()
<textarea id="htmlOriginal1"><pre>
text<b>
inside<br /> <br /></b>
inside<br /><br /></b>
pre
</pre></textarea>
@@ -86,6 +86,6 @@ pre
para graph
</p><b>compress spaces</b></textarea>
<textarea id="htmlResult2"><p>para graph </p><b>compress spaces</b></textarea>
<textarea id="htmlResult2"><p>para graph</p><b>compress spaces</b></textarea>
</body>
</html>
@@ -20,8 +20,9 @@ CKEDITOR.test.addTestCase( (function()
*/
test_addExternal : function()
{
var path = '_tests/';
CKEDITOR.plugins.addExternal( 'myplugin',
'tests/core/plugins/myplugins/sample/', 'my_plugin.js' );
path + 'core/plugins/myplugins/sample/', 'my_plugin.js' );
CKEDITOR.plugins.load( 'myplugin', function(){
this.resume( function(){
@@ -7,8 +7,8 @@
<script type="text/javascript" src="../test.js"></script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.test.addTestCase( (function()
var testcase;
CKEDITOR.test.addTestCase( testcase = (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
@@ -75,6 +75,11 @@ CKEDITOR.test.addTestCase( (function()
assert.areSame( 'Test\'s &amp; "quote"', CKEDITOR.tools.htmlEncode( 'Test\'s & "quote"' ) );
},
test_htmlEncode_3874 : function()
{
assert.areSame( 'line1\nline2', CKEDITOR.tools.htmlEncode( 'line1\nline2' ) );
},
test_cssStyleToDomStyle1 : function()
{
assert.areSame( 'backgroundColor', CKEDITOR.tools.cssStyleToDomStyle( 'background-color' ) );
@@ -147,10 +152,15 @@ CKEDITOR.test.addTestCase( (function()
assert.areSame( 'silver', clone.cars.Porsche.color );
},
test_repeat : function()
{
assert.areSame( '&nbsp;&nbsp;&nbsp;', CKEDITOR.tools.repeat( '&nbsp;', 3 ) );
},
name : document.title
};
})() );
//window.onload = testcase.test_htmlEncode_3874;
//]]>
</script>
</head>
@@ -4,7 +4,7 @@
<title>Plugin: domiterator</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../../ckeditor_source.js"></script>
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
@@ -131,7 +131,7 @@ CKEDITOR.test.addTestCase( (function()
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( doc.getById( 'iterTarget4a' ), CKEDITOR.POSITION_AFTER_START );
range.setEndAt( doc.getById( 'iterTarget4b' ), CKEDITOR.POSITION_BEFORE_END );
assumeIterationSameAs( range, null, [ 'p', 'div' ] );
assumeIterationSameAs( range, null, [ 'p', 'p' ] );
assumeElementContentAreSame( 'iterContainer4', 'iterResult4' );
},
@@ -219,7 +219,7 @@ CKEDITOR.test.addTestCase( (function()
<div id="iterContainer4">
<div id="iterTarget4b"><p id="iterTarget4a">paragraph</p>text</div>
</div>
<textarea id="iterResult4"><div id="iterTarget4b"><p id="iterTarget4a">paragraph</p>text</div></textarea>
<textarea id="iterResult4"><div id="iterTarget4b"><p id="iterTarget4a">paragraph</p><p>text</p></div></textarea>
<div id="iterContainer7"><p id="iterTarget7">paragraph</p></div>
<textarea id="iterResult7"><p id="iterTarget7">paragraph</p></textarea>
@@ -6,13 +6,15 @@
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
CKEDITOR.plugins.load( 'htmldataprocessor' );
</script>
<script type="text/javascript">
//<![CDATA[
// Load the required plugins and launch the runner.
CKEDITOR.test.deferRunner = true;
CKEDITOR.plugins.load( 'htmldataprocessor' , function()
{
CKEDITOR.test.runner.run();
} );
var testCase;
CKEDITOR.test.addTestCase( testCase = (function()
@@ -84,9 +86,7 @@ CKEDITOR.test.addTestCase( testCase = (function()
test_toDataFormat_3 : function()
{
var element = new CKEDITOR.dom.element.createFromHtml( '<div><x:x><p>Test</p></div>' );
assert.areSame( '<x:x><p>Test</p></x:x>', getDataProcessor().toDataFormat( element.getHtml() ) );
assert.areSame( '<div><x:x><p>Test</p></x:x></div>', getDataProcessor().toDataFormat( '<div><x:x><p>Test</p></div>' ) );
},
test_toDataFormat_ticket_2774 : function()
@@ -240,11 +240,102 @@ CKEDITOR.test.addTestCase( testCase = (function()
assert.areSame( html , dataProcessor.toDataFormat( protectedHtml ) );
},
test_ticket_3591 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor;
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
var html = getTextAreaValue( '_TEXTAREA_3591' );
var protectedHtml = dataProcessor.toHtml( html );
assert.areSame( getTextAreaValue( CKEDITOR.env.ie ? '_TEXTAREA_3591_protected_ie' : '_TEXTAREA_3591_protected' ),
protectedHtml );
assert.areSame( getTextAreaValue( '_TEXTAREA_3591' ),
dataProcessor.toDataFormat( protectedHtml ) );
},
test_ticket_3591_2 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor;
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
dataProcessor.writer.sortAttributes = true;
var html = getTextAreaValue( '_TEXTAREA_3591_2' );
var protectedHtml = dataProcessor.toHtml( html );
assert.areSame( getTextAreaValue( '_TEXTAREA_3591_2' ),
dataProcessor.toDataFormat( protectedHtml ) );
},
test_ticket_3869_1 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor;
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
var html = getTextAreaValue( '_TEXTAREA_3869_1' );
var protectedHtml = dataProcessor.toHtml( html );
assert.areSame( html , dataProcessor.toDataFormat( protectedHtml ) );
},
test_ticket_3869_2 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor,
config = editor.config;
config.protectedSource.push( /<\?[\s\S]*?\?>/g ); // PHP Code
config.protectedSource.push( /<%[\s\S]*?%>/g ); // ASP Code
config.protectedSource.push( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ); // ASP.Net Code
config.protectedSource.push(/<gallery[\s\S]*?<\/gallery>/gi ); // custom protected source
config.protectedSource.push(/<options[\s\S]*?<\/options>/gi );
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
var html = getTextAreaValue( '_TEXTAREA_3869_2' );
var protectedHtml = dataProcessor.toHtml( html );
assert.areSame( html , dataProcessor.toDataFormat( protectedHtml ) );
},
/**
* Test empty value attributes.
*/
test_ticket_3884 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor;
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
dataProcessor.writer.sortAttributes = true;
assert.areSame( '<p><a href="" name="">emptylink</a></p>',
dataProcessor.toDataFormat( dataProcessor.toHtml( '<p><a href="" name="">emptylink</a></p>' ) ) );
},
test_innerHtmlComments_ticket_3801 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor;
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
for ( var i = 1; i <= 7; i++ )
{
var html = getTextAreaValue( '_TEXTAREA_3801_' + i );
var protectedHtml = dataProcessor.toHtml( html );
assert.areSame( getTextAreaValue( '_TEXTAREA_3801_' + i ),
dataProcessor.toDataFormat( protectedHtml ) );
}
},
name : document.title
};
})() );
//window.onload = testCase.test_ticket_3407;
//window.onload = testCase.test_ticket_3884;
//]]>
</script>
</head>
@@ -256,5 +347,40 @@ CKEDITOR.test.addTestCase( testCase = (function()
<![endif]>
<![endif]--><td><%Response.Write(now())%></td><td><asp:control_name id="some_id" runat="server"/></td><td><?php
include ("head.html"); ?></td></tr></tbody></table><noscript>Your browser doesn't support JavaScript</noscript></textarea>
<textarea id="_TEXTAREA_3591"><object><param /><param /><embed></embed></object></textarea>
<textarea id="_TEXTAREA_3591_protected"><cke:object><cke:param></cke:param><cke:param></cke:param><cke:embed></cke:embed></cke:object></textarea>
<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>
<textarea id="_TEXTAREA_3801_1"><!-- foo --><p>bar</p></textarea>
<textarea id="_TEXTAREA_3801_2"><p><!-- foo -->bar</p></textarea>
<textarea id="_TEXTAREA_3801_3"><!-- foo --><p><!-- foo -->bar</p></textarea>
<textarea id="_TEXTAREA_3801_4"><p>bar</p><!-- foo --></textarea>
<textarea id="_TEXTAREA_3801_5">bar<!-- foo --></textarea>
<textarea id="_TEXTAREA_3801_6"><!-- foo -->bar</textarea>
<textarea id="_TEXTAREA_3801_7"><p><!-- foo -->bar</p><p><!-- foo -->bar</p></textarea>
<textarea id="_TEXTAREA_3869_1">#3869<script language="Javascript" type="text/javascript">
<!--
alert('-->');
//-->
</script></textarea>
<textarea id="_TEXTAREA_3869_2">#3869&lt;gallery&gt;
file.jpg
&lt;options name="test1" value="value1"&gt;&lt;/options&gt;
&lt;options name="test2" value="value2"&gt;&lt;/options&gt;
&lt;/gallery&gt;&lt;?
echo '&lt;script type="text/javascript"&gt;';
echo '&lt;!--alert("--&gt;");//--&gt;';
echo '&lt;/script&gt;';
?&gt;&lt;!--&lt;%Response.Write(now())%&gt;//--&gt;invalid&lt;?
echo 'bbb&lt;script&gt;
&lt;!--
ccc();&lt;!-- &lt;/script&gt;&lt;!-- &lt;/script&gt;
//--&gt;&lt;/script&gt;
&lt;script&gt;&lt;!--
&lt;!--
ffff();
//--&gt;&lt;/script&gt;
ddd';
?&gt;html</textarea>
<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>
</body>
</html>
@@ -1,9 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Plugin: toolbar</title>
<title>Plugin: list</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../../ckeditor_source.js"></script>
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
@@ -26,7 +26,10 @@ function prepareEditor( elementId, mode, config, callback, context )
document.getElementById( elementId );
if ( isMe )
{
callback.call( context, evt.editor );
var editor = evt.editor;
// Force result data unformatted.
editor.dataProcessor.writer._.rules = {};
callback.call( context, editor );
}
}, this );
@@ -105,9 +108,6 @@ CKEDITOR.test.addTestCase( ( function()
{
editor.focus();
// Force result data unformatted.
editor.dataProcessor.writer._.rules = {};
var doc = editor.document,
range = new CKEDITOR.dom.range( doc );
@@ -119,127 +119,22 @@ CKEDITOR.test.addTestCase( ( function()
this.wait( function(){
// Remove list.
editor.execCommand( 'numberedlist' );
assert.areSame( getTextAreaValue( 'test_ticket_3151_resultContent' ),
assert.areSame( getTextAreaValue( 'test_ticket_3151_result' ),
editor.getData(),
'Remove list result not correct.' );
}, 1000);
}, 1000 );
} );
}, this );
this.wait();
},
name :document.title
};
} )() );
//]]>
</script>
</head>
<body>
<textarea id="test_ticket_3151_editor"><ol><li>text</li></ol></textarea>
<textarea id="test_ticket_3151_resultContent">text</textarea>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Plugin: toolbar</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../../ckeditor_source.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
/**
* Load the editor and wait for fully interactable.
* @param {Object} elementId
* @parma {Object} mode
* @param {Object} config
* @param {Object} callback Continuation with {@param editor}.
* @param {Object} context
*/
function prepareEditor( elementId, mode, config, callback, context )
{
CKEDITOR.on( 'instanceReady',
function( evt )
{
var isMe = mode == CKEDITOR.ELEMENT_MODE_REPLACE ?
evt.editor.name == elementId
: evt.editor.element.$ ==
document.getElementById( elementId );
if ( isMe )
{
callback.call( context, evt.editor );
}
}, this );
mode = mode || CKEDITOR.ELEMENT_MODE_REPLACE;
switch( mode )
{
case CKEDITOR.ELEMENT_MODE_REPLACE :
CKEDITOR.replace( elementId, config );
break;
case CKEDITOR.ELEMENT_MODE_APPENDTO :
CKEDITOR.appendTo( elementId, config );
break;
}
}
/**
* IE always returning CRLF for line-feed, so remove it when retrieving
* pre-formated text from text area.
*/
function getTextAreaValue( id )
{
return CKEDITOR.document.getById( id ).getValue().replace( /\r/gi, '' );
}
CKEDITOR.test.addTestCase( ( function()
{
// Local references.
var assert = CKEDITOR.test.assert,
doc = CKEDITOR.document,
action = YAHOO.util.UserAction,
selector = YAHOO.util.Selector;
/**
* Set the range with the start/end position specified by the locator, which in form of bookmark2.
* @param {Object} range
* @param {Array} startPosition range start path including offset
* @param {Array|Boolean} endPositoin range end path including offset or is collapsed
*/
function setRange( range, startPosition, endPositoin )
{
var bm = {
end : null,
start : null,
is2: true,
startOffset : 0,
endoffset : 0
};
bm.start = startPosition.slice( 0, startPosition.length - 1 );
bm.startOffset = startPosition[ startPosition.length -1];
if( endPositoin === true )
{
bm.end = bm.start.slice();
bm.endOffset = bm.startOffset;
}
else
{
bm.end = endPositoin.slice( 0, endPositoin.length - 1 );
bm.endOffset = endPositoin[ endPositoin.length -1 ];
}
range.moveToBookmark( bm );
}
return {
/**
* Test remove numbered list with 'enterMode = BR'.
* Test merge newlist with previous list.
*/
test_ticket_3151 : function()
test_ticket_3820 : function()
{
prepareEditor( 'test_ticket_3151_editor', null,
prepareEditor( 'test_ticket_3820_editor', null,
{ enterMode : CKEDITOR.ENTER_BR },
function( editor )
{
@@ -247,24 +142,56 @@ CKEDITOR.test.addTestCase( ( function()
{
editor.focus();
// Force result data unformatted.
editor.dataProcessor.writer._.rules = {};
var doc = editor.document,
range = new CKEDITOR.dom.range( doc );
setRange( range, [ 1, 0, 0, 0, 0 ], true );
setRange( range, [ 1, 1, 0 ], true );
var sel = editor.getSelection();
sel.selectRanges( [ range ] );
// Waiting for 'comand state' effected.
this.wait( function(){
// Remove list.
editor.execCommand( 'numberedlist' );
assert.areSame( getTextAreaValue( 'test_ticket_3151_resultContent' ),
editor.execCommand( 'bulletedlist' );
assert.areSame( getTextAreaValue( 'test_ticket_3820_result' ),
editor.getData(),
'Remove list result not correct.' );
}, 1000);
'Merge list result not correct.' );
}, 1000 );
} );
}, this );
this.wait();
},
/**
* Test remove list first list item not merging with previous text node.
*/
test_ticket_3836 : function()
{
prepareEditor( 'test_ticket_3836_editor', null,
{ enterMode : CKEDITOR.ENTER_BR },
function( editor )
{
this.resume( function()
{
this.wait( function ()
{
editor.focus();
var doc = editor.document,
range = new CKEDITOR.dom.range( doc );
setRange( range, [ 1, 1, 0, 0 ], [ 1, 1, 1, 1 ] );
var sel = editor.getSelection();
sel.selectRanges( [ range ] );
// Waiting for 'comand state' effected.
this.wait( function(){
// Remove list.
editor.execCommand( 'bulletedlist' );
assert.areSame( getTextAreaValue( 'test_ticket_3836_result' ),
editor.getData(),
'Remove list result not correct.' );
}, 1000 );
}, 1000 );
} );
}, this );
@@ -277,8 +204,14 @@ CKEDITOR.test.addTestCase( ( function()
//]]>
</script>
</head>
<body>
<body>
<textarea id="test_ticket_3151_editor"><ol><li>text</li></ol></textarea>
<textarea id="test_ticket_3151_resultContent">text</textarea>
<textarea id="test_ticket_3151_result">text</textarea>
<textarea id="test_ticket_3820_editor"><ul><li>bullet line 1</li><li>bullet line 2</li></ul><p>Second line</p></textarea>
<textarea id="test_ticket_3820_result"><ul><li>bullet line 1</li><li>bullet line 2</li><li>Second line</li></ul></textarea>
<textarea id="test_ticket_3773_editor"><ol><li>line1</li><li>line2</li></ol></textarea>
<textarea id="test_ticket_3773_result">line1<br />line2</textarea>
<textarea id="test_ticket_3836_editor">line1<ul><li>item1</li><li>item2</li></ul>line2</textarea>
<textarea id="test_ticket_3836_result">line1<br />item1<br />item2<br />line2</textarea>
</body>
</html>
@@ -4,7 +4,7 @@
<title>Plugin: selection</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../../ckeditor_source.js"></script>
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
@@ -3,11 +3,11 @@
<head>
<title>Plugin: styles</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../../ckeditor_source.js"></script>
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
CKEDITOR.plugins.load( 'styles' );
CKEDITOR.plugins.load( [ 'styles', 'domiterator', 'htmldataprocessor' ] );
</script>
<script type="text/javascript">
@@ -21,6 +21,13 @@ CKEDITOR.test.addTestCase( testCase = (function()
var assert = CKEDITOR.test.assert;
var getInnerHtml = CKEDITOR.test.getInnerHtml;
function getInnerHtmlParsed( element )
{
var dataProcessor = new CKEDITOR.htmlDataProcessor();
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
return dataProcessor.toDataFormat( getInnerHtml( element, false ) );
}
var doc = new CKEDITOR.dom.document( document );
return {
@@ -317,7 +324,7 @@ CKEDITOR.test.addTestCase( testCase = (function()
var style = new CKEDITOR.style( { element : 'b', styles : { color : 'red', 'font-weight' : '700' } } );
style.applyToRange( range );
assert.areSame( '<b lang="pt" style="font-size:11pt;color:red;">this<b style="font-weight:700;"> is some sample text</b></b>', getInnerHtml( '_P1' ), 'First range' );
assert.areSame( '<b lang="pt" style="color:red;font-size:11pt;">this<b style="font-weight:700;"> is some sample text</b></b>', getInnerHtml( '_P1' ), 'First range' );
},
test_inline_nobreak1 : function()
@@ -537,10 +544,49 @@ CKEDITOR.test.addTestCase( testCase = (function()
// text <span><i>^</i></span><bold><span><b><i>styles</i></b></span></bold>
assert.areSame( 'text <span><i></i></span><strong><bold><span><b><i id="_i1">styles</i></b></span></bold></strong>', getInnerHtml( element ) );
},
// Test convert multiple paragraphs to one <pre>.
test_ticket_3188 : function()
{
var element = doc.getById( '_P1' );
element.setHtml( '<p id="_P2">\nparagraph1<br /><br />para\t\ngraph2</p><p id="_P3">\nparagraph3\n</p>' );
// <p id="_P2">[paragraph1</p><p id="_P3">paragraph2]</p>
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( doc.getById( '_P2' ), CKEDITOR.POSITION_AFTER_START );
range.setEndAt( doc.getById( '_P3' ), CKEDITOR.POSITION_BEFORE_END );
var style = new CKEDITOR.style( { element : 'pre' } );
style.applyToRange( range );
var result = getInnerHtmlParsed( element );
assert.areSame( '<pre>paragraph1\n\npara graph2\n\nparagraph3</pre>', result );
},
// Test convert one <pre> to multiple paragraphs.
test_ticket_3188_2 : function()
{
var element = doc.getById( '_P1' );
element.setHtml( '<pre>\n\tparagraph1\t\tparagraph1\nparagraph2\n\t\n\tpara graph3\n</pre>' );
//<pre>[\n\tparagraph1\t\tparagraph1\nparagraph2\n\t\n\tpara graph3\n]</pre>
var range = new CKEDITOR.dom.range( doc );
range.selectNodeContents( doc.getById( '_P1' ).getFirst() );
var style = new CKEDITOR.style( { element : 'p' } );
style.applyToRange( range );
var result = getInnerHtmlParsed( element );
if ( CKEDITOR.env.webkit || CKEDITOR.env.opera )
result = result.replace( /\xa0/g, '&nbsp;' );
assert.areSame( '<p>&nbsp;paragraph1&nbsp; paragraph1<br />paragraph2</p><p>&nbsp;para&nbsp;&nbsp; graph3</p>',
result );
},
name : document.title
};
})() );
//window.onload = testCase.test_ticket_3309_3;
//window.onload = testCase.test_ticket_3188;
//]]>
</script>
</head>
@@ -87,6 +87,7 @@ document.write(
runner.subscribe(runner.TEST_CASE_COMPLETE_EVENT, window.parent.onTestComplete);
}
runner.run();
if ( !CKEDITOR.test.deferRunner )
runner.run();
};
})();
@@ -9,8 +9,8 @@
var testList =
[
'core/ajax',
'core/bootstrap',
'core/ckeditor',
// 'core/ckeditor2',
'core/editor',
'core/env',
'core/event',
@@ -24,15 +24,21 @@ var testList =
'core/dom/node',
'core/dom/range',
'core/dom/text',
'core/dom/walker',
'core/dom/window',
'core/htmlparser/fragment',
'core/htmlparser/htmlparser',
'plugins/domiterator/domiterator',
'plugins/htmldataprocessor/htmldataprocessor',
'plugins/link/link',
'plugins/list/list',
'plugins/styles/styles',
'plugins/selection/selection'
];
var currentTest;
var currentTime;
var totalTime;
var totalFailed = 0;
var totalPassed = 0;
@@ -48,11 +54,18 @@ function onTestStart( data )
{
var div = document.getElementById('testLogger').appendChild( document.createElement( 'div' ) );
div.className = 'testEntry';
div.innerHTML = 'Testing "' + data.testCase.name + '"...';
div.innerHTML = 'Testing "<a href="' + currentTest + '.html" target="_blank">' + data.testCase.name + '</a>"...';
currentTime = new Date();
if ( !totalTime )
totalTime = currentTime;
}
function onTestComplete( data )
{
var finishTime = new Date();
var failed = data.results.failed;
var passed = data.results.passed;
@@ -63,7 +76,7 @@ function onTestComplete( data )
else
html = '<span class="testPass">PASS</span>';
html += ' <a href="' + currentTest + '.html" target="_blank">Test case "' + data.testCase.name + '"</a> (' + failed + ' failed / ' + passed + ' passed)';
html += ' Test "<a href="' + currentTest + '.html" target="_blank">' + data.testCase.name + '</a>" (' + failed + ' failed / ' + passed + ' passed) - ' + ( finishTime - currentTime ) + 'ms';
var div = document.getElementById('testLogger').lastChild;
div.innerHTML = html;
@@ -73,6 +86,7 @@ function onTestComplete( data )
document.getElementById('testFailed').innerHTML = totalFailed;
document.getElementById('testPassed').innerHTML = totalPassed;
document.getElementById('totalTime').innerHTML = finishTime - totalTime;
document.title = totalFailed + ' failed / ' + totalPassed + ' passed - CKEditor Core Tests Runner';
@@ -92,7 +106,7 @@ window.onload = function()
</script>
</head>
<body>
<h1>CKEditor Core Tests Runner (<span id="testFailed">0</span> failed / <span id="testPassed">0</span> passed)</h1>
<h1>CKEditor Core Tests Runner (<span id="testFailed">0</span> failed / <span id="testPassed">0</span> passed) - <span id="totalTime">0</span>ms</h1>
<iframe id="testFrame" src="javascript:;" style="position: absolute; width: 50px; height: 50px; left: -1000px">
</iframe>
<div id="testLogger" class="testAll"></div>