Skip to content

Commit c41012b

Browse files
authored
cherry-pick(#27219): Revert "feat(evaluate): serialize map and set (#26730)" (#27222)
This reverts commit ee203b7. References #24040. Fixes #27181.
1 parent ed619b6 commit c41012b

File tree

6 files changed

+3
-51
lines changed

6 files changed

+3
-51
lines changed

Diff for: packages/playwright-core/src/protocol/serializers.ts

-16
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,6 @@ function innerParseSerializedValue(value: SerializedValue, handles: any[] | unde
7575
return BigInt(value.bi);
7676
if (value.r !== undefined)
7777
return new RegExp(value.r.p, value.r.f);
78-
if (value.m !== undefined)
79-
return new Map(innerParseSerializedValue(value.m, handles, refs));
80-
if (value.se !== undefined)
81-
return new Set(innerParseSerializedValue(value.se, handles, refs));
8278

8379
if (value.a !== undefined) {
8480
const result: any[] = [];
@@ -149,10 +145,6 @@ function innerSerializeValue(value: any, handleSerializer: (value: any) => Handl
149145
}
150146
return { s: `${error.name}: ${error.message}\n${error.stack}` };
151147
}
152-
if (isMap(value))
153-
return { m: innerSerializeValue(Array.from(value), handleSerializer, visitorInfo) };
154-
if (isSet(value))
155-
return { se: innerSerializeValue(Array.from(value), handleSerializer, visitorInfo) };
156148
if (isDate(value))
157149
return { d: value.toJSON() };
158150
if (isURL(value))
@@ -183,14 +175,6 @@ function innerSerializeValue(value: any, handleSerializer: (value: any) => Handl
183175
throw new Error('Unexpected value');
184176
}
185177

186-
function isMap(obj: any): obj is Map<any, any> {
187-
return obj instanceof Map || Object.prototype.toString.call(obj) === '[object Map]';
188-
}
189-
190-
function isSet(obj: any): obj is Set<any> {
191-
return obj instanceof Set || Object.prototype.toString.call(obj) === '[object Set]';
192-
}
193-
194178
function isRegExp(obj: any): obj is RegExp {
195179
return obj instanceof RegExp || Object.prototype.toString.call(obj) === '[object RegExp]';
196180
}

Diff for: packages/playwright-core/src/protocol/validator.ts

-2
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,6 @@ scheme.SerializedValue = tObject({
5858
d: tOptional(tString),
5959
u: tOptional(tString),
6060
bi: tOptional(tString),
61-
m: tOptional(tType('SerializedValue')),
62-
se: tOptional(tType('SerializedValue')),
6361
r: tOptional(tObject({
6462
p: tString,
6563
f: tString,

Diff for: packages/playwright-core/src/server/isomorphic/utilityScriptSerializers.ts

-19
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ export type SerializedValue =
2020
{ d: string } |
2121
{ u: string } |
2222
{ bi: string } |
23-
{ m: SerializedValue } |
24-
{ se: SerializedValue } |
2523
{ r: { p: string, f: string} } |
2624
{ a: SerializedValue[], id: number } |
2725
{ o: { k: string, v: SerializedValue }[], id: number } |
@@ -37,14 +35,6 @@ type VisitorInfo = {
3735

3836
export function source() {
3937

40-
function isMap(obj: any): obj is Map<any, any> {
41-
return obj instanceof Map || Object.prototype.toString.call(obj) === '[object Map]';
42-
}
43-
44-
function isSet(obj: any): obj is Set<any> {
45-
return obj instanceof Set || Object.prototype.toString.call(obj) === '[object Set]';
46-
}
47-
4838
function isRegExp(obj: any): obj is RegExp {
4939
try {
5040
return obj instanceof RegExp || Object.prototype.toString.call(obj) === '[object RegExp]';
@@ -104,10 +94,6 @@ export function source() {
10494
return new URL(value.u);
10595
if ('bi' in value)
10696
return BigInt(value.bi);
107-
if ('m' in value)
108-
return new Map(parseEvaluationResultValue(value.m));
109-
if ('se' in value)
110-
return new Set(parseEvaluationResultValue(value.se));
11197
if ('r' in value)
11298
return new RegExp(value.r.p, value.r.f);
11399
if ('a' in value) {
@@ -177,11 +163,6 @@ export function source() {
177163
if (typeof value === 'bigint')
178164
return { bi: value.toString() };
179165

180-
if (isMap(value))
181-
return { m: serialize(Array.from(value), handleSerializer, visitorInfo) };
182-
if (isSet(value))
183-
return { se: serialize(Array.from(value), handleSerializer, visitorInfo) };
184-
185166
if (isError(value)) {
186167
const error = value;
187168
if (error.stack?.startsWith(error.name + ': ' + error.message)) {

Diff for: packages/protocol/src/channels.ts

-2
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,6 @@ export type SerializedValue = {
180180
d?: string,
181181
u?: string,
182182
bi?: string,
183-
m?: SerializedValue,
184-
se?: SerializedValue,
185183
r?: {
186184
p: string,
187185
f: string,

Diff for: packages/protocol/src/protocol.yml

-4
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,6 @@ SerializedValue:
8282
u: string?
8383
# String representation of BigInt.
8484
bi: string?
85-
# JS representation of Map: [[key1, value1], [key2, value2], ...].
86-
m: SerializedValue?
87-
# JS representation of Set: [item1, item2, ...].
88-
se: SerializedValue?
8985
# Regular expression pattern and flags.
9086
r:
9187
type: object?

Diff for: tests/page/page-evaluate.spec.ts

+3-8
Original file line numberDiff line numberDiff line change
@@ -99,14 +99,9 @@ it('should transfer bigint', async ({ page }) => {
9999
expect(await page.evaluate(a => a, 17n)).toBe(17n);
100100
});
101101

102-
it('should transfer maps', async ({ page }) => {
103-
expect(await page.evaluate(() => new Map([[1, { test: 42n }]]))).toEqual(new Map([[1, { test: 42n }]]));
104-
expect(await page.evaluate(a => a, new Map([[1, { test: 17n }]]))).toEqual(new Map([[1, { test: 17n }]]));
105-
});
106-
107-
it('should transfer sets', async ({ page }) => {
108-
expect(await page.evaluate(() => new Set([1, { test: 42n }]))).toEqual(new Set([1, { test: 42n }]));
109-
expect(await page.evaluate(a => a, new Set([1, { test: 17n }]))).toEqual(new Set([1, { test: 17n }]));
102+
it('should transfer maps as empty objects', async ({ page }) => {
103+
const result = await page.evaluate(a => a.x.constructor.name + ' ' + JSON.stringify(a.x), { x: new Map([[1, 2]]) });
104+
expect(result).toBe('Object {}');
110105
});
111106

112107
it('should modify global environment', async ({ page }) => {

0 commit comments

Comments
 (0)