blob: bee321755e7af048ff70e86b8dbeacc73e8b0dba [file] [log] [blame] [edit]
<!-- webkit-test-runner [ IPCTestingAPIEnabled=true ] -->
<script>
class Helper {
constructor() {
this.connections = [{
connection: IPC.connectionForProcessTarget('GPU')
}]
}
extractCallResult(b, path) {
let currentIdx = path;
let a = b.replyArguments[currentIdx].name
let c = b.parsedReply[a];
return c
}
sendMessage(connectionID, messageDesc, destinationID, args) {
let connection = this.connections[connectionID].connection
if (messageDesc.replyArguments == null) {
const serializedArguments = ArgumentSerializer.serializeArguments(messageDesc.arguments, args);
connection.sendMessage(destinationID, messageDesc.name, serializedArguments)
} else {
if (messageDesc.d);
else {
const serializedArguments = ArgumentSerializer.serializeArguments(messageDesc.arguments, args)
return new Promise((resolve) => {
try {
connection.sendWithAsyncReply(destinationID, messageDesc.name, serializedArguments, () => {});
} catch {
resolve0;
}
});
}
}
}
}
async function main() {
const res_0 = {
replyArguments: [{
name: 'identifier'
}],
parsedReply: {
identifier: 0n
}
};
const helper = new Helper(true);
let ref_105827994978832 = res_0 ? helper.extractCallResult(res_0, 0) : null;
if (ref_105827994978832 !== null) {
helper.sendMessage(0, IPC.messages.RemoteMediaPlayerManagerProxy_CreateMediaPlayer, ref_105827994978832, {
identifier: 18446744073709551614n,
clientIdentifier: 18446744073709551614n,
remoteEngineIdentifier: 0,
proxyConfiguration: {
referrer: 'x79',
userAgent: '',
sourceApplicationIdentifier: '',
networkInterfaceName: '\e',
audioOutputDeviceId: '',
mediaContentTypesRequiringHardwareSupport: [],
allowedMediaContainerTypes: {},
allowedMediaCodecTypes: {
optionalValue: ['', ]
},
allowedMediaVideoCodecIDs: {},
allowedMediaAudioCodecIDs: {},
allowedMediaCaptionFormatTypes: {},
playerContentBoxRect: {
m_location: {
x: {
rawValue: 936288880,
},
y: {
rawValue: 278,
}
},
m_size: {
width: {
rawValue: 4252677577,
},
height: {
rawValue: 9,
},
}
},
preferredAudioCharacteristics: [],
outOfBandTrackData: [],
documentSecurityOrigin: {
data: {
variantIndex: 0,
variant: {
protocol: '',
host: '\x2Ex31',
port: {},
}
},
},
presentationSize: {
width: 3480689791,
height: 1,
},
logIdentifier: 2n,
shouldUsePersistentCache: true,
isVideo: true,
renderingCanBeAccelerated: true,
shouldDisableHDR: false,
},
});
}
let ref_105827994982928 = res_0 ? helper.extractCallResult : null;
if (ref_105827994982928 !== null);
if (true) {
helper.sendMessage(0, IPC.messages.RemoteMediaPlayerProxy_Load, 18446744073709551614n, {
url: {
string: '\x77\x3Ax31x90x8Ax50x4ExA6xD6x77x4E',
},
sandboxExtension: {},
options: {
contentType: {
raw: '\f',
typeWasInferredFromExtension: true,
},
requiresRemotePlayback: true,
supportsLimitedMatroska: false,
videoRendererPreferences: 9,
},
});
}
let ref_105827994983568 = res_0 ? helper.extractCallResult(res_0, 0) : null;
let ref_105827994983696 = 2n;
let ref_105827994983824 = 18446744073709551614n;
let ref_105827994983952 = 2n;
if (ref_105827994983568 !== null && ref_105827994983696 !== null && ref_105827994983824 !== null && ref_105827994983952 !== null) {
helper.sendMessage(0, IPC.messages.RemoteMediaResourceManager_LoadFailed, ref_105827994983568, {
identifier: ref_105827994983696,
error: {
ipcData: {
optionalValue: {
type: 3,
nsError: {
optionalValue: {
wrapper: {
domain: '',
code: ref_105827994983824,
userInfo: {
vector: {},
},
underlyingError: {
optionalValue: {
domain: 'x74',
code: ref_105827994983952,
userInfo: {
vector: {},
},
underlyingError: {},
}
},
},
}
},
isSanitized: true,
}
},
},
});
}
if (true)
if (ref_105827994984144 !== null)
if (ref_105827994984400 !== null);
}
globalThis.testRunner?.waitUntilDone();
</script>
<script type="module">
import { CoreIPC, ArgumentSerializer, ArgumentParser } from './coreipc.js';
if (window.IPC) {
window.CoreIPC = CoreIPC;
window.ArgumentSerializer = ArgumentSerializer;
window.ArgumentParser = ArgumentParser;
setTimeout(() => {
main().catch(e => {
}).finally(() => {
globalThis.testRunner?.notifyDone();
});
}, 100);
} else {
window.testRunner?.notifyDone();
}
</script>
</head>
<body>
<p>This test passes if WebKit did not crash.</p>
</body>
</html>