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};
|
||
|
}
|