OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
reader
/
_backup
/
tinymce
/
tinymce
/
src
/
core
/
test
/
ts
/
browser
/
selection
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/20/2020 06:14:55 AM
rwxr-xr-x
📄
DetailsElementTest.ts
2.35 KB
02/20/2020 06:14:41 AM
rw-r--r--
📄
FragmentReaderTest.ts
10.22 KB
02/20/2020 06:14:41 AM
rw-r--r--
📄
GetSelectionContentTest.ts
3.84 KB
02/20/2020 06:14:42 AM
rw-r--r--
📄
MultiClickSelectionTest.ts
1.92 KB
02/20/2020 06:14:42 AM
rw-r--r--
📄
NormalizeRangeTest.ts
13.26 KB
02/20/2020 06:14:43 AM
rw-r--r--
📄
RangeInsertNodeTest.ts
3.11 KB
02/20/2020 06:14:43 AM
rw-r--r--
📄
RangeNormalizerTest.ts
4.48 KB
02/20/2020 06:14:44 AM
rw-r--r--
📄
SelectionBookmarkIframeEditorTest.ts
4.57 KB
02/20/2020 06:14:44 AM
rw-r--r--
📄
SelectionBookmarkInlineEditorTest.ts
8.22 KB
02/20/2020 06:14:45 AM
rw-r--r--
📄
SelectionBookmarkTest.ts
7.51 KB
02/20/2020 06:14:45 AM
rw-r--r--
📄
SelectionUtilsTest.ts
3.35 KB
02/20/2020 06:14:47 AM
rw-r--r--
📄
SetSelectionContentTest.ts
6.33 KB
02/20/2020 06:14:47 AM
rw-r--r--
📄
SimpleTableModelTest.ts
6.95 KB
02/20/2020 06:14:47 AM
rw-r--r--
📄
TableCellSelectionTest.ts
2.26 KB
02/20/2020 06:14:48 AM
rw-r--r--
Editing: RangeNormalizerTest.ts
Close
import { Assertions, GeneralSteps, Logger, Pipeline, Step } from '@ephox/agar'; import { Hierarchy, Element } from '@ephox/sugar'; import RangeNormalizer from 'tinymce/core/selection/RangeNormalizer'; import ViewBlock from '../../module/test/ViewBlock'; import { UnitTest } from '@ephox/bedrock'; import { document } from '@ephox/dom-globals'; UnitTest.asynctest('browser.tinymce.core.selection.RangeNormalizerTest', function () { const success = arguments[arguments.length - 2]; const failure = arguments[arguments.length - 1]; const viewBlock = ViewBlock(); const sSetContent = function (html) { return Step.sync(function () { viewBlock.update(html); }); }; const mNormalizeRange = Step.stateful(function (value: any, next, die) { next(RangeNormalizer.normalize(value)); }); const mCreateRange = function (startPath, startOffset, endPath, endOffset) { return Step.stateful(function (value, next, die) { const startContainer = Hierarchy.follow(Element.fromDom(viewBlock.get()), startPath).getOrDie(); const endContainer = Hierarchy.follow(Element.fromDom(viewBlock.get()), endPath).getOrDie(); const rng = document.createRange(); rng.setStart(startContainer.dom(), startOffset); rng.setEnd(endContainer.dom(), endOffset); next(rng); }); }; const mAssertRange = function (startPath, startOffset, endPath, endOffset) { return Step.stateful(function (value: any, next, die) { const startContainer = Hierarchy.follow(Element.fromDom(viewBlock.get()), startPath).getOrDie(); const endContainer = Hierarchy.follow(Element.fromDom(viewBlock.get()), endPath).getOrDie(); Assertions.assertDomEq('Should be expected startContainer', startContainer, Element.fromDom(value.startContainer)); Assertions.assertEq('Should be expected startOffset', startOffset, value.startOffset); Assertions.assertDomEq('Should be expected endContainer', endContainer, Element.fromDom(value.endContainer)); Assertions.assertEq('Should be expected endOffset', endOffset, value.endOffset); next(value); }); }; viewBlock.attach(); Pipeline.async({}, [ Logger.t('Normalize range no change', GeneralSteps.sequence([ sSetContent('<p><br></p>'), mCreateRange([0], 0, [0], 0), mNormalizeRange, mAssertRange([0], 0, [0], 0) ])), Logger.t('Normalize webkit triple click selection paragraph', GeneralSteps.sequence([ sSetContent('<blockquote><p>a</p></blockquote><p>b</p>'), mCreateRange([0, 0, 0], 0, [1], 0), mNormalizeRange, mAssertRange([0, 0, 0], 0, [0, 0, 0], 1) ])), Logger.t('Normalize webkit triple click selection heading', GeneralSteps.sequence([ sSetContent('<blockquote><p>a</p></blockquote><h1>b</h1>'), mCreateRange([0, 0, 0], 0, [1], 0), mNormalizeRange, mAssertRange([0, 0, 0], 0, [0, 0, 0], 1) ])), Logger.t('Normalize webkit triple click selection headings', GeneralSteps.sequence([ sSetContent('<blockquote><h1>a</h1></blockquote><h1>b</h1>'), mCreateRange([0, 0, 0], 0, [1], 0), mNormalizeRange, mAssertRange([0, 0, 0], 0, [0, 0, 0], 1) ])), Logger.t('Normalize webkit triple click selection divs', GeneralSteps.sequence([ sSetContent('<blockquote><div>a</div></blockquote><div>b</div>'), mCreateRange([0, 0, 0], 0, [1], 0), mNormalizeRange, mAssertRange([0, 0, 0], 0, [0, 0, 0], 1) ])), Logger.t('Normalize webkit triple click selection between LI:s', GeneralSteps.sequence([ sSetContent('<ul><li>a</li></ul><ul><li>b</li></ul>'), mCreateRange([0, 0, 0], 0, [1, 0], 0), mNormalizeRange, mAssertRange([0, 0, 0], 0, [0, 0, 0], 1) ])), Logger.t('Normalize from block start to previous block end', GeneralSteps.sequence([ sSetContent('<p>a</p><p>b<p>'), mCreateRange([0, 0], 0, [1, 0], 0), mNormalizeRange, mAssertRange([0, 0], 0, [0, 0], 1) ])), Logger.t('Do not normalize when end position has a valid previous position in the block', GeneralSteps.sequence([ sSetContent('<p>a</p><p>b<p>'), mCreateRange([0, 0], 0, [1, 0], 1), mNormalizeRange, mAssertRange([0, 0], 0, [1, 0], 1) ])), Logger.t('Do not normalize when selection is on inline elements', GeneralSteps.sequence([ sSetContent('<b>a</b><b>b<b>'), mCreateRange([0, 0], 0, [1, 0], 0), mNormalizeRange, mAssertRange([0, 0], 0, [1, 0], 0) ])) ], function () { viewBlock.detach(); success(); }, failure); });