blob: e7d886676309eca01a31cc88cf0ee1ae45b54b39 [file] [log] [blame]
<body>
<script src="../resources/document-interface-broker-helpers.js"></script>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings_lite.js"></script>
<script src="file:///gen/mojo/public/mojom/base/time.mojom-lite.js"></script>
<script src="file:///gen/mojo/public/mojom/base/unguessable_token.mojom-lite.js"></script>
<script src="file:///gen/url/mojom/url.mojom-lite.js"></script>
<script src="file:///gen/third_party/blink/public/mojom/webauthn/authenticator.mojom-lite.js"></script>
<script src="file:///gen/third_party/blink/public/mojom/webauthn/virtual_authenticator.mojom-lite.js"></script>
<script src="file:///gen/third_party/blink/public/mojom/frame/frame_host_test_interface.mojom-lite.js"></script>
<script src="file:///gen/third_party/blink/public/mojom/frame/document_interface_broker.mojom-lite.js"></script>
<script>
'use strict';
promise_test(async t => {
// Create a test implementation of FrameHostTestInterface
const frameHostTestImpl = new blink.mojom.FrameHostTestInterfaceCallbackRouter;
frameHostTestImpl.getName.addListener(() => ({ name: 'TestFrameHostTestImpl' }));
const brokerProxy = new blink.mojom.DocumentInterfaceBrokerProxy(
Mojo.getDocumentInterfaceBrokerHandle());
const testInterfaceProxyBeforeOverride = new blink.mojom.FrameHostTestInterfaceProxy;
brokerProxy.getFrameHostTestInterface(testInterfaceProxyBeforeOverride.$.createRequest());
setDocumentInterfaceBrokerOverrides({ getFrameHostTestInterface: request => {
frameHostTestImpl.bindHandle(request.handle);
}});
const testInterfaceProxyAfterOverride = new blink.mojom.FrameHostTestInterfaceProxy;
brokerProxy.getFrameHostTestInterface(testInterfaceProxyAfterOverride.$.createRequest());
// Verify that RenderFrameHostImpl's implementation gets called without an override
let reply = await testInterfaceProxyBeforeOverride.getName();
assert_equals(reply.name, 'RenderFrameHostImpl');
// Verify that the test implementation gets called after the override
reply = await testInterfaceProxyAfterOverride.getName();
assert_equals(reply.name, 'TestFrameHostTestImpl');
},
'Appropriate DocumentInterfaceBroker implementations are called before and after overriding');
</script>
</body>
</html>