diff --git a/packages/rum/src/domain/record/internalApi.ts b/packages/rum/src/domain/record/internalApi.ts index 1a1bfbab87..3ba1dec602 100644 --- a/packages/rum/src/domain/record/internalApi.ts +++ b/packages/rum/src/domain/record/internalApi.ts @@ -7,13 +7,8 @@ import type { RecordingScope } from './recordingScope' import { createRecordingScope } from './recordingScope' import { createElementsScrollPositions } from './elementsScrollPositions' import type { EmitRecordCallback } from './record.types' -import type { ChangeSerializationTransaction } from './serialization' -import { - createRootInsertionCursor, - SerializationKind, - serializeChangesInTransaction, - serializeNodeAsChange, -} from './serialization' +import type { SerializationTransaction } from './serialization' +import { createRootInsertionCursor, SerializationKind, serializeInTransaction, serializeNode } from './serialization' /** * Take a full snapshot of the document, generating the same records that the browser SDK @@ -57,19 +52,19 @@ export function takeNodeSnapshot( nodeSnapshotRecord = record } - serializeChangesInTransaction( + serializeInTransaction( SerializationKind.INITIAL_FULL_SNAPSHOT, emitRecord, noop, createTemporaryRecordingScope(configuration), timeStampNow(), - (transaction: ChangeSerializationTransaction): void => { + (transaction: SerializationTransaction): void => { const privacyLevel = getNodePrivacyLevel(node, transaction.scope.configuration.defaultPrivacyLevel) if (privacyLevel === NodePrivacyLevel.HIDDEN || privacyLevel === NodePrivacyLevel.IGNORE) { return } const cursor = createRootInsertionCursor(transaction.scope.nodeIds) - serializeNodeAsChange(cursor, node, privacyLevel, transaction) + serializeNode(cursor, node, privacyLevel, transaction) } ) diff --git a/packages/rum/src/domain/record/serialization/index.ts b/packages/rum/src/domain/record/serialization/index.ts index 85f3391af5..4ff90dbc92 100644 --- a/packages/rum/src/domain/record/serialization/index.ts +++ b/packages/rum/src/domain/record/serialization/index.ts @@ -2,11 +2,11 @@ export type { ChangeDecoder } from './changeDecoder' export { createChangeDecoder } from './changeDecoder' export { createChildInsertionCursor, createRootInsertionCursor } from './insertionCursor' export { getElementInputValue } from './serializationUtils' -export { serializeFullSnapshotAsChange } from './serializeFullSnapshotAsChange' -export { serializeMutationsAsChange } from './serializeMutationsAsChange' -export { serializeNodeAsChange } from './serializeNodeAsChange' +export { serializeFullSnapshot } from './serializeFullSnapshot' +export { serializeMutations } from './serializeMutations' +export { serializeNode } from './serializeNode' export { serializeAttribute } from './serializeAttribute' export { createSerializationStats, updateSerializationStats, aggregateSerializationStats } from './serializationStats' export type { SerializationMetric, SerializationStats } from './serializationStats' -export { serializeChangesInTransaction, SerializationKind } from './serializationTransaction' -export type { ChangeSerializationTransaction } from './serializationTransaction' +export { serializeInTransaction, SerializationKind } from './serializationTransaction' +export type { SerializationTransaction } from './serializationTransaction' diff --git a/packages/rum/src/domain/record/serialization/serializationTransaction.ts b/packages/rum/src/domain/record/serialization/serializationTransaction.ts index 4a261e0d5b..4f129f4270 100644 --- a/packages/rum/src/domain/record/serialization/serializationTransaction.ts +++ b/packages/rum/src/domain/record/serialization/serializationTransaction.ts @@ -33,16 +33,16 @@ export const enum SerializationKind { type AddNodeParams = NodeChange extends [any, any, ...infer Params] ? Params : never -export type ChangeSerializationTransactionCallback = (transaction: ChangeSerializationTransaction) => void +export type SerializationTransactionCallback = (transaction: SerializationTransaction) => void /** - * ChangeSerializationTransaction is used to build and emit a BrowserChangeRecord + * SerializationTransaction is used to build and emit a BrowserChangeRecord * containing a serialized snapshot of the DOM. Unlike SerializationTransaction, it * doesn't support emitting arbitrary BrowserRecords; instead, the builder methods it * exposes are used to construct a single BrowserChangeRecord which is emitted at the end * of the transaction. */ -export interface ChangeSerializationTransaction { +export interface SerializationTransaction { /** * Add a metric to the transaction's statistics. The aggregated statistics will be * emitted when the transaction ends. @@ -101,18 +101,18 @@ export interface ChangeSerializationTransaction { scope: RecordingScope } -export function serializeChangesInTransaction( +export function serializeInTransaction( kind: SerializationKind, emitRecord: EmitRecordCallback, emitStats: EmitStatsCallback, scope: RecordingScope, timestamp: TimeStamp, - serialize: ChangeSerializationTransactionCallback + serialize: SerializationTransactionCallback ): void { const encoder = createChangeEncoder(scope.stringIds) const stats = createSerializationStats() - const transaction: ChangeSerializationTransaction = { + const transaction: SerializationTransaction = { addMetric(metric: keyof SerializationStats, value: number): void { updateSerializationStats(stats, metric, value) }, diff --git a/packages/rum/src/domain/record/serialization/serializeAttributes.spec.ts b/packages/rum/src/domain/record/serialization/serializeAttributes.spec.ts index 88b3b1c7e6..82e22564ab 100644 --- a/packages/rum/src/domain/record/serialization/serializeAttributes.spec.ts +++ b/packages/rum/src/domain/record/serialization/serializeAttributes.spec.ts @@ -12,7 +12,7 @@ import { appendElement } from '@datadog/browser-rum-core/test' import { createSerializationTransactionForTesting } from '../test/serialization.specHelper' import type { ScrollPositions } from '../elementsScrollPositions' import { getCssRulesString, serializeDOMAttributes, serializeVirtualAttributes } from './serializeAttributes' -import type { ChangeSerializationTransaction } from './serializationTransaction' +import type { SerializationTransaction } from './serializationTransaction' import { SerializationKind } from './serializationTransaction' import type { VirtualAttributes } from './serialization.types' import type { SerializationMetric, SerializationStats } from './serializationStats' @@ -30,7 +30,7 @@ const PRIVACY_LEVELS = Object.keys({ } satisfies Record) as NodePrivacyLevel[] describe('serializeDOMAttributes', () => { - let transaction: ChangeSerializationTransaction + let transaction: SerializationTransaction beforeEach(() => { transaction = createSerializationTransactionForTesting() @@ -332,7 +332,7 @@ describe('serializeDOMAttributes', () => { describe('serializeVirtualAttributes', () => { let stats: SerializationStats - let transaction: ChangeSerializationTransaction + let transaction: SerializationTransaction beforeEach(() => { stats = createSerializationStats() diff --git a/packages/rum/src/domain/record/serialization/serializeAttributes.ts b/packages/rum/src/domain/record/serialization/serializeAttributes.ts index 654cadca74..2ce12a1203 100644 --- a/packages/rum/src/domain/record/serialization/serializeAttributes.ts +++ b/packages/rum/src/domain/record/serialization/serializeAttributes.ts @@ -2,14 +2,14 @@ import { NodePrivacyLevel, shouldMaskNode } from '@datadog/browser-rum-core' import { isSafari } from '@datadog/browser-core' import { getElementInputValue, normalizedTagName, switchToAbsoluteUrl } from './serializationUtils' import { serializeAttribute } from './serializeAttribute' -import type { ChangeSerializationTransaction } from './serializationTransaction' +import type { SerializationTransaction } from './serializationTransaction' import { SerializationKind } from './serializationTransaction' import type { VirtualAttributes } from './serialization.types' export function serializeAttributes( element: Element, nodePrivacyLevel: NodePrivacyLevel, - transaction: ChangeSerializationTransaction + transaction: SerializationTransaction ): Record { return { ...serializeDOMAttributes(element, nodePrivacyLevel, transaction), @@ -20,7 +20,7 @@ export function serializeAttributes( export function serializeDOMAttributes( element: Element, nodePrivacyLevel: NodePrivacyLevel, - transaction: ChangeSerializationTransaction + transaction: SerializationTransaction ): Record { if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) { return {} @@ -83,7 +83,7 @@ export function serializeDOMAttributes( export function serializeVirtualAttributes( element: Element, nodePrivacyLevel: NodePrivacyLevel, - transaction: ChangeSerializationTransaction + transaction: SerializationTransaction ): VirtualAttributes { if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) { return {} diff --git a/packages/rum/src/domain/record/serialization/serializeFullSnapshot.ts b/packages/rum/src/domain/record/serialization/serializeFullSnapshot.ts new file mode 100644 index 0000000000..a0dcae8104 --- /dev/null +++ b/packages/rum/src/domain/record/serialization/serializeFullSnapshot.ts @@ -0,0 +1,26 @@ +import type { TimeStamp } from '@datadog/browser-core' +import type { EmitRecordCallback, EmitStatsCallback } from '../record.types' +import type { RecordingScope } from '../recordingScope' +import { serializeInTransaction } from './serializationTransaction' +import type { SerializationTransaction, SerializationKind } from './serializationTransaction' +import { serializeNode } from './serializeNode' +import { createRootInsertionCursor } from './insertionCursor' + +export function serializeFullSnapshot( + timestamp: TimeStamp, + kind: SerializationKind, + document: Document, + emitRecord: EmitRecordCallback, + emitStats: EmitStatsCallback, + scope: RecordingScope +): void { + scope.resetIds() + serializeInTransaction(kind, emitRecord, emitStats, scope, timestamp, (transaction: SerializationTransaction) => { + serializeNode( + createRootInsertionCursor(scope.nodeIds), + document, + scope.configuration.defaultPrivacyLevel, + transaction + ) + }) +} diff --git a/packages/rum/src/domain/record/serialization/serializeFullSnapshotAsChange.ts b/packages/rum/src/domain/record/serialization/serializeFullSnapshotAsChange.ts deleted file mode 100644 index ff04ff6324..0000000000 --- a/packages/rum/src/domain/record/serialization/serializeFullSnapshotAsChange.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { TimeStamp } from '@datadog/browser-core' -import type { EmitRecordCallback, EmitStatsCallback } from '../record.types' -import type { RecordingScope } from '../recordingScope' -import { serializeChangesInTransaction } from './serializationTransaction' -import type { ChangeSerializationTransaction, SerializationKind } from './serializationTransaction' -import { serializeNodeAsChange } from './serializeNodeAsChange' -import { createRootInsertionCursor } from './insertionCursor' - -export function serializeFullSnapshotAsChange( - timestamp: TimeStamp, - kind: SerializationKind, - document: Document, - emitRecord: EmitRecordCallback, - emitStats: EmitStatsCallback, - scope: RecordingScope -): void { - scope.resetIds() - serializeChangesInTransaction( - kind, - emitRecord, - emitStats, - scope, - timestamp, - (transaction: ChangeSerializationTransaction) => { - serializeNodeAsChange( - createRootInsertionCursor(scope.nodeIds), - document, - scope.configuration.defaultPrivacyLevel, - transaction - ) - } - ) -} diff --git a/packages/rum/src/domain/record/serialization/serializeMutationsAsChange.ts b/packages/rum/src/domain/record/serialization/serializeMutations.ts similarity index 92% rename from packages/rum/src/domain/record/serialization/serializeMutationsAsChange.ts rename to packages/rum/src/domain/record/serialization/serializeMutations.ts index ef6ad538e6..3f7eafba25 100644 --- a/packages/rum/src/domain/record/serialization/serializeMutationsAsChange.ts +++ b/packages/rum/src/domain/record/serialization/serializeMutations.ts @@ -12,34 +12,34 @@ import type { AttributeChange } from '../../../types' import type { RecordingScope } from '../recordingScope' import type { EmitRecordCallback, EmitStatsCallback } from '../record.types' import type { NodeId, NodeIds } from '../itemIds' -import type { ChangeSerializationTransaction } from './serializationTransaction' -import { SerializationKind, serializeChangesInTransaction } from './serializationTransaction' -import { serializeNodeAsChange } from './serializeNodeAsChange' +import type { SerializationTransaction } from './serializationTransaction' +import { SerializationKind, serializeInTransaction } from './serializationTransaction' +import { serializeNode } from './serializeNode' import { createChildInsertionCursor } from './insertionCursor' import { getElementInputValue } from './serializationUtils' import { serializeAttribute } from './serializeAttribute' -export function serializeMutationsAsChange( +export function serializeMutations( timestamp: TimeStamp, mutations: RumMutationRecord[], emitRecord: EmitRecordCallback, emitStats: EmitStatsCallback, scope: RecordingScope ): void { - serializeChangesInTransaction( + serializeInTransaction( SerializationKind.INCREMENTAL_SNAPSHOT, emitRecord, emitStats, scope, timestamp, - (transaction: ChangeSerializationTransaction) => processMutations(mutations, transaction) + (transaction: SerializationTransaction) => processMutations(mutations, transaction) ) } type AttributeName = string type OldValue = string | null -function processMutations(mutations: RumMutationRecord[], transaction: ChangeSerializationTransaction): void { +function processMutations(mutations: RumMutationRecord[], transaction: SerializationTransaction): void { const addedNodes = new Set() const attributeMutations = new Map>() const characterDataMutations = new Map() @@ -101,7 +101,7 @@ function processMutations(mutations: RumMutationRecord[], transaction: ChangeSer processAttributeMutations(attributeMutations, firstNewNodeId, nodePrivacyLevelCache, transaction) } -function processRemovedNodes(nodes: Set, transaction: ChangeSerializationTransaction): void { +function processRemovedNodes(nodes: Set, transaction: SerializationTransaction): void { const nodeIds = transaction.scope.nodeIds for (const node of nodes) { @@ -130,7 +130,7 @@ function processRemovedNodes(nodes: Set, transaction: ChangeSerializationT function processAddedNodes( nodes: Set, nodePrivacyLevelCache: NodePrivacyLevelCache, - transaction: ChangeSerializationTransaction + transaction: SerializationTransaction ): void { const nodeIds = transaction.scope.nodeIds @@ -164,7 +164,7 @@ function processAddedNodes( const nextSiblingId = getNextSiblingId(node, nodeIds) - serializeNodeAsChange( + serializeNode( createChildInsertionCursor(parentId, nextSiblingId, nodeIds), node, parentNodePrivacyLevel, @@ -177,7 +177,7 @@ function processCharacterDataMutations( mutations: Map, firstNewNodeId: NodeId, nodePrivacyLevelCache: NodePrivacyLevelCache, - transaction: ChangeSerializationTransaction + transaction: SerializationTransaction ): void { const nodeIds = transaction.scope.nodeIds @@ -223,7 +223,7 @@ function processAttributeMutations( mutations: Map>, firstNewNodeId: NodeId, nodePrivacyLevelCache: NodePrivacyLevelCache, - transaction: ChangeSerializationTransaction + transaction: SerializationTransaction ): void { const nodeIds = transaction.scope.nodeIds diff --git a/packages/rum/src/domain/record/serialization/serializeNodeAsChange.form.spec.ts b/packages/rum/src/domain/record/serialization/serializeNode.form.spec.ts similarity index 87% rename from packages/rum/src/domain/record/serialization/serializeNodeAsChange.form.spec.ts rename to packages/rum/src/domain/record/serialization/serializeNode.form.spec.ts index dda18a47d4..a2b83adbc9 100644 --- a/packages/rum/src/domain/record/serialization/serializeNodeAsChange.form.spec.ts +++ b/packages/rum/src/domain/record/serialization/serializeNode.form.spec.ts @@ -5,12 +5,12 @@ import { PRIVACY_ATTR_VALUE_MASK_UNLESS_ALLOWLISTED, PRIVACY_ATTR_VALUE_MASK_USER_INPUT, } from '@datadog/browser-rum-core' -import { registerCleanupTask } from '../../../../../core/test' +import { registerCleanupTask } from '@datadog/browser-core/test' import { ChangeType } from '../../../types' -import { serializeHtmlAsChange } from '../test/serializeHtml.specHelper' +import { serializeHtml } from '../test/serializeHtml.specHelper' -describe('serializeNodeAsChange for form elements', () => { +describe('serializeNode for form elements', () => { let originalTimeout: number beforeAll(() => { @@ -24,12 +24,12 @@ describe('serializeNodeAsChange for form elements', () => { describe('', () => { it('serializes the element', async () => { - const record = await serializeHtmlAsChange('') + const record = await serializeHtml('') expect(record?.data).toEqual([[ChangeType.AddNode, [null, 'INPUT', ['type', 'button'], ['value', 'Click here']]]]) }) it('does not mask the value if the has privacy level MASK_USER_INPUT', async () => { - const record = await serializeHtmlAsChange(` + const record = await serializeHtml(` { it('does not mask the value if an ancestor has privacy level MASK_USER_INPUT', async () => { // Check that the ancestor's privacy level takes effect when we serialize // a descendant directly. - const record = await serializeHtmlAsChange( + const record = await serializeHtml( `
@@ -69,7 +69,7 @@ describe('serializeNodeAsChange for form elements', () => { it('does not mask the value when serializing an ancestor with privacy level MASK_USER_INPUT', async () => { // Check that the ancestor's privacy level takes effect when we serialize // the ancestor and the appears within the serialized subtree. - const record = await serializeHtmlAsChange(` + const record = await serializeHtml(`
@@ -87,12 +87,12 @@ describe('serializeNodeAsChange for form elements', () => { describe('', () => { describe('which is unchecked', () => { it('serializes the element', async () => { - const record = await serializeHtmlAsChange('') + const record = await serializeHtml('') expect(record?.data).toEqual([[ChangeType.AddNode, [null, 'INPUT', ['type', 'checkbox'], ['value', 'on']]]]) }) it('serializes a MASK_USER_INPUT element', async () => { - const record = await serializeHtmlAsChange(` + const record = await serializeHtml(` { describe('which is checked by default', () => { it('serializes the element', async () => { - const record = await serializeHtmlAsChange('') + const record = await serializeHtml('') expect(record?.data).toEqual([ [ChangeType.AddNode, [null, 'INPUT', ['type', 'checkbox'], ['value', 'on'], ['checked', '']]], ]) }) it('serializes a MASK_USER_INPUT element without the "checked" attribute', async () => { - const record = await serializeHtmlAsChange(` + const record = await serializeHtml(` { describe('which is checked by property setter', () => { it('serializes the element', async () => { - const record = await serializeHtmlAsChange('', { + const record = await serializeHtml('', { before(target: Node): void { ;(target as HTMLInputElement).checked = true }, @@ -159,7 +159,7 @@ describe('serializeNodeAsChange for form elements', () => { }) it('serializes a MASK_USER_INPUT element without the "checked" attribute', async () => { - const record = await serializeHtmlAsChange( + const record = await serializeHtml( ` { describe('which is unchecked by property setter', () => { it('serializes the element', async () => { - const record = await serializeHtmlAsChange('', { + const record = await serializeHtml('', { before(target: Node): void { ;(target as HTMLInputElement).checked = false }, @@ -199,7 +199,7 @@ describe('serializeNodeAsChange for form elements', () => { }) it('serializes a MASK_USER_INPUT element without the "checked" attribute', async () => { - const record = await serializeHtmlAsChange( + const record = await serializeHtml( ` { describe('', () => { it('does not serialize a value set via property setter', async () => { - const record = await serializeHtmlAsChange('', { + const record = await serializeHtml('', { before(target: Node): void { ;(target as HTMLInputElement).value = 'toto' }, @@ -241,7 +241,7 @@ describe('serializeNodeAsChange for form elements', () => { }) it('does not serialize a value set via attribute setter', async () => { - const record = await serializeHtmlAsChange('', { + const record = await serializeHtml('', { before(target: Node): void { ;(target as HTMLInputElement).setAttribute('value', 'toto') }, @@ -253,12 +253,12 @@ describe('serializeNodeAsChange for form elements', () => { describe('', () => { describe('which is unchecked', () => { it('serializes the element', async () => { - const record = await serializeHtmlAsChange('') + const record = await serializeHtml('') expect(record?.data).toEqual([[ChangeType.AddNode, [null, 'INPUT', ['type', 'radio'], ['value', 'on']]]]) }) it('serializes a MASK_USER_INPUT element', async () => { - const record = await serializeHtmlAsChange(` + const record = await serializeHtml(` { describe('which is checked by default', () => { it('serializes the element', async () => { - const record = await serializeHtmlAsChange('') + const record = await serializeHtml('') expect(record?.data).toEqual([ [ChangeType.AddNode, [null, 'INPUT', ['type', 'radio'], ['value', 'on'], ['checked', '']]], ]) }) it('serializes a MASK_USER_INPUT element without the "checked" attribute', async () => { - const record = await serializeHtmlAsChange(` + const record = await serializeHtml(` { describe('which is checked by property setter', () => { it('serializes the element', async () => { - const record = await serializeHtmlAsChange('', { + const record = await serializeHtml('', { before(target: Node): void { ;(target as HTMLInputElement).checked = true }, @@ -325,7 +325,7 @@ describe('serializeNodeAsChange for form elements', () => { }) it('serializes a MASK_USER_INPUT element without the "checked" attribute', async () => { - const record = await serializeHtmlAsChange( + const record = await serializeHtml( ` { describe('which is unchecked by property setter', () => { it('serializes the element', async () => { - const record = await serializeHtmlAsChange('', { + const record = await serializeHtml('', { before(target: Node): void { ;(target as HTMLInputElement).checked = false }, @@ -365,7 +365,7 @@ describe('serializeNodeAsChange for form elements', () => { }) it('serializes a MASK_USER_INPUT element without the "checked" attribute', async () => { - const record = await serializeHtmlAsChange( + const record = await serializeHtml( ` { describe('', () => { it('serializes the element', async () => { - const record = await serializeHtmlAsChange('') + const record = await serializeHtml('') expect(record?.data).toEqual([[ChangeType.AddNode, [null, 'INPUT', ['type', 'submit'], ['value', 'Click here']]]]) }) it('does not mask the value if the has privacy level MASK_USER_INPUT', async () => { - const record = await serializeHtmlAsChange(` + const record = await serializeHtml(` { it('does not mask the value if an ancestor has privacy level MASK_USER_INPUT', async () => { // Check that the ancestor's privacy level takes effect when we serialize // a descendant directly. - const record = await serializeHtmlAsChange( + const record = await serializeHtml( `
@@ -443,7 +443,7 @@ describe('serializeNodeAsChange for form elements', () => { it('does not mask the value when serializing an ancestor with privacy level MASK_USER_INPUT', async () => { // Check that the ancestor's privacy level takes effect when we serialize // the ancestor and the appears within the serialized subtree. - const record = await serializeHtmlAsChange(` + const record = await serializeHtml(`
@@ -469,26 +469,26 @@ describe('serializeNodeAsChange for form elements', () => { ]) { describe(`with ${typeAttributeDescription}`, () => { it('serializes the element', async () => { - const record = await serializeHtmlAsChange(``) + const record = await serializeHtml(``) expect(record?.data).toEqual([[ChangeType.AddNode, [null, 'INPUT', ...serializedTypeAttribute]]]) }) it('serializes the placeholder', async () => { - const record = await serializeHtmlAsChange(``) + const record = await serializeHtml(``) expect(record?.data).toEqual([ [ChangeType.AddNode, [null, 'INPUT', ...serializedTypeAttribute, ['placeholder', 'placeholder']]], ]) }) it('serializes the element with a value set by attribute', async () => { - const record = await serializeHtmlAsChange(``) + const record = await serializeHtml(``) expect(record?.data).toEqual([ [ChangeType.AddNode, [null, 'INPUT', ...serializedTypeAttribute, ['value', 'toto']]], ]) }) it('serializes the element with a value set by property setter', async () => { - const record = await serializeHtmlAsChange(``, { + const record = await serializeHtml(``, { before(target: Node): void { ;(target as HTMLInputElement).value = 'toto' }, @@ -499,7 +499,7 @@ describe('serializeNodeAsChange for form elements', () => { }) it('masks the value and placeholder if the element has privacy level MASK', async () => { - const record = await serializeHtmlAsChange( + const record = await serializeHtml( ` { }) it('masks the value if the element has privacy level MASK_USER_INPUT', async () => { - const record = await serializeHtmlAsChange( + const record = await serializeHtml( ` { it('masks the value if an ancestor has privacy level MASK_USER_INPUT', async () => { // Check that the ancestor's privacy level takes effect when we serialize // a descendant directly. - const record = await serializeHtmlAsChange( + const record = await serializeHtml( `
@@ -587,7 +587,7 @@ describe('serializeNodeAsChange for form elements', () => { it('masks the value when serializing an ancestor with privacy level MASK_USER_INPUT', async () => { // Check that the ancestor's privacy level takes effect when we serialize // the ancestor and the appears within the serialized subtree. - const record = await serializeHtmlAsChange( + const record = await serializeHtml( `
@@ -609,7 +609,7 @@ describe('serializeNodeAsChange for form elements', () => { }) it('masks the placeholder and value if the element has privacy level MASK_UNLESS_ALLOWLISTED', async () => { - const record = await serializeHtmlAsChange( + const record = await serializeHtml( ` { delete (window as BrowserWindow).$DD_ALLOW }) - const record = await serializeHtmlAsChange( + const record = await serializeHtml( ` { select.appendChild(option2) select.options.selectedIndex = 1 - expect(await serializeHtmlAsChangeNode(select, NodePrivacyLevel.ALLOW, transaction)).toEqual( + expect(await serializeHtmlNode(select, NodePrivacyLevel.ALLOW, transaction)).toEqual( jasmine.objectContaining({ attributes: { value: 'bar' }, childNodes: [ @@ -712,7 +712,7 @@ describe('serializeNodeAsChange for form elements', () => { describe('', { + const record = await serializeHtml('', { before(target: Node): void { ;(target as HTMLTextAreaElement).value = 'some text' }, @@ -723,12 +723,12 @@ describe('serializeNodeAsChange for form elements', () => { }) it('serializes the default value', async () => { - const record = await serializeHtmlAsChange('') + const record = await serializeHtml('') expect(record?.data).toEqual([[ChangeType.AddNode, [null, 'TEXTAREA', ['value', 'toto']], [1, '#text', 'toto']]]) }) it('masks the value if the element has privacy level MASK', async () => { - const record = await serializeHtmlAsChange( + const record = await serializeHtml( ``, { before(target: Node): void { @@ -746,9 +746,7 @@ describe('serializeNodeAsChange for form elements', () => { }) it('masks the default value if the element has privacy level MASK', async () => { - const record = await serializeHtmlAsChange( - `` - ) + const record = await serializeHtml(``) expect(record?.data).toEqual([ [ ChangeType.AddNode, @@ -759,7 +757,7 @@ describe('serializeNodeAsChange for form elements', () => { }) it('masks the value if the element has privacy level MASK_USER_INPUT', async () => { - const record = await serializeHtmlAsChange( + const record = await serializeHtml( ``, { before(target: Node): void { @@ -777,7 +775,7 @@ describe('serializeNodeAsChange for form elements', () => { }) it('masks the default value if the element has privacy level MASK_USER_INPUT', async () => { - const record = await serializeHtmlAsChange( + const record = await serializeHtml( `` ) expect(record?.data).toEqual([ @@ -795,7 +793,7 @@ describe('serializeNodeAsChange for form elements', () => { delete (window as BrowserWindow).$DD_ALLOW }) - const record = await serializeHtmlAsChange( + const record = await serializeHtml( `