OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
reader
/
_backup
/
tinymce
/
tinymce
/
src
/
core
/
test
/
ts
/
browser
/
keyboard
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/20/2020 06:14:55 AM
rwxr-xr-x
📄
ArrowKeysAnchorTest.ts
9.31 KB
02/20/2020 06:14:22 AM
rw-r--r--
📄
ArrowKeysContentEndpointBrModeTest.ts
2.83 KB
02/20/2020 06:14:21 AM
rw-r--r--
📄
ArrowKeysContentEndpointTest.ts
4.06 KB
02/20/2020 06:14:23 AM
rw-r--r--
📄
ArrowKeysInlineBoundariesTest.ts
14.39 KB
02/20/2020 06:14:23 AM
rw-r--r--
📄
ArrowKeysTableTest.ts
11.51 KB
02/20/2020 06:14:24 AM
rw-r--r--
📄
BoundaryCaretTest.ts
2.94 KB
02/20/2020 06:14:24 AM
rw-r--r--
📄
BoundaryLocationTest.ts
12.35 KB
02/20/2020 06:14:25 AM
rw-r--r--
📄
EnterKeyAnchorTest.ts
6.66 KB
02/20/2020 06:14:25 AM
rw-r--r--
📄
EnterKeyCeFalseTest.ts
2.61 KB
02/20/2020 06:14:26 AM
rw-r--r--
📄
EnterKeyHrTest.ts
2.9 KB
02/20/2020 06:14:26 AM
rw-r--r--
📄
EnterKeyInlineTest.ts
1021 bytes
02/20/2020 06:14:27 AM
rw-r--r--
📄
EnterKeyListsTest.ts
16.34 KB
02/20/2020 06:14:27 AM
rw-r--r--
📄
EnterKeyTest.ts
30.93 KB
02/20/2020 06:14:28 AM
rw-r--r--
📄
HomeEndKeysTest.ts
4.5 KB
02/20/2020 06:14:28 AM
rw-r--r--
📄
InlineUtilsTest.ts
7.64 KB
02/20/2020 06:14:30 AM
rw-r--r--
📄
InsertKeysBrModeTest.ts
5.65 KB
02/20/2020 06:14:30 AM
rw-r--r--
📄
InsertKeysTest.ts
10.22 KB
02/20/2020 06:14:31 AM
rw-r--r--
📄
SpaceKeyTest.ts
3.52 KB
02/20/2020 06:14:31 AM
rw-r--r--
📄
TableNavigationTest.ts
4.84 KB
02/20/2020 06:14:31 AM
rw-r--r--
📄
TypeTextAtCefTest.ts
2.37 KB
02/20/2020 06:14:32 AM
rw-r--r--
Editing: InsertKeysTest.ts
Close
import { GeneralSteps, Logger, Pipeline, Step, Waiter, Chain, Cursors } from '@ephox/agar'; import { TinyApis, TinyLoader } from '@ephox/mcagar'; import Theme from 'tinymce/themes/silver/Theme'; import { UnitTest } from '@ephox/bedrock'; import Editor from 'tinymce/core/api/Editor'; import { PlatformDetection } from '@ephox/sand'; import { Element, Insert } from '@ephox/sugar'; import { Arr, Fun } from '@ephox/katamari'; import { document } from '@ephox/dom-globals'; const browser = PlatformDetection.detect().browser; UnitTest.asynctest('browser.tinymce.core.keyboard.InsertKeysTest', (success, failure) => { Theme(); const sFireInsert = (editor: Editor) => { return Step.sync(() => { editor.fire('input', { isComposing: false }); }); }; const sFireKeyPress = (editor: Editor) => { return Step.sync(() => { editor.fire('keypress'); }); }; const sInsertEmptyTextNodesAt = (editor: Editor, count: number, path: number[], insert: (marker: Element, element: Element) => void) => { return Chain.asStep(Element.fromDom(editor.getBody()), [ Cursors.cFollow(path), Chain.op((elm) => { Arr.each(Arr.range(count, Fun.identity), () => { insert(elm, Element.fromDom(document.createTextNode(''))); }); }) ]); }; const sPrependEmptyTextNodesAt = (editor: Editor, count: number, path: number[]) => { return sInsertEmptyTextNodesAt(editor, count, path, Insert.before); }; const sAppendEmptyTextNodesAt = (editor: Editor, count: number, path: number[]) => { return sInsertEmptyTextNodesAt(editor, count, path, Insert.after); }; TinyLoader.setup(function (editor, onSuccess, onFailure) { const tinyApis = TinyApis(editor); Pipeline.async({}, [ Logger.t('Insert key in text with in nbsp text node', GeneralSteps.sequence([ Logger.t('Nbsp at first character position', GeneralSteps.sequence([ Logger.t('Insert in text node with nbsp at start of block', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p> a</p>'), tinyApis.sSetCursor([0, 0], 2), sFireInsert(editor), tinyApis.sAssertSelection([0, 0], 2, [0, 0], 2), tinyApis.sAssertContent('<p> a</p>') ])), Logger.t('Insert in text in node with leading nbsp after inline with trailing space', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p>a<em>b </em> c</p>'), tinyApis.sSetCursor([0, 2], 2), sFireInsert(editor), tinyApis.sAssertSelection([0, 2], 2, [0, 2], 2), tinyApis.sAssertContent('<p>a<em>b </em> c</p>') ])), Logger.t('Insert in text in node with leading nbsp after inline', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p>a<em>b</em> c</p>'), tinyApis.sSetCursor([0, 2], 2), sFireInsert(editor), tinyApis.sAssertSelection([0, 2], 2, [0, 2], 2), tinyApis.sAssertContent('<p>a<em>b</em> c</p>') ])), Logger.t('Insert in text in node with leading nbsp after inline with trailing nbsp', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p>a<em>b </em> c</p>'), tinyApis.sSetCursor([0, 2], 2), sFireInsert(editor), tinyApis.sAssertSelection([0, 2], 2, [0, 2], 2), tinyApis.sAssertContent('<p>a<em>b </em> c</p>') ])), Logger.t('Insert at beginning of text node with leading nbsp after a br', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p>a<br /> b</p>'), tinyApis.sSetCursor([0, 2], 0), sFireInsert(editor), tinyApis.sAssertSelection([0, 2], 0, [0, 2], 0), tinyApis.sAssertContent('<p>a<br /> b</p>') ])), Logger.t('Insert at beginning of text node with leading nbsp within inline element followed by br', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p>a<br /><em> b</em></p>'), tinyApis.sSetCursor([0, 2, 0], 0), sFireInsert(editor), tinyApis.sAssertSelection([0, 2, 0], 0, [0, 2, 0], 0), tinyApis.sAssertContent('<p>a<br /><em> b</em></p>') ])) ])), Logger.t('Nbsp at last character position', GeneralSteps.sequence([ Logger.t('Insert in text node with nbsp at end of block', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p>a </p>'), tinyApis.sSetCursor([0, 0], 0), sFireInsert(editor), tinyApis.sAssertSelection([0, 0], 0, [0, 0], 0), tinyApis.sAssertContent('<p>a </p>') ])), Logger.t('Insert in text in node with leading nbsp after inline with trailing space', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p>a <em> b</em>c</p>'), tinyApis.sSetCursor([0, 0], 0), sFireInsert(editor), tinyApis.sAssertSelection([0, 0], 0, [0, 0], 0), tinyApis.sAssertContent('<p>a <em> b</em>c</p>') ])), Logger.t('Insert in text in node with traling nbsp before inline', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p>a <em>b</em>c</p>'), tinyApis.sSetCursor([0, 0], 0), sFireInsert(editor), tinyApis.sAssertSelection([0, 0], 0, [0, 0], 0), tinyApis.sAssertContent('<p>a <em>b</em>c</p>') ])), Logger.t('Insert in text in node with trailing nbsp before inline with leading nbsp', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p>a <em> b</em>c</p>'), tinyApis.sSetCursor([0, 0], 0), sFireInsert(editor), tinyApis.sAssertSelection([0, 0], 0, [0, 0], 0), tinyApis.sAssertContent('<p>a <em> b</em>c</p>') ])), Logger.t('Insert in text in node with single middle nbsp', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p>a b</p>'), tinyApis.sSetCursor([0, 0], 3), sFireInsert(editor), tinyApis.sAssertSelection([0, 0], 3, [0, 0], 3), tinyApis.sAssertContent('<p>a b</p>') ])), Logger.t('Insert in text in node with multiple middle nbsp', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p>a b c d</p>'), tinyApis.sSetCursor([0, 0], 7), sFireInsert(editor), tinyApis.sAssertSelection([0, 0], 7, [0, 0], 7), tinyApis.sAssertContent('<p>a b c d</p>') ])), Logger.t('Insert in text node multiple nbsps between inline elements', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p><em>a</em> <em>b</em></p>'), tinyApis.sSetCursor([0, 1], 1), sFireInsert(editor), tinyApis.sAssertSelection([0, 1], 1, [0, 1], 1), tinyApis.sAssertContent('<p><em>a</em> <em>b</em></p>') ])) ])), Logger.t('Nbsp at fragmented text', GeneralSteps.sequence([ Logger.t('Insert nbsp at end of text block with leading empty text nodes should retain the nbsp', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p> a</p>'), sPrependEmptyTextNodesAt(editor, 3, [0, 0]), tinyApis.sSetCursor([0, 3], 2), sFireInsert(editor), tinyApis.sAssertSelection([0, 3], 2, [0, 3], 2), tinyApis.sAssertContent('<p> a</p>') ])), Logger.t('Insert nbsp at end of text block with trailing empty text nodes should retain the nbsp', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p>a </p>'), sAppendEmptyTextNodesAt(editor, 3, [0, 0]), tinyApis.sSetCursor([0, 0], 2), sFireInsert(editor), tinyApis.sAssertSelection([0, 0], 2, [0, 0], 2), tinyApis.sAssertContent('<p>a </p>') ])) ])), Logger.t('Nbsp at img', GeneralSteps.sequence([ Logger.t('Insert nbsp before an image at start of a block should not remove the nbsp', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p> <img src="about:blank" /></p>'), tinyApis.sSetCursor([0, 0], 1), sFireInsert(editor), tinyApis.sAssertSelection([0, 0], 1, [0, 0], 1), tinyApis.sAssertContent('<p> <img src="about:blank" /></p>') ])), Logger.t('Insert nbsp between two images should remove nbsp', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p><img src="about:blank" /> <img src="about:blank" /></p>'), tinyApis.sSetCursor([0, 1], 1), sFireInsert(editor), tinyApis.sAssertSelection([0, 1], 1, [0, 1], 1), tinyApis.sAssertContent('<p><img src="about:blank" /> <img src="about:blank" /></p>') ])), Logger.t('Insert nbsp after an image at the end of a block should not remove the nbsp', GeneralSteps.sequence([ tinyApis.sFocus, tinyApis.sSetContent('<p><img src="about:blank" /> </p>'), tinyApis.sSetCursor([0, 1], 1), sFireInsert(editor), tinyApis.sAssertSelection([0, 1], 1, [0, 1], 1), tinyApis.sAssertContent('<p><img src="about:blank" /> </p>') ])) ])), Logger.t('Insert in text on IE using keypress', GeneralSteps.sequence(browser.isIE() ? [ tinyApis.sFocus, tinyApis.sSetContent('<p>a b</p>'), tinyApis.sSetCursor([0, 0], 3), sFireKeyPress(editor), Waiter.sTryUntil('', tinyApis.sAssertContent('<p>a b</p>'), 10, 1000), tinyApis.sAssertSelection([0, 0], 3, [0, 0], 3), ] : [])) ])) ], onSuccess, onFailure); }, { indent: false, base_url: '/project/tinymce/js/tinymce', }, success, failure); });