mirror of
https://github.com/nodejs/node.git
synced 2025-05-16 05:43:02 +00:00

PR-URL: https://github.com/nodejs/node/pull/21983 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
83 lines
3.3 KiB
JavaScript
83 lines
3.3 KiB
JavaScript
// Copyright 2018 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
InspectorTest.log('Test for Runtime.addBinding.');
|
|
|
|
InspectorTest.runAsyncTestSuite([
|
|
async function testBasic() {
|
|
const {contextGroup, sessions: [session1, session2]} = setupSessions(2);
|
|
|
|
InspectorTest.log('\nAdd binding inside session1..');
|
|
session1.Protocol.Runtime.addBinding({name: 'send'});
|
|
InspectorTest.log('Call binding..');
|
|
await session1.Protocol.Runtime.evaluate({expression: `send('payload')`});
|
|
|
|
InspectorTest.log('\nAdd binding inside session2..');
|
|
session2.Protocol.Runtime.addBinding({name: 'send'});
|
|
InspectorTest.log('Call binding..');
|
|
await session2.Protocol.Runtime.evaluate({expression: `send('payload')`});
|
|
|
|
InspectorTest.log('\nDisable agent inside session1..');
|
|
session1.Protocol.Runtime.disable();
|
|
InspectorTest.log('Call binding..');
|
|
await session2.Protocol.Runtime.evaluate({expression: `send('payload')`});
|
|
|
|
InspectorTest.log('\nDisable agent inside session2..');
|
|
session2.Protocol.Runtime.disable();
|
|
InspectorTest.log('Call binding..');
|
|
await session2.Protocol.Runtime.evaluate({expression: `send('payload')`});
|
|
|
|
InspectorTest.log('\nEnable agent inside session1..');
|
|
session1.Protocol.Runtime.enable();
|
|
InspectorTest.log('Call binding..');
|
|
await session2.Protocol.Runtime.evaluate({expression: `send('payload')`});
|
|
},
|
|
|
|
async function testReconnect() {
|
|
const {contextGroup, sessions: [session]} = setupSessions(1);
|
|
InspectorTest.log('\nAdd binding inside session..');
|
|
await session.Protocol.Runtime.addBinding({name: 'send'});
|
|
InspectorTest.log('Reconnect..');
|
|
session.reconnect();
|
|
await session.Protocol.Runtime.evaluate({expression: `send('payload')`});
|
|
},
|
|
|
|
async function testBindingOverrides() {
|
|
const {contextGroup, sessions: [session]} = setupSessions(1);
|
|
InspectorTest.log('\nAdd send function on global object..');
|
|
session.Protocol.Runtime.evaluate({expression: 'send = () => 42'});
|
|
InspectorTest.log('Add binding inside session..');
|
|
session.Protocol.Runtime.addBinding({name: 'send'});
|
|
InspectorTest.log('Call binding..');
|
|
await session.Protocol.Runtime.evaluate({expression: `send('payload')`});
|
|
},
|
|
|
|
async function testRemoveBinding() {
|
|
const {contextGroup, sessions: [session]} = setupSessions(1);
|
|
InspectorTest.log('\nAdd binding inside session..');
|
|
session.Protocol.Runtime.addBinding({name: 'send'});
|
|
InspectorTest.log('Call binding..');
|
|
await session.Protocol.Runtime.evaluate({expression: `send('payload')`});
|
|
InspectorTest.log('Remove binding inside session..');
|
|
session.Protocol.Runtime.removeBinding({name: 'send'});
|
|
InspectorTest.log('Call binding..');
|
|
await session.Protocol.Runtime.evaluate({expression: `send('payload')`});
|
|
}
|
|
]);
|
|
|
|
function setupSessions(num) {
|
|
const contextGroup = new InspectorTest.ContextGroup();
|
|
const sessions = [];
|
|
for (let i = 0; i < num; ++i) {
|
|
const session = contextGroup.connect();
|
|
sessions.push(session);
|
|
session.Protocol.Runtime.enable();
|
|
session.Protocol.Runtime.onBindingCalled(msg => {
|
|
InspectorTest.log(`binding called in session${i + 1}`);
|
|
InspectorTest.logMessage(msg);
|
|
});
|
|
}
|
|
return {contextGroup, sessions};
|
|
}
|