OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
reader
/
_backup
/
tinymce
/
tinymce
/
src
/
core
/
test
/
ts
/
browser
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/20/2020 06:15:06 AM
rwxr-xr-x
📄
AddOnManagerTest.ts
2.71 KB
02/20/2020 05:44:53 AM
rw-r--r--
📄
ClickContentEditableFalseTest.ts
3.13 KB
02/20/2020 05:44:53 AM
rw-r--r--
📄
DragDropOverridesTest.ts
1.55 KB
02/20/2020 05:44:54 AM
rw-r--r--
📄
EditorForcedSettingsTest.ts
904 bytes
02/20/2020 05:44:54 AM
rw-r--r--
📄
EditorManagerTest.ts
7.41 KB
02/20/2020 05:44:55 AM
rw-r--r--
📄
EditorRemoveTest.ts
2.58 KB
02/20/2020 05:44:56 AM
rw-r--r--
📄
EditorRemovedApiTest.ts
2.98 KB
02/20/2020 05:44:55 AM
rw-r--r--
📄
EditorRtlTest.ts
1.39 KB
02/20/2020 05:44:56 AM
rw-r--r--
📄
EditorSettingsTest.ts
14.57 KB
02/20/2020 05:44:57 AM
rw-r--r--
📄
EditorTest.ts
15.89 KB
02/20/2020 05:44:57 AM
rw-r--r--
📄
EditorUploadTest.ts
11.16 KB
02/20/2020 05:44:58 AM
rw-r--r--
📄
EditorViewIframeTest.ts
3.35 KB
02/20/2020 05:44:58 AM
rw-r--r--
📄
EditorViewInlineTest.ts
3.25 KB
02/20/2020 05:44:59 AM
rw-r--r--
📄
FontSelectTest.ts
4.79 KB
02/20/2020 05:44:59 AM
rw-r--r--
📄
ForceBlocksTest.ts
4.89 KB
02/20/2020 05:45:00 AM
rw-r--r--
📄
FormatterApplyTest.ts
83.91 KB
02/20/2020 05:45:00 AM
rw-r--r--
📄
FormatterCheckTest.ts
10.05 KB
02/20/2020 05:45:01 AM
rw-r--r--
📄
FormatterRemoveTest.ts
24.06 KB
02/20/2020 05:45:01 AM
rw-r--r--
📄
FormattingCommandsTest.ts
19.5 KB
02/20/2020 05:45:02 AM
rw-r--r--
📄
InlineEditorRemoveTest.ts
1.17 KB
02/20/2020 05:45:03 AM
rw-r--r--
📄
InlineEditorSaveTest.ts
1.19 KB
02/20/2020 05:45:03 AM
rw-r--r--
📄
JqueryIntegrationTest.disabled
4.5 KB
02/20/2020 05:45:04 AM
rw-r--r--
📄
MiscCommandsTest.ts
3.61 KB
02/20/2020 05:45:05 AM
rw-r--r--
📄
ModeTest.ts
4.18 KB
02/20/2020 05:45:05 AM
rw-r--r--
📄
NotificationManagerTest.ts
4.01 KB
02/20/2020 05:45:06 AM
rw-r--r--
📄
SelectionOverridesTest.ts
10.48 KB
02/20/2020 05:45:06 AM
rw-r--r--
📄
ShortcutsTest.ts
3.67 KB
02/20/2020 05:45:07 AM
rw-r--r--
📄
UndoManagerTest.ts
14.65 KB
02/20/2020 05:45:07 AM
rw-r--r--
📄
WindowManagerTest.ts
1.29 KB
02/20/2020 05:45:08 AM
rw-r--r--
📁
annotate
-
02/20/2020 06:12:41 AM
rwxr-xr-x
📁
api
-
02/20/2020 06:34:15 AM
rwxr-xr-x
📁
bookmark
-
02/20/2020 06:12:48 AM
rwxr-xr-x
📁
caret
-
02/20/2020 06:12:58 AM
rwxr-xr-x
📁
commands
-
02/20/2020 06:13:03 AM
rwxr-xr-x
📁
content
-
02/20/2020 06:13:08 AM
rwxr-xr-x
📁
delete
-
02/20/2020 06:13:20 AM
rwxr-xr-x
📁
dom
-
02/20/2020 06:13:35 AM
rwxr-xr-x
📁
file
-
02/20/2020 06:13:40 AM
rwxr-xr-x
📁
fmt
-
02/20/2020 06:13:49 AM
rwxr-xr-x
📁
focus
-
02/20/2020 06:13:55 AM
rwxr-xr-x
📁
geom
-
02/20/2020 06:13:59 AM
rwxr-xr-x
📁
html
-
02/20/2020 06:14:06 AM
rwxr-xr-x
📁
init
-
02/20/2020 06:14:16 AM
rwxr-xr-x
📁
keyboard
-
02/20/2020 06:14:32 AM
rwxr-xr-x
📁
newline
-
02/20/2020 06:14:36 AM
rwxr-xr-x
📁
selection
-
02/20/2020 06:14:47 AM
rwxr-xr-x
📁
undo
-
02/20/2020 06:14:53 AM
rwxr-xr-x
📁
util
-
02/20/2020 06:15:03 AM
rwxr-xr-x
Editing: EditorTest.ts
Close
import { Pipeline, UiFinder } from '@ephox/agar'; import { LegacyUnit, TinyLoader } from '@ephox/mcagar'; import EditorManager from 'tinymce/core/api/EditorManager'; import Env from 'tinymce/core/api/Env'; import HtmlUtils from '../module/test/HtmlUtils'; import URI from 'tinymce/core/api/util/URI'; import Theme from 'tinymce/themes/silver/Theme'; import { UnitTest } from '@ephox/bedrock'; import { document } from '@ephox/dom-globals'; import { Body, Attr } from '@ephox/sugar'; UnitTest.asynctest('browser.tinymce.core.EditorTest', function () { const success = arguments[arguments.length - 2]; const failure = arguments[arguments.length - 1]; const suite = LegacyUnit.createSuite(); Theme(); suite.test('Event: change', function (editor) { let level, lastLevel; editor.on('change', function (e) { level = e.level; lastLevel = e.lastLevel; }); editor.setContent(''); editor.insertContent('a'); LegacyUnit.equal(level.content.toLowerCase(), '<p>a</p>'); LegacyUnit.equal(lastLevel.content, editor.undoManager.data[0].content); editor.off('change'); }); suite.test('Event: beforeExecCommand', function (editor) { let cmd, ui, value; editor.on('BeforeExecCommand', function (e) { cmd = e.command; ui = e.ui; value = e.value; e.preventDefault(); }); editor.setContent(''); editor.insertContent('a'); LegacyUnit.equal(editor.getContent(), ''); LegacyUnit.equal(cmd, 'mceInsertContent'); LegacyUnit.equal(ui, false); LegacyUnit.equal(value, 'a'); editor.off('BeforeExecCommand'); editor.setContent(''); editor.insertContent('a'); LegacyUnit.equal(editor.getContent(), '<p>a</p>'); }); suite.test('urls - relativeURLs', function (editor) { editor.settings.relative_urls = true; editor.documentBaseURI = new URI('http://www.site.com/dirA/dirB/dirC/'); editor.setContent('<a href="test.html">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="test.html">test</a></p>'); editor.setContent('<a href="../test.html">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="../test.html">test</a></p>'); editor.setContent('<a href="test/test.html">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="test/test.html">test</a></p>'); editor.setContent('<a href="/test.html">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="../../../test.html">test</a></p>'); editor.setContent('<a href="http://www.somesite.com/test/file.htm">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="http://www.somesite.com/test/file.htm">test</a></p>'); editor.setContent('<a href="//www.site.com/test/file.htm">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="../../../test/file.htm">test</a></p>'); editor.setContent('<a href="//www.somesite.com/test/file.htm">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="//www.somesite.com/test/file.htm">test</a></p>'); }); suite.test('urls - absoluteURLs', function (editor) { editor.settings.relative_urls = false; editor.settings.remove_script_host = true; editor.documentBaseURI = new URI('http://www.site.com/dirA/dirB/dirC/'); editor.setContent('<a href="test.html">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="/dirA/dirB/dirC/test.html">test</a></p>'); editor.setContent('<a href="../test.html">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="/dirA/dirB/test.html">test</a></p>'); editor.setContent('<a href="test/test.html">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="/dirA/dirB/dirC/test/test.html">test</a></p>'); editor.setContent('<a href="http://www.somesite.com/test/file.htm">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="http://www.somesite.com/test/file.htm">test</a></p>'); editor.settings.relative_urls = false; editor.settings.remove_script_host = false; editor.setContent('<a href="test.html">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="http://www.site.com/dirA/dirB/dirC/test.html">test</a></p>'); editor.setContent('<a href="../test.html">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="http://www.site.com/dirA/dirB/test.html">test</a></p>'); editor.setContent('<a href="test/test.html">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="http://www.site.com/dirA/dirB/dirC/test/test.html">test</a></p>'); editor.setContent('<a href="http://www.somesite.com/test/file.htm">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="http://www.somesite.com/test/file.htm">test</a></p>'); editor.setContent('<a href="//www.site.com/test/file.htm">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="//www.site.com/test/file.htm">test</a></p>'); editor.setContent('<a href="//www.somesite.com/test/file.htm">test</a>'); LegacyUnit.equal(editor.getContent(), '<p><a href="//www.somesite.com/test/file.htm">test</a></p>'); }); suite.test('WebKit Serialization range bug', function (editor) { if (Env.webkit) { // Note that if we create the P with this invalid content directly, Chrome cleans it up differently to other browsers so we don't // wind up testing the serialization functionality we were aiming for and the test fails. const p = editor.dom.create('p', {}, '123<table><tbody><tr><td>X</td></tr></tbody></table>456'); editor.dom.replace(p, editor.getBody().firstChild); LegacyUnit.equal(editor.getContent(), '<p>123</p><table><tbody><tr><td>X</td></tr></tbody></table><p>456</p>'); } }); suite.test('editor_methods - getParam', function (editor) { editor.settings.test = 'a,b,c'; LegacyUnit.equal(editor.getParam('test', '', 'hash').c, 'c'); editor.settings.test = 'a'; LegacyUnit.equal(editor.getParam('test', '', 'hash').a, 'a'); editor.settings.test = 'a=b'; LegacyUnit.equal(editor.getParam('test', '', 'hash').a, 'b'); editor.settings.test = 'a=b;c=d,e'; LegacyUnit.equal(editor.getParam('test', '', 'hash').c, 'd,e'); editor.settings.test = 'a=b,c=d'; LegacyUnit.equal(editor.getParam('test', '', 'hash').c, 'd'); }); suite.test('setContent', function (editor) { let count; const callback = function (e) { e.content = e.content.replace(/test/, 'X'); count++; }; editor.on('SetContent', callback); editor.on('BeforeSetContent', callback); count = 0; editor.setContent('<p>test</p>'); LegacyUnit.equal(editor.getContent(), '<p>X</p>'); LegacyUnit.equal(count, 2); editor.off('SetContent', callback); editor.off('BeforeSetContent', callback); count = 0; editor.setContent('<p>test</p>'); LegacyUnit.equal(editor.getContent(), '<p>test</p>'); LegacyUnit.equal(count, 0); }); suite.test('setContent with comment bug #4409', function (editor) { editor.setContent('<!-- x --><br>'); editor.settings.disable_nodechange = false; editor.nodeChanged(); editor.settings.disable_nodechange = true; LegacyUnit.equal(editor.getContent(), '<!-- x --><p>\u00a0</p>'); }); suite.test('custom elements', function (editor) { editor.setContent('<custom1>c1</custom1><custom2>c1</custom2>'); LegacyUnit.equal(editor.getContent(), '<custom1>c1</custom1><p><custom2>c1</custom2></p>'); }); suite.test('Store/restore tabindex', function (editor) { editor.setContent('<span tabindex="42">abc</span>'); LegacyUnit.equal(editor.getContent({ format: 'raw' }).toLowerCase(), '<p><span data-mce-tabindex="42">abc</span></p>'); LegacyUnit.equal(editor.getContent(), '<p><span tabindex="42">abc</span></p>'); }); suite.test('show/hide/isHidden and events', function (editor) { let lastEvent; editor.on('show hide', function (e) { lastEvent = e; }); LegacyUnit.equal(editor.isHidden(), false, 'Initial isHidden state'); editor.hide(); LegacyUnit.equal(editor.isHidden(), true, 'After hide isHidden state'); LegacyUnit.equal(lastEvent.type, 'hide'); lastEvent = null; editor.hide(); LegacyUnit.equal(lastEvent, null); editor.show(); LegacyUnit.equal(editor.isHidden(), false, 'After show isHidden state'); LegacyUnit.equal(lastEvent.type, 'show'); lastEvent = null; editor.show(); LegacyUnit.equal(lastEvent, null); }); suite.test('hide save content and hidden state while saving', function (editor) { let lastEvent, hiddenStateWhileSaving; editor.on('SaveContent', function (e) { lastEvent = e; hiddenStateWhileSaving = editor.isHidden(); }); editor.setContent('xyz'); editor.hide(); const elm: any = document.getElementById(editor.id); LegacyUnit.equal(hiddenStateWhileSaving, false, 'False isHidden state while saving'); LegacyUnit.equal(lastEvent.content, '<p>xyz</p>'); LegacyUnit.equal(elm.value, '<p>xyz</p>'); editor.show(); }); suite.test('insertContent', function (editor) { editor.setContent('<p>ab</p>'); LegacyUnit.setSelection(editor, 'p', 1); editor.insertContent('c'); LegacyUnit.equal(editor.getContent(), '<p>acb</p>'); }); suite.test('insertContent merge', function (editor) { editor.setContent('<p><strong>a</strong></p>'); LegacyUnit.setSelection(editor, 'p', 1); editor.insertContent('<em><strong>b</strong></em>', { merge: true }); LegacyUnit.equal(editor.getContent(), '<p><strong>a<em>b</em></strong></p>'); }); suite.test('addCommand', function (editor) { const scope = {}; let lastScope, lastArgs; const callback = function () { // eslint-disable-next-line lastScope = this; lastArgs = arguments; }; editor.addCommand('CustomCommand1', callback, scope); editor.addCommand('CustomCommand2', callback); editor.execCommand('CustomCommand1', false, 'value', { extra: true }); LegacyUnit.equal(lastArgs[0], false); LegacyUnit.equal(lastArgs[1], 'value'); LegacyUnit.equal(lastScope === scope, true); editor.execCommand('CustomCommand2'); LegacyUnit.equal(typeof lastArgs[0], 'undefined'); LegacyUnit.equal(typeof lastArgs[1], 'undefined'); LegacyUnit.equal(lastScope === editor, true); }); suite.test('addQueryStateHandler', function (editor) { const scope = {}; let lastScope, currentState; const callback = function () { // eslint-disable-next-line lastScope = this; return currentState; }; editor.addQueryStateHandler('CustomCommand1', callback, scope); editor.addQueryStateHandler('CustomCommand2', callback); currentState = false; LegacyUnit.equal(editor.queryCommandState('CustomCommand1'), false); LegacyUnit.equal(lastScope === scope, true, 'Scope is not custom scope'); currentState = true; LegacyUnit.equal(editor.queryCommandState('CustomCommand2'), true); LegacyUnit.equal(lastScope === editor, true, 'Scope is not editor'); }); suite.test('Block script execution', function (editor) { editor.setContent('<script></script><script type="x"></script><script type="mce-x"></script><p>x</p>'); LegacyUnit.equal( HtmlUtils.cleanHtml(editor.getBody().innerHTML), '<script type="mce-no/type"></script>' + '<script type="mce-x"></script>' + '<script type="mce-x"></script>' + '<p>x</p>' ); LegacyUnit.equal( editor.getContent(), '<script></script>' + '<script type="x"></script>' + '<script type="x"></script>' + '<p>x</p>' ); }); suite.test('addQueryValueHandler', function (editor) { const scope = {}; let lastScope, currentValue; const callback = function () { // eslint-disable-next-line lastScope = this; return currentValue; }; editor.addQueryValueHandler('CustomCommand1', callback, scope); editor.addQueryValueHandler('CustomCommand2', callback); currentValue = 'a'; LegacyUnit.equal(editor.queryCommandValue('CustomCommand1'), 'a'); LegacyUnit.equal(lastScope === scope, true, 'Scope is not custom scope'); currentValue = 'b'; LegacyUnit.equal(editor.queryCommandValue('CustomCommand2'), 'b'); LegacyUnit.equal(lastScope === editor, true, 'Scope is not editor'); }); suite.test('setDirty/isDirty', function (editor) { let lastArgs = null; editor.on('dirty', function (e) { lastArgs = e; }); editor.setDirty(false); LegacyUnit.equal(lastArgs, null); LegacyUnit.equal(editor.isDirty(), false); editor.setDirty(true); LegacyUnit.equal(lastArgs.type, 'dirty'); LegacyUnit.equal(editor.isDirty(), true); lastArgs = null; editor.setDirty(true); LegacyUnit.equal(lastArgs, null); LegacyUnit.equal(editor.isDirty(), true); editor.setDirty(false); LegacyUnit.equal(lastArgs, null); LegacyUnit.equal(editor.isDirty(), false); }); suite.test('setMode', function (editor) { let clickCount = 0; const isDisabled = (selector) => { const elm = UiFinder.findIn(Body.body(), selector); return elm.forall((elm) => Attr.has(elm, 'disabled')); }; editor.on('click', function () { clickCount++; }); editor.dom.fire(editor.getBody(), 'click'); LegacyUnit.equal(clickCount, 1); editor.setMode('readonly'); LegacyUnit.equal(isDisabled('.tox-editor-container button:last'), true); editor.dom.fire(editor.getBody(), 'click'); LegacyUnit.equal(clickCount, 1); editor.setMode('design'); editor.dom.fire(editor.getBody(), 'click'); LegacyUnit.equal(isDisabled('.tox-editor-container button:last'), false); LegacyUnit.equal(clickCount, 2); }); suite.test('translate', function (editor) { EditorManager.addI18n('en', { 'input i18n': 'output i18n', 'value:{0}{1}': 'value translation:{0}{1}' }); LegacyUnit.equal(editor.translate('input i18n'), 'output i18n'); LegacyUnit.equal(editor.translate(['value:{0}{1}', 'a', 'b']), 'value translation:ab'); }); suite.test('Treat some paragraphs as empty contents', function (editor) { editor.setContent('<p><br /></p>'); LegacyUnit.equal(editor.getContent(), ''); editor.setContent('<p>\u00a0</p>'); LegacyUnit.equal(editor.getContent(), ''); }); suite.test('kamer word boundaries', function (editor) { editor.setContent('<p>!\u200b!\u200b!</p>'); LegacyUnit.equal(editor.getContent(), '<p>!\u200b!\u200b!</p>'); }); suite.test('Padd empty elements with br', function (editor) { editor.settings.padd_empty_with_br = true; editor.setContent('<p>a</p><p></p>'); LegacyUnit.equal(editor.getContent(), '<p>a</p><p><br /></p>'); delete editor.settings.padd_empty_with_br; }); suite.test('Padd empty elements with br on insert at caret', function (editor) { editor.settings.padd_empty_with_br = true; editor.setContent('<p>a</p>'); LegacyUnit.setSelection(editor, 'p', 1); editor.insertContent('<p>b</p><p></p>'); LegacyUnit.equal(editor.getContent(), '<p>a</p><p>b</p><p><br /></p>'); delete editor.settings.padd_empty_with_br; }); suite.test('Preserve whitespace pre elements', function (editor) { editor.setContent('<pre> </pre>'); LegacyUnit.equal(editor.getContent(), '<pre> </pre>'); }); suite.test('hasFocus', function (editor) { editor.focus(); LegacyUnit.equal(editor.hasFocus(), true); const input = document.createElement('input'); document.body.appendChild(input); input.focus(); LegacyUnit.equal(editor.hasFocus(), false); editor.focus(); LegacyUnit.equal(editor.hasFocus(), true); input.parentNode.removeChild(input); }); TinyLoader.setup(function (editor, onSuccess, onFailure) { Pipeline.async({}, suite.toSteps(editor), function () { onSuccess(); }, onFailure); }, { selector: 'textarea', add_unload_trigger: false, disable_nodechange: true, custom_elements: 'custom1,~custom2', extended_valid_elements: 'custom1,custom2,script[*]', entities: 'raw', indent: false, base_url: '/project/tinymce/js/tinymce' }, success, failure); });