Bug 1832792 - [remote] Update RemoteValue deserialization methods to have serializedValue as first argument r=webdriver-reviewers,whimboo

Differential Revision: https://phabricator.services.mozilla.com/D200214
This commit is contained in:
jingz 2024-02-06 09:44:12 +00:00
parent e6a1561035
commit 23adbf7d3d
7 changed files with 46 additions and 46 deletions

View file

@ -121,10 +121,10 @@ function buildSerialized(type, handle = null) {
*
* @see https://w3c.github.io/webdriver-bidi/#deserialize-value-list
*
* @param {Realm} realm
* The Realm in which the value is deserialized.
* @param {Array} serializedValueList
* List of serialized values.
* @param {Realm} realm
* The Realm in which the value is deserialized.
* @param {ExtraDeserializationOptions} extraOptions
* Extra Remote Value deserialization options.
*
@ -133,7 +133,7 @@ function buildSerialized(type, handle = null) {
* @throws {InvalidArgumentError}
* If <var>serializedValueList</var> is not an array.
*/
function deserializeValueList(realm, serializedValueList, extraOptions) {
function deserializeValueList(serializedValueList, realm, extraOptions) {
lazy.assert.array(
serializedValueList,
`Expected "serializedValueList" to be an array, got ${serializedValueList}`
@ -142,7 +142,7 @@ function deserializeValueList(realm, serializedValueList, extraOptions) {
const deserializedValues = [];
for (const item of serializedValueList) {
deserializedValues.push(deserialize(realm, item, extraOptions));
deserializedValues.push(deserialize(item, realm, extraOptions));
}
return deserializedValues;
@ -153,10 +153,10 @@ function deserializeValueList(realm, serializedValueList, extraOptions) {
*
* @see https://w3c.github.io/webdriver-bidi/#deserialize-key-value-list
*
* @param {Realm} realm
* The Realm in which the value is deserialized.
* @param {Array} serializedKeyValueList
* List of serialized key-value.
* @param {Realm} realm
* The Realm in which the value is deserialized.
* @param {ExtraDeserializationOptions} extraOptions
* Extra Remote Value deserialization options.
*
@ -166,7 +166,7 @@ function deserializeValueList(realm, serializedValueList, extraOptions) {
* If <var>serializedKeyValueList</var> is not an array or
* not an array of key-value arrays.
*/
function deserializeKeyValueList(realm, serializedKeyValueList, extraOptions) {
function deserializeKeyValueList(serializedKeyValueList, realm, extraOptions) {
lazy.assert.array(
serializedKeyValueList,
`Expected "serializedKeyValueList" to be an array, got ${serializedKeyValueList}`
@ -184,8 +184,8 @@ function deserializeKeyValueList(realm, serializedKeyValueList, extraOptions) {
const deserializedKey =
typeof serializedKey == "string"
? serializedKey
: deserialize(realm, serializedKey, extraOptions);
const deserializedValue = deserialize(realm, serializedValue, extraOptions);
: deserialize(serializedKey, realm, extraOptions);
const deserializedValue = deserialize(serializedValue, realm, extraOptions);
deserializedKeyValueList.push([deserializedKey, deserializedValue]);
}
@ -252,16 +252,16 @@ function deserializeSharedReference(sharedRef, realm, extraOptions) {
*
* @see https://w3c.github.io/webdriver-bidi/#deserialize-local-value
*
* @param {Realm} realm
* The Realm in which the value is deserialized.
* @param {object} serializedValue
* Value of any type to be deserialized.
* @param {Realm} realm
* The Realm in which the value is deserialized.
* @param {ExtraDeserializationOptions} extraOptions
* Extra Remote Value deserialization options.
*
* @returns {object} Deserialized representation of the value.
*/
export function deserialize(realm, serializedValue, extraOptions) {
export function deserialize(serializedValue, realm, extraOptions) {
const { handle, sharedId, type, value } = serializedValue;
// With a shared id present deserialize as node reference.
@ -347,7 +347,7 @@ export function deserialize(realm, serializedValue, extraOptions) {
// Non-primitive protocol values
case "array":
const array = realm.cloneIntoRealm([]);
deserializeValueList(realm, value, extraOptions).forEach(v =>
deserializeValueList(value, realm, extraOptions).forEach(v =>
array.push(v)
);
return array;
@ -363,14 +363,14 @@ export function deserialize(realm, serializedValue, extraOptions) {
return realm.cloneIntoRealm(new Date(value));
case "map":
const map = realm.cloneIntoRealm(new Map());
deserializeKeyValueList(realm, value, extraOptions).forEach(([k, v]) =>
deserializeKeyValueList(value, realm, extraOptions).forEach(([k, v]) =>
map.set(k, v)
);
return map;
case "object":
const object = realm.cloneIntoRealm({});
deserializeKeyValueList(realm, value, extraOptions).forEach(
deserializeKeyValueList(value, realm, extraOptions).forEach(
([k, v]) => (object[k] = v)
);
return object;
@ -399,7 +399,7 @@ export function deserialize(realm, serializedValue, extraOptions) {
}
case "set":
const set = realm.cloneIntoRealm(new Set());
deserializeValueList(realm, value, extraOptions).forEach(v => set.add(v));
deserializeValueList(value, realm, extraOptions).forEach(v => set.add(v));
return set;
}

View file

@ -26,20 +26,20 @@ export class WindowGlobalBiDiModule extends Module {
/**
* Wrapper to deserialize a local / remote value.
*
* @param {Realm} realm
* The Realm in which the value is deserialized.
* @param {object} serializedValue
* Value of any type to be deserialized.
* @param {Realm} realm
* The Realm in which the value is deserialized.
* @param {ExtraSerializationOptions=} extraOptions
* Extra Remote Value deserialization options.
*
* @returns {object}
* Deserialized representation of the value.
*/
deserialize(realm, serializedValue, extraOptions = {}) {
deserialize(serializedValue, realm, extraOptions = {}) {
extraOptions.nodeCache = this.#nodeCache;
return lazy.deserialize(realm, serializedValue, extraOptions);
return lazy.deserialize(serializedValue, realm, extraOptions);
}
/**

View file

@ -380,7 +380,7 @@ class BrowsingContextModule extends WindowGlobalBiDiModule {
case lazy.ClipRectangleType.Element: {
const realm = this.messageHandler.getRealm();
const element = this.deserialize(realm, clip.element);
const element = this.deserialize(clip.element, realm);
const viewportRect = this.#getOriginRectangle(
lazy.OriginType.viewport
);
@ -417,7 +417,7 @@ class BrowsingContextModule extends WindowGlobalBiDiModule {
contextNodes.push(this.messageHandler.window.document.documentElement);
} else {
for (const serializedStartNode of startNodes) {
const startNode = this.deserialize(realm, serializedStartNode);
const startNode = this.deserialize(serializedStartNode, realm);
lazy.assert.that(
startNode =>
Node.isInstance(startNode) &&

View file

@ -97,7 +97,7 @@ class InputModule extends WindowGlobalBiDiModule {
const realm = this.messageHandler.getRealm();
const element = this.deserialize(realm, sharedReference);
const element = this.deserialize(sharedReference, realm);
if (!lazy.dom.isElement(element)) {
throw new lazy.error.NoSuchElementError(
`No element found for shared id: ${sharedReference.sharedId}`

View file

@ -243,7 +243,7 @@ class ScriptModule extends WindowGlobalBiDiModule {
} = script;
const realm = this.messageHandler.getRealm({ sandboxName: sandbox });
const deserializedArguments = commandArguments.map(arg =>
this.deserialize(realm, arg, {
this.deserialize(arg, realm, {
emitScriptMessage: this.#emitScriptMessage,
})
);
@ -352,7 +352,7 @@ class ScriptModule extends WindowGlobalBiDiModule {
const deserializedArguments =
commandArguments !== null
? commandArguments.map(arg =>
this.deserialize(realm, arg, {
this.deserialize(arg, realm, {
emitScriptMessage: this.#emitScriptMessage,
})
)
@ -360,7 +360,7 @@ class ScriptModule extends WindowGlobalBiDiModule {
const deserializedThis =
thisParameter !== null
? this.deserialize(realm, thisParameter, {
? this.deserialize(thisParameter, realm, {
emitScriptMessage: this.#emitScriptMessage,
})
: null;

View file

@ -397,7 +397,7 @@ add_task(function test_deserializePrimitiveTypes() {
const { value: expectedValue, serialized } = type;
info(`Checking '${serialized.type}'`);
const value = deserialize(realm, serialized, {});
const value = deserialize(serialized, realm, {});
if (serialized.value == "NaN") {
ok(Number.isNaN(value), `Got expected value for ${serialized}`);
@ -434,7 +434,7 @@ add_task(function test_deserializeDateLocalValue() {
];
for (const dateString of validaDateStrings) {
info(`Checking '${dateString}'`);
const value = deserialize(realm, { type: "date", value: dateString }, {});
const value = deserialize({ type: "date", value: dateString }, realm, {});
Assert.equal(
value.getTime(),
@ -456,7 +456,7 @@ add_task(function test_deserializeLocalValues() {
}
info(`Checking '${serialized.type}'`);
const value = deserialize(realm, serialized, {});
const value = deserialize(serialized, realm, {});
assertLocalValue(serialized.type, value, expectedValue);
}
});
@ -486,7 +486,7 @@ add_task(async function test_deserializeChannel() {
};
info(`Checking 'channel'`);
const value = deserialize(realm, channel, deserializationOptions, {});
const value = deserialize(channel, realm, deserializationOptions, {});
Assert.equal(
Object.prototype.toString.call(value),
"[object Function]",
@ -522,18 +522,18 @@ add_task(function test_deserializeLocalValuesByHandle() {
const remoteReference = { handle: serializedValue.handle };
// Check that the remote reference can be deserialized in realm1.
const value = deserialize(realm1, remoteReference, {});
const value = deserialize(remoteReference, realm1, {});
assertLocalValue(serialized.type, value, expectedValue);
Assert.throws(
() => deserialize(realm2, remoteReference, {}),
() => deserialize(remoteReference, realm2, {}),
/NoSuchHandleError:/,
`Got expected error when using the wrong realm for deserialize`
);
realm1.removeObjectHandle(serializedValue.handle);
Assert.throws(
() => deserialize(realm1, remoteReference, {}),
() => deserialize(remoteReference, realm1, {}),
/NoSuchHandleError:/,
`Got expected error when after deleting the object handle`
);
@ -547,7 +547,7 @@ add_task(function test_deserializeHandleInvalidTypes() {
info(`Checking type: '${invalidType}'`);
Assert.throws(
() => deserialize(realm, { type: "object", handle: invalidType }, {}),
() => deserialize({ type: "object", handle: invalidType }, realm, {}),
/InvalidArgumentError:/,
`Got expected error for type ${invalidType}`
);
@ -574,7 +574,7 @@ add_task(function test_deserializePrimitiveTypesInvalidValues() {
info(`Checking '${type}' with value ${value}`);
Assert.throws(
() => deserialize(realm, { type, value }, {}),
() => deserialize({ type, value }, realm, {}),
/InvalidArgument/,
`Got expected error for type ${type} and value ${value}`
);
@ -622,7 +622,7 @@ add_task(function test_deserializeDateLocalValueInvalidValues() {
info(`Checking '${dateString}'`);
Assert.throws(
() => deserialize(realm, { type: "date", value: dateString }, {}),
() => deserialize({ type: "date", value: dateString }, realm, {}),
/InvalidArgumentError:/,
`Got expected error for date string: ${dateString}`
);
@ -638,7 +638,7 @@ add_task(function test_deserializeLocalValuesInvalidType() {
info(`Checking type: '${invalidType}'`);
Assert.throws(
() => deserialize(realm, { type: invalidType }, {}),
() => deserialize({ type: invalidType }, realm, {}),
/InvalidArgumentError:/,
`Got expected error for type ${invalidType}`
);
@ -646,11 +646,11 @@ add_task(function test_deserializeLocalValuesInvalidType() {
Assert.throws(
() =>
deserialize(
realm,
{
type: "array",
value: [{ type: invalidType }],
},
realm,
{}
),
/InvalidArgumentError:/,
@ -763,7 +763,7 @@ add_task(function test_deserializeLocalValuesInvalidValues() {
info(`Checking '${type}' with value ${value}`);
Assert.throws(
() => deserialize(realm, { type, value }, {}),
() => deserialize({ type, value }, realm, {}),
/InvalidArgumentError:/,
`Got expected error for type ${type} and value ${value}`
);
@ -1111,7 +1111,7 @@ function deserializeInWindowRealm(serialized) {
);
const realm = new WindowRealm(content);
info(`Checking '${_serialized.type}'`);
return deserialize(realm, _serialized, {});
return deserialize(_serialized, realm, {});
}
);
}

View file

@ -15,7 +15,7 @@ add_task(async function test_deserializeSharedIdInvalidTypes() {
};
Assert.throws(
() => deserialize(realm, serializedValue, { nodeCache }),
() => deserialize(serializedValue, realm, { nodeCache }),
/InvalidArgumentError:/,
`Got expected error for type ${invalidType}`
);
@ -30,7 +30,7 @@ add_task(async function test_deserializeSharedIdInvalidValue() {
};
Assert.throws(
() => deserialize(realm, serializedValue, { nodeCache }),
() => deserialize(serializedValue, realm, { nodeCache }),
/NoSuchNodeError:/,
"Got expected error for unknown 'sharedId'"
);
@ -48,7 +48,7 @@ add_task(async function test_deserializeSharedId() {
sharedId: domElRef,
};
const node = deserialize(realm, serializedValue, { nodeCache });
const node = deserialize(serializedValue, realm, { nodeCache });
Assert.equal(node, domEl);
});
@ -66,7 +66,7 @@ add_task(async function test_deserializeSharedIdPrecedenceOverHandle() {
sharedId: domElRef,
};
const node = deserialize(realm, serializedValue, { nodeCache });
const node = deserialize(serializedValue, realm, { nodeCache });
Assert.equal(node, domEl);
});
@ -84,7 +84,7 @@ add_task(async function test_deserializeSharedIdNoWindowRealm() {
};
Assert.throws(
() => deserialize(new Realm(), serializedValue, { nodeCache }),
() => deserialize(serializedValue, new Realm(), { nodeCache }),
/NoSuchNodeError/,
`Got expected error for a non-window realm`
);
@ -106,7 +106,7 @@ add_task(async function test_deserializeSharedIdOtherBrowsingContext() {
sharedId: domElRef,
};
const node = deserialize(realm, serializedValue, { nodeCache });
const node = deserialize(serializedValue, realm, { nodeCache });
Assert.equal(node, null);
});